Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Multiple drivers
Vanno evitati assolutamente i MULTIPLE DRIVERS di un segnale!
Quando lo stesso segnale viene pilotato da pi oggetti il risultato indeterminato Il tool segnala errore
Ad es.
A <= c nand d; process(CLK) begin if CLKevent and CLK = 1 then if RES=1 then A<= 0; else A <= c; end if; end if; end process; A <= e or f;
ARCES-LYRAS Lab University of Bologna
D Q
Loop combinatori
Vanno evitati SEMPRE i loop combinatori!
Il tool di sintesi riporta un errore Si darebbe luogo a bistabili/oscillatori!
D A
Segnali combinatori
Per permettere a Quartus di tracciare i segnali combinatori cos come sono descritti in VHDL, occorre definire lATTRIBUTO VHDL syn_keep per ogni segnale di interesse.
architecture A of my_entity is signal current_value, next_value: unsigned(7 downto 0); signal end_count: std_logic; attribute syn_keep : boolean; attribute syn_keep of next_value : signal is true; attribute syn_keep of end_count : signal is true; begin []
Quando le cose non vanno Supponiamo che luscita X non funzioni correttamente in simulazione! Che fare?
ciclo di clock Tn X valore atteso di X
E F RC1 D D Q
RC2 B C
A RC3 X
RC2 B
A RC3 X
calcolarsi RC3( A(Tn), B(Tn), C(Tn) ). Se questo valore differisce da X, il problema va ricercato in RC3 (cio nel PROCESS, o nello statement, o nel COMPONENT)
2. 3.
calcolarsi RC2( E(Tn), F(Tn) ). Se questo valore differisce da A(Tn), il problema va ricercato in RC2 verificare che E(Tn) sia coerente con D(Tn-1) e i valori di EN e RES del registro
calcolarsi RC1( G(Tn-1), F(Tn-1) ). Se questo valore differisce da D(Tn-1), il problema va ricercato in RC1