






































































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 - Sitemi Integrati - parte 4
Tipologia: Dispense
1 / 78
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!







































































architecture nome_architettura of nome_entita is dichiarazioni di tipo dichiarazioni di segnali dichiarazioni di costanti definizione di funzioni definizioni di procedure dichiarazioni di componenti begin statement concorrente
.... end nome_architettura;
library ieee; use ieee.std_logic_ 1164. all ; entity dc 2 is port (a, b, en : in std_logic; y : inout std_logic); end dc 2 ; architecture data_flow of dc 2 is begin y <= (a and b) when en =' 1 ' else 'Z'; end ;
architecture beh of reg is signal q : std_logic_vector(y' range ); begin process (clk,reset,en) begin if (reset='1') then q <= ( others => '0'); elsif rising_edge(clk) then q <= d; end if ; if en='0' then y <= ( others => 'Z'); else y <= q; end if ; end process ; end beh; In questo istante q cambia, mentre y varia al successivo evento sul clock situazione analoga Attenzione : q compare sia a sinistra che a destra del simbolo di assegnazione
architecture beh of reg is signal q : std_logic_vector(y' range ); begin process (clk,reset,en, q ) begin if (reset='1') then q <= ( others => '0'); elsif rising_edge(clk) then q <= d; end if ; if en='0' then y <= ( others => 'Z'); else y <= q; end if ; end process ; end beh; inserisco q nella sensitivity list La versione iniziale, con l'utilizzo di una variabile è di gran lunga preferibile
La libreria IEEE 1164 definisce anche il tipo std_ulogic che ha gli stessi 9 valori del tipo std_logic ma non prevede alcuna resolution function.
Si ha un errore in fase di compilazione (driver multipli senza resolution function).
Nell’ottica della sintesi sarebbe opportuno utilizzare il tipo std_ulogic In effetti, è invalso l’uso del solo tipo std_logic sia per la simulazione che per la sintesi
a(7) <= ‘0’; a(6) <= ‘1’; a(5) <= ‘1’; a(4) <= ‘1’; a(3) <=‘0’; a(2) <= ‘1’; ( 1 ) <= ‘1’; a(0) <= ‘1’; In alternativa: a <= (‘0’, ‘1’, ‘ 1 ’, ‘1’, ‘ 1 ’, ‘1’, ‘ 1 ’, ‘0’); In alternativa: a <= (7 => ‘0’, 0 => ‘0’, others => ‘1’); In alternativa: a <= “01111110”; E’ possibile far riferimento ad una parte ( slice ) di un array: a (7 downto 1) <= "111111";
Sono utilizzati per dichiarare e memorizzare tipi, funzioni, componenti ecc. che possono essere adoperati in una descrizione VHDL.