Un linguaggio per la descrizione dello hardware: il VHDL

Documenti analoghi
Un linguaggio per la descrizione dello hardware: il VHDL

Introduzione al VHDL. Alcuni concetti introduttivi

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver

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

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.

ELETTRONICA dei SISTEMI DIGITALI Universita di Bologna, sede di Cesena

Descrizione VHDL di componenti combinatori

Reti Logiche A. Introduzione al VHDL

Metodologie di Progettazione Hardware-Software

Calcolatori Elettronici M Modulo Linguaggio VHDL Parte 1/2

Christian Pilato

DESCRIZIONE DEL FUNZIONAMENTO

METODOLOGIE PROGETTUALI CMOS

Reti Logiche A Appello del 24 febbraio 2010

Reti Logiche A Esame del 19 febbraio 2007

Lezione E15. Sistemi embedded e real-time

1. Introduzione. Il VHDL è un linguaggio per la descrizione dell hardware (un Hardware Description Language), che può essere utilizzato per la

Addizione tra numeri binari

Reti Logiche Appello del 1 marzo 2011

Laboratorio di Elettronica Introduzione al VHDL

RELAZIONE DEL PROGETTO DI UN CONTATORE BINARIO UP/DOWN MODULO 4 PER IL CORSO DI APPARATI ELETTRONICI 1. INTRODUZIONE

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

Introduzione al linguaggio VHDL

Calcolatori Elettronici A a.a. 2008/2009

Progettazione di circuiti integrati

Reti Logiche A Esame del 24 febbraio 2006

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

Guida VHDL Introduzione Circuiti integrati digitali off-the-shelf ASIC Full Custom Standard Cell Gate Array programmabile PLD FPGA CPLD

Tipi di segnali (logici) predefiniti. Rappresentazione dei segnali in VHDL. Tipo bit (definito nel package standard)

Progettazione di circuiti integrati

orologio e display cont 16

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

Esercitazione : REALIZZAZIONE IMPIANTO SEMAFORICO

Esercizi Logica Digitale,Circuiti e Bus

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

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

Descrizioni VHDL Behavioral

Le Macchine digitali sono Sistemi artificiali che elaborano informazioni

Elaborato di Architettura dei Sistemi Integrati

Elettronica dei Sistemi Digitali L-A

Richiami di Algebra di Commutazione

Microprocessore a 16 bit in tecnologia CMOS 45nm

Esercitazioni di Reti Logiche

Macchine combinatorie: encoder/decoder e multiplexer/demultiplexer

Esercitazioni di Reti Logiche. Lezione 4

Introduzione ai microcontrollori

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

Università Federico II - Napoli - A.A. 2011/2012 Corso di Laurea in Ingegneria Elettronica

Capitolo 5 Elementi architetturali di base

Complementi ed Esercizi di Reti Logiche in VHDL

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

Esercitazioni di Reti Logiche. Lezione 5

I Indice. Prefazione. Capitolo 1 Introduzione 1

Tecniche di Progettazione Digitale Logiche programmabili; standard cells; generazione automatica del layout: algoritmi di partitioning p.

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

Nonostante l avvento delle più moderne

Laboratorio di Calcolatori Elettronici

Circuiti di commutazione, codifica e decodifica

Sintesi Logica dal livello RTL. FPGA Xilinx Virtex II

Minimizzazione di Reti Logiche Combinatorie Multi-livello. livello

Tecniche di Progettazione Digitale Richiami all algebra di Boole; domini di rappresentazione p. 2

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

Circuiti sequenziali e latch

Minimizzazione di Reti Logiche Combinatorie Multi-livello

Circuiti sequenziali. Circuiti sequenziali e applicazioni

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

Simulazione. Simulazione verilog. Testbench. Testbench

Elettronica digitale: cenni

Fondamenti di Informatica

Sistemi logici complessi

Logica Digitale. Fondamenti di Informatica - Prof. Gregorio Cosentino

Sintesi Sequenziale Sincrona Sintesi Comportamentale di reti Sequenziali Sincrone

(b) LOGIC SYNTHESIS DESIGN FLOW

anno scolastico 2009 / 2010 ELETTRONICA per Elettrotecnica ed Automazione

Sviluppo di programmi

I circuiti digitali: dalle funzioni logiche ai circuiti (le SOP)

