Introduzione al linguaggio VHDLIl VHDL deve descrivere sia il TIMING sia la CONCURRENCY dei segnali....

24
Giovanni Vito Persiano Università degli Studi del Sannio Corso di Circuiti e Sistemi VLSI Facoltà di Ingegneria Il VHDL è un linguaggio per la sintesi e la simulazione di circuiti digitali, uno standard per la descrizione dell’hardware E’ stato introdotto negli anni ’80 nell’ambito di un progetto del dipartimento della difesa statunitense denominato VHSIC (Very High Speed Integrated Circuits). VHDL= VHSIC Hardware Description Language Nel 1987 il VHDL è stato adottato come standard dalla IEEE (Institution of Electrical and Electronics Engineering): VHDL-87 Nel 1993 lo standard è stato revisionato dalla IEEE. Versione attuale: VHDL-93 Per fortuna, il VHDL-93 differisce solo in pochi dettagli dal VHDL-87 Introduzione al linguaggio VHDL • Altri linguaggi per la descrizione dell’hardware VERILOG: inizialmente linguaggio proprietario della Cadence, ora standard IEEE Il VHDL ed il VERILOG coprono la grande maggioranza delle applicazioni, con una progressiva tendenza a favore del VHDL. Esistono altri linguaggi, spesso proprietari, meno generali del VHDL e del VERILOG: ABEL (Advanced Boolean Equation Language), inizialmente proprietario di DATA I/O corporation , è ora supportato da XILINX (sintassi semplice ed intuitiva - poco flessibile adatto per progetti non complessi come i PLD) AHDL (Altera Hardware Description Language), supportato da ALTERA (simile ad ABEL)

