VHDL: Simulazione & Sintesi

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

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

Prima esercitazione. a.a

Introduzione al VHDL. Alcuni concetti introduttivi

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.

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

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

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

Quarta esercitazione

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver

architecture tipo_architettura of nome_del_modulo is begin architecture tipo_architettura of nome_del_modulo is

$ % 16 dicembre Giovanni Beltrame 2

Elettronica per le telecomunicazioni 21/05/2004

Introduzione al VHDL. Alcuni concetti introduttivi

Progetto finale di reti logiche

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

Corso di Reti Logiche A

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;

Seconda esercitazione

Introduzione alla sintesi comportamentale

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

Un linguaggio per la descrizione dello hardware: il VHDL

Un linguaggio per la descrizione dello hardware: il VHDL

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

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

esercitazioni Corso di Laurea in Ing. elettronica Esercitazioni

Introduzione al VHDL Lezione 1

Reti Logiche A II Prova - 11 febbraio 2008

Introduzione al VHDL Lezione 2

Reti Logiche A II Prova - 2 marzo 2009

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

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

VHDL come strumento di progetto di circuiti digitali

Reti Logiche A. FSM in VHDL

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 18/1/2016

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

Reti Logiche A Esame del 24 febbraio 2006

MPHS AA FSM in VHDL

Reti Logiche Appello del 1 marzo 2011

orologio e display cont 16

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

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

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

Introduzione al Flusso di Progetto di Circuiti e Sistemi Digitali

Esercitazione : REALIZZAZIONE IMPIANTO SEMAFORICO

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

Reti Logiche A Esame del 19 febbraio 2007

Reti Logiche A Appello del 24 febbraio 2010

Lezione E15. Sistemi embedded e real-time

Linguaggi di descrizione dell hardware Progetti a.a. 2016/17

Calcolatori Elettronici M Modulo Mapping di un progetto VHDL su FPGA

Sequential Processing

Architetture dei Dispositivi Programmabili Avanzati Altera

ELETTRONICA dei SISTEMI DIGITALI Universita di Bologna, sede di Cesena

Progettazione di circuiti digitali e linguaggio VHDL

Riassunto tecnica digitale

DESCRIZIONE DEL FUNZIONAMENTO

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

Domande di Reti Logiche compito del 6/6/2017

BREVE GUIDA ALL' UTILIZZO DI QUARTUS II PER LO SVILUPPO DI PROGETTI VHDL

TUTORIAL 4. Realizzazione di un cronometro su scheda XSA50. A cura di De Pin Alessandro

Corso di Circuiti Logici Appunti e Approfondimenti A. Di Stefano

Nonostante l avvento delle più moderne

BREVE GUIDA ALL' UTILIZZO DI QUARTUS II PER LO SVILUPPO DI PROGETTI VHDL a.a

Descrizioni VHDL Behavioral

Reti logiche A All. Informatici (M-Z)

Ottava esercitazione. Soluzione prova d esame 14 Settembre a.a

Linguaggi di descrizione dell hardware Progetti a.a. 2018/19 Lista provvisoria e incompleta

Introduzione al linguaggio VHDL

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

Esercitazione sul programma XILINX ISE 4.2i.

Introduzione al linguaggio VHDL e al programma di simulazione e sintesi logica su FPGA utilizzato nelle esercitazioni. a.a.

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 8/9/2015

ELETTRONICA GENERALE, FONDAMENTI DI ELETTRONICA DIGITALE Appello d esame del 11/7/2016

Cos è il VHDL. Il VHDL è un linguaggio standard per la descrizione dell hardware

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

La descrizione ai terminali dell unità di controllo è la seguente:

Sesta esercitazione. Soluzione prova d esame 11 Dicembre a.a

Reti Logiche A Esame del 14 febbraio 2006

Addizione tra numeri binari

VHDL. Il linguaggio FOCUS

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

Progettazione di circuiti digitali e linguaggio VHDL

Calcolatori Elettronici M Modulo Linguaggio VHDL Parte 1/2

Calcolatori Elettronici

Christian Pilato

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

Domande di Reti Logiche compito del 18/07/2017

Introduzione al VHDL Lezione 3

BREVE GUIDA ALL' UTILIZZO DI QUARTUS II PER LO SVILUPPO DI PROGETTI VHDL