Rappresentazione con i diagrammi di flusso (Flow - chart)

Laboratorio di Architettura degli Elaboratori A.A. 2016/17 Circuiti Logici

Introduzione al VHDL per logiche programmabili

PSPICE simulazione di circuiti digitali Flip Flop M/S, Moltiplicatore parallelo, Memoria SRAM, sommatore, comparatore

Costrutti condizionali e iterativi

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

Circuiti Combinatori

Introduzione al linguaggio VHDL

Sintesi di Reti Sequenziali Sincrone

(competenze digitali) CIRCUITI SEQUENZIALI

Circuiti sequenziali

PROGRAMMA DI ELETTRONICA classe 3B a.s. 2014/15

COMPITO A Esercizio 1 (13 punti) Dato il seguente automa:

Architettura dei calcolatori

I bistabili ed il register file

Esercizi svolti e da svolgere sugli argomenti trattati nella lezione 25

Cosa si intende con stato

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

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

Progettazione di circuiti digitali e linguaggio VHDL

Architettura dei computer

static dynamic random access memory

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

I.3 Porte Logiche. Elisabetta Ronchieri. Ottobre 13, Università di Ferrara Dipartimento di Economia e Management. Insegnamento di Informatica

Transcript:

Un linguaggio per la descrizione dello hardware: il VHDL Gli Hardware Description Languages Gli HDL consentono lo sviluppo di un modello del comportamento dei sistema digitali. Gli HDL permettono l eseguibilità del codice. Errori concettuali possono essere individuati attraverso l'esecuzione di simulazioni. Durante la fase di sviluppo la descrizione diventa sempre più dettagliata fino ad arrivare ad un modello utilizzabile per la realizzazione del prodotto. Il modello HDL viene utilizzato per la sintesi automatica: la trasformazione (automatica) da un modello meno dettagliato ad uno più dettagliato. Esistono dei tool di sintesi che partendo da una descrizione mediante un HDL producono una descrizione mediante componenti standard di circuiti integrati. Gli HDL permettono la riusabilità dei modelli. Blocchi funzionali (macro) frequentemente usate vengono conservate in apposite librerie. 1

Fasi di sviluppo di un progetto Specifica Vengono definiti i requisiti del sistema. Progettazione a livello di sistema Viene modellato il comportamento del sistema. Progettazione logica Viene definita la struttura del sistema. Progettazione circuitale Viene realizzata la conversione automatica del modello strutturale in un modello a livello di gate (netlist). Layout Il layout in una specifica tecnologia. Il passaggio da una fase alla successiva richiede una verifica funzionale. Gli HDL possono essere usati dalla fase di progetto a livello di sistema a quella a livello di gate. Gli HDLs Verilog HDL: simile al linguaggio C. Standard IEEE dal 1995; VHDL: ha la struttura di linguaggi tipo Ada. ( IEEE-1076 ) Standard IEEE dal 1987 (1993). 2

Sviluppo di modelli VHDL Un tool di sintesi seleziona gli appropriati gate e flip-flops da una specifica libreria di standard cell al fine di riprodurre la descrizione VHDL. E' essenziale che per la procedura di sintesi che la somma dei ritardi nel path più lungo (dall'uscita all'ingresso di ogni Flip Flop) sia inferiore al periodo di clock. A partire dalla gate netlist vengono fatte delle simulazioni che tengono conto dei ritardi dei gate e di propagazione. Concetti del VHDL Il VHDL separa esplicitamente l interfaccia (ENTITY) dal corpo del componente (ARCHITECTURE) Tipi di assegnazione: Sequenziale Concorrente Il VHDL è caratterizzato inoltre dalle seguenti tecniche di modeling: Astrazione: permette di descrivere diverse parti con differente livello di dettaglio; Modularità: permette di decomporre grandi blocchi funzionali e scrivere il modello di ogni parte; Gerarchia: ogni modulo può essere a sua volta composto da un insieme di sottomoduli. 3

