Introduzione al VHDL Lezione 2

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

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

Introduzione al VHDL Lezione 3

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

Christian Pilato

Un linguaggio per la descrizione dello hardware: il VHDL

Addizione tra numeri binari

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

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

Introduzione al VHDL. Alcuni concetti introduttivi

Un linguaggio per la descrizione dello hardware: il VHDL

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

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

Quarta esercitazione

Introduzione alla sintesi comportamentale

Introduzione al VHDL Lezione 1

Università degli Studi di Milano

Reti Logiche A. Introduzione al VHDL

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver

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

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.

Calcolatori Elettronici M Modulo Linguaggio VHDL Parte 1/2

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

ELETTRONICA dei SISTEMI DIGITALI Universita di Bologna, sede di Cesena

Introduzione al linguaggio VHDL

Descrizioni VHDL Behavioral

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

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

Lezione E15. Sistemi embedded e real-time

Laboratorio di Elettronica Introduzione al VHDL

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

Corso di Calcolatori Elettronici 2 Università di Napoli, Federico II. Il VHDL come linguaggio (v1.0) Roadmap

Introduzione al linguaggio VHDL

Algoritmi e Strutture Dati

Modelli VHDL per simulazioni a basso livello

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

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.

VHDL. Il linguaggio FOCUS

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Reti Logiche A Appello del 24 febbraio 2010

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

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

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

Indice. Ordine di valutazione. Espressioni in C++ Le espressioni in C++ (CAP 4) Alberto Garfagnini e Marco Mazzocco A.A. 2014/ * 20 / 2

Laboratorio di Calcolatori Elettronici

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

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

Capitolo 2 Introduzione alla programmazione in C

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

Linguaggio C: Espressioni

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

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

Costrutti per il controllo del flusso di esecuzione

Breve guida al linguaggio FORTRAN 77

28/02/2014 Copyright V. Moriggia

Introduzione al Flusso di Progetto di Circuiti e Sistemi Digitali

Descrizione VHDL di componenti combinatori

Costanti e Variabili

Sintesi Logica dal livello RTL. FPGA Xilinx Virtex II

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Introduzione alla programmazione in linguaggio C

senza stato una ed una sola

Reti Logiche Appello del 1 marzo 2011

Il livello logico digitale

Metodologie di Progettazione Hardware-Software

Istruzioni condizionali di diramazione in Fortran 90

Structured Query Language

Elaborato di Architettura dei Sistemi Integrati

Introduzione a Matlab

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Introduzione al C++ (continua)

FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77. Introduzione. Introduzione. PROGRAM {nome} {dichiarazioni}

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Introduzione al VHDL per logiche programmabili

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Lezione 6 Introduzione al C++ Mauro Piccolo

Complementi ed Esercizi di Reti Logiche in VHDL

ESERCITAZIONE 5!! 7 dicembre 2016!! Programmazione concorrente in ADA!!

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Fortran. Introduzione.

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

Indice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3

DESCRIZIONE DEL FUNZIONAMENTO

Laboratorio di Matlab

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

Logica Digitale. Fondamenti di Informatica - Prof. Gregorio Cosentino

Programmazione. 1 Introduzione. Tutto per la gloria di Dio.

Reti Logiche A Esame del 19 febbraio 2007

LINGUAGGIO PDL2. Caratteristiche del linguaggio PDL2. Struttura del programma. Rappresentazione dei dati. Istruzioni. Gestori di condizione

Programmazione con il linguaggio LibreOffice Basic

Riassunto. Riassunto. Ciclo fetch&execute. Concetto di programma memorizzato. Istruzioni aritmetiche add, sub, mult, div

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

METODOLOGIE PROGETTUALI CMOS

Lezione 20. Assembly MIPS: Il set istruzioni, strutture di controllo in Assembly

Il livello logico digitale

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Programmazione web lato client con JavaScript. Marco Camurri 1

Logica booleana, Costrutto IF

ESERCITAZIONE 6 12 dicembre Soluzione

L utility Unix awk [Aho-Weinberger-Kernighan]

Transcript:

Introduzione al VHDL Lezione 2 Cristina Silvano Università degli Studi di Milano Dipartimento di Scienze dell Informazione Via Comelico 39/41, I-20135 Milano (Italy) Tel.: +39-2-5835-6306 e-mail: silvano@elet.polimi.it Assegnamento di Segnali Assegnamento di una forma d onda ad un segnale. Formato: TARGET_OBJECT <= WAVEFORM; Esempio: SIGNAL_A <= 0 ; 3/7/01 Cristina Silvano Università degli Studi di Milano 2

