













Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Programmazione VHDL - Sistemi Integrati - parte 5
Tipologia: Dispense
1 / 21
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!














Nell'esempio, l'uscita è funzione solo dello stato attuale (macchina di Moore)
Partiamo dal diagramma a stati e dalla tabella delle uscite
Effettuiamo una codifica dello stato
Possiamo finalmente scrivere le equazioni che consentono di calcolare lo stato futuro in funzione dello stato attuale e degli ingressi:
Le equazioni dello stato futuro sono spesso più semplici: D'altro canto si utilizza un numero maggiore di registri e ci sono più funzioni da calcolare.
Utilizziamo due processi: uno per descrivere la parte combinatoria ed uno per i registri. Non è necessario esplicitare alcuna codifica per lo stato!
registri: process (clock,reset) begin if (reset=' 1 ') then x <= idle; elsif rising_edge(clock) then x <= y; end if; end process registri; registri: process (clock) begin if rising_edge(clock) then if (reset=' 1 ') then x <= idle; else x <= y; end if; end if; end process registri;
type stato is (idle, scelta, leggi, scrivi); signal x,y : stato; La codifica dello stato e’ affidata al sintetizzatore.
Utilizziamo un costrutto case..when per descrivere le uscite e lo stato futuro a partire dallo stato attuale e dagli ingressi. In questo esempio le uscite non dipendono dagli ingressi (macchina di Moore) e sono assegnate all'inizio di ogni statement when.
E' necessaria un'ulteriore modifica nel processo per il sistema combinatorio (i casi possibili nel case..when sono ora più di 4 – il tipo std_logic può assumere 9 valori):
case x is when idle => oe <= ' 0 '; we <= ' 0 '; if ( read=' 1 ' and bus_id=X"A 2 " ) then
......... when scelta => ......... when scrivi => oe <= ' 0 '; we <= ' 1 '; if ( ready=' 1 ') then y <= idle; else y <= scrivi; end if; when others => oe <= ‘-‘; we <= ‘-‘; y <= ( others => ‘-‘); end case ;
case x is when idle => oe <= ' 0 '; we <= ' 0 '; if ( read=' 1 ' and bus_id=X"A 2 " ) then
......... when scelta => ......... when scrivi => oe <= ' 0 '; we <= ' 1 '; if ( ready=' 1 ') then y <= idle; else y <= scrivi; end if; when others => oe <= ' 0 '; we <= ' 0 '; y <= idle; end case ;