Livelli di astrazione nel design di un circuito integrato A livello behavioral viene fatta una descrizione funzionale. Non si fa riferimento al clock di sistema. Di norma tale modello è simulabile, ma non sintetizzabile. A livello Register Transfer (RTL) il design viene diviso in logica combinatoria ed elementi di memoria. Solo un sottoinsieme del VHDL viene utilizzato. A livello logico il design è rappresentato come una netlist con gate logici (AND, OR, NOT,...) ed elementi di memoria. A livello Layout le diverse celle della tecnologia target sono posizionate nel chip e le connessioni vengono definite. ENTITY L Entity: - definisce l'interfaccia (gli ingressi e le uscite) di un modulo; - non definisce il suo comportamento. Ogni Entity è caratterizzata da un nome; una sezione dichiarativa; da un insieme di porte. Ogni porta ha associata il nome, il tipo e la sua direzione (IN, OUT, INOUT, BUFFER). 4

Entity ENTITY Nome_entity IS -- sezione dichiarativa PORT ( p1: IN tipo1; p2: OUT tipo2; p3: BUFFER tipo3; p4: INOUT tipo4 ); END Nome_entity; BUFFER si comporta come OUT, ma permette di usare il valore in uscita all interno della stessa ENTITY. Entity: esempi ENTITY And4 IS PORT ( ); END And4; a, b, c, d : IN BIT; q : OUT BIT ENTITY ffrs IS PORT ( r,s : IN BIT; q,qn : BUFFER BIT ); END ffrs; 5

Entity: esempi ENTITY memoria IS PORT ( addr : IN std_logic_vector(15 downto 0); cs, rw: IN std_logic; data : INOUT std_logic_vector(15 downto 0) ); END memoria; ENTITY alu IS PORT ( A, B: IN std_logic_vector(15 downto 0); AluOp: IN std_logic_vector(0 to 3); C: OUT std_logic_vector(15 downto 0) ); END alu; Architecture L'ARCHITECTURE contiene l'implementazione dell'entity. E' sempre associata ad una specifica ENTITY. Una ENTITY può avere diverse ARCHITECTURE. ARCHITECTURE Nome_architecture OF Nome_entity IS --sezione_dichiarativa_architecture --sezione_esecutiva_architecture END Nome_architecture; La sezione dichiarativa può contenere: tipi di dati, costanti, segnali, componenti,... La sezione esecutiva può contenere: istanze di componenti, istruzioni di assegnamento, process 6

Architecture La descrizione del comportamento di un modulo mediante l ARCHITECTURE può essere fatta a diversi livelli di astrazione: BEHAVIORAL, in cui un modulo viene descritto in termini di ciò che fa ( come si comporta) piuttosto che di quali sono i suoi componenti e come sono interconnessi; STRUCTURAL, in cui un modulo è descritto come una collezione di gate e componenti interconnessi per realizzare una determinata funzione. Il livello BEHAVIORAL può essere realizzato utilizzando due diversi approcci: Data flow, che descrive come i dati si muovono attraverso il sistema, in termini di trasferimento di dati attraverso registri; Algoritmico (sequenziale), che descrive la sequenza di operazioni necessarie per realizzare una certa funzione. Architecture Structural Un and a 4 ingressi and4 può essere realizzato con uno schematico che utilizza come componente and2 così definito: ENTITY and2 IS PORT ( x, y: IN BIT; z : OUT BIT); END and2; ARCHITECTURE beh OF and2 IS z <= x AND y; END beh; 7

Architecture: Structural And4 ENTITY And4 IS PORT ( a, b, c, d : IN BIT; q : OUT BIT); END And4; ARCHITECTURE Netlist OF And4 IS COMPONENT and2 IS PORT (x,y : IN BIT; z: OUT BIT); END COMPONENT; signal s1,s2 : BIT; a b c d U1 U2 And4 s1 U3 s2 q U1: and2 PORT MAP ( a,b, s1); U2: and2 PORT MAP (x => c, z =>s2, y=>d); U3: and2 PORT MAP ( s1,s2, q); END Netlist; Architecture: Structural ffsr Un ffsr può essere realizzato con uno schematico che utilizza come componente and2 così definito: ENTITY nor2 IS PORT (a, b: IN BIT; c: OUT BIT); END nor2; ARCHITECTURE beh of nor2 is c <= NOT ( a OR b) ; END beh; 8

