Title: Il linguaggio VHDL
1Il linguaggio VHDL
- Introduzione al linguaggio VHDL
- per la descrizione di sistemi digitali
2TESTI
- A GUIDE TO VHDL - Second EditionStanley MAZOR
and Patricia LANGSTRAATKluver Academic Publishers
3Obiettivi
- NON e un corso completo sul VHDL
- NON imparerete nel dettaglio la sintassi del VHDL
- NON si approfondiranno gli aspetti semantici
- NON imparerete a sviluppare estensioni o
integrazioni - Capirete quali sono i motivi che spingono ad
impiegare il VHDL - Comprenderete i concetti base e sarete in grado
di interpretare un sistema descritto tramite VHDL - Sarete in grado di descrivere sistemi di
utilita praticain VHDL
4Introduzione
- A chi e dedicato?
- Ai progettisti di circuiti e sistemi logigi che
utilizzano sistemi CAE (Coputer Automated tools
for Electronic design) - Un po di storia
- 1983 il dipartimento della difesa (DOD)
allinterno del progetto VHSIC (Very High Speed
Integrated Circuti) sviluppa un linguaggio di
descrizione Hardware - 1987lIEEE lo riconosce come STANDARD (1076)
- 1993Il linguaggio viene migliorato con delle
integrazioni minori - Attualmente A causa della attuale complessita
dei circuiti ha surclassato altre metodologie
(schematic capture) -
5Vantaggi
- Progetto di tipo technology - independent
- Impiegato da diversi fornitori / venditori (sia
di HW che SW) - Facilita gli aggiornamenti del sistema
progettato - Documentazione del progetto e STANDARD
- Miglioramento nella qualita del progetto
- Consente di analizzare varie alternative
- Consente piu livelli di astrazione
- Verifica ad un elevato livello di astrazione
- Paragone delle prestazioni tra vari livelli di
astrazione - Integrazione tra blocchi sviluppati a vari
livelli - Riutilizzo e condivisione di blocchi gia
sviluppati
6Considerazioni
- E meno immediato di uno schema digitale
- E sintatticamente pesante
- Essendo uno Standard Aperto vi si possono
definire strutture e/o tipologie di variabili non
direttamente collegabili alla struttura del
circuito - Solo un sottoinsieme del VHDL e fisicamente
sintetizzabile - Esistono tools di sviluppo che consentono di
ricavare descrizioni in VHDL partendo da Schemi,
Macchine a Stati Finiti, Tabelle di verita, ecc.
7Introduzione
8Introduzione
Il Linguaggio VHDL viene utilizzato per
Documentare, Simulare, Sintetizzare circuiti e
sistemi logici. Esso è costituito da più parti
alcune delle quali fanno parte integrale del
linguaggio stesso, mentre altre vengono integrate
da opportuni packages realizzati allinterno di
libraries
9Un primo esempio
A lt B C after 5.0 ns
- Aspetti introdotti
- Descrizione / documentazione
- Top - Down design
- Simulazione
- Sintesi Logica
- Programmare in VHDL
10Descrizione / Documentazione
- Una delle funzioni del VHDL e quella di
descrivere / documentare il funzionamento di un
sistema in modo chiaro ed inequivocabile - Non e detto che questo sistema debba essere
realizzato - Alle volte e IMPOSSIBILE la realizzazione fisica
del circuito - Potrebbe essere la descrizione di un sistema gia
in funzione - Potrebbe essere un modo per descrivere gli
stimoli da impiegare per testare un circuito
11Top - Down Design (1)
- Tecnica di progetto che passa attraverso vari
livelli di astrazione - Algoritmico
- RTL (register transfer level)
- Porte Logiche a ritardo unitario
- Porte logiche con ritardo effettivo
- Il passaggio da un livello a quello sottostante
dipende da scelte progettuali, ed esempio - Tipologia di sommatore usato (Ripple Carry, Carry
Look Ahead, Carry Select) - Tipologia di porte logiche a disposizione
12Top - Down Design (2)
- I vari livelli di astrazione servono a
mascherare il funzionamento al livello piu
basso - A livello di funzione (a livello algoritmico non
interessa conoscere la tipologia del sommatore,
ma solo la funzione somma) - A livello di variabili ( il VHDL consente
limpiego di variabili (boolean, integer,
floating, ecc.) utili solamente per una
modellizzazione astratta del sistema o di parti
di esso.
13Simulazione
- Un sistema descritto in VHDL viene solitamente
SIMULATO per analizzarne in comportamento
(simulazione comportamentale) - Bisogna fornire degli stimoli (INPUT)
- Ed avere un sistema capace di osservare
levoluzione del modello durante la simulazione,
registrarne le variazioni per uneventuale
ispezione di funzionamento - Il simulatore deve aver la possibilita di
rappresentare una variabile come unknown. - Package STD_LOGIC_1164
14Sintesi Logica
- Passaggio tra descrizione comportamentale e
descrizione a porte logiche - La sintesi avviene tramite appositi programmi che
si appoggiano a librerie dove sono descritte le
porte logiche da impiegare (fornite dal
venditore) - La sintesi e un processo delicato che deve
essere opportunamente guidato ed ottimizzato - Solo un ristretto sottoinsieme del VHDL si presta
ad essere Sintetizzato automaticamente
ovveroNon tutto cio che e scritto in VHDL e
sintetizzabile - La restante parte e da impiegarsi per la
descrizione e per la simulazione
15Programmare in VHDL (1)
- Per certi versi e simile a programmare in
Fortran, C, Pascal, ecc - Compilazione controllo delle sintassi,
generazione di un eseguibile - RunningLink con strutture in libreria ed
esecuzione dellalgoritmo
VHDL Compiler
VHDL Simulator
Design unit
Component Library
16Programmare in VHDL (2)
- La fondamentale differenza e che un modello
descritto in VHDL funziona sempre in Tempo di
simulazione e tutti i vari eventi avvengono in
successivi istanti di tempo - Vi e la possibilita da parte di piu istruzioni
di essere eseguite CONTEMPORANEAMENTE
indipendentemente dallordine in cui sono state
scritte (esecuzione concorrente) - Altre differenze
- Presenza del delay e dellambiente di
simulazione - Descrizione a piu livelli di astrazione
- Descrizione di componenti ed Istanziazione
allinterno di una descrizione strutturale
17VHDL Design
18Progetto in VHDL
- Consta di piu unita compilate e salvate in
opportune librerie - Queste unita sono
- Entity
- Architecture
- Configuration
- Pakage
- Entity ed Architecture descrivono i componenti
come interfaccia e come struttura interna - Configuration serve per descrivere una
particolare versione del progetto - Pakage contiene funzioni e/o grandezze di uso
comune
19Esempio
package my_defs is (Package) constant
unit_delay time 1 ns -- ritardo end
my_defs entity COMPARE is (Entity) port (a,
b in bit c out bit) end
COMPARE architecture DATAFLOW of COMPARE
is (Architecture) begin c lt not (a xor b)
after work.my_defs.unit_delay end DATAFLOW
20Library
- Dopo la compliazione i risultati sono salvati in
una LIBRARY tramite la quale possono essere
successivamente condivisi la library di default
e WORK - Vi sono diverse LIBRARY pre-compilate a cui fare
riferimento - STD, IEEE, per la descrizione del software
(VHDL) - UNISIM, SIMPRIM, VALID per la descrizione dell
Hardware (celle logiche fornite da Xilinx, AMS,
ES2, ) - Esiste un file di configurazione che associa la
libreria VHDL con un determinato file in un certo
direttorio fisico su disco
21Package
- Di solito e usato per
- Constant declaration
- subprogram declaration
- type declaration
- Per esempio
- Pakage STANDARD contiene la definizione di
types bit, boolean, bit_vector, time. - Pakage TEXTIO contiene la definizione di types
line, textprocedure read, write,
writelinefiles Input, Output
22Entity
- Descrive un componente solo come Interfaccia da e
verso lesterno - Non fornisce alcun dettaglio sul funzionamento o
sullarchitettura
b
entity COMPARE is port (a, b in bit
c out bit) end COMPARE
a
?
c
b
23Architecture
- Descrive il funzionamento dellEntity tramite
- descrizione astratta (comportamentale)
- equazioni logico/ aritmetiche (dataflow)
- Interconnessione tra moduli (strutturale)
- Lo stesso componente puo essere descritto a piu
livelli di astrazione - Dello stesso componente possono esistere piu
implementazioni diverse (Es. sommatore come CLA,
RC, CSA) - Per ogni Entity possono esistere piu
Architectures
24Architecture (behavioral)
architecture BEHAVIORAL of COMPARE
is begin process (A,B) begin if (A B)
then C lt '1' after 1 ns else C
lt '0' after 1 ns end if end process end
BEHAVIORAL
25Architecture (behavioral)
- Descrizione comportamentale ad alto livello di
astrazione(risulta molto simile ad un algoritmo
espresso secondo il classici linguaggi
sequenziali (C, Fortran, Pascal, ecc..) - Utile per simulare parti di circuito senza dover
scendere troppo nel dettaglio del funzionamento. - Utilizzo di PROCESS (con lista dei segnali di
attivazione) - Piu operazioni agenti in parallelo risiedono in
diversi Process - Diversi processi comunicano tra loro mediante
SEGNALI ma al loro interno lavorano mediante
VARIABILI - Al loro interno i Processes sono sequenziali
- ATTENZIONE non tutto cio che viene descritto al
livello comportamentale risulta sintetizzabile
26Architecture (dataflow)
architecture DATAFLOW of COMPARE is begin c lt
not (a xor b) after 1 ns end DATAFLOW
Descrizione secondo equazioni logiche
27Architecture (Structural)
architecture STRUCTURAL of COMPARE is signal I
bit component XR2 port (x,y in BIT z out
BIT) end component component INV port (x in
BIT y out BIT) end component begin U0 XR2
port map (A,B,I) U1 INV port map (I,C) end
STRUCTURAL
component
instance
28Architecture (Structural)
- Descrizione Strutturale ovvero mediante blocchi
tra loro interconnessi (notare listanziazione
dei componenti) - I vari components devono essere gia presenti
in una libreria di riferimento - La dichiarazione dei components e spesso
raccolta in un pakage - La port map indica il collegamento fisico
- Vengono solitamente impiegati segnali interni
- Puo essere ben sfruttata in progetti gerarchici
(istanziando un componente gia compilato). - Spesso questa descrizione deriva da un processo
di sintesi
29Architecture
- Tutte queste tecniche costitutive per
lArchitecture possono fondersi tra loro - Una buona descrizione architetturale e il primo
passo per una buona Sintesi - Il tool di sitesi ha una INTELLIGENZA limitata
- Il successo di un progetto risiede al 75 nella
descrizione architetturale il rimanente 25 alle
possibili ottimizzazioni - Non tutto cio che e scritto in VHDL puo essere
sintetizzato!!
30Configuration
- Descrive per ogni Entity coinvolta in un progetto
quale Architecture utilizzare - Sfruttando i default molte indicazioni possono
essere soppresse
configuration PRIMA of COMPARE is for
STRUCTURAL for U0 XR2 use entity
work.XR2(dataflow) end for for U1 INV use
entity ES2.INV(structural) end for end for end
31Elementi e Primitive
32Introduzione
- Il VHDL e costituito da vari formati (types)ed
operatori (operators) per consentire simulazione
e sintesi a vari livelli - Nel pakage STANDARD si trovano descritti quegli
oggetti destinati alla descrizione
COMPORTAMENTALE (non sempre sintetizzabile) - Nel pakage IEEE1164 vi si trovano gli oggetti
destinati alla sintesi ed alla simulazione logica
- Il VHDL e un linguaggio fortemente basato sulla
sintassi
33Sintassi
- Le varie espressioni sintattiche scritte in VHDL
si possono ricondurre ai seguenti oggetti - Scalari e Vettori
- Nomi
- Oggetti
- Costanti
- Segnali
- Variabili
- Espressioni
34Sintassi - Scalari e Vettori
35Sintassi - Scalari e Vettori
Characters
- Un character va dichiarato racchiuso tra
virgolette singole - Es a A _at_
- a meno di caratteri ASCII particolari
- Es CR DEL NUL ACK BEL LF
36Sintassi - Scalari e Vettori
Strings
- Una string e un array di caratteri e va
dichiarata racchiusa tra virgolette doppie - Es ciao a tutti x
- In caso di equivoco si usi la dichiarazione
esplicita - Es string(100100)
37Sintassi - Scalari e Vettori
Bit
- Il BIT assume solo valori 0 o 1 e va
dichiarato tra virgolette singole - Es 0 1
- In caso di equivoco si usi la dichiarazione
esplicita - Es bit(0) bit(1)
38Sintassi - Scalari e Vettori
Bit_vector
- Il Bit_vector e un array di Bit che assumono
solo valori 0 o 1 e va dichiarato tra
virgolette doppie, e comunque consentito
adottare una notaziono ottale o esagesimale. IL
carattere _ puo essere adottato per
comodita, ma non viene interpretato - Es 0001_1001 x00FF
- In caso di equivoco si usi la dichiarazione
esplicita - Es bit_vector(0110_0101_0011)
39Sintassi - Scalari e Vettori
STD_logic
- E il type piu usato per la sintesi logica
- Assume i valori
40Sintassi - Scalari e Vettori
STD_logic
- Viene dichiarato racchiuso tra virgolette singole
- Es U X 1 0
- In caso di equivoco si usi la dichiarazione
esplicita - Es std_logic(1)
41Sintassi - Scalari e Vettori
STD_logic_vector
- Viene dichiarato racchiuso tra virgolette doppie
- Es 001XX UUUU
- In caso si voglia esprimere un particolare valore
espresso secondo una notazione di tipo unsigned
o signed (complemento a 2) si deve impiegare
il pakage STD_LOGIC_ARITH - Es signed(111001) (ossia -7)
unsigned(111001) (ossia 57)Library IEEEUse
IEEE.STD_LOGIC_1164.allUse IEEE.STD_LOGIC_ARITH.
all
42Sintassi - Scalari e Vettori
Boolean
- Assume due soli valori in genere deriva da un
operatore che esprime una relazione
( lt gt /)ed e solitamente impiegato in un
test. - Valori consenti True, False
- Es true TRUE True false FALSE False
43Sintassi - Scalari e Vettori
Real
- Puo essere utile per simulazioni ad alto livello
- NON VIENE SINTETIZZATO
- DEVE contenere il punto decimale ed eventualmente
il segno - Es 1.0 2.23 - 4.56 -1.0E38
- Per impiegare un array di numeri reali deve
essere opportunamente dichiarato
44Sintassi - Scalari e Vettori
Integer
- Puo essere utile per simulazioni ad alto livello
- NON SEMPRE VIENE SINTETIZZATO
- NON DEVE contenere il punto decimale ma puo
eventualmente contenere il segno - Es 10 223 - 456
- Un intero puo eventualmente essere espresso in
unaltra base - Es 1600F0F
- Nel pakage STANDARD sono descritti due subset
degli Integer positive e natural
45Sintassi - Scalari e Vettori
Time
- E la sola grandezza fisica predefinita in VHDL.
- E definita nel Pakage STANDARD
- E importante separare il valore dallunita di
grandezza - Es 10 ns 123 us 6.3 sec
- Unita di grandezza consentitefs ps ns us ms sec
min hr
46Sintassi - Ulteriori tipi
type, subtype
- In VHDL si possono inventare delle variabili
su misura - E dei sottoinsiemi di queste
TYPE mese IS (gennaio, febbraio, giugno) TYPE
bit IS (0, 1)
SUBTYPE mesefreddo IS mese range gennaio to
febbraio
47Sintassi - Nomi
- Ogni oggetto (entity, architerctures, segnali, )
ha un nome simbolico - Il VHDL e un linguaggio Case insentistive(ossi
a abcd e analogo a AbCd) - Vi sono nomi riservati quali in, out, signal,
port, library, map, entity, . - I nomi relativi vengono indicati con un .
nella sintassi - Es libray_name.pakage_name.item_name WORK.my_d
efs.unit_delay
48Sintassi - Dichiarazioni di oggetti
- In VHDL vi sono grandezze che mantengono il loro
valore immutabile ed altre che possono cambiare
valore - constants gandezze fisse
- signals rappresentano collegamenti fisici (sono
grandezze concorrenti) - variables rappresentano variabili allinterno di
un processo (sono grandezze sequenziali) - Inoltre si possono definire dei puntatori a files
(ovviamente per blocchi puramente
comportamentali) - Ogni grandezza impiegata deve essere definita a
priori
variable x integer signal aBc bit constant
Vdd real 12.3
49Sintassi - Range
- Si puo vincolare una grandezza a rimanere
allinterno di un certo campo di variablita
(range) - Il range va specificato in fase di dichiarazione
entity COMPARE_digit is port (a, b in integer
range 1 to 10 c out boolean) end
COMPARE_digit variable ABC real range 1.0 to
10.0
50Sintassi - Costants
- Risultano comode quando in piu parti del listato
si fa riferimento alla stessa grandezza costante - Le costanti possono essere dichiarate allinterno
di un pakage, entity o architecture
constant Vdd Real 4.5 constant CYCLE Time
100 ns constant PI Real 3.14 constant
FIVE std_logic_vector (0 to 3) "0101"
51Sintassi - Signals
- Sono lastrazione dei collegamenti fisici
- Fanno comunicare tra loro varie entity
- Un segnale puo essere inizializzato (ATTENZIONE
in fase di SINTESI linizializzazione potrebbe
essere disattesa!) - In un entity un segnale viene dichiarato tramite
la port
signal count integer range 1 to 10 signal
GROUND bit 0 signal SYS_BUS
std_logic_vector (7 downto 0) port (A, B in
std_logic)
52Sintassi - Variables
- Una variabile viene impiegata nei process
- lassegnamento del valore ad una variabile
avviene istantaneamente in simulazione
(allopposto di un segnale per cui lassegnamento
avviene in base al tempo di simulazione) - deve essere dichiarata prima di essere usata
variable INDEX integer range 1 to 50 variable
CYCLE time range 10 ns to 50 ns
10ns varaible MEMORY bit_vector (0 to
7) variable x,y,z integer
53Sintassi - expressions
- Sono formule impiegate per calcolare un risultato
- Loperando dipende dalle grandezze usate come
operatori - Alcuni operatori risiedono in appositi pakages
- Generalmente gli operandi devono essere dello
stesso tipo - Altrimenti si deve esplicitare la conversione
- ERRORE 1 1.0
- CORRETTO 1 INTEGER (1.0)
54Sintassi - Operandi
- Logiciand, or, nand, nor, xor
- Relazionali, /, lt, lt, gt, gt
- Concatenazione e aritmetici, , -, , /, mod,
rem, , abs - Logicinot
- NOTA il precedente elenco e ordinato in base
alla priotita
55Pakages STD_logic_arith
- Il pakage STANDARD non consente comparazioni o
operazioni aritmetiche tra bit_vector - Alcuni venditori provvedono un pakage per
definire le operazioni tra std_logic_vector - Servono per definire se le grandezze impiegate
sono di tipo signed o unsigned - ovvero ad esempio come interpretare la grandezza
1011 ossia 11 oppure -5 ?)
use IEEE.std_logic_signed.all use
IEEE.std_logic_unsigned.all