Il linguaggio VHDL - PowerPoint PPT Presentation

1 / 55
About This Presentation
Title:

Il linguaggio VHDL

Description:

... IEEE, per la descrizione del software (VHDL) UNISIM, SIMPRIM, VALID per la descrizione dell Hardware (celle logiche fornite da Xilinx, AMS, ES2, ) – PowerPoint PPT presentation

Number of Views:88
Avg rating:3.0/5.0
Slides: 56
Provided by: Marsi150
Category:

less

Transcript and Presenter's Notes

Title: Il linguaggio VHDL


1
Il linguaggio VHDL
  • Introduzione al linguaggio VHDL
  • per la descrizione di sistemi digitali

2
TESTI
  • A GUIDE TO VHDL - Second EditionStanley MAZOR
    and Patricia LANGSTRAATKluver Academic Publishers

3
Obiettivi
  • 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

4
Introduzione
  • 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)

5
Vantaggi
  • 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

6
Considerazioni
  • 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.

7
Introduzione
8
Introduzione
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
9
Un primo esempio
A lt B C after 5.0 ns
  • Aspetti introdotti
  • Descrizione / documentazione
  • Top - Down design
  • Simulazione
  • Sintesi Logica
  • Programmare in VHDL

10
Descrizione / 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

11
Top - 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

12
Top - 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.

13
Simulazione
  • 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

14
Sintesi 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

15
Programmare 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
16
Programmare 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

17
VHDL Design
18
Progetto 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

19
Esempio
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
20
Library
  • 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

21
Package
  • 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

22
Entity
  • 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
23
Architecture
  • 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

24
Architecture (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
25
Architecture (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

26
Architecture (dataflow)
architecture DATAFLOW of COMPARE is begin c lt
not (a xor b) after 1 ns end DATAFLOW
Descrizione secondo equazioni logiche
27
Architecture (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
28
Architecture (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

29
Architecture
  • 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!!

30
Configuration
  • 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
31
Elementi e Primitive
32
Introduzione
  • 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

33
Sintassi
  • Le varie espressioni sintattiche scritte in VHDL
    si possono ricondurre ai seguenti oggetti
  • Scalari e Vettori
  • Nomi
  • Oggetti
  • Costanti
  • Segnali
  • Variabili
  • Espressioni

34
Sintassi - Scalari e Vettori
35
Sintassi - 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

36
Sintassi - 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)

37
Sintassi - 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)

38
Sintassi - 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)

39
Sintassi - Scalari e Vettori
STD_logic
  • E il type piu usato per la sintesi logica
  • Assume i valori

40
Sintassi - 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)

41
Sintassi - 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

42
Sintassi - 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

43
Sintassi - 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

44
Sintassi - 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

45
Sintassi - 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

46
Sintassi - 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
47
Sintassi - 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

48
Sintassi - 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
49
Sintassi - 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
50
Sintassi - 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"
51
Sintassi - 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)
52
Sintassi - 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
53
Sintassi - 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)

54
Sintassi - 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

55
Pakages 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
Write a Comment
User Comments (0)
About PowerShow.com