Reti logiche A All. Informatici (M-Z) Fabrizio Ferrandi a.a

Simulazione. Simulazione verilog. Testbench. Testbench

Domande di Reti Logiche compito del 30/1/2018

Università degli Studi di Milano

Università degli Studi di Milano

REVISIONE 0 OTTOBRE 2007

Progettazione di circuiti digitali e linguaggio VHDL

Università degli Studi di Milano

Transcript:

VHDL: Simulazione & Sintesi Politecnico di Milano 18 Dicembre 2012 M. CARMINATI mcarminati@elet.polimi.it

SIMULAZIONE VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 2

TESTBENCH Dopo aver progettato un componente, è importante verificare che il suo funzionamento sia corretto, cioè che produca i risultati attesi La verifica viene svolta simulando il componente in un ambiente controllato chiamato testbench Un testbench permette di: Produrre stimoli per gli ingressi del circuito Propagare questi stimoli al circuito Confrontare il risultato ottenuto con quello atteso VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 3

TESTBENCH Possiamo utilizzare il linguaggio VHDL anche per descrivere i testbench Un testbench in VHDL si compone semplicemente di una entity e di una architecture aggiuntiva Non può essere sintetizzato, ma serve solo per verificare il comportamento del componente in simulazione VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 4

library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; architecture arch of testbench is -- Dichiaro il componente che deve essere testato component datestare port( i1, i2,..., in: in...; o1, o2,..., on: out...; ); end component; -- Inputs signal i1, i2,..., in :... ;! -- Outputs signal o1, o2,..., on :... ; -- Definizione del periodo di clock constant clk_period : time := 10 ns; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 5

library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; entity testbench Dichiaro una entity vuota: il mio nuovo componente non ha alcuna interfaccia verso l esterno architecture arch of testbench is -- Dichiaro il componente che deve essere testato component datestare port( i1, i2,..., in: in...; o1, o2,..., on: out...; ); end component; -- Inputs signal i1, i2,..., in :... ;! -- Outputs signal o1, o2,..., on :... ; -- Definizione del periodo di clock constant clk_period : time := 10 ns; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 6

library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; architecture che realizza l entity testbench descritta in modo strutturale architecture arch of testbench is -- Dichiaro il componente che deve essere testato component datestare port( i1, i2,..., in: in...; o1, o2,..., on: out...; ); end component; -- Inputs signal i1, i2,..., in :... ;! -- Outputs signal o1, o2,..., on :... ; -- Definizione del periodo di clock constant clk_period : time := 10 ns; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 7

library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; architecture che realizza l entity testbench descritta in modo strutturale architecture arch of testbench is -- Dichiaro il componente che deve essere testato component datestare port( i1, i2,..., in: in...; o1, o2,..., on: out...; ); dichiaro come component il mio componente da testare end component; -- Inputs signal i1, i2,..., in :... ;! -- Outputs signal o1, o2,..., on :... ; -- Definizione del periodo di clock constant clk_period : time := 10 ns; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 8

library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; architecture che realizza l entity testbench descritta in modo strutturale architecture arch of testbench is -- Dichiaro il componente che deve essere testato component datestare port( i1, i2,..., in: in...; o1, o2,..., on: out...; ); end component; -- Inputs signal i1, i2,..., in :... ;! -- Outputs signal o1, o2,..., on :... ; -- Definizione del periodo di clock dichiaro come component il mio componente da testare dichiaro un segnale interno signal per ogni segnale presente nell interfaccia del componente datestare constant clk_period : time := 10 ns; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 9

library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; architecture arch of testbench is -- Dichiaro il componente che deve essere testato component datestare port( i1, i2,..., in: in...; o1, o2,..., on: out...; ); end component; -- Inputs signal i1, i2,..., in :... ;! -- Outputs signal o1, o2,..., on :... ; Definizione del periodo di clock tramite una costante di tipo time inizializzata a 10 ns constant nome: tipo; -- Definizione del periodo di clock constant clk_period : time := 10 ns; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 10

