Laboratorio di Elettronica Introduzione al VHDL

Documenti analoghi
IL VHDL. Perché si usa un linguaggio di descrizione dell'hardware? Permette di formalizzare il progetto di sistemi digitali complessi

Un linguaggio per la descrizione dello hardware: il VHDL

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver

Addizione tra numeri binari

Introduzione al VHDL. Alcuni concetti introduttivi

library ieee; use ieee.std_logic_1164.all; library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; library STD; use STD.textio.

Christian Pilato

Indice. Prefazione. sommario.pdf 1 05/12/

Calcolatori Elettronici M Modulo Introduzione all ambiente Xilinx ISE 12.3 e ISIM

Flusso di Progetto Mixed Signal in ambiente CADENCE. Approccio Analog Centric. Corso di Progettazione Mixed Signal 19/12/2013 Prof.

Tecnologie e Progettazione dei sistemi Informatici e di Telecomunicazioni Scheda Recupero Estivo Obiettivo

Esercitazioni di Reti Logiche. Lezione 5

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica. Metodologie e strumenti per il reengineering del workflow management

Elena Baralis 2007 Politecnico di Torino 1

CORSO DI ELETTRONICA DEI SISTEMI DIGITALI

Reti Logiche A. Introduzione al VHDL

Introduzione al linguaggio VHDL

TUTORIAL 3. Realizzazione di un contatore su scheda XSA50. A cura di De Pin Alessandro

La libreria STD La libreria MODELSIM_LIB Il package TEXTIO Struttura dei testbench. La libreria standard IEEE è composta 6 package

Caratteristiche di un linguaggio ad alto livello

Richiami di Algebra di Commutazione

Strutture dati e loro organizzazione. Gabriella Trucco

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Rappresentazione con i diagrammi di flusso (Flow - chart)

Calcolatori Elettronici M Modulo Linguaggio VHDL Parte 1/2

LINGUAGGI DI PROGRAMMAZIONE!

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

IIS Via Silvestri ITIS Volta Programma svolto di Tecnologie Informatiche A.S. 2015/16 Classe 1 A

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

PSPICE Circuiti sequenziali principali

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

(b) LOGIC SYNTHESIS DESIGN FLOW

Riepilogo su FSM. Descrizione di macchine a stati tramite VHDL. Esempio di FSM (Moore) Esempio di FSM (Moore)

Insegnamento Informatica CdS Scienze Giuridiche

Nonostante l avvento delle più moderne

Linguaggio C - sezione dichiarativa: costanti e variabili

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Le Macchine digitali sono Sistemi artificiali che elaborano informazioni

ESAMI DI STATO PER L'ABILITAZIONE ALL'ESERCIZIO DELLA PROFESSIONE DI INGEGNERE SEZIONE A I SESSIONE - ANNO 2015 SEZIONE A- Settore Industriale

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

FUNZIONI BOOLEANE. Vero Falso

Un circuito integrato è una piastrina di silicio (o chip), quadrata o rettangolare, sulla cui superficie vengono realizzati e collegati

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Linguaggi di alto livello, compilatori e interpreti

Programmazione C Massimo Callisto De Donato

Sistemi logici complessi

Descrizioni VHDL Behavioral

Il Modello di von Neumann (2) Prevede 3 entità logiche:

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Esercitazioni di Reti Logiche. Lezione 4

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Reti Logiche A Appello del 24 febbraio 2010

DIAGNOSTICA DEI CIRCUITI INTEGRATI DEFINIZIONI GENERALI

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Il Sistema Operativo

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Capitolo 6 Le infrastrutture SoftWare

Flip-flop e loro applicazioni

Laboratorio di Informatica

Capitolo 5 Elementi architetturali di base

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

LE PORTE LOGICHE. Ingresso B Ingresso A Uscita OUT

Logica Digitale. Fondamenti di Informatica - Prof. Gregorio Cosentino

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Il linguaggio C. Notate che...

Programma svolto di INFORMATICA. Classe 3 - indirizzo MERCURIO A.S. 2009/2010

Architettura dei computer

I Bistabili. Maurizio Palesi. Maurizio Palesi 1

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Simulazione. Simulazione verilog. Testbench. Testbench

Laboratorio di Architettura degli Elaboratori

LINGUAGGI DI ALTO LIVELLO

