Escolar Documentos
Profissional Documentos
Cultura Documentos
Il VHDL Parte 1
Introduzione
Il VHDL un linguaggio per la descrizione dellhardware, utilizzabile per la documentazione, la simulazione e la sintesi di sistemi digitali.
HDL= Hardware Description Language V = VHSIC (Very High Speed Integrated Circuits) Nel 1987 il VHDL stato adottato come standard dalla IEEE (Institution of Electrical and Electronics Engineers): VHDL-87. Nel 1993 lo standard stato revisionato dalla IEEE: VHDL-93. Ulteriori revisioni del linguaggio si sono avute nel 2000 e nel 2002 Laltro linguaggio standard per la descrizione dellhardware il VERILOG
Corso di Architettura dei Sistemi Integrati 2 Il VHDL Parte 1
Il VHDL Parte 1
Il VHDL Parte 1
Il VHDL Parte 1
Studio dei costrutti VHDL necessari per descrivere semplici test-bench (necessari in fase di simulazione)
Il VHDL Parte 1
Entit ed architetture
La descrizione VHDL di un sistema deve includere: una definizione di entit, in cui si definiscono i terminali di ingresso/uscita del sistema una descrizione dellarchitettura, in cui si descrive la funzionalit del sistema.
Il VHDL Parte 1
Entit
Una dichiarazione di entit analoga ad un simbolo in uno schema a blocchi, in cui si identificano il nome del simbolo ed i punti di collegamento con altri elementi dello schema a blocchi.
Il VHDL Parte 1
Architettura
Larchitettura descrive il funzionamento della entit. La linea 8 rappresenta la parte dichiarativa dellarchitettura, utilizzata, in questo caso, per definire un segnale interno denominato aux1. Il funzionamento dellentit eqcomp viene descritto fra le parole chiave begin ed end Operazioni di assegnazione (simbolo <= ) Le tre assegnazioni delle linee 10, 11 e 12 sono statements concorrenti.
Corso di Architettura dei Sistemi Integrati 10 Il VHDL Parte 1
11
Il VHDL Parte 1
Entit
12
Il VHDL Parte 1
Dichiarazione di entit.
Ha lo scopo di descrivere linterfaccia di I/O del sistema. Nella dichiarazione di entit inoltre possibile definire dei parametri, che consentono di rendere pi flessibile la descrizione
entity, is, port ed end sono parole riservate del VHDL, mentre nome_entita, nome_segnale e tipo_segnale sono identificatori definiti dallutente.
13
Il VHDL Parte 1
Nota: il linguaggio prevede anche il modo linkage che tuttavia serve essenzialmente per collegare il modello VHDL con modelli scritti in altri linguaggi. Questo modo non supportato in fase di sintesi
Corso di Architettura dei Sistemi Integrati 14 Il VHDL Parte 1
Modo IN
IN : Il terminale un ingresso per lentit. Il circuito che pilota il terminale (il driver) esterno allentit.
Corso di Architettura dei Sistemi Integrati 15 Il VHDL Parte 1
Modo IN
IN : Il terminale un ingresso per lentit. Il circuito che pilota il terminale (il driver) esterno allentit.
16
Il VHDL Parte 1
Modo OUT.
OUT : Il terminale una uscita per lentit. Il driver interno allentit. Il valore di un terminale di questo tipo non pu essere letto allinterno dellentit.
Corso di Architettura dei Sistemi Integrati 17 Il VHDL Parte 1
Modo OUT.
OUT : Il terminale una uscita per lentit. Il driver interno allentit. Il valore di un terminale di questo tipo non pu essere letto allinterno dellentit.
18
Il VHDL Parte 1
Modo BUFFER
BUFFER : Il terminale di uscita, (il driver interno allentit) ma il suo valore pu anche essere letto allinterno dellentit.
Corso di Architettura dei Sistemi Integrati 19 Il VHDL Parte 1
Modo BUFFER
buffer
BUFFER : Il terminale di uscita, (il driver interno allentit) ma il suo valore pu anche essere letto allinterno dellentit. L'utilizzo del modo buffer non indispensabile e non raccomandato.
Corso di Architettura dei Sistemi Integrati 20 Il VHDL Parte 1
Modo INOUT.
INOUT : Il segnale pu essere utilizzato sia come ingresso che come uscita (il driver pu essere sia interno che esterno allentit) Questo il modo da utilizzare per i terminali tristate.
Corso di Architettura dei Sistemi Integrati 21 Il VHDL Parte 1
Modo INOUT.
INOUT : Il segnale pu essere utilizzato sia come ingresso che come uscita (il driver pu essere sia interno che esterno allentit) Questo il modo da utilizzare per i terminali tristate.
Corso di Architettura dei Sistemi Integrati 22 Il VHDL Parte 1
Tipi.
Il tipo specifica linsieme di valori che un segnale pu assumere; ad ogni tipo inoltre generalmente associato un insieme di operatori. Il VHDL prevede pochi tipi predefiniti:
il tipo bit ha due valori 0 ed 1 . il tipo bit_vector rappresenta un array di bit (un bus)
La keyword downto definisce lordinamento dei bit che compongono il vettore. b <= 1100; assegna a b(3) e b(2) il valore 1 ed a b(1) e b(0) il valore 0
23
Il VHDL Parte 1
STD_LOGIC
I tipi bit e bit_vector non sono comunemente utilizzati in VHDL, (non consentono, ad esempio, di definire che un segnale sia in condizioni di alta impedenza o di specificare condizioni do not care). Il VHDL consente di adoperare tipi definiti dallutente, E' opportuno raggruppare le definizioni dei tipi usati comunemente in una libreria.
STD_LOGIC
Per il momento, possiamo pensare di utilizzare i due tipi std_logic ed std_logic_vector in sostituzione dei tipi bit e bit_vector.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-- Descrizione VHDL di un comparatore a 4 bit library ieee; use ieee.std_logic_1164.all; entity eqcomp is port (a, b: in std_logic_vector (3 downto 0); eq, neq : out std_logic); end eqcomp; architecture dataflow of eqcomp is signal aux1 : std_logic; begin neq <= not aux1; -- neq attivo basso aux1 <= 1 when (a = b) else 0; eq <= aux1; end dataflow;
25
Il VHDL Parte 1
Architettura
26
Il VHDL Parte 1
27
Il VHDL Parte 1
Descrizione dell'architettura
E prassi comune distinguere tre possibili stili di descrizione architetturale:
28
Il VHDL Parte 1
29
Il VHDL Parte 1
Un segnale definito allinterno di una architettura corrisponde, grosso modo, ad una linea di collegamento in un diagramma logico.
Corso di Architettura dei Sistemi Integrati 30 Il VHDL Parte 1
In una descrizione strutturale avremo dei componenti, che sono utilizzati o istanziati pi volte, e sono fra loro collegati utilizzando dei segnali.
31
Il VHDL Parte 1
Esempio
Circuito combinatorio che calcola il numero di bit '1' in una word di ingresso. Allingresso 1101 (tre bit 1) corrisponde luscita 011 (il valore 3 espresso in binario); allingresso 1001 luscita 010 ecc. Schema a blocchi:
a0 a2 a1 c0 x0 s0 a3
Utilizziamo 3 full-adders.
y2
y1
y0
32 Il VHDL Parte 1
Full-adder
a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 cin 0 1 0 1 0 1 0 1
Somma (decimale) Somma (binario)
cout 0 0 0 1 0 1 1 1
s 0 1 1 0 1 0 0 1
0 1 1 2 1 2 2 3
00 01 01 10 01 10 10 11
33
Il VHDL Parte 1
Half-adder
a 0 0 1 1 b 0 1 0 1
Somma (decimale) Somma (binario)
cout 0 0 0 1
s 0 1 1 0
0 1 1 2
00 01 01 10
34
Il VHDL Parte 1
Full-adder ed Half-adder
Un full-adder pu essere realizzato tramite due half-adders ed una porta OR (non l'implementazione migliore...)
35
Il VHDL Parte 1
Esempio
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
library ieee use ieee.std_logic_1164.all; entity one_counter is port (a : in std_logic_vector (3 downto 0); y : out std_logic_vector (2 downto 0)); end one_counter; architecture strutturale of one_counter is signal s0, c0, x0 : std_logic; component full_add port (i2, i1, i0 : in std_logic; s,c : out std_logic); end component; component half_add port (i1, i0 : in std_logic; s,c : out std_logic); end component; begin . . . . .
continua ....
Corso di Architettura dei Sistemi Integrati 36 Il VHDL Parte 1
Dichiarazione di un componente
architecture nome_architettura of nome_entita is dichiarazioni di tipo dichiarazioni di segnali dichiarazioni di costanti definizione di funzioni definizioni di procedure dichiarazioni di componenti begin . . . .
Esempio (segue)
21 22 23 24 . . . . begin f1 : full_add port map(i2=> a2, i1 => a1, i0 => a0, s => s0, c => c0); h1 : half_add port map (i1 => a3, i0 => s0, s => y0, c => x0);
25 26 27
28 29 30 31 32
38
Il VHDL Parte 1
Istanza di un componente
architecture nome_architettura of nome_entita is dichiarazioni di tipo dichiarazioni di segnali dichiarazioni di costanti definizione di funzioni definizioni di procedure dichiarazioni di componenti begin statement concorrente . . . nome_label : nome_componente port map(segnale1, segnale2, ..., segnaleN); nome_label : nome_componente port map(port1 => segnale1, ..., portN => segnaleN);
Corso di Architettura dei Sistemi Integrati 39 Il VHDL Parte 1
40
Il VHDL Parte 1
Esempio (segue)
21 22 23 24 25 26 27 28 29 30 31 32 . . . . begin f1 : full_add port map(i2=> a2, i1 => a1, i0 => a0, s => s0, c => c0); h1 : half_add port map (i1 => a3, i0 => s0, s => y0, c => x0); h2 : half_add port map (c0, x0, y1, y2);
a0
a2 a1
end strutturale;
c0 x0
s0 a3
y2
Corso di Architettura dei Sistemi Integrati 41
y1
y0
Il VHDL Parte 1
43
Il VHDL Parte 1
Strutture ripetitive
generate : consente di descrivere in maniera compatta strutture ripetitive.
library ieee; use ieee.std_logic_1164.all; entity inv16 is port (a : in std_logic_vector (15 downto 0); b : out std_logic_vector (15 downto 0)); end; architecture structure of inv16 is component INV port (I : in std_logic; O : out std_logic); end component; begin g1 : for k in 15 downto 0 generate n1 : INV port map(I => a(k), O => b(k)); end generate; end structure;
45
Il VHDL Parte 1
Strutture ripetitive
generate : consente di descrivere in maniera compatta strutture ripetitive. nome_label : for identificatore in range generate istanza_componente; end generate;
46
Il VHDL Parte 1
modo
tipo_segnale);
47
Il VHDL Parte 1
Il valore delle costanti generiche viene stabilito quando lentit istanziata come componente, mediante una clausola generic map.
Corso di Architettura dei Sistemi Integrati 48 Il VHDL Parte 1