View Full Version : [VHDL]Semplice sistema sequenziale
domenico88
24-07-2017, 17:09
Salve mi appresto a sostenere l'esame di elettronica digitale ed il prof al corso ci ha fatto scrivere semplici progetti in vhdl, da reti combinatorie ad macchine Fsm con massimo 4 stati (fsm sempre sincrone naturalmente:D )
Stavo cercando di capire se stavo svolgendo un semplice esercizio ma non so se risulta giusto, ho mandato una mail al tutor ma sono 10 giorni che non mi risponde.. mah.. comunque , spero mi possiate dare una mano
Ecco l 'esercizio è questo, posto una foto ,
http://www.hosting.universalsite.org/image-img0218-B24F_59761B81.jpg
Chiedo ai più esperti un umile aiuto , con questo caldo spero di andare finalmente un po' in vacanza:D
Ciauu
Salve mi appresto a sostenere l'esame di elettronica digitale ed il prof al corso ci ha fatto scrivere semplici progetti in vhdl, da reti combinatorie ad macchine Fsm con massimo 4 stati (fsm sempre sincrone naturalmente:D )
Stavo cercando di capire se stavo svolgendo un semplice esercizio ma non so se risulta giusto, ho mandato una mail al tutor ma sono 10 giorni che non mi risponde.. mah.. comunque , spero mi possiate dare una mano
Ecco l 'esercizio è questo, posto una foto ,
Chiedo ai più esperti un umile aiuto , con questo caldo spero di andare finalmente un po' in vacanza:D
Ciauu
Va bene la foto per far capire lo schema che vuoi implementare, ma almeno il codice VHDL potevi scriverlo nel messaggio...
Comunque, se ho ben interpretato quello che hai scritto, mi pare non ci siano errori
Saluti
domenico88
25-07-2017, 11:16
Ciao guarda hai ragione per il codice, solo che l'ho scritto proprio al volo (stavo letteralmente squagliando dal caldo e le funzioni celebrali non reggevano tanto forse :D
Ti ringrazio comunque
Facendo qualche altro esercizio posterò il codice scritto per bene
domenico88
25-07-2017, 14:41
Un collega del corso mi ha suggerito di gestire la and in un processo ed il flip flop in un altro processo. Nel primo processo ha detto di moltiplicare il valore di uscita del flip flop con l'ingresso In , mentre nel secondo processo si tratta di gestire solo il flip flop.. mi sembrava questa soluzione un po' particolare diciamo.. il fatto che comunque non riesco ad impostare bene il codice vhdl..:rolleyes:
domenico88
25-07-2017, 16:58
Salve ragazzi, mi ha scritto il tutor, ha detto che è sbagliato inserire logica combinatario all'interno del processo, quindi bisognerebbe gestire l'aggiornamento del FF al di fuori del processo e poi aggiornare correttamente l'uscita.. :rolleyes:
domenico88
25-07-2017, 18:32
Grazie ragazzi, ora provo con il programma e posto i risultati
domenico88
30-07-2017, 17:17
Salve
Ho scaricato quartus prime della intel mi pare, comunque non sembrano funzionare i file vhdl se scrivo la entity e la architecture
Sto leggendo un po' alcuni documenti e sembra che bisognerebbe creare dei testbench per testare appunto i componenti anche combinatori naturalmente
Il fatto è che sul libro non trovo dei riferimenti ai simulatori e nemmeno il prof nel corso ne ha parlato .. non saprei da dove iniziare a questo punto, spero però che il codice almeno sia scritto bene..
domenico88
31-07-2017, 14:45
Grazie Antonio23
Vedo se ci riesco allora , ci devo studiare un po' sopra :)
domenico88
01-08-2017, 00:23
Salve allora mi hanno suggerito che questa risoluzione non è corretta
dovrebbe essere scritto in questo modo ma ho alcuni dubbi su come viene calcolata l'uscita AND, allora il codice lo posto qui sotto, il flip flop commuta sul fronte di salita con reset asincrono e segnale di enable
entity system1 is
* port(In1 : in std_logic;
Rst : in std_logic;
Enable: in std_logic;
* * * *
uscita_FF: out std_logic);
end system1
architecture Rtl of system1 is
begin
signal uscita_AND : std_logic;
uscita_AND <= uscita_FF and in
process (Clk, Rst)
* begin* -- process register
* * if Rst = '0' then* * * * * * * *-- reset asincrono
* * * uscita_FF <= '0';
* * else if (Clk'event and Clk = '1') then* -- rising clock edge
* * * if (Enable = '1') then
* * * * uscita_FF <= uscita_AND;
* * * end if;
* * end if;
* end process register;
quello che non mi torna è se l'espressione
uscita_AND <= uscita_FF and in
sia equivalente a questa
uscita_AND <= uscita_AND and in
Ma l'uscita del FF non viene assegnata proprio all'ingresso della porta AND ?
cioè il fliflop immagazina il segnale che esce dalla espressione combinatoria e lo riporta in ingresso ancora alla and... spero di non fare confusione :rolleyes:
domenico88
01-08-2017, 12:44
Lo riscrivo così che si legge meglio effettivamente, sto fecendo delle insalate assurde, sorry:rolleyes:
entity system1 is
port(In1 : in std_logic;
Rst : in std_logic;
Enable: in std_logic;
clk : in std_logic;
uscita_FF: out std_logic);
end system1
architecture Rtl of system1 is
begin
signal uscita_AND : std_logic;
uscita_AND <= uscita_FF and In1
process (Clk, Rst)
begin
if Rst = '0' then
uscita_FF <= '0';
else if (Clk'event and Clk = '1') then
if (Enable = '1') then
uscita_FF <= uscita_AND;
end if;
end if;
end process;
In pratica mi hanno detto che scrivendolo in quel modo non viene descritto bene perché l'uscita della and e l'uscita del flip flop sono diverse
in pratica
questa
uscita_AND <= uscita_AND and In1
è diversa da questa
uscita_AND <= uscita_FF and In1
quindi l'uscita della porta and non equivale all'uscita del FF in tutti gli intervalli temporali, in quanto l'uscita del FF varia sul fronte del clock essendo una rete sequenziale, mentre la porta AND fa variare l'uscita in qualsiasi istante in cui variano gli ingressi
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.