Transcript of Introduzione al linguaggio VHDLIl VHDL deve descrivere sia il TIMING sia la CONCURRENCY dei segnali....

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Il VHDL è un linguaggio per la sintesi e la simulazione di circuiti digitali, uno standard per la descrizione dell’hardware

    E’ stato introdotto negli anni ’80 nell’ambito di un progetto del dipartimento delladifesa statunitense denominato VHSIC (Very High Speed Integrated Circuits).

    VHDL= VHSIC Hardware Description Language

    Nel 1987 il VHDL è stato adottato come standard dalla IEEE (Institution of Electricaland Electronics Engineering): VHDL-87

    Nel 1993 lo standard è stato revisionato dalla IEEE. Versione attuale: VHDL-93

    Per fortuna, il VHDL-93 differisce solo in pochi dettagli dal VHDL-87

    Introduzione al linguaggio VHDL

    • Altri linguaggi per la descrizione dell’hardware

    VERILOG: inizialmente linguaggio proprietario della Cadence, ora standard IEEE

    Il VHDL ed il VERILOG coprono la grande maggioranza delle applicazioni, con una progressiva tendenza a favore del VHDL.

    Esistono altri linguaggi, spesso proprietari, meno generali del VHDL e del VERILOG:

    ABEL (Advanced Boolean Equation Language), inizialmente proprietario di DATAI/O corporation , è ora supportato da XILINX

    (sintassi semplice ed intuitiva - poco flessibile adatto per progetti non complessi come i PLD)

    AHDL (Altera Hardware Description Language), supportato da ALTERA

    (simile ad ABEL)

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Flusso di progetto di un sistema digitale integrato (livelli di astrazione)

    • Uso ed utilità del linguaggio VHDL

    Il VHDL è utilizzato nei tre livelli (comportamentale, RTL e gate) per:

    - Simulazione

    - Sintesi (passaggio automatico da un livello di astrazione ad un’altro inferiore)

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Simulazione VHDL

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Sintesi VHDL

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    • Confronto tra simulazione e sintesi VHDL

    Sono processi completamente differenti (per una stessa descrizione VHDL)

    Simulazione: verifica comportamento Ingresso - Uscita

    Sintesi: passaggio automatico da una descrizione ad alto livello(comportamentale) ad una a basso livello (netlist)

    Si utilizzano programmi CAD completamente differenti per le fasi di sintesi e disimulazione (sia la fase di sintesi che quella di simulazione prevedono un passointermedio di “compilazione” del listato VHDL)

    Solo un limitato sottoinsieme del VHDL è sintetizzabile!

    • Vantaggi del VHDL (rispetto a schematic entry)

    potenza e flessibilità: il VHDL ha costrutti linguistici molto potenti checonsentono di descrivere in poche righe decine di migliaia di gates (il progettista puòconcentrarsi sul comportamento del sistema, non sui dettagli implementativi)

    progettazione device-independent: il VHDL consente di descrivere il funzionamentodi un sistema senza dover a priori decidere il dispositivo per l’implementazione

    => riutilizzo in più progetti=> utilizzo di “Intellectual Properties” (IP)

    portabilità: il VHDL è uno standard perfettamente codificato: una descrizioneVHDL simulata con sistemi di sviluppo differenti, su piattaforme hardwaredifferenti) fornisce gli stessi risultati (almeno in teoria ...)

    riduzione dei tempi di sviluppo e dei costi

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    • Svantaggi del VHDL (nell’operazione di sintesi)

    Solo un limitato sottoinsieme del VHDL è sintetizzabile: Il VHDL è unlinguaggio completo (e complesso) e consente operazioni su files, definizione dipuntatori, ecc., che non hanno corrispettivo hardware

    => è necessario conoscere i costrutti sintetizzabili, e con quali limitazioni.

    I sintetizzatori VHDL, a volte, non effettuano alcuni controlli sul codice:

    => è possibile avere descrizioni VHDL sintetizzabili, ma non simulabili!

    => è possibile avere descrizioni VHDL sia sintetizzabili che simulabili, ma i cui comportamenti pre- e post-sintesi sono differenti!

    • Limitazioni del VHDL nell’operazione di sintesi

    decide (quasi) tutto il sintetizzatore: poco controllo nell’implementazione gate-leveldi un sistema descritto ad alto livello (direttive di sintesi)

    il circuito sintetizzato può non essere efficiente: molto spesso ciò è dovuto ad unadescrizione VHDL inefficace (come un programma C scritto male può essere moltolento o richiedere eccessiva memoria, un codice VHDL scritto male può dar luogoad una logica inutilmente complessa)

    la qualità del circuito sintetizzato varia da tool a tool: problema meno sentito, grazieal continuo miglioramento dei sistemi di sviluppo.

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Diagramma di flusso della progettazione

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    • Rappresentazione comportamentale

    Nella rappresentazione comportamentale (‘Behavioural’) un componente viene descritto mediante il suo comportamento ‘ingresso-uscita’. Si descrive come dovrà rispondere la rete, ma non la sua struttura.

    • Rappresentazione strutturale

    Nella rappresentazione strutturale (‘Structural’) un componente è descritto connettendo tra loro più blocchi. L’approccio è basato su un linguaggio testuale (VHDL) ma risulta concettualmente analogo al design-entry mediante schema logico.

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Esempio: Decoder (tramite schema logico)

    Eseguendo il design entry mediante schema logico ed effettuando la simulazione si perviene alle forme d’onda sottostanti.

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Esempio: Decoder (tramite descrizione testuale)

    Una possibile codifica in VHDL della rete combinatoria dell’esempio potrebbe essere:

    Dal confronto tra le simulazioni ottenute, rispettivamente, dal design entry mediante schema logico e mediante VHDL, si osserva che i due approcci sono equivalenti.

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Proprietà caratteristiche del VHDL

    Il VHDL, essendo un linguaggio di programmazione per la descrizione dell’Hardware, presenta delle sostanziali differenze rispetto ai linguaggi di programmazione standard (i.e. C, Java, Pascal). In particolare, vi sono due caratteristiche che differenziano il VHDL rispetto ai linguaggi di programmazione convenzionali:

    La capacità di poter gestire i tempi di propagazione dei segnali all’interno dei circuiti digitali

    La capacità di simulare lo svolgimento contemporaneo di più operazioni, tipica dei dispositivi Hardware

    • Analisi del Timing e del Concurrency

    La propagazione dei segnali tra i vari componenti che compongono un circuito digitale avviene attraverso fili o bus. Nella realtà la propagazione dei segnali non avviene istantaneamente perché ritardata dalle caratteristiche fisiche delle connessioni (fenomeni parassiti). Si consideri, ad esempio, la seguente rete logica

    Rete ideale

    Volendo descrivere come si propaga il segnale dal punto x verso a e b con un linguaggio di programmazione ad alto livello (ad esempio il ‘C’) si potrebbe scrivere:

    a:=x; /* assegna x ad a */

    b:=x; /* assegna x a b */

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Prima osservazione: problema di Timing

    La rappresentazione mediante le assegnazioni del lucido precedente non contempla i ritardi di propagazione del segnale introdotti dalle capacità parassite, associate ai due tratti della connessione tra il gate di ingresso e i due gate in uscita (lungo percorsi da x ad a da x a b) e mostrati nella rete sottostante.

    Solitamente i linguaggi di programmazione prevedono che più istruzioni di assegnazione siano eseguite nella sequenza in cui compaiono nel programma. In realtà il segnale elettrico parte da x e si propaga contemporaneamente verso a e b (non prima su a e poi su b come avviene nel codice della pagina precedente scritto in ‘C’).

    Rete reale con capacità parassite che impongono la variazione dei segnali a e b in ritardo rispetto alla variazione di x

    Seconda osservazione: problema di Concurrency

    Il VHDL deve descrivere sia il TIMING sia la CONCURRENCY dei segnali. Nella rete in esame, se ogni capacità introduce un ritardo pari a 1 unit_delay (∆) il codice VHDL che sintetizza il funzionamento reale della rete potrebbe essere:

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Quando un programmatore sviluppa del codice con un linguaggio ad alto livello (C, Java, Pascal) scompone il problema in una serie di istruzioni che saranno eseguite in modo sequenziale (PARADIGMA DI PROGRAMMAZIONE SEQUENZIALE)

    Al contrario, un progettista hardware decompone il progetto in blocchi interconnessi che reagiscono ad eventi e generano eventi. Gli eventi sono le transizioni dei segnali: ogni transizione di un ingresso, di un’uscita o del clock è un evento. Ogni evento impone che tutti i blocchi “dipendenti” da tale evento vengano valutati. L’ordine in cui vengono valutati i blocchi deve essere ininfluente sul risultato finale (cioè, qualunque sia l’ordine di valutazione delle espressioni associate ai singoli blocchi, lo stato complessivo raggiunto dalla rete quando tutti gli eventi sono stati gestiti deve essere sempre il medesimo). Il tipo di programmazione che consente di modellare questo tipo di funzionamento è il PARADIGMA DI PROGRAMMAZIONE PARALLELA: infatti, visto che il risultato dell’elaborazione deve essere indipendente dalla sequenza in cui le istruzioni sono state eseguite, tutte le istruzioni possono anche essere eseguite in parallelo, senza che un’istruzione debba attendere il completamento di un’altra.

    Ad esempio, si pensi alla rete combinatoria in figura. Il programma che descrive la rete deve generare un risultato (uscita di ciascun gate) che dipende solo dal valore degli ingressi e non dall’ordine con il quale vengono valutati gli AND e l’OR.Le istruzioni che descrivono i blocchi possono essere codificate secondo il paradigma della programmazione parallela

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Oggetti definiti in VHDL

    Oggetto VHDL: entità alla quale è associato un valore

    Sono definite quattro classi di oggetti

    Rappresentano connessioni hardware ( input, output, etc). Ad ogni segnale è associata una evoluzione temporale. Le assegnazioni sono effettuate mediante l’operatore

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Tipi di dato

    Nel linguaggio VHDL (Standard Package) sono predefiniti i seguenti tipi di dato:

    • BIT (‘0’,’1’)• BIT_VECTOR• BOOLEAN (‘TRUE’,’FALSE’)• INTEGER• REAL• TIME

    Oltre a questi tipi, è possibile utilizzarne altri di specifiche librerie (es. LIBRARY IEEE).

    E’ possibile definire dei vettori di bit utilizzando il tipo di dato BIT_VECTOR...

    Formalismo scalare

    PORT ( a3,a2,a1,a0 : IN BIT;y1,y0 : OUT BIT);

    Formalismo vettoriale (‘bus’)

    PORT ( a : IN BIT_VECTOR(3 DOWNTO 0);y : OUT BIT_VECTOR(1 DOWNTO 0));

    - Gli elementi dei vettori possono referenziarsi attraverso gli indici (ad es. y(2)

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    • Library IEEE

    Mediante l’utilizzo di librerie (keyword LIBRARY) è possibile aggiungere al VHDL standard nuovi tipi di dato, nuove funzioni, etc. Il meccanismo è analogo a quello utilizzato dai linguaggi di programmazione ad alto livello.

    • VHDL & Altera Max+ Plus II

    Altera Max+ Plus II fornisce un compilatore per codice VHDL. Esistono alcune regole che è necessario tenere in considerazione utilizzando l’ambiente Altera.

    E’ disponibile un editor di testo per codice VHDL all’interno dell’ambiente software ma è possibile utilizzare anche editor esterni.

    LIBRARY IEEE

    Tale libreria contiene i seguenti packages:

    • std_logic_1164 (definisce la std_logic e relative funzioni)

    • std_logic_arith (funzioni aritmetiche)

    • std_logic_signed (funzioni aritmetiche su numeri con segno

    • std_logic_unsigned (funzioni aritmetiche su numeri senza segno)

    • Il linguaggio VHDL NON E’ case sensitive. Per convenzione utilizzeremo le letteremaiuscole per le parole chiave del linguaggio

    • I file di testo che contengono il codice VHDL DEVONO avere estensione .vhd

    • Il nome del file VHDL (estensione .vhd) DEVE coincidere con il nome assegnato all’ ENTITY.

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Concetti fondamentali per la descrizione dicircuiti digitali con il linguaggio VHDL

    Una interface description (ENTITY), ha diverse architectural specification (ARCHITECTURE)

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    • Interface description (Entity)

    • Architectural specification (Architecture)

    Mediante il costrutto GENERIC si definiscono tipicamente delle costanti. Queste possono essere utilizzate, ad esempio, per definire dei tempi di ritardo:

    GENERIC(delay: time := 1 ns);

    All’interno della sezione ARCHITECTURE viene specificata la logica della rete.

    All’interno della sezione ARCHITECTURE (in ) è possibile definire degli oggetti, che sono tipicamente dei segnali e possono essere utilizzati (scope) solo all’interno della architecture description. E’ possibile utilizzare i data types definiti all’interno del VHDL o disponibili mediante l’utilizzo di librerie aggiuntive. Ad esempio:

    SIGNAL T1,T0 : BIT;

    La parte in cui è specificata la logica della rete è il , compresa tra BEGIN ed END.

    Mediante il costrutto PORT si specificano:

    • quali sono i segnali della rete esaminata (signal_names)

    •(direction) quali segnali sono di input (IN), di output (OUT), bidirezionali (INOUT)

    •(type) di che tipo sono i segnali

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Per il esistono due distinti modelli di elaborazione:

    Le espressioni comprese tra BEGIN ed END vengono elaborate contemporaneamente. Non ha alcun significato l’ordine con il quale appaiono nel codice VHDL.

    Concurrent Processing

    Mediante l’istruzione PROCESS possono definirsi una sequenza di istruzioni elaborate con il paradigma di programmazione sequenziale. In un blocco PROCESS le istruzioni sono elaborate in modo sequenziale, nell’ordine in cui vengono scritte. Ogni processo è eseguito in modo concorrente rispetto ad altri processi o istruzioni concorrenti definite nell’architecture.

    Sequential Processing

    sensitivity_list

    Lista degli segnali (eventi) ai quali le istruzioni del processo sono sensibili. Rappresentano quindi gli eventi che possono modificare le espressioni definite all’interno di un processo. Se nessuno di questi eventi si verifica, il processo rimane inattivo.

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    • Operatori logici definiti in VHDL

    Tali operatori agiscono su tipi predefiniti: BIT, BOOLEAN, BIT_VECTOR.Se sono usati vettori, il numero di bit dei due operandi deve essere lo stesso.

    Esempi:

    Y

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Concurrent statements

    I concurrent statements possono essere utilizzati solo al di fuori di un processo e da un punto di vista concettuale sono eseguiti in modo concorrente. Per questo motivo l’ordine con il quale vengono scritti non è importante.

    • WITH-SELECT-WHEN (Selected signal assignement)

    • Concurrent signal assignements

    • Selective signal assignements (WITH-SELECT-WHEN)

    • Conditional signal assignements (WHEN-ELSE)

    Esempio: AND2

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Una realizzazione più semplice dell’esempio AND2 potrebbe essere la seguente:

    • WHEN-ELSE (Conditional signal assignement)

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Nel caso siano verificate più condizioni, al segnale di uscita è assegnato il primo valore che soddisfa la catena dei WHEN.

    Esempio 1: AND2

    Esempio 2: AND2 sintetizzata in VHDL utilizzando il costrutto WHEN-ELSE

  • Giovanni Vito Persiano

    Università degli Studi del Sannio

    Corso di Circuiti e Sistemi VLSI

    Facoltà di Ingegneria

    Esempio 3: AND2 utilizzando una forma alternativa del costrutto WHEN-ELSE

    Esempio 4: AND2 utilizzando ancora un’altra forma del costrutto WHEN-ELSE