VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per...

42
C. Sansoè - VHDL '00 / pag. 1 VHDL - Introduzione VHDL = VHSIC Hardware Description Language VHSIC = Very High Speed Integrated Circuits Scopo presentazione: introdurre un sottoinsieme del sottoinsieme del linguaggio VHDL utilizzabile per programmare FPGA ALTERA, sistema MAX+PLUS II. Approfondimenti: slide del corso N4540: //www.polito.it/Ulisse/CORSI/INF/N4540/materiale/coursematerial.html Simulatore (demo): /CORSI/TLC/FA412/materiale/Laboratorio/Esercitazione 3/gmvhdl14.zip Il VHDL viene presentato in modo più completo in altri corsi del Politecnico, ad esempio Reti Logiche (ing. Informatica) ed Architetture dei Sistemi Integrati (ing. Elettronica). Lo scopo di questa presentazione non è di descrivere dettagliatamente il linguaggio ma di fornire una conoscenza "operativa" di quanto strettamente necessario per poter con successo realizzare un piccolo progetto su di un dispositivo logico programmabile Altera EPM7128S. Per questo motivo, ci si limiterà a curare gli aspetti del VHDL utili per una descrizione a livello RTL di un solo componente. Saranno dunque tralasciati tutti gli aspetti relativi alla temporizzazione, utili per simulazioni ma trascurati dal sistema di sintesi, all'uso di dati di tipo reale, record, file, usati nelle descrizioni ad alto livello, alle descrizioni gerarchiche. Se si vogliono avere informazioni aggiuntive, il primo puntatore fornito nella slide permette di accedere ai lucidi del corso N4540 (reti logiche). Nei lucidi si trovano ulteriori riferimenti a libri sul VHDL e a tutorial di pubblico dominio accessibili via rete. Il secondo puntatore è relativo all'eseguibile (compresso) di un simulatore VHDL per Windows in versione demo (non permette di compilare file di dimensioni superiori ad un limite prefissato). Tale simulatore può essere liberamente installato a casa ed usato per preparare i file per l'esercitazione.

Transcript of VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per...

Page 1: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 1

VHDL - Introduzione

VHDL = VHSIC Hardware Description Language

VHSIC = Very High Speed Integrated Circuits

Scopo presentazione: introdurre un sottoinsiemedel sottoinsieme del linguaggio VHDLutilizzabile per programmare FPGA ALTERA,sistema MAX+PLUS II.

Approfondimenti:

slide del corso N4540://www.polito.it/Ulisse/CORSI/INF/N4540/materiale/coursematerial.html

Simulatore (demo):

…/CORSI/TLC/FA412/materiale/Laboratorio/Esercitazione 3/gmvhdl14.zip

Il VHDL viene presentato in modo più completo in altri corsi delPolitecnico, ad esempio Reti Logiche (ing. Informatica) ed Architetture deiSistemi Integrati (ing. Elettronica).

Lo scopo di questa presentazione non è di descrivere dettagliatamente illinguaggio ma di fornire una conoscenza "operativa" di quanto strettamentenecessario per poter con successo realizzare un piccolo progetto su di undispositivo logico programmabile Altera EPM7128S.

Per questo motivo, ci si limiterà a curare gli aspetti del VHDL utili per unadescrizione a livello RTL di un solo componente. Saranno dunque tralasciatitutti gli aspetti relativi alla temporizzazione, utili per simulazioni matrascurati dal sistema di sintesi, all'uso di dati di tipo reale, record, file, usatinelle descrizioni ad alto livello, alle descrizioni gerarchiche.

Se si vogliono avere informazioni aggiuntive, il primo puntatore fornitonella slide permette di accedere ai lucidi del corso N4540 (reti logiche). Neilucidi si trovano ulteriori riferimenti a libri sul VHDL e a tutorial dipubblico dominio accessibili via rete. Il secondo puntatore è relativoall'eseguibile (compresso) di un simulatore VHDL per Windows in versionedemo (non permette di compilare file di dimensioni superiori ad un limiteprefissato). Tale simulatore può essere liberamente installato a casa ed usatoper preparare i file per l'esercitazione.

Page 2: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 2

A che cosa serve il VHDL?

Simulazione:

YLivello comportamentale (behavioral)

YLivello RTL (Register Trasfer Level)

YLivello porte (gate)

Sintesi logica:

a partire generalmente da descrizione RTL

Il VHDL può essere utilizzato in tutti gli stadi del progetto di un sistemaelettronico digitale. Esso permette infatti di modellare un sistema sia alivello puramente funzionale, utilizzando quindi per esempio numeri realiper il trasporto dell'informazione o funzioni matematiche complesse nondirettamente realizzabili su silicio, sia a livelli di dettaglio sempre piùelevati (RTL e porte).

Questo tipo di approccio è molto utile sia per mantenere unadocumentazione uniforme del progetto, sia per lo sviluppo del sistema inmodo modulare: mentre i primi blocchi vengono descritti a livello più basso,è sempre possibile simulare il comportamento di tutto il sistema,mescolando descrizioni di basso livello ad altre ad alto livello, verificandocosì di non aver introdotto errori nel corso del progetto.

