Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

55
Il linguaggio Il linguaggio VHDL VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali

Transcript of Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Page 1: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Il linguaggio VHDLIl linguaggio VHDL

Introduzione al linguaggio VHDL per la descrizione di sistemi digitali

Page 2: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

TESTI

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

Page 3: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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’ pratica”in VHDL

Page 4: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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) all’interno del progetto VHSIC (Very High Speed Integrated Circuti) sviluppa un linguaggio di descrizione Hardware1987:l’IEEE lo riconosce come STANDARD (1076)1993:Il linguaggio viene migliorato con delle integrazioni “minori” Attualmente: A causa della attuale complessita’ dei circuiti ha surclassato altre metodologie (schematic capture)

Page 5: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

Page 6: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

Page 7: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

IntroduzioneIntroduzione

Page 8: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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 all’interno di “libraries”

User Library User Pakageblocchi e funzioniprecedentementesviluppati dall'utente

Vendor Library Vendor Pakage blocchi e funzionisviluppati dal fornitore

Library IEEE

PakageSTD_LOGIC_1164PakageSTD_LOGIC_ARITH

Definizione variabililogiche "fisiche"Definizione di funzioniaritmetico-logiche

Library STD Pakage TEXTIOPakage STANDARD

Operazioni su stringheUnita' di tempo, caratteriASCII, ecc.

Library WORK Local User Pakage Variabili, blocchi efunzioni locali

Page 9: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Un primo esempio

A <= B + C after 5.0 ns

B

C

A+

8

8

8

Aspetti introdotti:• Descrizione / documentazione• Top - Down design• Simulazione• Sintesi Logica• Programmare in VHDL

Page 10: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

Page 11: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

Page 12: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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 l’impiego di variabili (boolean, integer, floating, ecc.) utili solamente per una modellizzazione astratta del sistema o di parti di esso.

Page 13: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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 l’evoluzione

del modello durante la simulazione, registrarne le variazioni per un’eventuale ispezione di funzionamento

• Il simulatore deve aver la possibilita’ di rappresentare una variabile come “unknown”.

• Package STD_LOGIC_1164

Page 14: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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 ovvero:Non tutto cio’ che e’ scritto in VHDL e’ sintetizzabile

• La restante parte e’ da impiegarsi per la descrizione e per la simulazione

Page 15: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Programmare in VHDL (1)

• Per certi versi e’ simile a programmare in “Fortran”, “C”, “Pascal”, ecc…

• Compilazione: controllo delle sintassi, generazione di un eseguibile

• Running:Link con strutture in libreria ed esecuzione dell’algoritmo

Designunit

VHDLCompiler

ComponentLibrary

VHDLSimulator

Page 16: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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 dall’ordine in cui sono state scritte (esecuzione concorrente)

• Altre differenze:– Presenza del “delay” e dell’ambiente di simulazione– Descrizione a piu’ livelli di astrazione – Descrizione di componenti ed “Istanziazione” all’interno di una

descrizione strutturale

Page 17: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

VHDL DesignVHDL Design

Page 18: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

Page 19: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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)beginc <= not (a xor b) after work.my_defs.unit_delay;

end DATAFLOW

Page 20: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

Page 21: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

Page 22: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Entity

• Descrive un componente solo come Interfaccia da e verso l’esterno

• Non fornisce alcun dettaglio sul funzionamento o sull’architettura

b

entity COMPARE isport (a, b : in bit; c : out bit);

end COMPARE

?a

bc

Page 23: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Architecture

• Descrive il funzionamento dell’”Entity” 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

Page 24: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Architecture (behavioral)

architecture BEHAVIORAL of COMPARE isbeginprocess (A,B)

beginif (A = B) then C <= '1' after 1 ns;else C <= '0' after 1 ns;end if;

end process;end BEHAVIORAL

Page 25: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

Page 26: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Architecture (dataflow)

architecture DATAFLOW of COMPARE isbeginc <= not (a xor b) after 1 ns;

end DATAFLOW

Descrizione secondo equazioni logiche

Page 27: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

architecture STRUCTURAL of COMPARE issignal 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;

beginU0: XR2 port map (A,B,I);U1: INV port map (I,C);

end STRUCTURAL;

Architecture (Structural)

instance

component

Page 28: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Architecture (Structural)

