Modello sequenziale. Modello sequenziale: i Process 13/11/2014. ENTITY ffsr IS Port ( s,r: IN std_logic; q, qn: OUT std_logic); END ffsr;

Documenti analoghi
Sequential Processing

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. VHDL - Esempi. Martedì 13 Gennaio 2009

Un linguaggio per la descrizione dello hardware: il VHDL

Introduzione al VHDL Lezione 3

Architetture e Reti logiche. Esercitazioni VHDL. a.a. 2003/04 VHDL. Stefano Ferrari

Il Very High Speed Integrated Circuit Hardware Description Language (VHDL) Lab. di Calcolatori 1

Descrizioni VHDL Behavioral

Un linguaggio per la descrizione dello hardware: il VHDL

Seconda esercitazione

Metodologie di Progettazione Hardware-Software

Note su VHDL. 22 gennaio 2004

Introduzione al VHDL. Alcuni concetti introduttivi

architecture tipo_architettura of nome_del_modulo is begin architecture tipo_architettura of nome_del_modulo is

Architetture e reti logiche Esercitazioni VHDL a.a. 2006/07. UsodelVHDL. Stefano Ferrari

Architetture e reti logiche. Esercitazioni VHDL. a.a. 2005/06. Uso del VHDL. Stefano Ferrari

Quarta esercitazione

ELETTRONICA DELLE TELECOMUNICAZIONI II ESERCITAZIONE DI LABORATORIO N.2 CODICE VHDL. Torino, 16/05/2005

14/11/2012. Il VHDL 3 parte. Tipi. Tipi scalari INTEGER; REAL; Tipo Fisici; BOOLEAN; CHARCTER; BIT ENUMERATO; Tipo composto ARRAY RECORD FILE ACCESS

Esercizi VHDL nelle prove d esame di Architettura degli elaboratori (a.a. 2002/03)

VHDL - Introduzione. //

Introduzione al VHDL. Alcuni concetti introduttivi

Prima esercitazione. a.a

Introduzione alla sintesi comportamentale

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.

Reti Logiche A. Introduzione al VHDL

Sintassi. Le varie espressioni sintattiche scritte in VHDL si possono ricondurre ai seguenti oggetti: Scalari e Vettori Nomi Oggetti: Espressioni

Terza esercitazione. Progetto di una rete di controllo. Obiettivi Progetto e analisi di macchine a stati finiti. a.a

Sommario. Modellizzazione Sintassi Classi di Oggetti Tipi di Dati e Operatori Package e Librerie Processi Esempi di codice VHDL VHDL Testbenches

Corso di Circuiti Logici Appunti e Approfondimenti A. Di Stefano

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

Reti Logiche A. FSM in VHDL

MPHS AA FSM in VHDL

Flusso di progetto circuiti digitali. Circuiti Integrati Digitali. Il Design Productivity Gap. Tecnologia Standard Cells

VHDL come strumento di progetto di circuiti digitali

Semicustom Design Flow VHDL HDL. VHDL: Applicazioni. Stili di Descrizione Hardware. Elettronica dei Sistemi Digitali L-A

Corso di Reti Logiche A

---- registro con reset e enable library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.

Calcolatori Elettronici M Modulo Linguaggio VHDL Parte 1/2

Introduzione al VHDL VHDL. La storia. Corso introduttivo al VHDL. l acronimo di VHSIC Hardware Description Language

Flusso di progetto circuiti digitali

Riassunto tecnica digitale

Reti Logiche A II Prova - 2 marzo 2009

Introduzione al VHDL Lezione 2

Descrizione VHDL di componenti combinatori

Regole per la scrittura di VHDL Sintetizzabile. Fabio Campi. Corso di Elettronica dei Sistemi Digitali LS AA

Calcolatori Elettronici Anno Accademico 2001/2002. Introduzione al VHDL. Sommario. Introduzione Struttura di un modello VHDL: Concetti base del VHDL:

$ % 16 dicembre Giovanni Beltrame 2

VHDL: Simulazione & Sintesi

Sistemi per la Progettazione Automatica. problema punti massimi i tuoi punti problema 1 14 problema 2 4 problema 3 6 problema 4 6 totale 30

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

