Sei sulla pagina 1di 24

Universit degli Studi del Sannio

Facolt di Ingegneria

Introduzione al linguaggio VHDL


Il VHDL un linguaggio per la sintesi e la simulazione di circuiti digitali, uno standard per la descrizione dellhardware E stato introdotto negli anni 80 nellambito 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

Altri linguaggi per la descrizione dellhardware


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)

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Uso ed utilit del linguaggio VHDL


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

Il VHDL utilizzato nei tre livelli (comportamentale, RTL e gate) per: - Simulazione - Sintesi (passaggio automatico da un livello di astrazione ad unaltro inferiore)

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Simulazione VHDL

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Sintesi VHDL

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

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 di simulazione (sia la fase di sintesi che quella di simulazione prevedono un passo intermedio 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 che consentono 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 funzionamento di un sistema senza dover a priori decidere il dispositivo per limplementazione => riutilizzo in pi progetti => utilizzo di Intellectual Properties (IP) portabilit: il VHDL uno standard perfettamente codificato: una descrizione VHDL simulata con sistemi di sviluppo differenti, su piattaforme hardware differenti) fornisce gli stessi risultati (almeno in teoria ...)

riduzione dei tempi di sviluppo e dei costi

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Svantaggi del VHDL (nelloperazione di sintesi)


decide (quasi) tutto il sintetizzatore: poco controllo nellimplementazione gate-level di un sistema descritto ad alto livello (direttive di sintesi) il circuito sintetizzato pu non essere efficiente: molto spesso ci dovuto ad una descrizione VHDL inefficace (come un programma C scritto male pu essere molto lento o richiedere eccessiva memoria, un codice VHDL scritto male pu dar luogo ad una logica inutilmente complessa) la qualit del circuito sintetizzato varia da tool a tool: problema meno sentito, grazie al continuo miglioramento dei sistemi di sviluppo.

Limitazioni del VHDL nelloperazione di sintesi


Solo un limitato sottoinsieme del VHDL sintetizzabile: Il VHDL un linguaggio completo (e complesso) e consente operazioni su files, definizione di puntatori, 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!

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Diagramma di flusso della progettazione

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

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. Lapproccio basato su un linguaggio testuale (VHDL) ma risulta concettualmente analogo al design-entry mediante schema logico.

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Esempio: Decoder (tramite schema logico)

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

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Esempio: Decoder (tramite descrizione testuale)


Una possibile codifica in VHDL della rete combinatoria dellesempio 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

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Propriet caratteristiche del VHDL


Il VHDL, essendo un linguaggio di programmazione per la descrizione dellHardware, 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 allinterno 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; b:=x; /* assegna x ad a */ /* assegna x a b */

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

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.

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


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

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

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 unuscita o del clock un evento. Ogni evento impone che tutti i blocchi dipendenti da tale evento vengano valutati. Lordine in cui vengono valutati i blocchi deve essere ininfluente sul risultato finale (cio, qualunque sia lordine 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 dellelaborazione deve essere indipendente dalla sequenza in cui le istruzioni sono state eseguite, tutte le istruzioni possono anche essere eseguite in parallelo, senza che unistruzione debba attendere il completamento di unaltra. 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 dallordine con il quale vengono valutati gli AND e lOR. Le istruzioni che descrivono i blocchi possono essere codificate secondo il paradigma della programmazione parallela

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

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 loperatore <=. Non hanno alcun significato hardware. Sono utilizzate per memorizzare valori temporanei. Le variabili possono essere dichiarate, o avere valori assegnati, solo allinterno di blocchi sequenziali del codice VHDL. Il simbolo di assegnamento := Rappresentano valori costanti di un dato tipo. Non si pu cambiare il loro valore. Attraverso lo statement GENERIC il VHDL dispone di un meccanismo per passare parametri non hardware (es. ritardi) di un componente.

Oggetti che possono essere dichiarati ed utilizzati sia in blocchi concorrenti che in blocchi sequenziali.

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

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) <= a(1)) - E inoltre possibile assegnare una sequenza di cifre (ad es., y <= 01;) - Per costanti binarie di un singolo bit si utilizza il simbolo mentre per configurazioni binarie da 2 o pi bit si utilizza il simbolo . (ad es. a <= 1; b_vettore <= 100111;) - E anche possibile dare assegnazioni ad un numero limitato di bit del vettore (bit-slicing). (ad es. b_vettore(4 downto 2) <= 101)

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Library IEEE
Mediante lutilizzo 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. 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)

VHDL & Altera Max+ Plus II


Altera Max+ Plus II fornisce un compilatore per codice VHDL. Esistono alcune regole che necessario tenere in considerazione utilizzando lambiente Altera. E disponibile un editor di testo per codice VHDL allinterno dellambiente software ma possibile utilizzare anche editor esterni. Il linguaggio VHDL NON E case sensitive. Per convenzione utilizzeremo le lettere maiuscole 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

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Concetti fondamentali per la descrizione di circuiti digitali con il linguaggio VHDL

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

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Interface description (Entity)

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

Architectural specification (Architecture)

Allinterno della sezione ARCHITECTURE viene specificata la logica della rete. Allinterno della sezione ARCHITECTURE (in <architecture declarations>) possibile definire degli oggetti, che sono tipicamente dei segnali e possono essere utilizzati (scope) solo allinterno della architecture description. E possibile utilizzare i data types definiti allinterno del VHDL o disponibili mediante lutilizzo di librerie aggiuntive. Ad esempio: SIGNAL T1,T0 : BIT; La parte in cui specificata la logica della rete il <processing statements>, compresa tra BEGIN ed END.
Giovanni Vito Persiano Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Per il <processing statements> esistono due distinti modelli di elaborazione:

Concurrent Processing
Le espressioni comprese tra BEGIN ed END vengono elaborate contemporaneamente. Non ha alcun significato lordine con il quale appaiono nel codice VHDL.

Sequential Processing
Mediante listruzione 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, nellordine in cui vengono scritte. Ogni processo eseguito in modo concorrente rispetto ad altri processi o istruzioni concorrenti definite nellarchitecture.

sensitivity_list Lista degli segnali (eventi) ai quali le istruzioni del processo sono sensibili. Rappresentano quindi gli eventi che possono modificare le espressioni definite allinterno di un processo. Se nessuno di questi eventi si verifica, il processo rimane inattivo.
Giovanni Vito Persiano Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Operatori logici definiti in VHDL


Esempi: Y<= NOT A; Z<= a AND b;

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.

Operatori relazionali definiti in VHDL


Tali operatori agiscono su operandi dello stesso tipo e ritornano un valore di tipo BOOLEAN (TRUE o FALSE). Esempi: a_boolean <= op1 > op2; b_boolean <= op1 /= op2;

Operatori come +, -, <, >, <= ,>= sono definiti solo per il tipo INTEGER.

Altri operatori definiti in VHDL

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

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 lordine con il quale vengono scritti non importante. Concurrent signal assignements Selective signal assignements (WITH-SELECT-WHEN) Conditional signal assignements (WHEN-ELSE)

WITH-SELECT-WHEN (Selected signal assignement)

Esempio: AND2

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Una realizzazione pi semplice dellesempio AND2 potrebbe essere la seguente:

WHEN-ELSE (Conditional signal assignement)

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

Esempio 1: AND2

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

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

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Universit degli Studi del Sannio

Facolt di Ingegneria

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

Esempio 4: AND2 utilizzando ancora unaltra forma del costrutto WHEN-ELSE

Giovanni Vito Persiano

Corso di Circuiti e Sistemi VLSI

Potrebbero piacerti anche