Architecture: Structural ffsr ENTITY ffsr IS Port ( s,r: IN BIT; q, qn: BUFFER BIT); END ffsr; s r 2 1 qn q ARCHITECTURE netlist OF ffsr IS COMPONENT nor2 IS PORT (a, b: IN BIT; c: OUT BIT); END COMPONENT; U1: nor2 PORT MAP ( s, q, qn); U2: nor2 PORT MAP ( b => qn, c=> q, a=> r); END netlist: ARCHITECTURE: Behavioral ENTITY And4 IS PORT ( a, b, c, d : IN std_logic; q : OUT std_logic); END And4; ARCHITECTURE dataflow OF And4 IS signal s1,s2 : std_logic; s1 <= a AND b AFTER 2 ns; s2 <= c AND d AFTER 2 ns; q <= s1 AND s2 AFTER 3 ns; END dataflow; L'esecuzione dei tre assegnamenti avviene in modo concorrente. L'ordine di esecuzione dipende dagli eventi ( variazione del valore ) sui segnali presenti sulla parte destra dell'assegnamento. Si dice che l'assegnamento è sensibile ai cambiamenti dei segnali presenti a destra del simbolo <=. L'insieme di tali segnali viene detta sensitivity list dell'assegnamento. 9

Sensitivity list a b c d s1 s2 q t 0 t 0 +2 ns t 0 +5 ns t 1 t 1 +2 ns t 1 +5 ns t0: evento su a -> viene eseguita s1 <= a AND b AFTER 2 ns; t0+2ns: evento su s1 -> viene eseguita q <= s1 AND s2 AFTER 3 ns; t0 + 5ns: evento su q -> nessun ulteriore esecuzione t1: evento su c -> viene eseguita s2 <= c AND d AFTER 2 ns; t1+2ns: evento su s2 -> viene eseguita q <= s1 AND s2 AFTER 3 ns; t1 + 5ns: evento su q -> nessun ulteriore esecuzione ARCHITECTURE: Behavioral ENTITY ffsr IS Port ( s,r: IN std_logic; q, qn: BUFFER std_logic); END ffsr; ARCHITECTURE dataflow OF ffsr IS qn <= s nor q AFTER 2 ns; q <= r nor qn AFTER 2 ns; END dataflow; 10

Architecture: Behavioral SR ARCHITECTURE dataflow OF ffsr IS qn <= s nor q AFTER 2 ns; q <= r nor qn AFTER 2 ns; END dataflow; S R Q Q t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 0 : S=0, R=0, Q=0, Q =1 t 1 : evento su S -> viene eseguita qn <= s nor q AFTER 2 ns; t 2 =t 1 +2ns: evento su qn-> viene eseguita q <= r nor qn AFTER 2 ns; t 3 :=t 1 +4ns: evento su q -> viene eseguita qn <= s nor q AFTER 2 ns; nessuna variazione su qn -> nessun altra esecuzione Architecture: Behavioral SR ARCHITECTURE dataflow OF ffsr IS qn <= s nor q AFTER 2 ns; q <= r nor qn AFTER 2 ns; END dataflow; S R Q Q t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 4 : evento su S -> viene eseguita qn <= s nor q AFTER 2 ns; nessuna variazione su qn -> nessun altra esecuzione 11

Architecture: Behavioral SR ARCHITECTURE dataflow OF ffsr IS qn <= s nor q AFTER 2 ns; q <= r nor qn AFTER 2 ns; END dataflow; S R Q Q t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 5 : evento su R -> viene eseguita q <= r nor qn AFTER 2 ns; t 6 =t 5 +2ns: evento su q-> viene eseguita qn <= s nor q AFTER 2 ns; t 7 :=t 1 +4ns: evento su qn -> viene eseguita q <= r nor qn AFTER 2 ns; nessuna variazione su q -> nessun altra esecuzione Architecture: Behavioral SR ARCHITECTURE dataflow OF ffsr IS qn <= s nor q AFTER 2 ns; q <= r nor qn AFTER 2 ns; END dataflow; S R Q Q t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 8 : evento su R -> viene eseguita q <= r nor qn AFTER 2 ns; nessuna variazione su q -> nessun altra esecuzione 12

Assegnamento condizionale concorrente Nome_segnale <= ELSE Valore_1 WHEN condizione1 Valore_2 WHEN condizione2 ELSE... Valore_N-1 WHEN condizionen-1 ELSE Valore_N; La condizione è una qualunque espressione booleana. Il Multiplexer 2x1 Dispositivo che permette di selezionare uno degli n ingressi e presentarlo in uscita Con n linee di ingresso un multiplexer richiede un numero di linee di comando pari a log2(n) a b MUX s q Tabella della verità a 0 1 - - b - - 0 1 s 0 0 1 1 q 0 1 0 1 f(a,b,s)= a s +b s 13