Reti Logiche Appello del 1 marzo 2011

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

Descrizione di macchine a stati tramite VHDL

VHDL. Il linguaggio FOCUS

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

Si progetti, utilizzando il linguaggio VHDL, una rete

Christian Pilato

Università degli Studi di Milano

Università degli Studi di Milano

Reti Logiche A II Prova - 11 febbraio 2008

Componenti di un sistema digitale

VHDL come strumento di progetto di circuiti digitali. Fabio Campi Corso di Elettronica dei Sistemi Digitali LS AA

Reti Logiche A Appello del 24 febbraio 2010

Progetto di una Slot Machine da sala scommesse implementata in VHDL e C# Andrea Manganaro Elio Romanelli

Reti Logiche A Esame del 13 settembre 2007

Calcolatori Elettronici M Modulo Linguaggio VHDL Parte 2/2

Università degli Studi di Milano

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

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 5/9/2016

Logica sequenziale: implementazione verilog

ELETTRONICA dei SISTEMI DIGITALI Universita di Bologna, sede di Cesena

Caratteristiche generali del linguaggio Visual Basic

Reti Logiche A Esame del 24 febbraio 2006

Logica sequenziale: implementazione verilog

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver

Elettronica per le telecomunicazioni 21/05/2004

Compito di linguaggi di descrizione dell hardware

Complementi ed Esercizi di Reti Logiche in VHDL

Reti Logiche A II Prova - 1 febbraio 2010

STRUTTURE DI CONTROLLO IN C. Docente: Giorgio Giacinto AA 2009/2010

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

Calcolatori Elettronici

Reti Logiche A Prova di giovedì 3 febbraio 2005

Reti Logiche A - Prova di mercoledì 16 febbraio 2005

Prova di esame del 19 giugno 2017

Il tipo Text. N. Del Buono

Strutture di controllo e cicli

Qualsiasi programma in C++ segue lo schema:

orologio e display cont 16

Latch in verilog. Logica sequenziale: implementazione verilog. Latch SR verilog: strutturale. Latch SR verilog

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

VISUAL BASIC FOR APPLICATION

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 30/3/2015

Corso di Automazione industriale

Linguaggi e ambienti CAD per la sintesi logica di sistemi digitali

Introduzione al linguaggio VHDL

Reti Logiche A Esame del 19 febbraio 2007

Descrizione Strutturale

Excel & VBA. Excel e Visual Basic for Application

Transcript:

