Laboratorio di Elettronica -...

26
1 1 Laboratorio di Elettronica 2 Introduzione al VHDL HDL nel flusso di progettazione digitale Elementi base del VHDL Meccanismo di simulazione Meccanismo di sintesi

Transcript of Laboratorio di Elettronica -...

Page 1: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

1

1

Laboratorio di Elettronica

2

Introduzione al VHDL

• HDL nel flusso di progettazione digitale

• Elementi base del VHDL• Meccanismo di simulazione• Meccanismo di sintesi

Page 2: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

2

3

Organizzazione del corso

• Lezione 1: – introduzione al VHDL, sintassi, metodi di

programmazione• Lezione 2:

– uso dell’ambiente di sviluppo per FPGA –Xilinx. Programmazione, sintesi, simulazione. Esempio svolto su un contatore

• Lezione 3: – descrizione e utilizzo della Spartan 3.

Programmazione, mappatura dei pin, uso del Chipscope

4

Organizzazione del corso

• Lezione 4: – Progetto: realizzazione e test di un

modulatore a PWM. Determinazione dei fronti di comando per un inverter a mezzo ponte con tempi morti di comando.

• Lezione 5: – Progetto: - da definire – realizzazione di una

operazione aritmetica• Lezione 6:

– Progetto: - da definire – pilotaggio di una VGA

Page 3: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

3

5

Organizzazione del corso

• Materiale e manuali vengono resi disponibili sul sito web

• E’ necessario, soprattutto nella fase iniziale, leggere e capire il linguaggio di programmazione – dedicare molto tempo per lo studio nella prima settimana –

• Tutti i progetti saranno disponibili sul sito web, in modo che durante l’esercitazione ci possa essere un backup nel caso di problemi

6

Introduzione

A chi e’ dedicato?Ai progettisti di circuiti e sistemi logici che utilizzano sistemi CAE (Coputer Automated tools for Electronicdesign)

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 (schematiccapture)

Page 4: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

4

7

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• Miglioramento della descrizione circuitale ai bassi livelli

8

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 5: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

5

9

I linguaggi di descrizione dell’hardware (HDL) - 1

• hanno l’aspetto di un normale linguaggio di programmazione (tipicamente C), per cui hanno:– diversi tipi di dati e oggetti (costanti, variabili,

espressioni)– operatori aritmetico/logici, istruzioni sequenziali (if,

while, for…)– funzioni , sottoprogrammi

• hanno elementi specifici per modellare in modo efficiente blocchi di hardware– permettono di definire componenti e istanziarliin una

struttura gerarchica– supportano la rappresentazione di eventi concorrenti

(cioè, operazioni che non si attivano sempre nello stesso ordine temporale)

10

I linguaggi di descrizione dell’hardware (HDL) - 2

• sono adatti a descrivere il sistema a diversi livelli di astrazione– tipicamente, dal livello più alto (sistema) fino al livello

logico (rete di porte logiche)– i sistemi tradizionali di rappresentazione di solito sono

specializzati per uno o due livelli: schemi a blocchi ⇒sistema, RTL; schemi logici ⇒livello logico; schemi elettrici ⇒livello elettrico;

Page 6: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

6

11

Livelli di descrizione più usati

• comportamentale (behavioral)– Funzionalità del sistema a prescindere dall’effettiva

implementazione a livello di celle elementari– operazioni in sequenza corretta ma senza

informazioni temporali• RTL (Register Transfer Level o Data-Flow)

– descrizione del sistema in termini di registri, logica combinatoria, bus e unitàdi controllo

– assegnazione delle operazioni a un determinato ciclo di clock

• strutturale (structural) – descrizione del sistema come rete di componenti

elementari (descritti a livello comportamentale)– possibile analisi dettagliata dei tempi di ritardo

12

VHDL (VHSIC Hardware Description Language)

• supporta a tutti i livelli il flusso di progettazione – sviluppo, simulazione, sintesi, testing,

documentazione• descrizione indipendente dalla tecnologia realizzativa

– portabilitàdel progetto da una tecnologia ad un’altra• permette la simulazione a eventi del sistema

– validazionedi sistemi complessi • permette la sintesi automatica

