Ho un circuito in cui ad ogni ciclo di clock sono presenti N ingressi a 32 bit per il calcolo. Ho un'operazione binaria che prende due input a 32 bit e produce un output a 32 bit. Questa operazione è associativa e vorrei applicarla a tutti gli ingressi N a 32 bit per ottenere un output a 32 bit. Attualmente sto raggiungendo questo obiettivo implementando un albero binario pipeline di operazioni.È possibile ridurre il fabbisogno di spazio di un albero di operazioni binarie su un FPGA a scapito della larghezza di banda di un fattore inferiore a 2?
Per un esempio concreto, supponendo N = 4 e ho ingressi {a, b, c, d} allora farei il seguente:
a op b => reg1
c op d => reg2
reg1 op reg2 => result
Quando una fase nella struttura non è divisibile per 2, inserisco un'operazione fittizia che richiede solo 1 input e restituisce 1 output con la stessa latenza.
Il problema che ho è che mi interessano alcune dimensioni di N ingressi {9, 25, 49, 81, 121}. La dimensione maggiore di N, 121, richiede il 110% di lute nel mio tessuto FPGA, mentre tutte le altre dimensioni si adattano facilmente. L'albero di queste operazioni binarie è di gran lunga il più grande consumatore di luts nel mio design.
Sono consapevole che potrei ridurre l'utilizzo di luts di quasi la metà dimezzando il numero di circuiti op presenti sulla mia scheda e multiplexando i loro ingressi. Sfortunatamente, ciò significherebbe solo ottenere un risultato ogni altro ciclo di clock e dimezzare la larghezza di banda.
Poiché un albero completo richiede solo il 10% di risorse in più rispetto a quanto offre la scheda, una riduzione del 50% della larghezza di banda sembra troppo significativa per un successo. Esiste un'architettura in cui posso fare il trade di una riduzione di dimensioni più fini per una riduzione della larghezza di banda a grana fine?
Come complesso è la tua operstion binario? Il tuo albero può correre ad esempio a doppia velocità? In tal caso, potresti utilizzare un clock relativo a 2x F_input, che compensa la tua perdita di larghezza di banda. – Paebbels
Una delle risposte ha risolto il tuo problema? In tal caso, contrassegnare uno come risposta. – Paebbels