Quando il livello di dettaglio è sufficiente, la descrizione VHDL può essereutilizzata come ingresso di un sistema di sintesi logica che esegue la"mappatura" del progetto su di un particolare tipo di logica programmabile osu ASIC (celle standard o gate array).

Page 3: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 3

Vantaggi VHDL

• Unico ambiente per simulazione e sintesi

• Permette definizione a livello funzionale del"test bench" e a livello via via piùdettagliato del sistema da progettare

• Portabilità: quasi tutti i CAD per sintesi suFPGA o su ASIC accettano VHDL in ingresso, susubset generalmente compatibile

Problemi per sintesi da VHDL• Sintesi da descrizione ad alto livello:

ottimizzazione poco controllabile dalprogettista

• Sintesi da descrizione a basso livello: perditadi portabilità (utilizzo di celle prorietarieper ogni tool di sintesi)

Il VHDL è oggetto di alcuni standard IEEE che definiscono il linguaggio(1076), i tipi di dato standard per la descrizione di componenti logici (1164)ed altri aspetti. Esistono due versioni del linguaggio chiamate VHDL'87 eVHDL'93, che differiscono in minima parte. Quasi tutti i sistemi di sintesiper logiche programmabili e per ASIC accettano come ingresso unadescrizione VHDL del circuito e generano in uscita una descrizione VHDL"annotata" con i tempi di ritardo del circuito sintetizzato. La stessadescrizione può essere utilizzata per configurare delle logicheprogrammabili nella fase di prototipazione e in seguito per creare deidispositivi custom per la produzione in serie.

Il problema principale risiede nel livello di astrazione da utilizzare per ladescrizione del circuito: la descrizione a livello più alto tra quelli utilizzabilidal sistema di sintesi genera un circuito funzionante, però il compilatore el'ottimizzatore hanno molti gradi di libertà nello scegliere come realizzare lefunzioni descritte dal programma e questo non sempre conduce al circuitomigliore come occupazione di area o come velocità. Una descrizione alivello più basso possibile produce normalmente un circuito più veloce o piùpiccolo. In questo caso però vengono utilizzate per il circuito delle libreriedi celle pre-ottimizzate per una determinata famiglia di logiche(programmabili o custom) e non è detto che un altro costruttore offralibrerie compatibili o che le prestazioni non siano migliori effettuando sceltecircuitali diverse.

Page 4: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 4

Elementi del linguaggio

Costrutti fondamentali:

ENTITY: esprime l'interfaccia esterna delcomponente

ARCHITECTURE: definisce la funzionalità delcomponente ad un determinato livello diastrazione

LIBRARY: collezione di componenti e package

PACKAGE: insieme di definizioni di tipi, costantied operatori utili per un progetto o una classedi dispositivi.

La dichiarazione di ENTITY è equivalente alla definizione del simbolo diun componente in uno schema elettrico. Descrive esclusivamente i nomi e itipi dei segnali di ingresso, di uscita e bidirezionali di un componente.

Nel sistema MAX+PLUS 2 ogni entity deve essere descritta in un file ditesto separato il cui nome deve essere uguale a quello dell'entity, conestensione .VHD.

E' possibile costruire circuiti gerarchici definendo più ENTITY erichiamandole (come COMPONENT) all'interno di descrizioni a livello piùalto. Questa parte non viene però trattata in questa presentazione. I progettisviluppati nelle esercitazioni non dovranno contenere gerarchie, sarannocioè costituiti da una sola ENTITY.

Per MAX+PLUS 2 ad ogni ENTITY deve corrispondere una solaARCHITECTURE che deve essere nello stesso file dell'ENTITY.

Esistono diverse librerie MAX+PLUS 2:

•IEEE, che definisce i tipi standard IEEE 1164

•74xx, che contiene i componenti della famiglia logica 74xx

•LPM, raccolta di celle parametrizzabili per circuiti come sommatori,comparatori e contatori

•macro e megafunctions, che raccoglie versioni ottimizzate di circuiticomplessi come UART, generatore di sincronismi TV, interfaccia PCI, filtri

Le librerie NON sono utilizzate per l'esercitazione.

Page 5: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 5

Tipi supportati da MAX+PLUS 2(intrinseci)

TIPI standard VHDL:

INTEGER: intero a 32 bit con segno (cpl 2)

BIT: ['0','1']

BOOLEAN: [false, true]: risultato comparazioni

BUS o ARRAY:

BIT_VECTOR (n DOWNTO m)

oppure

BIT_VECTOR (m TO n)Sottotipi:

INTEGER RANGE a TO b : n. di bit calcolato dacompilatore

+ TIPI per enumerazione definiti da utente

Nelle descrizioni di alto livello, i segnali possono trasportare informazionidi tipo disparato: numeri reali, liste, record e simili. Queste informazioninon possono ovviamente essere tradotte in hardware direttamente.

