La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Il linguaggio VHDL Introduzione al linguaggio VHDL per la descrizione di sistemi digitali."— Transcript della presentazione:

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

2 TESTI A GUIDE TO VHDL - Second Edition Stanley MAZOR and Patricia LANGSTRAAT Kluver Academic Publishers

3 Obiettivi – NON e un corso completo sul VHDL – NON imparerete nel dettaglio la sintassi del VHDL – NON si approfondiranno gli aspetti semantici – NON imparerete a sviluppare estensioni o integrazioni – Capirete quali sono i motivi che spingono ad impiegare il VHDL – Comprenderete i concetti base e sarete in grado di interpretare un sistema descritto tramite VHDL – Sarete in grado di descrivere sistemi di utilita praticain VHDL

4 Introduzione A chi e dedicato? Ai progettisti di circuiti e sistemi logigi che utilizzano sistemi CAE (Coputer Automated tools for Electronic design) Un po di storia: 1983 : il dipartimento della difesa (DOD) allinterno del progetto VHSIC (Very High Speed Integrated Circuti) sviluppa un linguaggio di descrizione Hardware 1987: lIEEE 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)

5 Vantaggi Progetto di tipo technology - independent – Impiegato da diversi fornitori / venditori (sia di HW che SW) – Facilita gli aggiornamenti del sistema progettato – Documentazione del progetto e STANDARD Miglioramento nella qualita del progetto – Consente di analizzare varie alternative – Consente piu livelli di astrazione Verifica ad un elevato livello di astrazione Paragone delle prestazioni tra vari livelli di astrazione Integrazione tra blocchi sviluppati a vari livelli – Riutilizzo e condivisione di blocchi gia sviluppati

6 Considerazioni – E meno immediato di uno schema digitale – E sintatticamente … pesante – Essendo uno Standard Aperto vi si possono definire strutture e/o tipologie di variabili non direttamente collegabili alla struttura del circuito – Solo un sottoinsieme del VHDL e fisicamente sintetizzabile – Esistono tools di sviluppo che consentono di ricavare descrizioni in VHDL partendo da Schemi, Macchine a Stati Finiti, Tabelle di verita, ecc….

7 Introduzione

8 Introduzione Il Linguaggio VHDL viene utilizzato per: Documentare, Simulare, Sintetizzare circuiti e sistemi logici. Esso è costituito da più parti alcune delle quali fanno parte integrale del linguaggio stesso, mentre altre vengono integrate da opportuni packages realizzati allinterno di libraries

9 Un primo esempio A <= B + C after 5.0 ns B C A Aspetti introdotti: Descrizione / documentazione Top - Down design Simulazione Sintesi Logica Programmare in VHDL

10 Descrizione / Documentazione Una delle funzioni del VHDL e quella di descrivere / documentare il funzionamento di un sistema in modo chiaro ed inequivocabile Non e detto che questo sistema debba essere realizzato Alle volte e IMPOSSIBILE la realizzazione fisica del circuito Potrebbe essere la descrizione di un sistema gia in funzione Potrebbe essere un modo per descrivere gli stimoli da impiegare per testare un circuito

11 Top - Down Design (1) Tecnica di progetto che passa attraverso vari livelli di astrazione: – Algoritmico – RTL (register transfer level) – Porte Logiche a ritardo unitario – Porte logiche con ritardo effettivo Il passaggio da un livello a quello sottostante dipende da scelte progettuali, ed esempio – Tipologia di sommatore usato (Ripple Carry, Carry Look Ahead, Carry Select) – Tipologia di porte logiche a disposizione