– da RTL a netlist di celle (standard)– da comportamentale a RTL (in perfezionamento)

Page 7: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

7

13

Flusso di progetto: uso del VHDL

14

Modeling Digital Systems• VHDL is for writing models of a system• Reasons for modeling

– requirements specification– documentation– testing using simulation– formal verification– synthesis

• Goal– most reliable design process, with minimum

cost and time– avoid design errors!

Page 8: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

8

15

Domains and Levels of Modeling

high level of abstraction

FunctionalStructural

Geometric “Y-chart” due to Gajski & Kahn

low level of abstraction

16

Domains and Levels of Modeling

FunctionalStructural

Geometric “Y-chart” due to Gajski & Kahn

Algorithm(behavioral)

Register-TransferLanguage

Boolean Equation

Differential Equation

Page 9: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

9

17

Domains and Levels of Modeling

FunctionalStructural

Geometric “Y-chart” due to Gajski & Kahn

Processor-MemorySwitch

Register-Transfer

Gate

Transistor

18

Domains and Levels of Modeling

FunctionalStructural

Geometric “Y-chart” due to Gajski & Kahn

Polygons

Sticks

Standard Cells

Floor Plan

Page 10: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

10

19

Descrizione VHDL: concetto base

• La descrizione di un modulo in VHDL è fatta da due elementi principali: – un’interfaccia (entity), che definisce i terminali

di I/O e il nome del circuito– una o più implementazioni(architecture), che

descrivono il comportamento o la struttura interna del circuito

20

ENTITY + ARCHITECTURE - esempio

• entity, clausola port– nomi dei terminali: A,B,…– direzione: in,out– tipo di dato: bit

• architecture– parte dichiarativa (prima di

begin) in cui vengono dichiarati segnali interni

– parte assertiva (tra begin e end) in cui viene descritto il comportamento del circuito

– le operazioni tra segnali (interni e/o di I/O) e le assegnazioni (<=) definiscono il comporta-mento del circuito

Page 11: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

11

21

Segnali e processi

• gli elementi fondamentali di un modello VHDL sono i segnali e i processi

• un processo è un blocco di codice che descrive il funzionamento di un modulo di logica sequenziale o combinatoria

• Processi diversi comunicano tra loro attraverso segnali

22

Segnali e processi

• un processo si attiva ed esegue la sua funzione in risposta ad un evento (cioè, ad un cambiamento di valore) di uno dei segnali a cui è sensibile(indicati in una lista apposita: sensitivity list)

• in certi casi, la funzione rappresentata da un processo può essere descritta con una assegnazione concorrente semplice o condizionata ad un segnale

Page 12: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

12

23

Segnali - Introduzione

• i segnali, cioè gli oggetti dichiarati con l’istruzione signaloppure nella clausola port della entity sono strutture dati capaci di rappresentare forme d’onda nel tempo

• hanno associato un tipo (nell’esempio bit) e possono avere un valore iniziale

• nella parte assertiva dell’architecture, compaiono delle operazioni tra segnali (xor,and, …) e delle assegnazioni (<=); gli operatori possono essere primitive del VHDL oppure funzioni e procedure definite dall’utente

Signal P, G : bit….P <= A xor B;G <= A and B;S <= P xor CI;….

24

Segnali - Introduzione

• a sinistra del segno di assegnazione (<=) c’èil target(che deve essere un segnale), a destra il signaldriver

• l’assegnazione stabilisce un legame tra i suoi ingressi (i segnalicontenuti nel driver) e la sua uscita (il target), quindi viene attivata solo quando si ha un evento (cioèuncambiamento di valore) di uno degli ingressi

• di conseguenza, l’ordine con cui le assegnazioni vengono scritte all’interno dell’architecture non ha importanza signal

Signal P, G : bit….P <= A xor B;G <= A and B;S <= P xor CI;….

Page 13: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

13

25

Meccanismi di simulazione

• … :– ogni evento attiva i driver e i processi che sono sensibili al

segnale soggetto all’evento; i driver calcolano il nuovo valore del segnale target, valore (detto transazione) che viene inserito nella coda degli eventi del simulatore