I tipi elencati nella slide sono supportati direttamente da MAX+PLUS 2,senza uso di librerie aggiuntive. Nell'esercitazione la descrizione deldispositivo avverrà al livello più alto consentito dal sistema di sintesi. Siconsiglia di utilizzare solo variabili di tipo BIT, per segnali logici, eINTEGER RANGE a TO b, dove a e b sono gli estremi del campointeressato, per segnali che trasportano informazioni di tipo numerico. Latraduzione da intero a bus composto da n bit viene fatta automaticamentedal sistema.

Il tipo BOOLEAN di solito non viene usato per i segnali: è il risultato dicomparazioni tra valori numerici o logici e viene trattato da istruzioni deltipo IF… THEN.

Il tipo BIT_VECTOR descrive un bus (cioè un gruppo omogeneo) di segnalidi tipo BIT. E' possibile applicare operatori logici a tutto il bus: se a, b, e csono variabili di tipo BIT_VECTOR (k-1 downto 0), l'istruzione

c<=a AND b;

è equivalente alla descrizione di k AND a due ingressi tra i segnalicomponenti il bus a e b, cioè:

c(0) <= a(0) AND b(0); c(1) <=a(1) AND b(1);…

Non sono definiti operatori aritmetici (non è ammesso: c<=a+b;)

Page 6: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 6

Tipi supportati da MAX+PLUS 2(tramite libreria IEEE)

