VHDL come strumento di progetto di circuiti digitali Antonio Deledda Corso di Elettronica dei...
-
Upload
baldovino-lamberti -
Category
Documents
-
view
220 -
download
1
Transcript of VHDL come strumento di progetto di circuiti digitali Antonio Deledda Corso di Elettronica dei...
VHDL come strumento di VHDL come strumento di progetto di circuiti digitali progetto di circuiti digitali
Antonio DeleddaAntonio DeleddaCorso di Elettronica dei Sistemi Digitali LSCorso di Elettronica dei Sistemi Digitali LS
AA 2005-2006AA 2005-2006
[email protected]@deis.unibo.it Tel. Interno 0512093829Tel. Interno 0512093829 Centro ARCES, Viale Pepoli 3/2Centro ARCES, Viale Pepoli 3/2
http://www.micro.deis.unibo.it/cgi-http://www.micro.deis.unibo.it/cgi-bin/dida?~deledda/www/Dida01bin/dida?~deledda/www/Dida01
Circuiti Integrati DigitaliCircuiti Integrati Digitali
ALGORITMOALGORITMOX(t) Y(t)
ASICASIC ArchitettureArchitetture
ProgrammabiliProgrammabili
(P, DSP)
FPGAFPGA
Flusso di progetto circuiti Flusso di progetto circuiti digitali digitali (anni 80/90)(anni 80/90)
1) Definizione Algoritmica : y=-x;
2) Schematic Entry
3) Custom Layout (place & route)
4) Parasitic extraction & Backannotation
Il Design Productivity GapIl Design Productivity Gap
Lo sviluppo della tecnologia offre una quantita’ di risorse di
Calcolo che supera la capacita’ del progettista di utilizzarle.
Tecnologia Standard CellsTecnologia Standard Cells
Per velocizzare il tempo di progetto (time-to-market) di un prodotto
vengono realizzano librerie formate da celle logiche elementari
Libreria Standard cellsLibreria Standard cells
Esempio: Esempio: LibreriaLibreria AMS 0.35 AMS 0.35 mm (Austria Micro (Austria Micro Systems)Systems)
IO PadsIO Pads 10 Inout 12 Inputs 10 10 Inout 12 Inputs 10 Outputs 6 PowerOutputs 6 Power
Celle Celle CombinatorieCombinatorie
5 Inverters 14 Buffers 8 5 Inverters 14 Buffers 8 3state buffers 21 and 21 or 3state buffers 21 and 21 or 12 xor 21 nand 21 nor 12 xor 21 nand 21 nor
6 mux 28 Blocchi misti 6 mux 28 Blocchi misti
Celle SequenzialiCelle Sequenziali 8 FF JK 32 FF D 10 Latches8 FF JK 32 FF D 10 Latches
270 Celle Elementari:270 Celle Elementari:
Libreria Standard Cells: Libreria Standard Cells: Cella AND2Cella AND2
cell(AN2) { area : 0.64 cell_footprint : "AND2" pin (A B) { direction : input fanout_load : 5; capacitance : 0.05 } pin(Q) { direction : output max_fanout : 95; max_capacitance : 0.9494 function : "(A*B)“ } timing() { intrinsic_rise : 0.22 intrinsic_fall : 0.12 rise_resistance : 3.16 fall_resistance : 2.00 slope_rise : 0.00 slope_fall : 0.00 related_pin : "A B"}}
• Linguaggi standard internazionale per la descrizione di circuiti integrati digitali
• Strumento convenzionale per il progetto e per la documentazione di blocchi digitali
• Permettono la rappresentazione di istanze hardware da system level fino a gate level
• Linguaggi HDL piu’ comuni: VHDL , Verilog (Standard IEEE)
HDLHDL
Hardware Description Languages
• Nato nel 1985, presso il dipartimento di difesa degli USA
• Reso pubblico nel 1987
• Formalmente ridefinito e reso standard IEEE nel 1993
• Tuttora piu’ sviluppato in Europa, mentre Verilog e’ considerato standard di uso comune negli USA
VHDLVHDL
Very High speed circuits Hardware Description Language
Stili di Descrizione Stili di Descrizione HardwareHardware
• BEHAVIORALBEHAVIORAL
• Register Transfer LevelRegister Transfer Level
• Gate Level Gate Level
Tech
nolo
gy D
ep
en
dan
ce
VHDL: ApplicazioniVHDL: Applicazioni
1)1) SIMULAZIONE LOGICASIMULAZIONE LOGICA
2)2) SYSTEM LEVEL DESCRIPTIONSYSTEM LEVEL DESCRIPTION
3)3) SINTESI LOGICASINTESI LOGICA
Sintesi LogicaSintesi Logica
“ SYNTHESIS => The process of deriving EFFICIENT results from CLEAR specifications “Il processo AUTOMATIZZATO di sintesi logica
trasforma una descrizione HDL (Behavioral) in una NETLIST di gates elementari che mantengono la
stessa funzionalita’ LA sintesi logica puo’ essere eseguita su un SOTTOINSIEME RTL del
linguaggio VHDL detto “VHDL Sintetizzabile”. Molti costrutti VHDL NON SONO SINTETIZZABILI.
Per avere sintesi efficiente, gli elementi sequenziali (Registri, F/Fs) devono essere descritti ESPLICITAMENTE.
Inoltre, i meccanismi di sintesi NON SONO STANDARDIZZATI, quindi diversi strumenti (software) di sintesi possono dare risultati anche
MOLTO diversi.Infine, I risultati della Sintesi dipendono FORTEMENTE dalla libreria di
GATES ELEMENTARI (Standard Cells) su cui e’ eseguita
Sintesi logica: Da RTL ai Sintesi logica: Da RTL ai GatesGates
Codice RTL: rigorosa separazione tra logica Combinatoria (sintetizzabile) e logica sequenziale
SINTESI LOGICA:SINTESI LOGICA: Il software interpreta la funzionalita’ del circuito e la realizza
attraverso celle elementari (STD_CELLS)
-> Mappe di Karnaugh Gli elementi sequenziali (F/F) del circuito non vengono
interpretati ma instanziati esplicitamente!
Sintesi logica: Timing DrivenSintesi logica: Timing Driven
Il processo di sintesi e’ dettato dalle temporizzazioni, si tenta di
minimizzare il piu’ lungo percorso combinatorio (critical path)
interno al design
Flusso di Sviluppo di circuiti digitali Flusso di Sviluppo di circuiti digitali : FRONT END: FRONT END
1) Definizione Algoritmica (linguaggio C): q=a * b + c;
2) Descrizione VHDL del circuito: q <= a and b or c;
3) Simulazione Funzionale
4) Sintesi Logica
5) Simulazione Post-Sintesi
Flusso di Sviluppo di circuiti Flusso di Sviluppo di circuiti digitali: BACK ENDdigitali: BACK END
6) Floorplanning
7) Place & Route
8) Parasitic extraction & backannotation
Entity e ArchitectureEntity e Architecture
ENTITY
• ENTITY= BLACK BOX, “scatola vuotache descrive l’interfaccia I/O del circuito
• ARCHITECTURE = Descrizione funzionaledel comportamento del circuito. Puo’ essere a diversi livelli,e puo’ essere sintetizzabile o meno
IN OUT
INOUT
Ad ogni entity possono corrispondere molteplici architectures, a seconda del tipo e del livello di descrizione voluto: es, la sintesi trasforma una architecture RTL in una a gate-level, sempre
riferita alla stessa entity
Arch 1 (Beh)
Arch 3 (Gate L.)
Arch 2 (RTL)
EsempioEsempio
entity NAND is Port ( a , b : in bit; z : out bit )
architecture behavioral of NAND issignal s : bit;begin s <= a and b; z <= not s;end NAND;
Esempio (bis)Esempio (bis)
entity NAND is Port ( a , b : in bit; z : out bit
);end NAND
architecture behavioral of NAND issignal s : bit;begin s <= a and b; z <= not s;end behavioral;
VHDL : CostruttiVHDL : Costrutti
• STATEMENTS: Costrutto che rappresenta un istanza circuitale.Benche’ vengano SIMULATI SEQUENZIALMENTE gli statements vengono ESEGUITI SIMULTANEAMENTE.
Es: s <= a and b;
Es: z <= out s;
VHDL: CostruttiVHDL: Costrutti• PROCESSI: Un processo rappresenta uno “statement espanso” , ovvero una operazione non elementare composta da un insieme di operazioni elementari che si suppongono eseguite nello stesso istante.All’interno di un processo l’ esecuzione e’ SEQUENZIALE, e possono essere definite delle variabili.SOLO all’interno di processi possono essere inserite espressioni di controllo condizionali (IF, CASE, WAIT, etc.)
process(a,b)variable c,d: bit_vector(0 to 3);begin c := a + b; d := c and “011” z <= d;end process;
Sensitivity ListSensitivity List
SENSITIVITY LIST : L’uscita di un processo viene ricalcolata ogni volta si ha un evento (cambiamento di valore) su uno dei segnali
appartenenti alla sensitivity list
In VHDL sintetizzabile, I processi sono puramente combinatori e tutti gli ingressi del processo devono
appartenere alla Sensitivity list.
Esempio (Half_Adder Esempio (Half_Adder behavioralbehavioral))
entity Half_Adder is Port ( a , b , enable : in bit; out, carry : out bit
);end Half_Adder
architecture behavioral of Half_Adder isbegin process(a,b,enable) begin
if(enable = ‘1’) out <= a xor b; carry <= a and b;
else out <= ‘0’; carry <= ‘0’;end if;
end process;end behavioral;
VHDL : CostruttiVHDL : Costrutti
• INSTANZIAZIONE GERARCHICA: E’ possibile istanziare in un dispositivo descritto in VHDL componenti circuitali di libreria descritti separatamente,purche’ la loro interfaccia di I/O sia descritta, come component, nella architecture
entity Half_Adder is Port ( a , b , enable : in bit; out, carry : out bit
);end Half_Adder
Esempio (Half_Adder Esempio (Half_Adder strutturalestrutturale))
architecture structural of Half_Adder iscomponent lib_and3 port ( in1,in2,in3 : in bit; Z : out bit ); end componentcomponent lib_and2 port ( in1,in2 : in bit; Z : out bit ); end componentcomponent lib_xor2 port ( in1,in2 : in bit; Z : out bit ); end componentsignal s: bit;Begin My_and3 : lib_and3 port map
(in1 => a, in2 => b, in3 =>enable, Z => out); My_and2 : lib_and2 port map (in1 => enable, in2 => s, Z => carry); My_xor2 : lib_xor2 port map (in1 => a, in2 => b, Z => s);end structural;
Tipi di datoTipi di dato
Nel VHDL le dichiarazioni di porte, segnali, e Nel VHDL le dichiarazioni di porte, segnali, e variabili devono specificare il loro tipo o variabili devono specificare il loro tipo o sottotiposottotipo
TypesTypes– ScalarScalar: : (*) = Sintetizzabile
Integer (*)Integer (*) RealReal CharacterCharacter BooleanBoolean Bit (*)Bit (*) Std_Ulogic & Std_Logic (std_logic_1164 library) (*)Std_Ulogic & Std_Logic (std_logic_1164 library) (*) PhysicalPhysical EnumeratedEnumerated
– CompositeComposite ArrayArray RecordRecord Std_Ulogic_vector & Std_Logic_vector (std_logic_1164 library) (*)Std_Ulogic_vector & Std_Logic_vector (std_logic_1164 library) (*)
– Access & File typesAccess & File types
Tipi scalari (Integer)Tipi scalari (Integer)
Rappresentazione a 32 bitRappresentazione a 32 bitrange(standard): range(standard): -2^31+1 to 2^31-1-2^31+1 to 2^31-1
Esempio:Esempio:
architecture behavioral of int_type isBegin process(..) variable a : INTEGER; Begin a:= 1; a:=1.0; -- not legal end processend behavioral;
Tipi scalari (Real)Tipi scalari (Real)
Single precision (32 bit)Single precision (32 bit) Double precision (64 bit)Double precision (64 bit) Esempio:Esempio:
architecture behavioral of Real_type isBegin process(..) variable a : REAL; Begin a:= 1.3; a:= -7.5; a:=1; -- not legal end processend behavioral;
Tipi scalari (Enumerated)Tipi scalari (Enumerated)
Lista di possibili valori specificati Lista di possibili valori specificati dall’utentedall’utente
Esempio:Esempio:
architecture behavioral of enum_type isTYPE binary IS (ON, OFF);Begin process(..) variable a,b : binary; Begin a:= ON; b:= OFF; end processend behavioral;
Tipi compositi (Array)Tipi compositi (Array) Utilizzato per ragruppare elementi dello stesso Utilizzato per ragruppare elementi dello stesso
tipo in un singolo oggetto VHDLtipo in un singolo oggetto VHDL EsempioEsempio
architecture test of array_type_example is…….TYPE shift_mem IS ARRAY(0 to 7) OF INTEGER;Begin process(DATA_IN, ……) variable my_shift_mem : shift_mem; Begin …… DATA_OUT <= my_shift_mem(7);
for I in 7 downto 1 loopmy_shift_mem(I) := my_shift_mem(I-1)end loop;
my_shift_mem(0) := DATA_IN; end processend test;
Tipi compositi (Record)Tipi compositi (Record) Utilizzato per ragruppare elementi dello stesso Utilizzato per ragruppare elementi dello stesso
tipo in un singolo oggetto VHDLtipo in un singolo oggetto VHDL Gli elementi sono referenziati mediante I nomi dei Gli elementi sono referenziati mediante I nomi dei
gruppigruppi architecture test of rec_type_example is……TYPE binary IS (ON, OFF);TYPE switch_info IS RECORD status : BINARY; IDnumber : INTEGER; END RECORD;Begin process(DATA_IN, ……) variable switch: switch_info; Begin …… switch.status := ON; switch.IDnumber := 30; ….. end processend test;
IEEE Std_logic_1164IEEE Std_logic_1164Si tratta di un package di libreria, SINTETIZZABILE, che permette di
definire segnali (o variabili, interne a processi) che descrivano il comportamento elettrico del segnale stesso
use ieee.std_logic_1164.all;
[…..]
entity adder isport ( a,b : in std_logic_vector(7 downto 0); z : out std_logic_vector(7 downto 0); ovf : out std_logic );
00 Logic 0Logic 0
11 Logic 1Logic 1
XX ConflictConflict
UU UnknownUnknown
ZZ Float Float (3state)(3state)
HH Weak 1Weak 1
LL Weak 0Weak 0
-- Don’t CareDon’t Care
Operandi FondamentaliOperandi Fondamentali
In VHDL un operando fondamentale puo’ riferirsi un tipo predefinito,
a un tipo strutturato (Array o Struct), o ad una tipologia “custom” definita in una libreria, sia essa dell’utente o di
sistema.
Gli operandi possono appartenere a tre categorie fondamentali
PORTE : Ovvero, gli elementi di interfaccia verso l’esterno del circuitoSEGNALI : Elementi di comunicazione interni al circuito tra processi, statements e componentsVARIABILI : Rappresentano operatori temporanei, sono solo INTERNE A PROCESSI
Operatori FondamentaliOperatori Fondamentali
<=<= AssegnamentoAssegnamento
---- CommentoCommento
and, or, xor, notand, or, xor, not Operatori LogiciOperatori Logici
+, -, *+, -, * Op. matematici Op. matematici sintetizzabilisintetizzabili
/, mod, rem, /, mod, rem, abs, **abs, **
Op. matematici non Op. matematici non sintetizzabilisintetizzabili
>, >=, <, <=,>, >=, <, <=, Operatori relazionaliOperatori relazionali
Alcune RegoleAlcune Regole
Un Segnale non puo’ essere usato due volte come destinazione (corto circuito) a meno che cio’ non venga fatto all’interno di un processo
Una porta di uscita non puo’ essere usata come sorgente (ingresso) da statement / processo / blocco gerarchico
I costrutti IF/LOOP, intrinsecamente sequenziali, possono essere usati solo all’interno di processi
LA ESECUZIONE DI DIVERSI STATEMENT / PROCESSI / COMPONENTS E’ SEMPRE CONCORRENTE, l’ordine con cui sono scritti NON HA ALCUNA IMPORTANZA
AttributesAttributesATTRIBUTES => Funzioni di simulazione che sono “collegate” al comportamento di segnali, tipi o array. Possono essere anche definiti dall’utente
S’eventS’event Vero in caso di eventi su Vero in caso di eventi su SS
S’activeS’active Vero in caso di Vero in caso di transactions su Stransactions su S
S’drivingS’driving Vero se il processo Vero se il processo corrente pilota Scorrente pilota S
S’stable(t)S’stable(t) Vero se non ci sono Vero se non ci sono eventi in S nel tempo teventi in S nel tempo t
T’low , T’highT’low , T’high Valore maggiore/minore Valore maggiore/minore ЄЄ T T
Flip Flop con reset e enable Flip Flop con reset e enable Entity FF is port ( clk, enable, reset, D : in BIT; Q : out BIT );End FF;
Architecture behavioral of FF isbeginprocess(CLK, reset) Begin if reset = ‘1’ then Q <= ‘0’; elsif clk’event and clk = ‘1’ then if enable = ‘1’ then Q <= D; end if; end if; end process;end behavioral;