Page 1 of 1

Implementazione filtro FIR_cicli_for Problema Netlist

PostPosted: 30 Sep 2013, 11:34
by alfo84
Salve a tutti, mi scuso che ho dovuto aprire un nuovo topic, però nel precedente non sapevo come allegare le seguenti immagini.

Il codice messo nel precedente topic è lo stesso, mi sono solamente accorto che i registri Reg_N dovevano essere 3 e non 4 per questo al posto di num_bit-1 ho messo num_bit-2.

Sono andato a vedere poi la netlist ( Tools --> Netlist Viewers --> RTL Viewer) e ho notato che c'è qualcosa che non va. Vi allego la netlist che mi è uscita.

Come potete notare le uscite dei moltiplicatori non mi escono e poi alla fine mi compare un buf(cut).

Invece se al posto del processo

Code: Select all
  process(data_out_FIR1, t_FIR1)
      begin   
         for i in 0 to num_taps-1 loop     
           data_out_FIR1 <= data_out_FIR1 +  t_FIR1(i);
         end loop;       
      end process;


presente verso la fine del listato implementazione del filtro FIR1,

metto semplicemente:
Code: Select all
           data_out_FIR1 <= t_FIR1(0) + t_FIR1(1) + t_FIR1(2) + t_FIR1(3);       --espressione (1)


mi esce come netlist il secondo allegato.

Vorrei avere il codice con il processo e non nella forma dell'espressione (1), però ho il problema della netlist.
Come posso fare???

Ciao

Re: Implementazione filtro FIR_cicli_for Problema Netlist

PostPosted: 30 Sep 2013, 11:58
by alfo84
Ciao a tutti. Se non sono stato chiaro nel formulare la domanda posso cercare di spiegarmi meglio...

Re: Implementazione filtro FIR_cicli_for Problema Netlist

PostPosted: 30 Sep 2013, 19:00
by Leonardo
La pacchia è finita ragazzi, finché è durata ho risposto volentieri ai vostri quesiti purtroppo non posso più essere così presente nel forum.
Più tardi o domani guardo se riesco a stornare un po di tempo per risponderti ma non posso garantire nulla.

Ciao

Re: Implementazione filtro FIR_cicli_for Problema Netlist

PostPosted: 30 Sep 2013, 20:07
by alfo84
Tranquillo Leonardo, se non hai tempo non preoccuparti. Ti ringrazio cmq dell'aiuto e dei consigli che mi hai dato. Buona serata

Re: Implementazione filtro FIR_cicli_for Problema Netlist

PostPosted: 01 Oct 2013, 01:04
by Leonardo
Ciao alfo84,

Il mistero è presto risolto, il ciclo for:

Code: Select all
      process(data_out_FIR1, t_FIR1)
      begin   
         for i in 0 to num_taps-1 loop     
           data_out_FIR1 <= data_out_FIR1 + t_FIR1(i);
         end loop;       
      end process;


equivale a scrivere:

Code: Select all
data_out_FIR1 <= data_out_FIR1 + t_FIR1(0);

         data_out_FIR1 <= data_out_FIR1 + t_FIR1(1);
         data_out_FIR1 <= data_out_FIR1 + t_FIR1(2);
         -- ...         


I segnali però non vengono aggiornati immediatamente e di conseguenza l'unico assegnamento è solamente l'ultimo.

Un altro problema è poi il fatto che il processo viene chiamato nuovamente al variare del segnale data_out_FIR1 in un ciclo quindi infinito che viene sintetizzato come un sistema in retroazione.

Come ho aggiunto in http://www.delucagiovanni.com/public/phpbb3/viewtopic.php?f=10&t=645&p=3536#p3536 puoi provare a utilizzare le variabili

Re: Implementazione filtro FIR_cicli_for Problema Netlist

PostPosted: 01 Oct 2013, 08:07
by alfo84
Grazie mille Leonardo. Mi hai fatto capire chiaramente perchè esce quella netlist. Proverò ad inserire delle variabili nel processo e vedo cosa esce.

Buona giornata. Ciao