– l’esecuzione di tutti i driver sensibili all’evento causa l’inserimento di una o più transazioni nella coda degli eventi della simulazione; terminatala fase di esecuzione dei driver, la simulazione salta alla transazione successiva nella coda e aggiorna il valore del relativo segnale: se il valore aggiornato èdiverso dal valore precedente, si ha un evento, e, di conseguenza, una nuova fase di esecuzione dei driver ad esso sensibili; altrimenti, il simulatore salta alla transazione successiva nella coda

26

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: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

14

27

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

28

Sintassi e dettagli del VHDL

Page 15: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

15

29

Elementi Lessicali

• Il VHDL non distingue maiuscole e minuscole• un commento inizia con – e si estende fino allafine della linea• un identificatore per segnali, variabili, funzioni, …, inizia con un

carattere alfabetico e può contenere lettere, numeri e il carattere _• i numeri possono essere interi o reali (se includono il punto):

–0 1 435_197 623E4 – numeri interi–0.0 1.0 251.436 12.3E-4 – numerireali–2#1100_0100# 16#C4# 4#301#E1 --numero196

• i caratterivannoracchiusitravirgolettesingole:–‘A’‘a’‘*’‘1’‘0’

• Una stringa di caratteri è racchiusa tra doppie virgolette:–“stringa”“”

• le stringhedi bit permettono di specificare in modo semplice valori per vettori(array) di tipo binario:–B”101100110101”O”5465”X”B35”--binario, ottale, esadecimale

30

Tipi standard• Definiti nel package STANDARD contenuto nella libreria

STD• Presenti implicitamente in ogni simulatore VHDL

Page 16: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

16

31

Classi di oggetti: Costanti, variabili, segnali

• Costanti: valori fissi valutati solo una volta• CONSTANT e: real := 2.71828;• CONSTANT delay: time := 5 ns;• CONSTANT index: integer;

• Variabili: valori modificabili tramite assegnazioni– Utilizzabile solo all’interno di un processo

• VARIABLE count: integer := 0;• VARIABLE Is High: boolean;

• Segnali: valori modificabili tramite assegnazioni– tengono traccia di una forma d’onda– canali di comunicazione tra i blocchi di un modello VHDL– “eventi”in un segnale attivano la simulazione

• SIGNAL dout: std_logic_vector(7 DOWNTO 0) := B”0000_0000”;

32

Array

• Il range (intervallo di variazione dell’indice) di un array può essere ascendente o discendente:– SIGNAL a: bit_vector(3 downto 0); --discendente– SIGNAL b: bit_vector(0 to 3); --ascendente

• le assegnazioni a array sono basate sullaposizione:– b <= a; --significa:b(0) <= a(3);…; b(3) <= a(0);– b(1 downto 0) <= a(3 downto2); -- assegnazione parziale, con

inversione dell’ordine predefinito di b; il risultato è b(1) <= a(3); b(0) <= a(2);

– a <= (‘1’,’0’,’1’,’0’); --assegnazione tramite aggregato– a <= B”1010” -- assegnazione tramite stringa di bit– a <= X”A” --come sopra, ma in formato esadecimale– a <= (OTHERS => ‘1’); --assegnazione dello stesso valore a tutti

gli elementidi a– b & a -- produce(b(0),b(1),b(2),b(3),a(3),a(2),a(1),a(0))

Page 17: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

17

33

Array: attributi

• Nel caso degli array, gli attributi forniscono informazioni supplementari relative all’indice del segnale

34

Espressioni e operatori standard

Operatori presenti nel package STANDARD:• booleani: not, and nand, or, nor, xor, xnor• relazionali: =, /=, <, <=, >, >=• shift: sll, srl, sla, sra, rol, ror

–poco usati, hanno un comportamento non convenzionale

• aritmetici:+, -, abs, +, -, *, /, mod, rem, **–segnooperazioni• concatenazione: & –concatena due array, mettendo l’operando di destra in coda a quello di sinistra

Page 18: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

18

35

Dati per logica multilivello e artimetica binaria

IEEE ha creato due package per tipi di dati (e relativi operatori) logici e aritmetici:

• STD_LOGIC_1164– sistema a 9 stati logici– TYPE std_logicIS (‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’);– TYPE std_logic_vector IS ARRAY (NATURAL RANGE <>)

