Pagina 1 di 1

test bench D_ff in VHDL

MessaggioInviato: 11 lug 2012, 19:29
da Rabeluk
salve a tutti volevo chiedervi se secondo voi un test bench cosi va bene in VHDL per un flip flop di tipo D con ingresso D,segnale di clock CLK e un RESET ed uscita Q

Codice: Seleziona tutto
entity testbench is
end testbench;

architecture behavior of testbench is

component D_ff
port(D,CLK,RESET:in bit;
    Q:out bit);
end component;

signal a,b,c,d:bit;
constant c_period:=10ns

begin
   UUT: D_ff port map (
      D=>a,
      RESET=>b,
      Q=>d
      );

   a_pr:process
      begin
      a<='0' ;
      wait for 15 ns;
      a<='1';
      wait for 10 ns;
   end process;

   b_pr:process
   begin
      b<='1';
      wait for 50 ns;
      b<='0';
      wait for 200 ns;
   end proces;

end behavior;

Re: test bench D_ff in VHDL

MessaggioInviato: 12 lug 2012, 10:48
da rini
Ciao Foto UtenteRabeluk, ho dato una occhiata al tuo testbench, ma giustamente tu hai fatto osservare che in un flip flop di tipo D ci sono 3 ingressi (D,CLK,RESET) ed un uscita (Q)

la tua associazione che hai fatto tra la UUT (Unit Under Test) e il testbench è stata
D => a
RESET => b
Q => d

(quindi manca l'ingresso del clock e di conseguenza sarà normale che questo codice non funziona)

poi hai creato due process che servono per modellari i segnali a, b. Ok, devi inserire un altro process sempre in parallelo a tutti gl'altri con l'obiettivo di modellare anche il segnale di clock.

PS: sarebbe meglio che inserisci il codice VHDL del D_ff

Re: test bench D_ff in VHDL

MessaggioInviato: 12 lug 2012, 12:00
da Rabeluk
ciao rini e grazie dell'aiuto... guarda mi sono dimenticato proprio di inserire il clock :D per scrivere in fretta

diciamo ke lo avrei inserito cosi (ovviamente dopo averlo inserito nel portmap) clk=>c
Codice: Seleziona tutto
c_p: process
begin
c<='0';
wait for 10 ns;
c<='1';
wait for 10 ns;
end process


volevo chiederti un'altra cosa... questa stringa che ho inserito posso evitare di metterla o è necessaria?
constant c_period:=10ns...
tutto il resto l'ho capito ma questa stringa l'ho presa per buona dalla guida

per il codice del flip flop va bene cosi? (D_ff sensibile sul fronte di salita,reset attivo alto)
Codice: Seleziona tutto
entiy D_ff is
port (D,CLK,RESET:in bit;
         Q:out bit);
end D_ff;
architecture struct of D_ff is
begin
process (CLK,RESET)
begin
if (RESET='1') then
Q<='0';
elsif (clk' event and clk='1') then
Q<=D
end if;
end process;
end struct;

Re: test bench D_ff in VHDL

MessaggioInviato: 12 lug 2012, 12:33
da rini
Si certo la puoi togliere quella costante c_period.

Il codice potrebbe andare bene, hai fatto semplicemente degli errori di sintassi, ti sei dimenticato qualche punto e virgola e una s. Te li mando corretti e con una simulazione funzionale del tuo codice in ModelSim, attualmente uso questo programma per simulare.

Cattura.PNG
Simulazione
Cattura.PNG (48.64 KiB) Osservato 1846 volte

Re: test bench D_ff in VHDL

MessaggioInviato: 12 lug 2012, 13:25
da Rabeluk
ok grazie rini... c'è solo un problema nn ho il simulatore in questo momento... diciamo ke lo sto imparando a livello teorico perché all'esame o dobbiamo scrivere il codice allo scritto o in caso lo chiede all'orale