Il Multiplexer 2x1 (v1) library ieee; use ieee.std_logic_1164.all; entity mux2x1 is port ( a, b: in bit; s: in bit; z: out bit ); end mux2x1; architecture behavioral_v1 of mux2x1 is begin z <= a after 1 ns when s = '0' else b after 1 ns ; end behavioral_v1; Il Multiplexer 2x1 (v2) library ieee; use ieee.std_logic_1164.all; entity mux2x1 is port ( a, b: in bit; s: in bit; z: out bit ); end mux2x1; architecture behavioral_v2 of mux2x1 is begin z <= ( a and not s ) or ( b and s) after 1; end behavioral_v2; 14

Il Multiplexer 4x1 Con 4 linee di ingresso sono richieste due linee di comando i 0 i 1 i 2 i 3 MUX 4x1 q s 1 s 0 f(i 3,i 2,i 1,i 0,s 1,s 0 )= i 3 s 1 s 0 +i 2 s 1 s 0 +i 1 s 1 s 0 +i 0 s 1 s 0 Il Multiplexer 4x1 (structural) entity mux4x1 is port (i0,i1,i2,i3 : in bit; s1,s0: in bit; z: out bit ); end mux4x1; architecture schematic of mux4x1 is component mux2x1 is port ( a, b: in bit; s: in bit; z: out bit ); end component; signal z1,z2: bit; begin m0: mux2x1 port map ( a=> i0, z => z1, b => i1, s => s0); m1: mux2x1 port map (i2,i3,s0,z2); m2: mux2x1 port map (z1,z2,s1,z); end schematic; 15

Il Multiplexer 4x1 (behavioral) entity mux4x1 is port (i0,i1,i2,i3 : in bit; s1,s0: in bit; z: out bit ); end mux4x1; architecture behavioral of mux4x1 is begin z <= i0 after 1 ns when s1 = '0' and s0 = 0 else i1 after 1 ns when s1 = '0' and s0 = 1 else i2 after 1 ns when s1 = 1' and s0 = 0 else i3 after 1 ns; end behavioral; Istruzione di selezione WITH espressione SELECT Nome_segnale <= Valore_1 WHEN scelta1, Valore_2 WHEN scelta2 scelta3, Valore_3 WHEN scelta4 to scelta5,... Valore_N WHEN OTHERS; I valori delle scelte non possono ripetersi. Per utilizzare scelta4 to scelta5 è necessario che per i valori di scelta sia definito un ordinamento 16