Circuiti sequenziali e latch

Circuiti sequenziali

Un nuovo concetto di classe

a.a. 2014/2015 Docente: Stefano Bifaretti

Dispensa di Informatica II.1

Il linguaggio assembly

PIANO DI LAVORO DEI DOCENTI

Fasi di un Compilatore

I THREAD O PROCESSI LEGGERI

UNIVERSITA DEGLI STUDI DI FIRENZE. Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica !" #$ & +

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Reggio Calabria, 29 Aprile 2009 ING.VALERIO SCORDAMAGLIA

I bistabili ed il register file

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Sistemi Combinatori & Mappe di Karnaugh

Fondamenti di Informatica

UML I diagrammi implementativi

Sintesi Logica dal livello RTL. FPGA Xilinx Virtex II

Università degli Studi di Cassino

Componenti di un processore

Minimizzazione di Reti Logiche Combinatorie Multi-livello

Programma svolto di INFORMATICA. Classe 3M - indirizzo MERCURIO A.S. 2010/2011

Corso Programmazione Java Standard

Informatica. 80 ore divise in 4 UFC. Docente: Michela Bacchin. Contatti: Tramite Ermes Studenti

Transcript:

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

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 3 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 4 2

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 5 Introduzione A chi e dedicato? Ai progettisti di circuiti e sistemi logici 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 Hardware 1987: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) 6 3

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 7 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. 8 4

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) 9 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; 10 5

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 11 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) 12 6

Flusso di progetto: uso del VHDL 13 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! 14 7

Domains and Levels of Modeling Structural Functional high level of abstraction low level of abstraction Geometric Y-chart due to Gajski & Kahn 15 Domains and Levels of Modeling Structural Functional Algorithm (behavioral) Register-Transfer Language Boolean Equation Differential Equation Geometric Y-chart due to Gajski & Kahn 16 8

Domains and Levels of Modeling Structural Processor-Memory Switch Functional Register-Transfer Gate Transistor Geometric Y-chart due to Gajski & Kahn 17 Domains and Levels of Modeling Structural Functional Polygons Sticks Standard Cells Floor Plan Geometric Y-chart due to Gajski & Kahn 18 9

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 19 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 comportamento del circuito 20 10

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 21 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 22 11

Segnali - Introduzione Signal P, G : bit. P <= A xor B; G <= A and B; S <= P xor CI;. i segnali, cioè gli oggetti dichiarati con l istruzione signal oppure 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 23 Segnali - Introduzione Signal P, G : bit. P <= A xor B; G <= A and B; S <= P xor CI;. 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èun cambiamento di valore) di uno degli ingressi di conseguenza, l ordine con cui le assegnazioni vengono scritte all interno dell architecture non ha importanza signal 24 12

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 25 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 26 13

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 27 Sintassi e dettagli del VHDL 28 14

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 29 Tipi standard Definiti nel package STANDARD contenuto nella libreria STD Presenti implicitamente in ogni simulatore VHDL 30 15

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 ; 31 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)) 32 16

Array: attributi Nel caso degli array, gli attributi forniscono informazioni supplementari relative all indice del segnale 33 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 34 17

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 35 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 altro conv_signed, conv_unsigned, conv_integer, conv_std_logic_vector 36 18

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 contenutodel package STD_LOGIC_1164 USE IEEE.STD_LOGIC_ARITH.ALL; --carica tutto (ALL) il contenutodel package STD_LOGIC_ARITH 37 Istruzioni concorrenti Le 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. 38 19

Istruzioni sequenziali Le istruzioni sequenziali compaiono solo all interno di processi; vengono eseguite nell ordine in cui appaiono all interno del processo. 39 Confronto tra variabili e segnali il 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 40 20

Procedure e funzioni 41 Linguaggio VHDL Esempi Elementi di memoria: flip-flop, latch Registri 42 21

Esempi: Multiplexer 4-1 43 Esempi: Multiplexer 4-1 44 22

Sommatore: architettura behavioural 45 Sommatore ripple-carry 46 23

Sommatore ripple-carry: uso di generate 47 Multiplexer 16-1: uso di generate 48 24

Elementi di memoria: latch e flip-flop 49 Flip-Flop con reset sincrono e asincrono 50 25

Registro a N bit 51 Registro a scorrimento 52 26