1 / 15

Segnali ed esecuzione concorrente

Segnali ed esecuzione concorrente. Introduzione . I segnali simulano i collegamenti fisici tra blocchi Servono a sincronizzare o scambiare dati tra processi L’assegnazione di un segnale avviene in base al “tempo di simulazione ” e non alla posizione nel listato

kimi
Download Presentation

Segnali ed esecuzione concorrente

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Segnali edesecuzione concorrente

  2. Introduzione • I segnali simulano i collegamenti fisici tra blocchi • Servono a sincronizzare o scambiare dati tra processi • L’assegnazione di un segnale avviene in base al “tempo di simulazione” e non alla posizione nel listato • Devono venir dichiarati opportunamente all’interno 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)

  3. Assegnazione dei segnali in un processo • Nell’assegnazione di un segnale viene definito • Il segnale in questione • Il driver del segnale (un altro segnale, una variabile, una costante …) • L’istante (tempo di simulazione) in cui avviene l’assegnazione • L’assegnazione dei segnali e’ sequenziale all’interno del processo e concorrente al di fuori del processo stesso • All’interno del processo l’assegna-zione in pratica viene ritardata fino a che non inizia un ciclo di simulazione (di solito coincidecon l’istruzione wait) Process begin x <= 1 after 4 ns; y <= 2 after 10 ns; x <= 3 after 4 ns; wait ...

  4. Segnali ritardati • L’assegnazione 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’ 9.99999 ns ne’ 10.000001 ns x <= a and b after 10 ns;

  5. 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

  6. WAIT • All’interno 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

  7. 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 un’istruzione WAIT o una SENSITIVITY LIST (per la sincronizzazione) • In pratica il simulatore esegue le istruzioni all’interno di un processo fino a che non trova l’istruzione WAIT, poi passa agli altri processi.

  8. Assegnazione concorrente process (a,b) begin c <= a and b; end process c <= a and b • Fuori dai processi per snellire la stesura si usa l’assegnazione concorrente • L’assegnazione concorrente in pratica e’ un processo con una sola istruzione • La “sensitivity list” coincide con i segnali a destra dell’assegnazione • Come tutti i processi, anche le assegnazioni concorrenti vengono eseguite in parallelo

  9. Assegnazione condizionata z <= a when (x > 3) else b when (x < 3) else c; Questo tipo di assegnazione non puo’ essere effettuata all’interno di un processo

  10. 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;

  11. Rappresentazione Strutturale • Rappresenta l’architettura 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 l’architettura del componente e’ descritta in una opportuna libreria) • segnali di interconnessione, opportunamente dichiarati • come entity port • dichiarati nella entity • dichiarati nell’architettura • dichiarati in un pakage

  12. Esempio (Flip-Flop) res q U1 qneg set 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

  13. 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);

  14. 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 for; end uno;

  15. CONCLUSIONI • Con questa serie di lezioni • Si e’ voluto dare allo studente un’infarinatura 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

More Related