Esempio con with ENTITY selettore IS PORT (a0,a1,a2,a3 : IN std_logic; sel : IN integer range 0 to 7; q: OUT std_logic); END selettore; ARCHITECTURE Behavioral OF selettore IS WITH sel SELECT q <= a0 WHEN 0, a1 WHEN 1 3 5, a2 WHEN 6 to 7, a3 WHEN OTHERS; END Behavioral; ( diretta Il decodificatore (in logica Un decodificatore (1 su m) accetta in ingresso un codice di n bit e presenta in uscita m=2n linee, sulle quali asserisce solo quella che corrisponde alla codifica in ingresso Numerando le linee di uscita da 0 a 2n-1, viene asserita quella che corrisponde al numero presente in ingresso q q 0 = e i 1 i 0 0 i 0 q 1 q 1 = e i 1 i 0 i 1 DEC 2x4 e q 2 q 3 q 2 = e i 1 i 0 q 3 = e i 1 i 0 17

Decoder (v1 con with) entity decoder2x4 is port ( i: in integer range 0 to 4; en: in std_logic; q: out std_logic_vector( 0 to 3) ); end decoder2x4; architecture dataflow of decoder2x4 is signal t: std_logic_vector(0 to 3); begin with i select t <= "1000" when 0, "0100" when 1, "0010" when 2, "0001" when 3, "0000" when others; q <= t after 2 ns when en= '1' else "0000"; end dataflow; Decoder (v2) entity decoder2x4 is port ( i: in bit_vector(0 to 1); en: in bit; q: out bit_vector( 0 to 3) ); end decoder2x4; architecture dataflow of decoder2x4 is signal t: bit_vector(0 to 3); begin t <= "1000" when i="00" else "0100" when i="01" else "0010" when i="10" else "0001" ; q <= t after 2 ns when en= '1' else "0000"; end dataflow; 18

Decoder (v3) entity decoder2x4 is port ( i: in bit_vector(0 to 1); en: in bit; q: out bit_vector( 0 to 3) ); end decoder2x4; architecture dataflow of decoder2x4 is begin q <= "1000" after 2 ns when i="00" and en = 1 else "0100" after 2 ns when i="01" and en = 1 else "0010" after 2 ns when i="10" and en = 1 else "0001" after 2 ns when i="10" and en = 1 else "0000" after 2 ns; end dataflow; Modello dei ritardi Inertial delay (meccanismo di default) In un modello inerziale l'uscita del dispositivo cambia il suo valore solo se il nuovo valore permane per una quantità di tempo superiore alla sua inerzia. Transport delay Il transport delay rappresenta il ritardo di una linea, in cui ogni variazione viene propagata con un ritardo pari a quello specificato. 19

Delta di simulazione Questo meccanismo è usato per ordinare gli eventi durante una simulazione. A 1 0 ARCHITECTURE Behavioural OF esempio IS signal B,C : std_logic; 0 1 B B <= NOT A; C <= NOT ( B AND CK) ; CK=1 C E E <= B AND C; END Behavioral; Se gli eventi non sono opportunamente ordinati, simulazioni diverse potrebbero portare a risultati diversi. AND prima (' B='1 ) A<='0' -> Valutazione inverter B<='1' (' E='1 ) Valuzione AND E<= '1' (' C='0 ) Valutazione NAND C<='0' (' E='0 ) Valutazione AND E<= '0' Din FF NAND prima (' B='1 A(1->0)-> Valutazione inverter( B<='1' (' C='0 ) Valutazione NAND C<='0' (' E='0 ) Valutazione AND E<= '0' Q Delta di simulazione Il meccanismo del Delta delay permette di realizzare simulazioni che non dipendono dall'ordine di valutazione delle istruzioni di assegnamento. Un Delta di simulazione consiste dei seguenti passi: aggiornamento dei valori dei segnali; valutazione del valore delle espressioni contenenti i segnali aggiornati al passo 1. e creazione della lista di segnali che devono cambiare il loro valore. I due passi vengono ripetuti fino a quando la lista dei segnali da aggiornare non è vuota. Il numero di Delta non modifica il tempo usato nella simulazione. I Delta di simulazione sono ortogonali al tempo di simulazione. 20

Delta di simulazione Tempo 10 ns Delta1 A<= '0' Valutazione: (NOT A) Delta2 B<='1' B <= NOT A; C <= NOT ( B AND CK) ; E <= B AND C; END Behavioral; Valutazione: NOT ( B AND CLK) Valutazione: ( B AND C ) Delta3 C<= '0' E<= '1' Valutazione: ( B AND C ) Delta4 E<= '0' Tempo 11 ns Generic I Generic sono un meccanismo usato per passare informazioni ad una istanza di una Entity. Sono definiti nella sezione dichiarativa dell'entity ENTITY And2 IS GENERIC (rise, fall : TIME; load : INTEGER); PORT (a, b: IN std_logic; c: OUT std_logic); END And2; ARCHITECTURE Behavioral OF And2 IS signal interno: std_logic; interno <= a AND b; c <= interno AFTER (rise + (load*2ns)) WHEN interno='1' ELSE interno AFTER (fall + (load*3ns)) END Behavioral; I generic vengono trattati come delle costanti nell'architecture. 21

Generic ENTITY and4 IS PORT (a, b, c, d: IN std_logic; q: OUT std_logic); END and4; ARCHITECTURE Schematic OF and4 IS COMPONENT And2 IS GENERIC (rise, fall : TIME:= 10 ns; load : INTEGER:= 1); PORT (a, b: IN std_logic; c: OUT std_logic); END COMPONENT; SIGNAL s1,s2: std_logic; ( 3 ns, A1: And2 GENERIC MAP (10 ns, 12 PORT MAP (a,b,s1); ( 3 ns, A2: And2 GENERIC MAP (10 ns, 12 PORT MAP (c,d,s2); A3: And2 PORT MAP (s1,s2,q); END Schematic; 22