12 Top - Down Design (2) I vari livelli di astrazione servono a mascherare il funzionamento al livello piu basso – A livello di funzione (a livello algoritmico non interessa conoscere la tipologia del sommatore, ma solo la funzione somma) – A livello di variabili ( il VHDL consente limpiego di variabili (boolean, integer, floating, ecc.) utili solamente per una modellizzazione astratta del sistema o di parti di esso.

13 Simulazione Un sistema descritto in VHDL viene solitamente SIMULATO per analizzarne in comportamento (simulazione comportamentale) Bisogna fornire degli stimoli (INPUT) Ed avere un sistema capace di osservare levoluzione del modello durante la simulazione, registrarne le variazioni per uneventuale ispezione di funzionamento Il simulatore deve aver la possibilita di rappresentare una variabile come unknown. Package STD_LOGIC_1164

14 Sintesi Logica Passaggio tra descrizione comportamentale e descrizione a porte logiche La sintesi avviene tramite appositi programmi che si appoggiano a librerie dove sono descritte le porte logiche da impiegare (fornite dal venditore) La sintesi e un processo delicato che deve essere opportunamente guidato ed ottimizzato Solo un ristretto sottoinsieme del VHDL si presta ad essere Sintetizzato automaticamente ovvero: Non tutto cio che e scritto in VHDL e sintetizzabile La restante parte e da impiegarsi per la descrizione e per la simulazione

15 Programmare in VHDL (1) Per certi versi e simile a programmare in Fortran, C, Pascal, ecc… Compilazione: controllo delle sintassi, generazione di un eseguibile Running: Link con strutture in libreria ed esecuzione dellalgoritmo Design unit VHDL Compiler Component Library VHDL Simulator

16 Programmare in VHDL (2) La fondamentale differenza e che un modello descritto in VHDL funziona sempre in Tempo di simulazione e tutti i vari eventi avvengono in successivi istanti di tempo Vi e la possibilita da parte di piu istruzioni di essere eseguite CONTEMPORANEAMENTE indipendentemente dallordine in cui sono state scritte (esecuzione concorrente) Altre differenze: – Presenza del delay e dellambiente di simulazione – Descrizione a piu livelli di astrazione – Descrizione di componenti ed Istanziazione allinterno di una descrizione strutturale

17 VHDL Design

18 Progetto in VHDL – Consta di piu unita compilate e salvate in opportune librerie – Queste unita sono: Entity Architecture Configuration Pakage – Entity ed Architecture descrivono i componenti come interfaccia e come struttura interna – Configuration serve per descrivere una particolare versione del progetto – Pakage: contiene funzioni e/o grandezze di uso comune

19 Esempio package my_defs is(Package) constant unit_delay: time := 1 ns -- ritardo end my_defs entity COMPARE is(Entity) port (a, b : in bit; c : out bit); end COMPARE architecture DATAFLOW of COMPARE is(Architecture) begin c <= not (a xor b) after work.my_defs.unit_delay; end DATAFLOW

20 Library Dopo la compliazione i risultati sono salvati in una LIBRARY tramite la quale possono essere successivamente condivisi la library di default e: WORK Vi sono diverse LIBRARY pre-compilate a cui fare riferimento – STD, IEEE, … per la descrizione del software (VHDL) – UNISIM, SIMPRIM, VALID… per la descrizione dell Hardware (celle logiche fornite da Xilinx, AMS, ES2, …) Esiste un file di configurazione che associa la libreria VHDL con un determinato file in un certo direttorio fisico su disco

21 Package Di solito e usato per: – Constant declaration – subprogram declaration – type declaration Per esempio: – Pakage STANDARD: contiene la definizione di types: bit, boolean, bit_vector, time. – Pakage TEXTIO: contiene la definizione di types: line, text procedure: read, write, writeline files: Input, Output

22 Entity Descrive un componente solo come Interfaccia da e verso lesterno Non fornisce alcun dettaglio sul funzionamento o sullarchitettura b entity COMPARE is port (a, b : in bit; c : out bit); end COMPARE ? a b c

23 Architecture Descrive il funzionamento dellEntity tramite: – descrizione astratta (comportamentale) – equazioni logico/ aritmetiche (dataflow) – Interconnessione tra moduli (strutturale) Lo stesso componente puo essere descritto a piu livelli di astrazione Dello stesso componente possono esistere piu implementazioni diverse (Es. sommatore come CLA, RC, CSA) Per ogni Entity possono esistere piu Architectures

24 Architecture (behavioral) architecture BEHAVIORAL of COMPARE is begin process (A,B) begin if (A = B) then C <= '1' after 1 ns; else C <= '0' after 1 ns; end if; end process; end BEHAVIORAL

25 Architecture (behavioral) – Descrizione comportamentale ad alto livello di astrazione (risulta molto simile ad un algoritmo espresso secondo il classici linguaggi sequenziali (C, Fortran, Pascal, ecc..) – Utile per simulare parti di circuito senza dover scendere troppo nel dettaglio del funzionamento. – Utilizzo di PROCESS (con lista dei segnali di attivazione) – Piu operazioni agenti in parallelo risiedono in diversi Process – Diversi processi comunicano tra loro mediante SEGNALI ma al loro interno lavorano mediante VARIABILI – Al loro interno i Processes sono sequenziali – ATTENZIONE: non tutto cio che viene descritto al livello comportamentale risulta sintetizzabile

26 Architecture (dataflow) architecture DATAFLOW of COMPARE is begin c <= not (a xor b) after 1 ns; end DATAFLOW Descrizione secondo equazioni logiche

27 architecture STRUCTURAL of COMPARE is signal I: bit; component XR2 port (x,y: in BIT; z: out BIT); end component; component INV port (x: in BIT; y: out BIT); end component; begin U0: XR2 port map (A,B,I); U1: INV port map (I,C); end STRUCTURAL; Architecture (Structural) instance component

28 Architecture (Structural) – Descrizione Strutturale ovvero mediante blocchi tra loro interconnessi (notare listanziazione dei componenti) – I vari components devono essere gia presenti in una libreria di riferimento – La dichiarazione dei components e spesso raccolta in un pakage – La port map indica il collegamento fisico – Vengono solitamente impiegati segnali interni – Puo essere ben sfruttata in progetti gerarchici (istanziando un componente gia compilato). – Spesso questa descrizione deriva da un processo di sintesi

29 Architecture Tutte queste tecniche costitutive per lArchitecture possono fondersi tra loro Una buona descrizione architetturale e il primo passo per una buona Sintesi – Il tool di sitesi ha una INTELLIGENZA limitata – Il successo di un progetto risiede al 75 % nella descrizione architetturale il rimanente 25% alle possibili ottimizzazioni – Non tutto cio che e scritto in VHDL puo essere sintetizzato!!

30 Configuration Descrive per ogni Entity coinvolta in un progetto quale Architecture utilizzare Sfruttando i default molte indicazioni possono essere soppresse configuration PRIMA of COMPARE is for STRUCTURAL for U0: XR2 use entity work.XR2(dataflow); end for; for U1: INV use entity ES2.INV(structural) end for; end for; end;

31 Elementi e Primitive

32 Introduzione Il VHDL e costituito da vari formati (types)ed operatori (operators) per consentire simulazione e sintesi a vari livelli Nel pakage STANDARD si trovano descritti quegli oggetti destinati alla descrizione COMPORTAMENTALE (non sempre sintetizzabile) Nel pakage IEEE1164 vi si trovano gli oggetti destinati alla sintesi ed alla simulazione logica Il VHDL e un linguaggio fortemente basato sulla sintassi

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

34 Sintassi - Scalari e Vettori

35 Un character va dichiarato racchiuso tra virgolette singole – Es: aA a meno di caratteri ASCII particolari – Es: CRDELNULACKBELLF Characters

36 Sintassi - Scalari e Vettori Una string e un array di caratteri e va dichiarata racchiusa tra virgolette doppie – Es: ciao a tuttix In caso di equivoco si usi la dichiarazione esplicita – Es: string(100100) Strings

37 Sintassi - Scalari e Vettori Il BIT assume solo valori 0 o 1 e va dichiarato tra virgolette singole – Es: 01 In caso di equivoco si usi la dichiarazione esplicita – Es: bit(0) bit(1) Bit

38 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_1001x00FF In caso di equivoco si usi la dichiarazione esplicita – Es: bit_vector(0110_0101_0011) Bit_vector

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

40 Sintassi - Scalari e Vettori Viene dichiarato racchiuso tra virgolette singole – Es:UX10 In caso di equivoco si usi la dichiarazione esplicita – Es: std_logic(1) STD_logic

41 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

42 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 TRUETrue falseFALSEFalse Boolean

43 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: E+38 Per impiegare un array di numeri reali deve essere opportunamente dichiarato Real

44 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: – Un intero puo eventualmente essere espresso in unaltra base Es:16#00F0F# – Nel pakage STANDARD sono descritti due subset degli Integer:positive e natural Integer

45 Sintassi - Scalari e Vettori E la sola grandezza fisica predefinita in VHDL. E definita nel Pakage STANDARD E importante separare il valore dallunita di grandezza – Es:10 ns123 us6.3 sec Unita di grandezza consentite: fspsnsusmssecminhr Time

46 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;

47 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

48 Sintassi - Dichiarazioni di oggetti – In VHDL vi sono grandezze che mantengono il loro valore immutabile ed altre che possono cambiare valore constants: gandezze fisse signals: rappresentano collegamenti fisici (sono grandezze concorrenti) variables: rappresentano variabili allinterno di un processo (sono grandezze sequenziali) – Inoltre si possono definire dei puntatori a files (ovviamente per blocchi puramente comportamentali) – Ogni grandezza impiegata deve essere definita a priori variable x: integer; signal aBc: bit; constant Vdd: real := 12.3;

49 Sintassi - Range Si puo vincolare una grandezza a rimanere allinterno di un certo campo di variablita (range) Il range va specificato in fase di dichiarazione entity COMPARE_digit is port (a, b : in integer range 1 to 10; c : out boolean); end COMPARE_digit; variable ABC: real range 1.0 to 10.0;

50 Sintassi - Costants Risultano comode quando in piu parti del listato si fa riferimento alla stessa grandezza costante Le costanti possono essere dichiarate allinterno di un pakage, entity o architecture constant Vdd: Real := 4.5; constant CYCLE : Time := 100 ns; constant PI : Real := 3.14; constant FIVE : std_logic_vector (0 to 3) := "0101";

51 Sintassi - Signals Sono lastrazione dei collegamenti fisici Fanno comunicare tra loro varie entity Un segnale puo essere inizializzato (ATTENZIONE in fase di SINTESI linizializzazione potrebbe essere disattesa!) In un entity un segnale viene dichiarato tramite la port signal count: integer range 1 to 10; signal GROUND: bit :=0 ; signal SYS_BUS : std_logic_vector (7 downto 0); port (A, B : in std_logic);

52 Sintassi - Variables Una variabile viene impiegata nei process lassegnamento del valore ad una variabile avviene istantaneamente in simulazione (allopposto di un segnale per cui lassegnamento avviene in base al tempo di simulazione) deve essere dichiarata prima di essere usata variable INDEX : integer range 1 to 50; variable CYCLE : time range 10 ns to 50 ns := 10ns; varaible MEMORY : bit_vector (0 to 7); variable x,y,z : integer;

53 Sintassi - expressions Sono formule impiegate per calcolare un risultato Loperando dipende dalle grandezze usate come operatori Alcuni operatori risiedono in appositi pakages Generalmente gli operandi devono essere dello stesso tipo Altrimenti si deve esplicitare la conversione – ERRORE – CORRETTO1 + INTEGER (1.0)

54 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

55 Pakages STD_logic_arith Il pakage STANDARD non consente comparazioni o operazioni aritmetiche tra bit_vector Alcuni venditori provvedono un pakage per definire le operazioni tra std_logic_vector Servono per definire se le grandezze impiegate sono di tipo signed o unsigned – ovvero ad esempio come interpretare la grandezza 1011 ossia 11 oppure -5 ?) use IEEE.std_logic_signed.all; use IEEE.std_logic_unsigned.all;


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

Presentazioni simili


Annunci Google