OF std_logic;• NUMERIC_STD

–TYPE unsigned IS ARRAY (NATURAL RANGE <>) OF std_logic;–TYPE signed IS ARRAY (NATURAL RANGE <>) OF std_logic;–unsigned interpretato come rappresentazione binaria di un intero senza segno; signed interpretato come rappresentazione in complemento a 2 di un intero

• STD_LOGIC_ARITH–alternativa (preferita) a NUMERIC_STD

36

Package STD_LOGIC_ARITH• definiscei tipi unsigned e signed (come in NUMERIC_STD)• Ridefinisce una parte degli operatori standard per lavorare con

signed, unsigned, std_logic_vector e integer– booleani (not, and,…): non ci sono! Per applicare gli operatori

booleani ai dati unsigned e signed bisogna prima convertirli nel tipo std_logic_vector e poi usare glioperatori standard

– relazionali(=, /=, <,…): a differenza degli operatori relazionali standard, questi hanno ilcomportamento corretto dal punto di vista artimetico

– shift: operatori std sostituiti da shl(shift left) e shr(shift right)– aritmetici: ci sono solo -(segno), abs, +, -, *; implementano

operazioni in aritmetica senza segno per i dati unsigned, in con segno(in complemento a 2) per i dati signed

• Definisce funzioni per le conversioni di dati daun tipo all’altroconv_signed, conv_unsigned, conv_integer, conv_std_logic_vector

Page 19: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

19

37

Librerie

• Una libreria è una collezione di design units il riferimento ad una libreria avviene attraverso nomi logici– l’associazione tra i nomi logici e le directory che contengono le librerie è

contenuta in file di setup– Il nome logico WORK è normalmente usato per la libreria che

memorizza le design units create dall’utente– la libreria predefinita STD contienei packages STANDARD e TEXTIO– la libreria IEEE contiene, tra gli altri, i package STD_LOGIC_1164 e

STD_LOGIC_ARITH• per accedere a una libreriae usare le design units in essa contenute:

– LIBRARY IEEE; --permette di accedere alla libreria attraverso il nome• --logico IEEE

– USE IEEE.STD_LOGIC_1164.ALL; --carica tutto(ALL) il contenutodelpackage STD_LOGIC_1164

– USE IEEE.STD_LOGIC_ARITH.ALL; --carica tutto (ALL) il contenutodel package STD_LOGIC_ARITH

38

Istruzioni concorrentiLe istruzioni concorrenti sono usate all’interno delle architecture

per descrivere il comportamento dei segnali. Si attivano(vengono eseguite) solo in seguito ad un evento su uno dei segnali cui sono sensibili, quindi l’ordine di esecuzione non dipende dall’ordine con cui appaiono nel modello.

Page 20: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

20

39

Istruzioni sequenziali

• Le istruzioni sequenziali compaiono solo all’interno di processi; vengono eseguite nell’ordine in cui appaiono all’interno del processo.

40

Confronto tra variabili e segnaliil processo viene eseguito quando a cambia valore (da 0 a 1,

nell’esempio sotto); nel primo caso, x prende il valore di a alla fine del processo, per cui a y viene assegnato il valore originale di x (cioè 0); nel secondo caso, x prende il valore di a quando viene eseguita l’assegnazione x:=a, quindi y assume il nuovo valore di x

Page 21: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

21

41

Procedure e funzioni

42

Linguaggio VHDL

• Esempi• Elementi di memoria: flip-flop, latch• Registri

Page 22: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

22

43

Esempi: Multiplexer 4-1

44

Esempi: Multiplexer 4-1

Page 23: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

23

45

Sommatore: architettura behavioural

46

Sommatore ripple-carry

Page 24: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

24

47

Sommatore ripple-carry: uso di generate

48

Multiplexer 16-1: uso di generate

Page 25: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

25

49

Elementi di memoria: latch e flip-flop

50

Flip-Flop con reset sincrono e asincrono

Page 26: Laboratorio di Elettronica - static.gest.unipd.itstatic.gest.unipd.it/~mattavelli/FPGA_lab/Manuali_pdf/VHDL short... · 2 3 Organizzazione del corso • Lezione 1: – introduzione

26

51

Registro a N bit

52

Registro a scorrimento