VHDL come strumento di progetto di circuiti digitali
- Slides: 38
VHDL come strumento di progetto di circuiti digitali Antonio Deledda Corso di Elettronica dei Sistemi Digitali LS AA 2005 -2006 23 Ottobre 2002 Sviluppo di una metodologia di progetto per un sistema on-chip basato su architettura riconfigurabile
adeledda@deis. unibo. it n Tel. Interno 0512093829 n Centro ARCES, Viale Pepoli 3/2 n n http: //www. micro. deis. unibo. it/cgi- bin/dida? ~deledda/www/Dida 01
Circuiti Integrati Digitali X(t) ASIC ALGORITMO Architetture Programmabili ( P, DSP) Y(t) FPGA
Flusso di progetto circuiti digitali (anni 80/90) 1) Definizione Algoritmica : y=-x; 2) Schematic Entry 3) Custom Layout (place & route) 4) Parasitic extraction & Backannotation
Il Design Productivity Gap Lo sviluppo della tecnologia offre una quantita’ di risorse di Calcolo che supera la capacita’ del progettista di utilizzarle.
Tecnologia Standard Cells Per velocizzare il tempo di progetto (time-to-market) di un prodotto vengono realizzano librerie formate da celle logiche elementari
Libreria Standard cells Esempio: Libreria AMS 0. 35 m (Austria Micro Systems) 270 Celle Elementari: IO Pads Celle Combinatorie Celle Sequenziali 10 Inout 12 Inputs 10 Outputs 6 Power 5 Inverters 14 Buffers 8 3 state buffers 21 and 21 or 12 xor 21 nand 21 nor 6 mux 28 Blocchi misti 8 FF JK 32 FF D 10 Latches
Libreria Standard Cells: Cella AND 2 cell(AN 2) { area : 0. 64 cell_footprint : "AND 2" 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"}}
HDL Hardware Description Languages • 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)
VHDL Very High speed circuits Hardware Description Language • 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
Stili di Descrizione Hardware • Register Transfer Level • Gate Level Technology Dependance • BEHAVIORAL
VHDL: Applicazioni 1) SIMULAZIONE LOGICA 2) SYSTEM LEVEL DESCRIPTION 3) SINTESI LOGICA
Sintesi 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 Gates Codice RTL: rigorosa separazione tra logica Combinatoria (sintetizzabile) e logica sequenziale 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 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 : 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 digitali: BACK END 6) Floorplanning 7) Place & Route 8) Parasitic extraction & backannotation
Entity e Architecture • ENTITY= BLACK BOX, “scatola vuota che descrive l’interfaccia I/O del circuito OUT IN • ARCHITECTURE = Descrizione funzionale del comportamento del circuito. Puo’ essere a diversi livelli, e puo’ essere sintetizzabile o meno Arch 1 (Beh) ENTITY INOUT Arch 2 (RTL) Ad ogni entity possono corrispondere molteplici architectures, a seconda del tipo e del livello di descrizione voluto: es, la sintesi trasforma una Arch 3 (Gate L. ) architecture RTL in una a gate-level, sempre riferita alla stessa entity
Esempio entity NAND is Port ( a , b : in bit; z : out bit ) architecture behavioral of NAND is signal s : bit; begin s <= a and b; z <= not s; end NAND;
Esempio (bis) entity NAND is Port ( a , b : in bit; z : out bit ); end NAND architecture behavioral of NAND is signal s : bit; begin s <= a and b; z <= not s; end behavioral;
VHDL : 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: 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 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 behavioral) entity Half_Adder is Port ( a , b , enable : in bit; out, carry : out bit ); end Half_Adder architecture behavioral of Half_Adder is begin 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 : 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 strutturale) architecture structural of Half_Adder is component lib_and 3 port ( in 1, in 2, in 3 : in bit; Z : out bit ); end component lib_and 2 port ( in 1, in 2 : in bit; Z : out bit ); end component lib_xor 2 port ( in 1, in 2 : in bit; Z : out bit ); end component signal s: bit; Begin My_and 3 : lib_and 3 port map (in 1 => a, in 2 => b, in 3 =>enable, Z => out); My_and 2 : lib_and 2 port map (in 1 => enable, in 2 => s, Z => carry); My_xor 2 : lib_xor 2 port map (in 1 => a, in 2 => b, Z => s); end structural;
Tipi di dato n n Nel VHDL le dichiarazioni di porte, segnali, e variabili devono specificare il loro tipo o sottotipo Types – Scalar: § § § § (*) = Sintetizzabile Integer (*) Real Character Boolean Bit (*) Std_Ulogic & Std_Logic (std_logic_1164 library) (*) Physical Enumerated – Composite § Array § Record § Std_Ulogic_vector & Std_Logic_vector (std_logic_1164 library) (*) – Access & File types
Tipi scalari (Integer) n Rappresentazione a 32 bit range(standard): -2^31+1 to 2^31 -1 n Esempio: architecture behavioral of int_type is Begin process(. . ) variable a : INTEGER; Begin a: = 1; a: =1. 0; -- not legal end process end behavioral;
Tipi scalari (Real) n Single precision (32 bit) n Double precision (64 bit) n Esempio: architecture behavioral of Real_type is Begin process(. . ) variable a : REAL; Begin a: = 1. 3; a: = -7. 5; a: =1; -- not legal end process end behavioral;
Tipi scalari (Enumerated) n Lista di possibili valori specificati dall’utente n Esempio: architecture behavioral of enum_type is TYPE binary IS (ON, OFF); Begin process(. . ) variable a, b : binary; Begin a: = ON; b: = OFF; end process end behavioral;
Tipi compositi (Array) Utilizzato per ragruppare elementi dello stesso tipo in un singolo oggetto VHDL n Esempio n 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 loop my_shift_mem(I) : = my_shift_mem(I-1) end loop; my_shift_mem(0) : = DATA_IN; end process end test;
Tipi compositi (Record) Utilizzato per ragruppare elementi dello stesso tipo in un singolo oggetto VHDL n Gli elementi sono referenziati mediante I nomi dei gruppi n 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 process end test;
IEEE Std_logic_1164 Si 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 is port ( a, b : in std_logic_vector(7 downto 0); z : out std_logic_vector(7 downto 0); ovf : out std_logic ); 0 1 X U Logic 0 Logic 1 Conflict Unknown Z H Float (3 state) Weak 1 L - Weak 0 Don’t Care
Operandi 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 circuito SEGNALI : Elementi di comunicazione interni al circuito tra processi, statements e components VARIABILI : Rappresentano operatori temporanei, sono solo INTERNE A PROCESSI
Operatori Fondamentali <= -and, or, xor, not +, -, * Assegnamento Commento Operatori Logici Op. matematici sintetizzabili /, mod, rem, abs, ** >, >=, <, <=, Op. matematici non sintetizzabili Operatori relazionali
Alcune 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 n Una porta di uscita non puo’ essere usata come sorgente (ingresso) da statement / processo / blocco gerarchico n I costrutti IF/LOOP, intrinsecamente sequenziali, possono essere usati solo all’interno di processi n LA ESECUZIONE DI DIVERSI STATEMENT / PROCESSI / COMPONENTS E’ SEMPRE CONCORRENTE, l’ordine con cui sono scritti NON HA ALCUNA IMPORTANZA n
Attributes ATTRIBUTES => Funzioni di simulazione che sono “collegate” al comportamento di segnali, tipi o array. Possono essere anche definiti dall’utente S’event Vero in caso di eventi su S S’active Vero in caso di transactions su S Vero se il processo corrente pilota S Vero se non ci sono eventi in S nel tempo t Valore maggiore/minore Є T S’driving S’stable(t) T’low , T’high
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 is begin process(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 process; end behavioral;
- Come rico
- Circuiti penitenziari
- Circuiti fronto sottocorticali
- Mealy traduzione
- Circuiti combinatori e sequenziali
- Circuiti penitenziari as1 as2 as3
- Modello dei circuiti della gestione
- Simulatore circuiti elettrici
- Circuiti integrati logici
- Circuiti combinatori
- Circuiti di comando
- Circuito sommatore
- Modulazioni digitali
- Nuove risorse digitali e loro impatto sulla didattica
- Nativii digitali
- Impatto
- Strumenti analogici e digitali fisica
- Strumenti riportatori
- Schiascopio strumento
- Strumento simile astrolabio
- Scetavajasse strumento
- Complemento di fine
- Allografo strumento
- Ontosistema
- Musica popolare russa famosa
- è donando che si riceve
- Strumento riportatore
- Strumento cerotto photoshop
- Forgive participle
- Hey come on out setting
- Emmanuel son of god
- Come mi vedo
- Come in come in and sit down
- Come mi chiamo io
- Come on come on turn your radio on
- Come thou fount come thou king lyrics
- Come in come in and sit down
- Through all generations everlasting is his mercy
- Come mi chiamo come mi chiamo