– Descrizione Strutturale ovvero mediante blocchi tra loro interconnessi (notare l’istanziazione 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

Page 29: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Architecture

• Tutte queste tecniche costitutive per l’Architecture 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!!

Page 30: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Configuration

• Descrive per ogni Entity coinvolta in un progetto quale Architecture utilizzare

• Sfruttando i “default” molte indicazioni possono essere soppresse

configuration PRIMA of COMPARE isfor STRUCTURAL

for U0: XR2 use entity work.XR2(dataflow); end for;for U1: INV use entity ES2.INV(structural) end for;

end for;end;

Page 31: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Elementi e Elementi e PrimitivePrimitive

Page 32: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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

0.211

Page 33: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi

• Le varie espressioni sintattiche scritte in VHDL si possono ricondurre ai seguenti oggetti:– Scalari e Vettori– Nomi– Oggetti:

• Costanti• Segnali• Variabili

– Espressioni

Page 34: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

Scalari Vettori

character string

bit bit_vector

std_logic std_logic_vector

boolean

real

integer

time

Page 35: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• Un “character” va dichiarato racchiuso tra virgolette singole– Es: ‘a’ ‘A’ ‘#’ ‘@’ ‘ ’ ‘ ’ ’

• a meno di caratteri ASCII particolari– Es: CR DEL NUL ACK BEL LF

Characters

Page 36: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• 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”)

Strings

Page 37: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• 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’)

Bit

Page 38: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• 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” x”00FF”

• In caso di equivoco si usi la dichiarazione esplicita– Es: bit_vector’(“0110_0101_0011”)

Bit_vector

Page 39: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• E’ il “type” piu’ usato per la sintesi logica• Assume i valori:

STD_logic

'U' uninitialized

'X' unknown 'W' weakunknown

'0' 0 logic 'L' weak 0

'1' 1 logic 'H' weak 1

'Z' highimpedence

'-' don't care

Page 40: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• Viene dichiarato racchiuso tra virgolette singole– Es: ‘U’ ‘X’ ‘1’ ‘0’

• In caso di equivoco si usi la dichiarazione esplicita– Es: std_logic’(‘1’)

STD_logic

Page 41: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

– 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 IEEE;Use IEEE.STD_LOGIC_1164.all;Use IEEE.STD_LOGIC_ARITH.all;

STD_logic_vector

Page 42: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• Assume due soli valori in genere deriva da un operatore che esprime una “relazione” (= <= >= /=)ed e’ solitamente impiegato in un test.

• Valori consenti: True, False

– Es: true TRUE Truefalse FALSE

False

Boolean

Page 43: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• 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.0E+38

• Per impiegare un array di numeri reali deve essere opportunamente dichiarato

Real

Page 44: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

– 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 un’altra base

• Es: 16#00F0F#

– Nel pakage STANDARD sono descritti due subset degli Integer: positive e natural

Integer

Page 45: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Scalari e Vettori

• E’ la sola grandezza fisica predefinita in VHDL.• E’ definita nel Pakage STANDARD• E’ importante separare il valore dall’unita’ di grandezza

– Es: 10 ns 123 us 6.3 sec

• Unita’ di grandezza consentite:fs ps ns us ms sec min hr

Time

Page 46: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Ulteriori tipi

• In VHDL si possono “inventare” delle variabili “su misura

• E dei sottoinsiemi di queste”

type, subtype

TYPE mese IS (gennaio, febbraio, giugno);

TYPE bit IS (‘0’, ‘1’);

SUBTYPE mesefreddo IS

mese range gennaio to febbraio;

Page 47: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Nomi

• Ogni oggetto (entity, architerctures, segnali, …) ha un nome simbolico

• Il VHDL e’ un linguaggio “Case insentistive”(ossia 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_defs.unit_delay

Page 48: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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 all’interno 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;

Page 49: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Range

• Si puo’ vincolare una grandezza a rimanere all’interno di un certo campo di variablita’ (“range”)

• Il range va specificato in fase di dichiarazione

entity COMPARE_digit isport (a, b : in integer range 1 to 10; c : out boolean);

end COMPARE_digit;

variable ABC: real range 1.0 to 10.0;

Page 50: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Costants

• Risultano comode quando in piu’ parti del listato si fa riferimento alla stessa grandezza costante

• Le costanti possono essere dichiarate all’interno 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";

Page 51: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Signals

• Sono l’astrazione dei “collegamenti fisici”• Fanno comunicare tra loro varie entity• Un segnale puo’ essere inizializzato

(ATTENZIONE in fase di SINTESI l’inizializzazione 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);

Page 52: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Variables

• Una variabile viene impiegata nei process• l’assegnamento del valore ad una variabile avviene

istantaneamente in simulazione (all’opposto di un segnale per cui l’assegnamento 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;

Page 53: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - expressions

• Sono formule impiegate per calcolare un risultato• L’operando 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)

Page 54: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

Sintassi - Operandi

• Logici:and, or, nand, nor, xor

• Relazionali=, /=, <, <=, >, >=

• Concatenazione e aritmetici&, +, -, *, /, mod, rem, **, abs

• Logici:not

• NOTA: il precedente elenco e’ ordinato in base alla priotita’

Page 55: Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali.

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;