Assegnamento Condizionato di Segnali Assegnamento di una forma d onda ad un segnale basato sulla validità di una condizione. La condizione deve produrre un valore booleano. Formato: TARGET_OBJECT <= WAVEFORM_1 when CONDITION else WAVEFORM_2; Esempio: SIGNAL_A <= 0 when b = 1 else 1 when b = 0 else X ; 3/7/01 Cristina Silvano Università degli Studi di Milano 3 Oggetti Possibili tre classi per gli oggetti: Costanti Oggetti assegnati ad un valore iniziale che non può essere cambiato. Variabili Oggetti che ricevono un valore che può essere cambiato attraverso n istruzione i assegnamento tra variabili: OLD_VALUE := NEW_VALUE; Segnali Oggetti che ricevono dei valori associati ad un fattore temporale e che possono essere cambiati attraverso un istruzione di assegnamento tra segnali: OLD_VALUE <= NEW_VALUE @ 0; OLD_VALUE <= NEW_VALUE @ 10; 3/7/01 Cristina Silvano Università degli Studi di Milano 4

Istruzioni di assegnamento tra segnali I segnali sono caratteristici della descrizione hardware per modellare l informazione che transita nel tempo o su una singola net oppure su un bus. Segnali sono associati al concetto di FORMA D ONDA o WAVEFORM L istruzione di assegnamento tra segnali stabilisce un collegamento definitivo tra di essi. Esempio: signal A, Z : bit; Z <= A; A Z 3/7/01 Cristina Silvano Università degli Studi di Milano 5 Istruzioni di assegnamento tra segnali In presenza di istruzioni di assegnamento multiple è necessaria una funzione di risoluzione : NO signal A, B, Z: bit; Z <= A; Z <= B; A B? Z Il segnale Z deve essere un RESOLVED TYPE come std_logic: signal Z : std_logic; I tipi bit e std_ulogic sono UNRESOLVED TYPE e necessitano di un solo driver pilotante. 3/7/01 Cristina Silvano Università degli Studi di Milano 6

Istruzioni di assegnamento tra segnali Esempi: architecture CONCURRENT of MUL is A signal A, B, C, D: std_ulogic; signal Z: std_logic; begin Z <= A and B; Z <= C and D; end CONCURRENT; B C D? Z architecture SEQUENTIAL of MUL is signal A, B, C, D, Z: std_ulogic; begin process (A, B, C, D) begin Z <= A and B; Z <= C and D; end process; end CONCURRENT; C D Z 3/7/01 Cristina Silvano Università degli Studi di Milano 7 Dichiarazione di Oggetti Formato: object_class IDENTIFIER : type [:= INITIAL_VALUE]; Costanti: constant DELAY : time := 10 ns; constant MULTIPLIER : real := 5.25; Variabili: variable SUM : real; variable GROUND_VOLTAGE : integer := 0; Segnali: signal CLOCK : bit; signal RESET : std_ulogic := 0 ; Gli oggetti presenti nell istruzione port sono classificati di default come segnali. Se il valore iniziale non viene assegnato, si assume un valore corrispondente al valore minimo o left-most per quel tipo. 3/7/01 Cristina Silvano Università degli Studi di Milano 8

Tipi di Dati Ogni oggetto deve appartenere ad un tipo. Il tipo di dato identifica: un insieme di valori che un oggetto (costante, variabile o segnale) può assumere; un insieme di operazioni che possono essere eseguite sull oggetto stesso. Tipi di dati predefiniti - Esempi: bit, bit_vector, boolean, integer,.. Tipi di dati definiti dall utente - Esempio: type MY_STATE is (RESET, IDLE, READ, WRITE); signal STATE: MY_STATE; STATE <= RESET; STATE <= READ; 3/7/01 Cristina Silvano Università degli Studi di Milano 9 Tipi Predefiniti Certi tipi di dati scalari sono predefiniti e non richiedono un istruzione di dichiarazione di tipo. Esempi: boolean bit integer real character time severity_level 3/7/01 Cristina Silvano Università degli Studi di Milano 10

Tipi di Dati Scalar Numeric, Enumeration, Physical Composite Array, Record Access Insiemi di valori che puntano a variabili dinamiche. File Collezione di oggetti di dati esterni al modello. 3/7/01 Cristina Silvano Università degli Studi di Milano 11 Scalar Numeric type integer is range -214748348 to 214748347; type real is range -1.79769E308 to 1.79769E308; Enumeration type bit is ( 0, 1 ); type boolean is (false, true); Physical type time is range -9223372036854775808 to 9223372036854775807 UNITS fs; ps = 1000 fs ; ns = 1000 ps ; us = 1000 ns ; ms = 1000 us ; sec = 1000 ms ; min = 60 sec ; hr = 60 min ; end UNITS ; -- femtoseconds -- picoseconds -- nanoseconds -- microseconds -- milliseconds -- seconds -- minutes -- hours 3/7/01 Cristina Silvano Università degli Studi di Milano 12

