Pagina 1 di 2

Divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 15:59
da Castello
Immagine.png
testo.
Sono alle prese con il seguente esercizio e sono arrivato ad impostare questo codice che però mi da degli errori in fase di visualizzazione con MODELSIM :



Codice: Seleziona tutto
entity freq_variabile is
port(clk, reset, enable : in std_logic;
   out_vf : out std_logic);
end freq_variabile;

architecture Behavioral of freq_variabile is
signal counter : integer:=0;
signal out_vf2 : std_logic;

begin
process(clk,reset,enable)
begin
if reset='1' then
out_vf2<='0';
counter <= 0;
elsif rising_edge(clk) then
if enable='1' then
if counter=0 then
out_vf2 <= clk;
counter<=counter+1;
end if;
if counter=1 then
out_vf2<='1';
counter<=counter+1;
end if;
if counter=2 then
out_vf2<='0';
counter<=counter+1;
end if;
if counter=3 then
out_vf2<= '1';
counter<=counter+1;
end if;
if counter=4 then
out_vf2<= '1';
counter<=counter+1;
end if;
if counter=5 then
out_vf2<= '0';
counter<=counter+1;
end if;
if counter=6 then
out_vf2<='0';
counter<=counter+1;
if counter=7 then
out_vf2<= '1';
counter<=counter+1;
end if;
if counter=8 then
out_vf2<= '0';
counter<=0;
end if;
elsif enable='0' then --enable disattivo
out_vf2<='X';
counter<=0;
end if;
end if;
end if;
end process;
out_vf<=out_vf2;
end Behavioral;



testbench relativo:

Re: divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 17:01
da marco438
Riguarda l'immagine che hai postato e domandati se chi vuole aiutarti e' in grado di leggerla senza perderci la vista.
Era cosi' difficile riportare il testo in chiaro e disegnare due grafici?

Re: divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 17:48
da Castello
scusa marco,ma ho cercato di nettere la migliore immagine possibile.se becessario scrivo il testo .

Re: divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 17:50
da marco438
Sarebbe opportuno e, gia' che ci sei disegna in FidoCadJ anche il resto.

Re: divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 18:01
da Castello
A.png
realizzare un entità vhdl,sincrona ad un segnale di clock(clk), capace di generare in uscita un segnale a duty cycle costante(pari al 50%) ed a frequenza variabile(out_vf) come da figura.
Tale uscita deve permanere indefinitamente a partire da un segnale di RESET in ingresso.
infine il segnale di ENABLE disabilita l'uscita portandola ad alta impedenza,mentre l'entità continua il suo regolare funzionamento interno.

Re: divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 18:02
da marco438
Disegnarlo proprio no e'?

Re: divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 18:18
da gill90
Che errori ti dà in particolare?

Re: divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 18:27
da Castello
TEST.png
nessuno sintatticamente, mentre facendo il testbench(MODELSIM) ecco cosa ottengo:

Re: divisore di frequenza VHDL

MessaggioInviato: 21 mag 2014, 19:02
da gill90
Allora, prima di tutto ti consiglio di usare lo statement case al posto di tutti quegli if, rende il codice molto più fluido e ti evita molti problemi. Secondo, sarebbe meglio indentare almeno un po' il codice così da permettere una migliore comprensione. Puoi postare anche il testbench?

Re: Divisore di frequenza VHDL

MessaggioInviato: 22 mag 2014, 9:11
da Castello
fovrebbe essere visibile...