Segnali ed esecuzione concorrente
Introduzione I segnali simulano i collegamenti fisici tra blocchi Servono a sincronizzare o scambiare dati tra processi Lassegnazione di un segnale avviene in base al tempo di simulazione e non alla posizione nel listato Devono venir dichiarati opportunamente allinterno di: – Packages (segnali globali) – Entita (segnali comuni fra varie erchitetture) – Architecture (segnali locali) I segnali vengono dichiarti anche nella dichiarazione port di una entity – sono di 4 tipi: In, Out, Inout, Buffer (I/O ma con 1 solo driver)
Process begin x <= 1 after 4 ns; y <= 2 after 10 ns; x <= 3 after 4 ns; wait... Assegnazione dei segnali in un processo Nellassegnazione di un segnale viene definito – Il segnale in questione – Il driver del segnale (un altro segnale, una variabile, una costante …) – Listante (tempo di simulazione) in cui avviene lassegnazione – Lassegnazione dei segnali e sequenziale allinterno del processo e concorrente al di fuori del processo stesso – Allinterno del processo lassegna- zione in pratica viene ritardata fino a che non inizia un ciclo di simulazione (di solito coincide con listruzione wait)
Segnali ritardati Lassegnazione di un segnale avviene in un preciso istante di simulazione Il ritardo viene spesso usato per descizioni comportamentali di un processo Il ritardo NON puo essere sintetizzato Puo essere adottato per descrivere il funzionamento di una porta logica fisica NON puo essere sintetizzato!!! La porta logica non deve ritardare ne ns ne ns x <= a and b after 10 ns;
Esempio X <= 1; wait...;la vera assegnazione di x avviene qui x <= y;x assume il valore di y y <= x;y assume il valore di x wait...;in questo punto i segnali si scambiano v:=1;v assume IMMEDIATAMENTE il valore 1 s<=v;s assumera il valore di v al WAIT a:=s;a assume il vecchio valore di s wait... ; x <= 1; x <= 2; wait... ; x assume il valore 2
WAIT Allinterno di un processo ci saranno una o piu istruzioni WAIT – WAIT ON(es. wait on a,b) – WAIT UNTIL(es. wait until a >10;) – WAIT FOR(es wait for 10 ns;) – WAIT(es.wait;) - (esecuzione sospesa) La sensitivity List corrisponde ad una istruzione wait on in coda al processo
PROCESS – Un PROCESS contiene una serie di operazioni sequenziali – Al suo interno la metodologia di programmazione e di tipo sequenziale e pertanto familiare ai programmatori – Tutte le operazioni racchiuse in un PROCESS avvengono in un tempo (tempo di simulazione) NULLO – I PROCESS sono tra loro concorrenti (operano in parallelo) – Un PROCESS e un loop infinito e non esce mai – Un PROCESS deve contenere unistruzione WAIT o una SENSITIVITY LIST (per la sincronizzazione) – In pratica il simulatore esegue le istruzioni allinterno di un processo fino a che non trova listruzione WAIT, poi passa agli altri processi.
Assegnazione concorrente Fuori dai processi per snellire la stesura si usa lassegnazione concorrente Lassegnazione concorrente in pratica e un processo con una sola istruzione La sensitivity list coincide con i segnali a destra dellassegnazione Come tutti i processi, anche le assegnazioni concorrenti vengono eseguite in parallelo process (a,b) begin c <= a and b; end process c <= a and b
Assegnazione condizionata z 3) else b when (x < 3) else c; Questo tipo di assegnazione non puo essere effettuata allinterno di un processo
Assegnazione con segnale di selezione Deve esserci un solo target Deve esserci una sola espressione con with with MYSIG select z <= a when 15, b when 22, c when others;
Rappresentazione Strutturale – Rappresenta larchitettura come interconnessione di componenti – Spesso e il risultato di un processo di sintesi – E costituita da: componenti – dichiarazione (viene dichiarato il componente e le sue porte) – istanziazione (viene richiamato il componente in una o piu posizioni) – librerie (solitamente larchitettura del componente e descritta in una opportuna libreria) segnali di interconnessione, opportunamente dichiarati – come entity port – dichiarati nella entity – dichiarati nellarchitettura – dichiarati in un pakage
Esempio (Flip-Flop) res set q qneg U1 U2 architecture netlist of flipflop is component nor2 port (a,b: in bit; c: out bit); end component; begin U1: nor2 port map (res,qneg,q); U2: nor2 port map (q, set, qneg); end netlist; dichiarazione istanziazione
Associazione porta - segnale Puo essere di tipo posizionale (il primo al primo, il secondo al secondo e cosi via) Oppure si puo dichiarare espressamente quale segnale deve essere associato alla singola porta U1: nor2 port map (res, qneg,q); U1: nor2 port map (a => res, c => q, b=> qneg);
Struttura gerarchica Una architettura strutturale puo essere – di tipo gerarchico (a piu livelli) – ad un singolo livello (flat) Per associare ad ogni component una determinata architettura (spesso residente in una libreria) si utilizza la CONFIGURATION Configuration uno of flipflop for netlist for U1: nor2 use entity work.NOR2(fast); end for; for U2: nor2 use entity ASIC.NO2(fast); end for; end uno;
CONCLUSIONI – Con questa serie di lezioni Si e voluto dare allo studente uninfarinatura sul VHDL, e portarlo a comprendere un listato Molti argomenti vi sarebbero ancora da trattare: – GENERATE – BLOCK – PROCEDURE – FUNCTIONS –... Per ulteriori approfondimenti si rimanda il lettore a testi specifici Solitamente si usa il VHDL per descrivere un circuito SINTETIZZABILE, pertanto solo poche delle possibilita offerte dal linguaggio vengono sfruttate in pratica