Accesso a tipi comunemente usati La condivisione da parte di diverse entity di dichiarazioni di tipi e di operazioni tra tipi viene fatta attraverso dei costrutti noti come package. Tipi, procedure e funzioni comunemente usate sono poste in package standard come Std_Logic_1164 (IEEE standard). La dichiarazione library rende visibile ad un modello VHDL una libreria selezionata che contiene i package desiderati. La dichiarazione use rende un package visibile ad un modello. Esempio: library IEEE; use IEEE.Std_Logic_1164.all; 3/7/01 Cristina Silvano Università degli Studi di Milano 13 Std_Logic_1164 Il package Std_Logic_1164 è un package standard di IEEE che rappresenta un sistema basato su nove stati logici (MULTI VALUE LOGIC) e definisce i tipi std_logic (Resolved Type Uno o più driver pilotanti) e std_ulogic (Unresolved Type Solo un driver pilotante): type std_ulogic is ( U, X, 0, 1, Z, W, L, H, - ); -- Part of std_ulogic_1164 ---------------------- TYPE std_ulogic IS ( 'U', -- Uninitialized state - Used as default value 'X', -- Forcing Unknown - Bus Contention, error cond., etc. '0', -- Forcing 0 - Transistor driven to GND '1', -- Forcing 1 - Transistor driven to VCC 'Z', -- High Impedance - 3-state buffer outputs 'W', -- Weak Unknown - Bus terminators 'L', -- Weak 0 - Pull down resistors 'H', -- Weak 1 - Pull up resistors '-' -- Don't care ); 3/7/01 Cristina Silvano Università degli Studi di Milano 14

Std_Logic_1164 Il tipo std_logic è un tipo MULTI VALUE LOGIC che possiede RESOLUTION FUNCTION e può avere uno o più driver pilotanti. Possibile fare assegnamenti tra segnali di tipo std_logic e std_ulogic e viceversa. Esempi: signal A, B, Z : std_ulogic; signal RES_Z: std_logic; Z <= A; --OK RES_Z <= A; --OK A <= RES_Z; --OK RES_Z <= A; --OK RES_Z <=B; Z <= A; --NO Z <=B; 3/7/01 Cristina Silvano Università degli Studi di Milano 15 Std_Logic_1164 Esempio di utilizzo della libreria: library IEEE; use IEEE.Std_Logic_1164.all; entity MUX is port (A; B: in std_ulogic; Z: out std_ulogic); end MUX; 3/7/01 Cristina Silvano Università degli Studi di Milano 16

Concetto di vettore Bus Tipo bit e tipo bit_vector Esempio: signal Z_BUS: bit_vector(3 downto 0); signal A_BUS: bit_vector(1 to 4);... Z_BUS <= A_BUS; Equivale ad assegnamento bit per bit per posizione: Z_BUS(3) <= A_BUS(1); Z_BUS(2) <= A_BUS(2); Z_BUS(1) <= A_BUS(3); Z_BUS(0) <= A_BUS(4); Tipo std_logic e tipo std_logic_vector Tipo std_ulogic e tipo std_ulogic_vector 3/7/01 Cristina Silvano Università degli Studi di Milano 17 Concetto di vettore Bus Tipo bit e tipo bit_vector Esempio: signal Z_BUS: bit_vector(3 downto 0); signal A, B, C, D: bit;... CONCATENATION OPERATOR Z_BUS <= A & B & C & D; AGGREGATE OPERATOR Z_BUS <= (A, B, C, D); 3/7/01 Cristina Silvano Università degli Studi di Milano 18

Character e String Character: Singolo carattere Esempi: a 1 A Z 0 String: Stringa di caratteri Esempi: Hello 0011 3/7/01 Cristina Silvano Università degli Studi di Milano 19 Operatori Un tipo di oggetto identifica anche un insieme di operazioni che possono essere eseguite sull oggetto. Operatori predefiniti: Operatori aritmetici: +, -, *, /, **, abs, mod, rem Segno: +, - Operatori di scorrimento: rol, ror, sla, sll, sra, srl Operatori misti: & Operatori relazionali: =, /=, <, <=, >, >= Operatori logici: and, or, nand, nor, not, xor, xnor 3/7/01 Cristina Silvano Università degli Studi di Milano 20

Operatori Logici Operatori logici predefiniti per i tipi bit e boolean: and or nand nor xor xnor not - Operatore a maggiore priorità Esempio: Z < = A and not (B or C) -- necessaria la parentesi per -- alterare la precedenza degli -- operatori 3/7/01 Cristina Silvano Università degli Studi di Milano 21 Operatori Relazionali Operatori relazionali predefiniti per i tipi bit e boolean: < -- less than <= -- less than or equal to > -- greater than >= -- greater than or equal to = -- equal to /= -- not equal to Esempio: if (A = B) then statement; La condizione (A = B) ritorna un valore boolean 3/7/01 Cristina Silvano Università degli Studi di Milano 22

Operatori Aritmetici Operatori aritmetici predefiniti: + -- addition - -- subtraction * -- multiplication / -- division ** -- exponential abs -- absolute mod -- modulus rem -- remainder 3/7/01 Cristina Silvano Università degli Studi di Milano 23 Operatori Gli operatori standard non sono definiti per i tipi di dati definiti dall utente come i tipi enumerativi. La definizione di come gli operatori standard sono applicati ai tipi di dati definiti dall utente fa parte del package nel quale il tipo di dato viene dichiarato. Esempio: La modalità con la quale gli operatori logici sono applicati agli oggetti di tipo std_ulogic è definita nel package std_logic_1164 3/7/01 Cristina Silvano Università degli Studi di Milano 24

Codice Sorgente xor_gate_logic.vhd Un architettura che realizza una semplice funzione logica può essere descritta utilizzando operatori logici. ------------------------------------------------------------------------ -- xor gate ------------------------------------------------------------------------ library IEEE; use IEEE.Std_Logic_1164.all; entity XOR_GATE is port (A, B : in std_ulogic; C : out std_ulogic); end XOR_GATE; architecture LOGIC of XOR_GATE is begin C <= A xor B; end LOGIC; 3/7/01 Cristina Silvano Università degli Studi di Milano 25 Simulazione xor_gate_logic.vhd 3/7/01 Cristina Silvano Università degli Studi di Milano 26

Delay Il concetto di ritardo in un modello VHDL viene definito come il periodo di tempo che intercorre tra causa ed effetto. Delay: Inertial Transport Internal delay: Delta 3/7/01 Cristina Silvano Università degli Studi di Milano 27 Inertial Delay Modello senza ritardi: C <= A and B; Modelli con ritardo inerziale utilizzano l istruzione AFTER: Formato: NEW_SIGNAL <= SIGNAL_EXPR after TIME_PERIOD; Esempi: C <= A and B after 10 ns; D_OUT <= 1 after 10 ns, 0 after 20 ns, 1 after 30 ns, 0 after 40 ns; Q <= 1 after 10 ns when b = 1 else 0 after 5 ns; 3/7/01 Cristina Silvano Università degli Studi di Milano 28

Codice Sorgente xor_gate_logic_delayed.vhd --------------------------------------------------------------- -- xor gate -------------------------------------------------------------- library IEEE; use IEEE.Std_Logic_1164.all; entity XOR_GATE is port (A, B : in std_ulogic; C : out std_ulogic); end XOR_GATE; architecture LOGIC of XOR_GATE is begin C <= A xor B after 10 ns; end LOGIC; 3/7/01 Cristina Silvano Università degli Studi di Milano 29 Simulazione xor_gate_logic_delayed.vhd 3/7/01 Cristina Silvano Università degli Studi di Milano 30

Durata dei Segnali I segnali la cui durata è inferiore del ritardo specificato nell istruzione after sono ignorati Esempio: A <= B after 50 ns; Stimoli: force B 0 0 force B 1 50 force B 0 100 force B 1 150 force B 0 175 run 250 Risultato: L impulso di durata 25 ns imposto al segnale b a 150 ns non viene trasmesso al segnale a. 3/7/01 Cristina Silvano Università degli Studi di Milano 31 Codice Sorgente ab_gate.vhd -------------------------------------------------------------- -- ab gate -------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity AB is port (B : in std_ulogic; A: out std_ulogic); end AB; architecture LOGIC of AB is begin A <= B after 50 ns; end LOGIC; 3/7/01 Cristina Silvano Università degli Studi di Milano 32

3/7/01 Cristina Silvano Università degli Studi di Milano 33 Opzione Transport L opzione transport permette di trasmettere la forma d onda presente su un segnale ad un altro segnale senza filtri. Esempio: A <= transport B after 50 ns; Stimoli: force B 0 0 force B 1 50 force B 0 100 force B 1 150 force B 0 175 run 250 Risultato: L impulso di durata 25 ns imposto al segnale b a 150 ns viene trasmesso al segnale a. 3/7/01 Cristina Silvano Università degli Studi di Milano 34

Codice Sorgente ab_gate_transport.vhd ------------------------------------------------------- -- ab gate_transport ------------------------------------------------------- library IEEE; use IEEE.Std_Logic_1164.all; entity AB is port (B : in std_ulogic; A: out std_ulogic); end AB; architecture LOGIC of AB is begin A <= transport B after 50 ns; end LOGIC; 3/7/01 Cristina Silvano Università degli Studi di Milano 35 3/7/01 Cristina Silvano Università degli Studi di Milano 36