• Segnali logici: più flessibili di bit ebit_vector (descrivono tri-state e don't care):

STD_LOGIC: ['U','X','0','1','Z','W','L','H','-']

STD_LOGIC_VECTOR(n DOWNTO/TO m): bus di STD_LOGIC

• Aritmetica intera:

SIGNED(n DOWNTO m): dato a n-m+1 bit per cui sonodefiniti operatori aritmetici con segno in cpl2

UNSIGNED(n DOWNTO m): come per il precedente,senza segno

La libreria IEEE fornisce dei tipi standard di dato più flessibili di quelliintrinseci. Il tipo base STD_LOGIC permette di modellare segnali tri-state oopen-collector, definendo diversi livelli di "forza" associati al valore alto obasso, un livello di alta impedenza ed una serie di regole che determinano lostato di una linea a cui sono connesse più uscite.

I tipi SIGNED e UNSIGNED sono dei tipi vettoriali su cui sono definiteoperazioni aritmetiche in complemento a 2.

Il VHDL è un linguaggio con forte controllo sui tipi, per cui è necessarioutilizzare delle funzioni di conversione per scambiare valori tra dati di tipodiverso.

Lo scarso tempo a disposizione per l'esercitazione sconsiglia l'uso dei tipiIEEE per la realizzazione del progetto.

Page 7: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 7

Esempi di costanti

Integer: 1, 2, 3 …

BIT: '0', '1'

BIT_VECTOR(7 DOWNTO 0): "01101100"

TIPI UTENTE

definizione:

TYPE colore IS (giallo, rosso, verde);

assegnazioni:solo tra i valori definiti per il tipospecifico (il sistema di sintesi"ottimizza" l'assegnazione dei valorilogici)

In VHDL, per permettere il controllo del tipo nelle assegnazioni dellecostanti, i valori numerici sono rappresentati in modo diverso a seconda cheindichino interi, singoli valori logici o valori di bus.

I tipi per enumerazione vengono convertiti in valori logici dal compilatoreMax+Plus2 in modo diverso a seconda dell'ambito in cui vengono utilizzati:le variabili di stato di macchine a stati vengono ottimizzate dal sistema disintesi in modo diverso a seconda del dispositivo logico programmabiletarget della compilazione; in altri utilizzi invece il primo valore corrispondea 0 e gli altri vengono numerati in modo crescente.

Page 8: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 8

Concorrenza/sequenzialità

Per descrivere porte combinatorie:

• assegnazione concorrente: operatore '<='

es:

e <= c AND d

c <= a AND b;

– Assegnazioni valide SEMPRE, creano un legamecontinuo tra gli operandi. Comportamentoindipendente dall'ordine di scrittura

Per descrivere logica sequenziale:

• processo: sequenza di istruzioni eseguita SOLOin risposta ad un particolare EVENTO

cab

d

e

Si vedrà in seguito che è anche possibile descrivere logica combinatoria inun processo, utilizzando particolari accorgimenti.

Page 9: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 9

Segnali

• Definiscono le connessioni esterne ed internedel circuito

• Possono essere di un qualunque tipo definito(intero, bit, bit_vector ecc.)

• I segnali di I/O sono definiti nella ENTITY

• I segnali interni sono definiti nellaARCHITECTURE

• I segnali di uscita (OUT) possono solo esserescritti, non è possibile leggerli.

Es. se a è un'uscita:

c <= a OR b;

I segnali rappresentano i collegamenti tra blocchi logici. Non sono quindiequivalenti alle variabili in un linguaggio di programmazione, in quanto adessi è associato un concetto di evoluzione temporale: ad un segnale non èpossibile assegnare due valori diversi nello stesso istante di tempo.

L'uso dei segnali quindi deve essere molto attento, in quanto è possibile chela effettiva funzionalità del circuito risulti diversa da quanto ci si aspetta inalcuni casi.

Se si vuole utilizzare nella descrizione del circuito il valore assegnato aduna uscita, occorre ricorrere ad un segnale interno "di appoggio": al posto diassegnare valori direttamente all'uscita, li si assegna al segnale interno, chepuò essere letto. Si collega poi stabilmente il segnale interno all'uscita conuna assegnazione.

Il circuito nella slide diventa corretto se si modifica in questo modo:

assegnazioni a d

c <= d OR b;

a <= d;

dove d è un segnale interno e a è un'uscita.

Page 10: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

1

C. Sansoè - VHDL '00 / pag. 10

Assegnazione Semplice

ENTITY simpsig ISPORT(

a, b, e : IN BIT;c, d : OUT BIT

);END simpsig;

ARCHITECTURE maxpld OF simpsig ISBEGIN

c <= a AND b;d <= e;

END maxpld;

Questo è il primo esempio di descrizione completa VHDL di uncomponente.

Da questa slide è possibile derivare la sintassi base della ENTITY e dellaparte combinatoria della ARCHITECTURE. Notare che:

•simpsig.vhd deve essere il nome del file affinché questa descrizione siacompilabile da Max+Plus2;

•qualunque nome può essere sostituito a "maxpld" nella dichiarazioneARCHITECTURE, purché sia ripetuto nell'istruzione END finale.

Page 11: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 11

Sintesi di simpsig

Simpsig

a

be

c

d

entity

ab c

e d

architecture

Page 12: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 12

Assegnazione Condizionale(una alternativa)

ENTITY condsig ISPORT(

input0, input1, sel : IN BIT;output : OUT BIT

);END condsig;

ARCHITECTURE maxpld OF condsig ISBEGIN

output <= input0 WHEN sel = '0' ELSE input1;

END maxpld;

L'assegnazione condizionale rappresenta un livello di astrazione più alto perdescrivere logica combinatoria rispetto all'uso di operatori logici booleanisemplici come AND e OR.

L'istruzione WHEN … ELSE può essere utilizzata solo al di fuori deiprocessi per definire logica combinatoria. Non bisogna confonderla con IF… THEN … ELSE… END IF, utilizzata esclusivamente all'interno deiprocessi.

Page 13: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 13

Sintesi di condsig

‘0’

‘1’

input0

input1output

sel

L'espressione più semplice di WHEN…ELSE descrive un multiplexer a dueingressi.

Page 14: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 14

Assegnazione condizionale(alternative multiple)

ENTITY condsigm ISPORT( high, mid, low : IN BIT;

q : OUT INTEGER);END condsigm;

ARCHITECTURE maxpld OF condsigm ISBEGIN

q <= 3 WHEN high = '1' ELSE -- when high2 WHEN mid = '1' ELSE -- when mid but not

-- high1 WHEN low = '1' ELSE -- when low but not

-- mid or high0; -- when not low, mid,

-- or highEND maxpld;

L'assegnazione condizionale ad alternative multiple è equivalente al CASEdei linguaggi procedurali, ma non deve essere confusa con l'istruzioneCASE…WHEN in VHDL. Come l'assegnazione condizionale semplice, nonpuò essere utilizzata all'interno di processi e genera solo logicacombinatoria.

Da notare nell'esempio l'uso di un'uscita definita come integer. Ilcompilatore è in questo caso in grado di estrarre dal contesto che solo i duebit meno significativi di q sono utilizzati. Di conseguenza, il risultato dellasintesi è un sistema con due uscite, chiamate q1 e q0, su cui è codificato ilvalore numerico assegnato a q.

L'assegnazione condizionale ad alternative multiple può generare logicacomplessa a partire da una descrizione molto più intuitiva dell'equivalentebasata su operatori booleani semplici.

Page 15: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 15

Sintesi di condsigm

high mid low q

1 - - 110 1 - 100 0 1 010 0 0 00

Tabella di verità

high

mid

low

q1

q0

Page 16: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 16

Assegnazione con selezione (MUX)

ENTITY selsig ISPORT( d0, d1, d2, d3 : IN BIT;

s : IN INTEGER RANGE 0 TO 3;output : OUT BIT);

END selsig;

ARCHITECTURE maxpld OF selsig ISBEGIN

WITH s SELECT -- creates a 4-to-1 multiplexeroutput <= d0 WHEN 0,

d1 WHEN 1,d2 WHEN 2,d3 WHEN 3;

END maxpld;

L'istruzione WITH … SELECT … WHEN è utile per descrivere multiplexera più vie. Il sistema è sintetizzabile solo se tutti i valori possibili perl'espressione di selezione sono elencati nell'istruzione.

Si noti in questo caso la dichiarazione di s come INTEGER RANGE 0 TO3, che restringe a quattro i valori possibili per s. In questo caso, unadichiarazione della variabile come INTEGER avrebbe causato errore perchénon avrebbe permesso il controllo sintattico sui valori presenti.

Page 17: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 17

Sintesi di selsig

d3

d2

d1

d0

a1 a0

output

“00”

“01”

“10”

“11”

I sistemi di sintesi, quando riconoscono strutture regolari, come in questocaso, riescono ad ottimizzare il circuito risultante utilizzando celleparametriche che assicurano le migliori prestazioni sia in termini di areaoccupata, sia in termini di velocità.

E’ dunque importante, quando sia possibile, utilizzare uno stile standard didescrizione dei circuiti in modo da rendere possibile il riconoscimento diqueste strutture.

Page 18: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 18

Tipi per enumerazione

PACKAGE meals_pkg ISTYPE MEAL IS (BREAKFAST, LUNCH, DINNER, MIDNIGHT_SNACK);

END meals_pkg;USE work.meals_pkg.all;ENTITY selsigen IS

PORT( previous_meal : IN MEAL;

next_meal : OUT MEAL);

END selsigen;ARCHITECTURE maxpld OF selsigen ISBEGINWITH previous_meal SELECT

next_meal <= BREAKFAST WHEN DINNER | MIDNIGHT_SNACK, LUNCH WHEN BREAKFAST, DINNER WHEN LUNCH;

END maxpld;

L'uso dei tipi per enumerazione può rendere più leggibile la descrizione delcomportamento del circuito. Quando il tipo è utilizzato in modo generico, ilsistema associa 0 al primo valore elencato, 1 al secondo e così via.

Il numero di fili associato ad una variabile di un tipo per enumerazioneviene calcolato dal sistema automaticamente.

Nella descrizione è utilizzata la sezione PACKAGE. Un PACKAGE rendedisponibili alla ENTITY le definizioni in esso contenute. E' l'unico modoutile per definire tipi per enumerazione utilizzabili per porte di I/O diENTITY.

Per segnali interni, è possibile definire nuovi tipi con la stessa sintassi nellaparte di dichiarazioni della ARCHITECTURE.

Page 19: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 19

Processi

• Con sensitivity list, es.

Process(a, b, c)

– eseguiti ad ogni variazione (evento) deisegnali inclusi nella lista tra parentesi

• con istruzioni di WAIT, es.

Wait until clk='1';

– l'esecuzione continua quando si avvera lacondizione specificata dall'istruzione wait

• definiscono logica sequenziale a meno che tuttii segnali letti nel processo compaiano nellasensitivity list

Ogni PROCESS deve avere o la sensitivity list o contenere all'interno una opiù istruzioni di tipo WAIT. Il sistema Max+Plus2 ha alcune limitazioninell'uso dell'istruzione WAIT, per cui si consiglia di utilizzare solo la formacon la sensitivity list.

Page 20: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 20

Processi combinatori

ENTITY proc ISPORT ( d : IN BIT_VECTOR (2 DOWNTO 0);

q : OUT INTEGER RANGE 0 TO 3);END proc;

ARCHITECTURE maxpld OF proc ISBEGIN

PROCESS (d)-- count the number of bits at 1 in d VARIABLE num_bits : INTEGER;BEGIN num_bits := 0; FOR i IN d'RANGE LOOP IF d(i) = '1' THEN num_bits := num_bits + 1; END IF; END LOOP; q <= num_bits;END PROCESS;

END maxpld;

Nel programma si nota l'uso di una porta di ingresso di tipo BIT_VECTOR.Su questo tipo di dato è possibile operare sia in modo globale, sia accedendoai singoli bit, nel caso: d(i).

Si nota anche per la prima volta l'uso di variabili. Le variabili assumono uncomportamento diverso dai segnali, essendo molto più simili alle variabilidei linguaggi procedurali:

•le variabili possono essere solo locali ad un singolo PROCESS;

•diversamente dai segnali, è possibile assegnare valori alla stessa variabilepiù volte nello stesso istante di tempo, cioè più volte durante la stessaesecuzione di un processo;

•le assegnazioni sono eseguite immediatamente; per un segnale, invece,vengono eseguite uscendo dal PROCESS.

Il processo contiene inoltre un costrutto insolito (che si sconsiglia di usarenell'esercitazione), costituito dall'istruzione FOR … LOOP … END LOOP;

Il corpo del LOOP è ripetuto una volta per ogni valore diverso dellavariabile implicita di loop, in questo caso i; i assume tutti gli indicipossibili del vettore d, cioè 2, 1, 0, come specificato da: i IN d'RANGE.

<nome segnale>'<identificatore> significa: attributo <identificatore> delsegnale <nome segnale>. Esistono diversi attributi predefiniti di ognisegnale, utilizzabili per controllare l'esecuzione di un processo. Il più usato èEVENT, attivo ogni volta che un segnale subisce una transizione.

Page 21: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 21

Sintesi di proc

FullAdder

a

b

cin S

coutd2

d1

d0

q1

q0

Se si esamina la descrizione della slide precedente, si vede come: il processosia di tipo combinatorio, perché tutti gli ingressi che servono a produrre leuscite sono nella sensitivity list del PROCESS. Inoltre il processo genera unnumero in uscita pari al numero di uni presenti sui fili di ingresso.

Di conseguenza, questa descrizione è equivalente a quella di unaddizionatore completo ad un bit.

Page 22: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 22

Registri (flip-flop) 1/3ENTITY reginf IS

PORT( d, clk, clr, pre, load, data : IN BIT;

q1, q2, q3, q4, q5, q6, q7 : OUT BIT);END reginf;ARCHITECTURE maxpld OF reginf ISBEGIN

-- Register with active-high ClockPROCESSBEGIN WAIT UNTIL clk = '1'; q1 <= d;END PROCESS;-- Register with active-low ClockPROCESSBEGIN WAIT UNTIL clk = '0'; q2 <= d;END PROCESS;

I flip-flop presentati in questa slide utilizzano il costrutto WAIT UNTIL.Come già evidenziato, tale costrutto è sconsigliabile in Max+Plus2 ed èriportato qui solo per completezza.

Per descrivere i registri si faccia riferimento alla slide successiva.

Page 23: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 23

Registri (flip-flop) 2/3PROCESS (clk, clr)BEGIN IF clr = '1' THEN q3 <= '0'; ELSIF clk'EVENT AND clk = '1' THEN q3 <= d; END IF;END PROCESS;PROCESS (clk, clr)BEGIN IF clr = '0' THEN q4 <= '0'; ELSIF clk'EVENT AND clk = '0' THEN q4 <= d; END IF;END PROCESS;PROCESS (clk, pre)BEGIN IF pre = '1' THEN q5 <= '1'; ELSIF clk'EVENT AND clk = '1' THEN q5 <= d; END IF;END PROCESS;

Di sopra sono riportati esempi di flip-flop con clear o preset asincrono.

Per descrivere logica asincrona occorre ricordare che:

•tutti i segnali asincroni (e solo quelli, oltre al clock), devono esseredichiarati nella sensitivity list del processo;

•tutti i segnali asincroni hanno in generale precedenza sul clock, quindi illoro stato deve essere controllato prima di quello del clock.

Anche in caso di processo completamente sincrono, in cui cioè la sensitivitylist contiene solo il segnale di clock, occorre che la parte sincrona delladescrizione sia racchiusa dentro un IF … END IF; in cui si controlla latransizione del clock, ad esempio:

IF clock’EVENT AND clock='1' THEN ... END IF;

e non solo il livello attuale di tale segnale.

NON USARE UNA FORMA DEL TIPO:

IF clock='1' THEN ... END IF;

anche se sembrerebbe ragionevole (ma non funziona in Max+Plus2).

Page 24: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 24

Registri (flip-flop) 3/3

PROCESS (clk, load, data)BEGIN IF load = '1' THEN q6 <= data; ELSIF clk'EVENT AND clk = '1' THEN q6 <= d; END IF;END PROCESS;PROCESS (clk, clr, pre)BEGIN IF clr = '1' THEN q7 <= '0';

ELSIF pre = '1' THENq7 <= '1';

ELSIF clk'EVENT AND clk = '1' THEN q7 <= d; END IF;END PROCESS;

END maxpld;

Nel primo esempio riportato sopra, il segnale load è un segnale dicaricamento di tipo "transparent", cioè quando è attivo il dato presentesull'ingresso data viene trasferito all'uscita come se tra data e q6 cifosse una connessione diretta. Per ottenere questo risultato, occorre che siaload sia data facciano parte della sensitivity list del processo.

Page 25: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 25

Contatori (entity)ENTITY counters IS

PORT( d : IN INTEGER RANGE 0 TO 255;

clk : IN BIT;clear : IN BIT;ld : IN BIT;enable : IN BIT;up_down : IN BIT;qa : OUT INTEGER RANGE 0 TO 255;qb : OUT INTEGER RANGE 0 TO 255;qc : OUT INTEGER RANGE 0 TO 255;qd : OUT INTEGER RANGE 0 TO 255;qe : OUT INTEGER RANGE 0 TO 255;qf : OUT INTEGER RANGE 0 TO 255;qg : OUT INTEGER RANGE 0 TO 255;qh : OUT INTEGER RANGE 0 TO 255;qi : OUT INTEGER RANGE 0 TO 255;qj : OUT INTEGER RANGE 0 TO 255;qk : OUT INTEGER RANGE 0 TO 255;ql : OUT INTEGER RANGE 0 TO 255;qm : OUT INTEGER RANGE 0 TO 255;qn : OUT INTEGER RANGE 0 TO 255);

END counters;

Questa serie di pagine riporta lo schema di molte varianti possibili perrealizzare un contatore a 8 bit.

La descrizione ad alto livello di un contatore, oltre ad essere molto piùsemplice e molto più leggibile della corrispondente a livello registri-porte,permette al sistema di sintesi una maggiore ottimizzazione del circuito.

Page 26: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 26

Contatori (1/4)ARCHITECTURE a OF counters ISBEGIN

PROCESS (clk)VARIABLE cnt : INTEGER RANGE 0 TO 255;

BEGINIF (clk'EVENT AND clk = '1') THEN

IF enable = '1' THEN cnt := cnt + 1;END IF;

END IF;qa <= cnt;

END PROCESS;PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;BEGIN

IF (clk'EVENT AND clk = '1') THENIF ld = '0' THEN cnt := d;ELSE cnt := cnt + 1;END IF;

END IF;qb <= cnt;

END PROCESS;

Nel descrivere i contatori si fa quasi sempre ricorso all'uso di variabili.Questo perchè non è possibile leggere il valore di un'uscita e dunque o ilsegnale di uscita del contatore è un segnale interno (dichiarato a livello diARCHITECTURE) oppure la variabile (rigorosamente locale al processo) èil modo più comodo per memorizzare il valore raggiunto dal contatore alciclo precedente.

E' importante notare come l'assegnazione al segnale di uscita venga dinorma eseguita al di fuori degli IF, in modo che sia eseguita sempre. Questoevita spiacevoli sorprese dovute all'inserzione di latch da parte del sistemadi sintesi.

Il primo contatore descritto sopra è un contatore a 8 bit con enablesincrono. Il contatore incrementa quando il segnale enable vienecampionato alto sul fronte di salita del clock. Dato che alla variabile cntsono allocati 8 bit, il contatore conta da 0 a 255 e poi riparte da 0.

In Max+Plus2 la dichiarazione della variabile e del segnale di uscita comeINTEGER RANGE 0 TO 255 serve solo per stabilire il numero di bit daallocare per essi. Quindi la seguente dichiarazione:

VARIABLE cnt: INTEGER RANGE 0 TO 149;

anche se associata ad una analoga dichiarazione per qa, avrebbe prodotto lostesso risultato (contatore modulo 256) e non un contatore modulo 150.

Il secondo contatore, sempre a 8 bit, è invece dotato di un segnale dicaricamento sincrono attivo a livello basso: se sul fronte di salita del clockld è basso, l'uscita qb viene posta pari al valore presente sull'ingresso d,altrimenti il contatore incrementa il suo valore.

Page 27: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 27

Contatori (2/4)

PROCESS (clk)VARIABLE cnt : INTEGER RANGE 0 TO 255;

BEGINIF (clk'EVENT AND clk = '1') THEN

IF clear = '0' THEN cnt := 0;ELSE cnt := cnt + 1;END IF;

END IF;qc <= cnt;

END PROCESS;PROCESS (clk)

VARIABLE cnt : INTEGER RANGE 0 TO 255;VARIABLE verso : INTEGER;

BEGINIF (up_down = '1') THEN verso := 1;ELSE verso := -1;END IF;IF(clk'EVENT AND clk = '1')THEN cnt:=cnt+verso;END IF;qd <= cnt;

END PROCESS;

Il primo contatore descritto sopra ha un clear sincrono, il secondo è inveceun contatore up/down

Page 28: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 28

Contatori (3/4)

PROCESS (clk)VARIABLE cnt : INTEGER RANGE 0 TO 255;VARIABLE verso : INTEGER;

BEGINIF (up_down = '1') THEN

verso := 1;ELSE

verso := -1;END IF;

IF (clk'EVENT AND clk = '1') THENIF enable = '1' THEN

cnt := cnt + verso;END IF;

END IF;

qf <= cnt;

END PROCESS;

Contatore up/down con enable

Page 29: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 29

Contatori (4/4)

PROCESS (clk)VARIABLE cnt : INTEGER RANGE 0 TO 255;CONSTANT modulus : INTEGER := 200;

BEGINIF (clk'EVENT AND clk = '1') THEN

IF cnt = modulus-1 THENcnt := 0;

ELSEcnt := cnt + 1;

END IF;END IF;

qn <= cnt;

END PROCESS;END a;

Questo è uno dei modi possibili per realizzare contatori con valore di fineconteggio qualunque. In questo caso vengono allocati 8 bit per la variabilema il contatore viene resettato quando l'uscita abbia raggiunto il valore di199. Dunque il contatore è modulo 200.

Page 30: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 30

Latch

ENTITY latchinf ISPORT(

enable, data : IN BIT;q : OUT BIT

);END latchinf;

ARCHITECTURE maxpld OF latchinf ISBEGIN

latch : PROCESS (enable, data)BEGIN

IF (enable = '1') THENq <= data;

END IF;END PROCESS latch;

END maxpld;

Questa descrizione inserisce un latch, in quanto l'assegnazione a q delvalore di data avviene solo se enable è alto, quindi esistono esecuzionidel processo in cui il valore di q deve rimanere invariato.

E' evidente in questo esempio l'intenzione del progettista di inserire unelemento di memoria nel circuito. Un errore comune di chi utilizza per laprima volta il linguaggio VHDL è proprio quello di generare latch nonvoluti all'interno di processi complessi. E' importante, quando non si vuoleallocare memoria, verificare che tutte le esecuzioni di un processo assegninoun valore ai segnali gestiti dal processo stesso, altrimenti il sistemaprovvederà a creare dei latch normalmente non necessari.

Page 31: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 31

Sintesi di latchinf

enable

data qD Q

Page 32: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 32

Macchine a stati (Moore)

S0 S1input=1

input=0

reset

Diagramma degli stati

output=1output=0

Page 33: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 33

Macchine a stati (1/2)ENTITY statmach IS

PORT(clk : IN BIT;input : IN BIT;reset : IN BIT;output : OUT BIT);

END statmach;

ARCHITECTURE a OF statmach ISTYPE STATE_TYPE IS (s0, s1);SIGNAL state : STATE_TYPE;

BEGINPROCESS (clk, reset)

BEGINIF reset = '1' THEN

state <= s0;ELSIF (clk'EVENT AND clk = '1') THEN

CASE state ISWHEN s0=>

state <= s1;

Page 34: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 34

Macchine a stati (2/2)

WHEN s1=>IF input = '1' THEN

state <= s0;ELSE

state <= s1;END IF;

END CASE;END IF;

END PROCESS;

output <= '1' WHEN state = s1 ELSE '0';END a;

Page 35: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 35

Sintesi di statmach

T Q

clr

reset

clk

input output

Page 36: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 36

Stili di descrizione

• Il sistema di sintesi è "sensibile" al modo incui vengono descritti i componenti.

• Le macchine a stati sono riconosciute come talisolo se descritte come nell'esempio precedente.Se descritte in altri modi (es. IF al posto diCASE), sono sintetizzate senza ottimizzazioniad hoc.

• I processi sequenziali devono dipendere da unsolo segnale di clock.

• Non confondere tra di loro variabili e segnali

Page 37: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 37

Esercitazione

Progetto di un PLL completamente digitale, in dueversioni:

• Con demodulatore tipo "EX-OR"

• Con demodulatore di fase-frequenza

Specifiche:

• Campo di mantenimento: circa un'ottava,centrato intorno 4.5kHz

• Temporizzazioni a partire da fclk=25.175 MHz

• Ingresso: onda quadra, valori TTL compatibili,duty cycle=50%

Page 38: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 38

Ingressi e Uscite

• Vin: segnale di ingresso del PLL

• Vout: segnale di uscita dall’oscillatore acontrollo numerico (NCO); è collegatointernamente al demodulatore di fase.

• Filout(5...0): segnale di uscita delfiltro. Tale segnale è disponibile pervisualizzare la caratteristica a farfalla.

• Clk: segnale di clock presente sullascheda UP1, fclk=25.175MHz; tale segnaleviene utilizzato come riferimento pertutte le funzioni svolte dal dispositivo.

Page 39: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 39

Schema a blocchi

Clk

Demodula-tore di fase

e filtroNCO

Vout

Vin

Filout(5..0)

Page 40: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 40

Blocchi interni

NCO

• Emulazione del VCO mediante divisore difrequenza programmabile N=[65…128], seguito dadivisore fisso modulo 64.

• Frequenza max uscita (con ingresso=0):circa6kHz (=25.175MHz/65/64)

• Freq. Min uscita (con ingresso=63): circa 3kHz(=25.175MHz/128/64)

• Fdt numero => frequenza di tipo 1/x

Page 41: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 41

Caratteristica NCO

3

3.5

4

4.5

5

5.5

6

6.5

0 10 20 30 40 50 60

Filout

Fre

qu

enza

Vo

ut

Page 42: VHDL - Introduzione · C. Sansoè - VHDL '00 / pag. 3 Vantaggi VHDL • Unico ambiente per simulazione e sintesi • Permette definizione a livello funzionale del "test bench" e a

C. Sansoè - VHDL '00 / pag. 42

Struttura interna

Struttura demodulatore:

• Sincronizzatore di ingresso per Vin: shift register a duebit collegato a Vin: elimina la possibilità di statimetastabili. Uscita: Vinsync.

• Accumulatore di fase: contatore a sei bit abilitato dapgcout e (Vinsync EX-OR Vout) = 1. azzerato ogni volta cheEOC e pgcout sono contemporaneamente attivi. In questomodo, dato che EOC si attiva una volta ogni 64 cicli in cuipgcout è attivo, subito prima dell’azzeramento èdisponibile sulle uscite un numero compreso tra 0 e 63,proporzionale allo sfasamento tra i segnali Vin e Vout.

• Registro di uscita: registro a sei bit che campiona leuscite dell’accumulatore di fase immediatamente primadell’azzeramento e le mantiene costanti per il ciclosuccessivo di Vout. Le uscite del registro costituiscono ilsegnale Filout che comanda la variazione di frequenzadell’NCO.