Modello sequenziale: i Process Modello sequenziale ENTITY ffsr IS Port ( s,r: IN std_logic; q, qn: OUT std_logic); END ffsr; ARCHITECTURE seq OF ffsr IS ( r PROCESS(s, IF s = 1 AND r = 0 THEN q <= 1 AFTER 2 ns; qn <= 0 AFTER 4 ns; ELSIF s = 0 AND r = 1 THEN qn <= 1 AFTER 2 ns; q <= 0 AFTER 4 ns; ELSIF s = 1 AND r = 1 THEN q <= 0 AFTER 2 ns; qn <= 0 AFTER 2 ns;; END seq; 1

Process ( list [label:] PROCESS (sensitivity sezione_dichiarativa_process sequenza_istruzioni END PROCESS [label]; Un process contiene istruzioni eseguite in modo sequenziale. E' definito all'interno dell'architecture. Più process vengono eseguiti in modo concorrente. L'esecuzione del process è determinata da un evento su uno dei segnali della sensitivity list. Process I process comunicano tra loro attraverso i signal. ARCHITECTURE Behavioral OF Esempio IS signal c : std_logic; ( a,b ) pa: PROCESS c <= a AND b; END PROCESS pa; ( a,c ) pb: PROCESS d <= NOT c AND a; END PROCESS pb; END Behavioral 2

Variabili VARIABLE nome_variabile :tipo_variabile [:=valore_iniziale]; Es. VARIABLE a : integer range 0 to 15; Le variabili possono essere definite in un process e utilizzate solo nello stesso process. Assegnamento ad una variabile: a := espressione; A differenza dei signal, l'assegnamento del nuovo valore ad una variabile avviene immediatamente. Le variabili conservano il loro valore fino alla successiva esecuzione del process. Istruzione IF IF condizione THEN sequenza_di_istruzioni [ELSIF condizione THEN sequenza_di_istruzioni]... [ELSE sequenza_di_istruzioni] ELSIF può essere ripetuto più di una volta. ELSE può apparire una sola volta. Condizione è in tutti i casi un'espressione booleana 3

Multiplexer 2x1 ENTITY mux2x1 IS PORT ( a, b, sel : IN std_logic; q :OUT std_logic); END mux2x1; ARCHITECTURE sequenziale OF mux2x1 IS ( PROCESS(a,b,sel IF sel = 0' THEN q <= a; ELSIF sel= 1' THEN q<= b; ELSE q <= X'; END sequenziale; FFD ENTITY ffd IS PORT ( rst,d, clk: IN std_logic; q: OUT std_logic ); END ffd; ARCHITECTURE behavioral OF ffd IS ( PROCESS(CLK,RST IF RST= 1 THEN q <= 0 ; ELSIF clk= 0 AND clk EVENT AND clk LAST_VALUE= 1 THEN q<= d AFTER 2ns; END behavioral; 4

Istruzione CASE CASE espressione IS WHEN valore_1 => sequenza_di_istruzioni WHEN valore_2 valore_3 => sequenza_di_istruzioni WHEN valore_4 to valore_n => sequenza_di_istruzioni WHEN OTHERS => sequenza_di_istruzioni END CASE; Selettore 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 sequenziale OF selettore IS ( PROCESS(a0,a1,a2,a3,sel CASE sel IS WHEN 0 => q <= a0; WHEN 1 3 5 => q <= a1; WHEN 6 to 7 => q <= a2; WHEN OTHERS => q <= a3; END CASE; END sequenziale; 5

Istruzione WHILE [nome_label:] WHILE condizione LOOP sequenza_di_istruzioni END LOOP [nome_label] ; Esempio while: comparatore ENTITY confronta IS PORT (a,b : IN std_logic_vector(7 downto 0); ris: OUT std_logic); END confronta; ARCHITECTURE sequenziale OF confronta IS ( PROCESS(a,b VARIABLE ind: integer; VARIABLE uguale: std_logic; ind:=0; uguale:='1'; WHILE (uguale='1' AND ind<=7) LOOP IF a(ind) /= b(ind) THEN uguale := '0'; ind := ind +1; END LOOP; ris <= uguale; END sequenziale; 6

Esempio while: mcm entity mcm_while is port ( A,B: in integer range 0 to 255; R: out integer); end mcm_while; architecture beh of mcm_while is process(a,b) variable ma,mb: integer; ma:= A; mb:= B; while ma/=mb loop if ma <mb then ma:= ma+a; else mb:=mb+b; end if; end loop; R<= ma; end beh; Istruzione FOR [nome_label :] FOR identificatore IN intervallo_discreto LOOP sequenza_di_istruzioni END LOOP [nome_label] ; L'identificatore : non deve essere dichiarato; può essere utilizzato solo in lettura; non è visibile fuori dal FOR. 7

Conta del numero di 1 in un vettore ENTITY conta1 IS PORT ( a : IN std_logic_vector(7 downto 0); b : OUT integer range 0 to 8 ); END conta1; ARCHITECTURE seq OF conta1 IS ( PROCESS(a VARIABLE conta : integer range 0 to 8; conta := 0; FOR i IN 0 to 7 LOOP IF a(i) = 1 THEN conta := conta +1; END LOOP; b <= conta; END seq; Calcolo della parità ENTITY parita IS PORT ( a : IN std_logic_vector(7 downto 0); b : OUT std_logic); END parita; ARCHITECTURE seq OF parita IS ( PROCESS(a VARIABLE conta : integer range 0 to 8; conta := 0; FOR i IN 0 to 7 LOOP IF a(i) = 1 THEN conta := conta +1; END LOOP; if conta mod 2 = 1 then b <= 1 ; else b<= 0 ; end if; END seq; 8

Generate Utilizzato per la creazione di schematici con struttura regolare Un GENERATE può includere altri GENERATE name: FOR i IN 0 TO d-1 GENERATE --concurrent statements END GENERATE name Esempio AND32: For i in 0 to 31 generate AI: and2 port map (A(i), B(i), C(i)); end generate AND32; Generate: if scheme Permette la creazione condizionata di componenti name: IF condizione GENERATE --concurrent-statements END GENERATE name; Non può essere usato ELSE o ELSIF Esempio GA: for i in 0 to d-1 generate GA0: if i=0 generate a0: adder1 port map (A(0),B(0),'0',C(0),R(0)); end generate GA0; GAI: if i>0 generate ai: adder1 port map (A(i),B(i),C(i-1),C(i), R(i)); end generate GAI; end generate GA; 9

Istruzione ASSERT E usata per fornire una stringa al progettista durante la simulazione ASSERT condizione [REPORT stringa] [SEVERITY livello_di_severity] La stringa viene visualizzata se la condizione è falsa. Livello di severity: note warning ( default ) error failure Esempio Assert ( b,c ) PROCESS b<=c; ( c/=a ) ASSERT REPORT Il Valore di C è uguale a quello di a SEVERITY ERROR; 10

Istruzione WAIT Questa istruzione sospende l'esecuzione di un process o sottoprogramma. L'esecuzione può riprendere quando si verifica una certa condizione. Abbiamo tre possibili modi di esprimere questa condizione. - WAIT ON elenco_segnali - WAIT UNTIL condizione - WAIT FOR tempo Con WAIT ON l'esecuzione riprende se c'è un evento su uno dei segnali elencati. Con WAIT UNTIL l'esecuzione riprende quando la condizione diventa vera. Con WAIT FOR l'esecuzione riprende dopo un tempo fissato. In un process non è possibile avere contemporaneamente sensitivity list e WAIT. Esempi con WAIT PROCESS WAIT ON a; IF a= 1 THEN b<= 10 ; ELSE b <= 01 ; END IF: WAIT ON c,d; F <= c AND d; PROCESS WAIT UNTIL a= 1 ; c <= d; WAIT UNTIL a= 0 ; c <= f; PROCESS z <= a; WAIT FOR 20 ns; Z <= b; WAIT UNTIL c= 1 FOR 40 ns; ( c='1 ) assert report time out violation severity error z <= c; WAIT ON a FOR 60 ns; 11

WAIT ON Un process con sensitivity list può essere descritto in modo equivalente con un process senza sensitivity list e con un WAIT ON alla fine contenente gli stessi segnali della sensitivity list PROCESS IF sel = 1 THEN Z<= A; ELSE Z<= B; WAIT ON A,B,SEL; END PROCESS ( PROCESS(A,B,SEL IF sel = 1 THEN Z<= A; ELSE Z<= B; END PROCESS WAIT: costrutti non sintetizzabili process wait on a; d<= di; -- non è sintetizzabile poiché non è presente un edge process wait for 10 ns; d<= di; -- non è sintetizzabile poiché non è presente un edge 12

WAIT: costrutti non sintetizzabili process wait until c event and c=1 ; d<= d1; wait until d event and d=1 ; d<=d2; -- non è sintetizzabile poiché tutti gli edge devono dipendere dallo stesso segnale WAIT: costrutti non sintetizzabili process wait until c event and c= 1 ; d<= d1; wait until c event and c= 0 ; d<=d2; -- non è sintetizzabile poiché i wait devono contenere un solo edge 13

WAIT: costrutti non sintetizzabili process wait until d event and c= 1 ; d<= d1; wait until c event and c= 0 ; d<=d2; -- non è sintetizzabile poiché i wait devono contenere un solo edge WAIT: costrutti non sintetizzabili process wait until c event; d<= d1; wait until c event; d<=d2; -- non è sintetizzabile poiché non può essere determinata la polarità dell edge 14

WAIT: costrutti non sintetizzabili entity es is port (a,c : in integer; d : out integer); end es; architecture beh of es is process wait until c event and c= 2; d<= a; end beh; - Non è sintetizzabile perché il clock deve essere di un solo bit 15