begin! -- Istanzio il componente che deve essere testato test: datestare port map (... ); -- Processo di clock clk_process: process begin!! clk <= '0';!! wait for clk_period/2;!! clk <= '1';!! wait for clk_period/2; Il componente datestare deve essere istanziato nella parte funzionale dell architecture Mappo i segnali dichiarati in precedenza con quelli presenti all interfaccia del componente end process; -- Processo di generazione degli stimoli stim_proc: process begin!! -- Genero gli stimoli qui, facendo uso dell istruzione -- wait for per gestire la temporizzazione!! ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 11

begin! -- Istanzio il componente che deve essere testato test: datestare port map (... ); -- Processo di clock clk_process: process begin process che realizza il clock per il componente da testare. Poichè la sensitivity_list è vuota, il processo viene risvegliato continuamente!! clk <= '0';!! wait for clk_period/2;!! clk <= '1';!! wait for clk_period/2; end process; L istruzione - wait for valore - fa si che il componente resti in attesa per la quantità di tempo specificata -- Processo di generazione degli stimoli stim_proc: process begin!! -- Genero gli stimoli qui, facendo uso dell istruzione -- wait for per gestire la temporizzazione!! ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 12

begin! -- Istanzio il componente che deve essere testato test: datestare port map (... ); -- Processo di clock clk_process: process begin!! clk <= '0';!! wait for clk_period/2;!! clk <= '1';!! wait for clk_period/2; Il secondo process genera gli stimoli da applicare agli ingressi del componente datestare end process; -- Processo di generazione degli stimoli stim_proc: process begin!! -- Genero gli stimoli qui, facendo uso dell istruzione -- wait for per gestire la temporizzazione!! ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 13

begin! -- Istanzio il componente che deve essere testato test: datestare port map (... ); -- Processo di clock clk_process: process begin!! clk <= '0';!! wait for clk_period/2;!! clk <= '1';!! wait for clk_period/2; end process; L ultima istruzione del process deve essere una ASSERT che termina l esecuzione e la simulazione -- Processo di generazione degli stimoli stim_proc: process begin!! -- Genero gli stimoli qui, facendo uso dell istruzione -- wait for per gestire la temporizzazione!! ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 14

TESTBENCH Il simulatore mostra testbench le forme d onda in modo che possano essere inspezionate dal progettista Questa fase può Genera e applica gli stimoli i1 i2 in clk... datestare i1 i2 in clk rst o1 o2 on... o1 o2 on Legge e verifica i risultati essere automatizzata rst VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 15

library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; architecture arch of testbench is -- Dichiaro il componente che deve essere testato component controllore_semaforico port( clk : in std_logic; reset : in std_logic; amb : in std_logic; p : out std_logic; s : out std_logic ); end component; -- Dichiarazione dei segnali come da interfaccia signal clk : std_logic := '0'; signal reset : std_logic := '0'; signal amb : std_logic := '0'; signal p : std_logic; signal s : std_logic; -- Definizione del periodo di clock constant clk_period : time := 10 ns; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 16

library ieee; use ieee.std_logic_1164.all; entity testbench is end testbench; architecture arch of testbench is -- Dichiaro il componente che deve essere testato component controllore_semaforico port( clk : in std_logic; reset : in std_logic; amb : in std_logic; p : out std_logic; s : out std_logic ); end component; All interno dell architecture del testbench dichiaro il componente da testare e i segnali corrispondenti a quelli presenti nell interfaccia del componente stesso -- Dichiarazione dei segnali come da interfaccia signal clk : std_logic := '0'; signal reset : std_logic := '0'; signal amb : std_logic := '0'; signal p : std_logic; signal s : std_logic; -- Definizione del periodo di clock constant clk_period : time := 10 ns; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 17

begin! -- Istanzio il componente che deve essere testato test: controllore_semaforico port map ( clk => clk, reset => reset, amb => amb, p => p, s => s ); -- Processo di clock clk_process: process begin!! clk <= '0';!! wait for clk_period/2;!! clk <= '1';!! wait for clk_period/2; end process; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 18

begin! -- Istanzio il componente che deve essere testato test: controllore_semaforico port map ( clk => clk, reset => reset, amb => amb, p => p, ); s => s -- Processo di clock Tutto uguale a prima: completo il mapping delle porte dopo aver istanziato il componente clk_process: process begin!! clk <= '0';!! wait for clk_period/2;!! clk <= '1';!! wait for clk_period/2; end process; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 19

