Implementazione di filtri FIR su FPGA - DEI
Implementazione di filtri FIR su FPGA - DEI
Implementazione di filtri FIR su FPGA - DEI
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Università <strong>di</strong> Padova - <strong>DEI</strong><br />
Laboratorio <strong>di</strong> elettronica <strong>di</strong>gitale<br />
Lezione 17<br />
<strong>Implementazione</strong> <strong>di</strong> <strong>filtri</strong> <strong>FIR</strong> <strong>su</strong> <strong>FPGA</strong><br />
Andrea Neviani – Laboratorio <strong>di</strong> elettronica <strong>di</strong>gitale 1
Filtri in un tipico ricevitore RF<br />
Andrea Neviani - L.E.D. 2
egistri a<br />
n bit<br />
<strong>FIR</strong>: forma <strong>di</strong>retta con sommatore ad albero<br />
sommatore ad albero<br />
con pipeline<br />
• forma <strong>di</strong>retta: prima c'è la linea <strong>di</strong> ritardo, poi le moltiplicazioni,<br />
infine le somme<br />
• per un filtro a N coefficienti, il sommatore ad albero ha L=log 2(N)<br />
livelli, quin<strong>di</strong> aggiunge una latenza <strong>di</strong> L cicli <strong>di</strong> clock<br />
• il periodo <strong>di</strong> clock però si riduce (rispetto a una cascata seriale <strong>di</strong><br />
sommatori) a: TCKmin = t pREG + t pADD + t SETUP<br />
Andrea Neviani - L.E.D. 3
<strong>FIR</strong>: forma trasposta<br />
si può mettere anche un solo registro, se il numero <strong>di</strong><br />
moltiplicatori non è troppo elevato<br />
• forma trasposta: prima il dato <strong>di</strong> ingresso x(k) viene moltiplicato per tutti i<br />
coefficienti del filtro; le somme sono incorporate nella linea <strong>di</strong> ritardo<br />
• rispetto alla forma <strong>di</strong>retta, ha una latenza inferiore (N cicli, contro N+L), è<br />
facilmente espan<strong>di</strong>bile (basta connettere in cascata più moduli), e può portare<br />
ad una implementazione più efficiente dei moltiplicatori<br />
• per <strong>filtri</strong> <strong>di</strong> <strong>di</strong>mensioni ridotte, le due forme danno ri<strong>su</strong>ltati equivalenti<br />
Andrea Neviani - L.E.D. 4
Moltiplicazioni KCM in <strong>FPGA</strong><br />
• nelle moltiplicazioni richieste da un filtro <strong>FIR</strong> uno dei due fattori è<br />
costante ⇒ si possono effettuare in modo efficiente con un<br />
Constant Coefficient Multiplier (KCM)<br />
in questa forma, funziona solo per numeri<br />
senza segno<br />
Andrea Neviani - L.E.D. 5
Moltiplicazioni KCM per numeri con segno<br />
• per non raddoppiare la quantità <strong>di</strong> memoria ROM riciesta, le KCM<br />
<strong>di</strong> numeri con segno possono essere gestite cambiando il segno<br />
del dato <strong>di</strong> ingresso, se questo è negativo, quin<strong>di</strong> andando a<br />
sottrarre, anziché sommare, il ri<strong>su</strong>ltato alla somma parziale<br />
precedente<br />
Andrea Neviani - L.E.D. 6
KCM: implementazione multiciclo<br />
• usa un clock interno Clkx4 più veloce del clock dei dati Clk<br />
Andrea Neviani - L.E.D. 7
<strong>FIR</strong> trasposto: implementazione<br />
• realizzato con moltiplicatori KCM e sommatori con registro <strong>di</strong><br />
uscita (convenienti nelle <strong>FPGA</strong>: nelle Spartan3, ogni slice può<br />
realizzare due bit <strong>di</strong> somma con due FF <strong>di</strong> uscita)<br />
Andrea Neviani - L.E.D. 8
<strong>FIR</strong> trasposto: vista dettagliata<br />
Andrea Neviani - L.E.D. 9
<strong>FIR</strong> trasposto: versione ottimizzata<br />
• i MUX 4-1 in ingresso ad ogni KCM sono stati estratti e con<strong>di</strong>visi<br />
(così ne serve uno solo)<br />
• i sommatori dei KCM vengono eliminati: al loro posto si usano i<br />
sommatori della linea <strong>di</strong> ritardo, aggiungendo altri tre registri in<br />
cascata (così in tutto <strong>di</strong>ventano 4), che servono per fare sì che<br />
vengano sommati termini con lo stesso peso<br />
Andrea Neviani - L.E.D. 10