-- Processo di generazione degli stimoli stim_proc: process begin!! reset <='1';!! amb <='0';!! wait for clk_period;! reset<='0';!! wait for clk_period*10;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*8;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*10;!! ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 20

-- Processo di generazione degli stimoli stim_proc: process begin!! reset <='1';!! amb <='0';!! wait for clk_period;! Inizializzazione del componente reset<='0';!! wait for clk_period*10;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*8;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*10;!! ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 21

-- Processo di generazione degli stimoli stim_proc: process begin!! reset <='1';!! amb <='0';!! wait for clk_period;! Inizializzazione del componente reset<='0';!! wait for clk_period*10;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*8;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*10;!! Due cicli di funzionamento nominale ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 22

-- Processo di generazione degli stimoli stim_proc: process begin!! reset <='1';!! amb <='0';!! wait for clk_period;! Inizializzazione del componente reset<='0';!! wait for clk_period*10;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*8;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*10;!! Due cicli di funzionamento nominale amb interrompe il verde su p ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 23

-- Processo di generazione degli stimoli stim_proc: process begin!! reset <='1';!! amb <='0';!! wait for clk_period;! Inizializzazione del componente reset<='0';!! wait for clk_period*10;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*8;!! amb<='1'; wait for clk_period;!! amb<='0'; wait for clk_period*10;!! Due cicli di funzionamento nominale amb interrompe il verde su p amb interrompe il verde su s ASSERT(FALSE) REPORT "Simulation Succesfull." SEVERITY FAILURE; end process; end; VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 24

Controllore Semaforico VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 25

Controllore Semaforico La prima volta che amb assume valore 1 anche p vale 1: dopo un ciclo di clock in cui p e s valgono 0 il ciclo ricomincia da s. VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 26

Controllore Semaforico La prima volta che amb assume valore 1 anche p vale 1: dopo un ciclo di clock in cui p e s valgono 0 il ciclo ricomincia da s. La seconda volta amb interrompe il verde su s: il ciclo ricomincia da p, come ci si aspetta. VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 27

SINTESI & IMPLEMENTAZIONE VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 28

SINTESI & IMPLEMENTAZ. sintesi logica.vhd technology mapping place & route masks bitstream generation generation ASIC VHDL: Simulazione & Sintesi - M. Carminati...0010111010... FPGA Politecnico di Milano 29

SINTESI Tutte le istruzioni che abbiamo visto finora possono essere simulate, solo alcune possono essere sintetizzate Non possono essere sintetizzati i tipi di dato floating point, le istruzioni sui file, i ritardi di porta (after), le istruzioni wait,... I segnali di tipo std_logic quando sintetizzati possono assumere solo i valori 0 e 1 VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 30

TOOL VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 31

TOOL Xilinx ISE WebPACK Design Software http://www.xilinx.com/support/download/index.htm Al termine dell installazione selezionare Free or Evaluation Product License versione limitata, ma gratuita del software, sufficiente per svilluppare gli homeworks. VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 32

HOMEWORKS Possibilità di punti aggiuntivi: homeworks sul VHDL FACOLTATIVI 2 progettini da svolgere - MAX 2 punti (indicativamente 0.5+1.5 da sommare al voto d esame prima dell arrotondamento) per ognugno viene richiesta la scrittura del codice VHDL e la stesura di un report Nessuna penalità in caso di non completamento o insufficienza del lavoro VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 33

HOMEWORKS Per ognuno dei due homework dovete consegnare: file.vhd del componente file.vhd del testbench report.pdf (4/5 pagine) con descrizione delle scelte progettuali (schematico e descrizione dei componenti - FSM, codifica degli stati e modello di Huffman) e commento dei risultati di simulazione VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 34

HOMEWORKS Scadenze: 18/12/2012: richiesta homeworks via mail a mcarminati@elet.polimi.it con tag [RL-homeworks] specificando nome, cognome e matricola 25/12/2012: entro questa data riceverete il I homework 06/01/2013: consegna I homework sempre via mail a mcarminati@elet.polimi.it con tag [RL-homework1] 07/01/2013: invio II homework 27/01/2013: consegna II homework sempre via mail a mcarminati@elet.polimi.it con tag [RL-homework2] Inizio Febbraio: discussione e valutazione degli homework VHDL: Simulazione & Sintesi - M. Carminati Politecnico di Milano 35