Descrizione VHDL di componenti combinatori



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

CORSO DI CALCOLATORI ELETTRONICI I CdL Ingegneria Biomedica (A-I)

ENCODER. Fig. 1. attivi C B A. APPUNTI DI ELETTRONICA ENCODER DECODER rel. 01/06 Prof. Domenico Di Stefano pag. 19

Reti Logiche A Appello del 24 febbraio 2010

Introduzione al VHDL Lezione 1

Comparatori. Comparatori di uguaglianza

Laboratorio di Architettura degli Elaboratori A.A. 2015/16 Circuiti Logici

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

Introduzione al VHDL. Alcuni concetti introduttivi

Macchine combinatorie

Macchine combinatorie: encoder/decoder e multiplexer/demultiplexer

INFORMATICA 1 L. Mezzalira

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

Corso di Circuiti Logici Appunti e Approfondimenti A. Di Stefano

Laboratorio di Architettura degli Elaboratori - A.A. 2012/13

Note su VHDL. 22 gennaio 2004

Lezione 2 Circuiti logici. Mauro Piccolo piccolo@di.unito.it

Reti Logiche A. FSM in VHDL

FONDAMENTI di INFORMATICA L. Mezzalira

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

MPHS AA FSM in VHDL

Operazioni binarie fondamentali

Reti Logiche A. Introduzione al VHDL

Parte 1. Vettori di bit - AA. 2012/13 1.1

ESERCITAZIONI PRATICHE: Ø Creazione di un decoder BCD/DEC con porte logiche. Ø Esercitazione con decoder 4511 e display 7 segmenti.

Informazione analogica e digitale

Logica binaria. Porte logiche.

LABORATORIO DI ARCHITETTURA DEI CALCOLATORI lezione n 2.

Sintesi Combinatoria Uso di componenti diversi dagli operatori elementari. Mariagiovanna Sami Corso di reti Logiche 8 Anno

CONTATORI ASINCRONI. Fig. 1

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

Reti sequenziali sincrone

Rappresentazione delle informazioni

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Esercitazione 1 (Capitolo 2) Reti Logiche

x y z F x y z F F = x z + y z + yz + xyz G = wyz + vw z + vwy + vwz + v w y z Sommario

Definizioni iniziali

Introduzione al VHDL Lezione 3

Seconda esercitazione

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 10 Settembre 2013

Macchine a Stati finiti

Linguaggio del calcolatore. Algebra di Boole AND, OR, NOT. Notazione. And e or. Circuiti e reti combinatorie. Appendice A + dispense

Conversione tra le basi binarie

LABORATORIO DI SISTEMI

Codifica binaria dei numeri relativi

Un linguaggio per la descrizione dello hardware: il VHDL

Un linguaggio per la descrizione dello hardware: il VHDL

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

Visual Basic.NET La Gestione degli Errori di Federico BARBATI

la scienza della rappresentazione e della elaborazione dell informazione

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Algebra Booleana 1 ALGEBRA BOOLEANA: VARIABILI E FUNZIONI LOGICHE

Cap. 3 Reti combinatorie: analisi e sintesi operatori logici e porte logiche

Memorie ROM (Read Only Memory)

Università degli Studi di Milano

INFORMATICA. Automa TRATTAMENTO AUTOMATICO DELLE INFORMAZIONI

Riassunto tecnica digitale

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

I.I.S. Primo Levi Badia Polesine A.S

2. Codifica dell informazione

Le Mappe di Karnaugh.

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Architettura dei Calcolatori Parte Operativa e Parte Controllo

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

Introduzione alla programmazione in C

1 Carattere 1 2 Carattere 2 4 Carattere 4 X Carattere diverso da 1, 2, 4. Porta chiusa Porta aperta

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;

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.

Architettura (10/9/2003) Pag. 1/6. Cognome e Nome (in stampatello):

Elementi di Informatica e Programmazione

Università degli Studi di Milano

Università degli Studi di Milano

Ciclo di Istruzione. Ciclo di Istruzione. Controllo. Ciclo di Istruzione (diagramma di flusso) Lezione 5 e 6

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Misure di frequenza e di tempo

ELETTRONICA Tema di Sistemi elettronici automatici Soluzione

ZIMO. Decoder per accessori MX81. Manuale istruzioni del. nella variante MX81/N per il formato dei dati NMRA-DCC

Manuale Utente. Data : 01/02/2011 Versione : 1.0

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

Elementi di informatica

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

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

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

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

Sistemi di Numerazione

Sistemi di Numerazione

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Algebra Booleana ed Espressioni Booleane

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Aritmetica dei Calcolatori 1

SISTEMI DI NUMERAZIONE E CODICI

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Macchine combinatorie: progettazione. Macchine combinatorie

Codifica binaria dei numeri

Esami di Stato Soluzione della seconda prova scritta. Indirizzo: Elettronica e Telecomunicazioni Tema di ELETTRONICA

Codifica binaria e algebra di Boole

Logica combinatoria. La logica digitale

Classe III specializzazione elettronica. Elettrotecnica e elettronica

DAL DIAGRAMMA AL CODICE

Transcript:

Descrizione VHDL di componenti combinatori 5 giugno 2003 1 Decoder Il decoder è un componente dotato di N ingressi e 2 N uscite. Le uscite sono poste tutte a 0 tranne quella corrispondente al numero binario in ingresso, la quale viene posta ad 1. Decoder 2-4 0 N Decoder 2 N 1 2 3 (a) (b) Figura 1: Rappresentazione schematica di un decoder: (a) a N ingressi; (b) a due ingressi e quattro uscite. d esempio, per N = 2, il funzionamento del decoder è rappresentato dalla seguente tabella di verità: 0 1 2 3 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 La descrizione VHDL di tale componente è la seguente: entity DE24 is port (, : in bit; : out bit_vector (0 to 3)); end DE24; 1

La descrizione del funzionamento del decoder può essere espressa dal seguente codice: -- modello comportamentale -- architecture R1 of DE24 is P1: process (, ) if (= 0 and = 0 ) then <= "1000"; elsif (= 0 and = 1 ) then <= "0100"; elsif (= 1 and = 0 ) then <= "0010"; elsif (= 1 and = 1 ) then <= "0001"; end if; end process P1; end R1; lternativamente, per evidenziare la mutua esclusività delle configurazioni dei segnali di ingresso, è possibile utilizzare il seguente codice: -- modello comportamentale -- architecture R2 of DE24 is P2: process (, ) case ( & ) is when "00" => <= "1000"; when "01" => <= "0100"; when "10" => <= "0010"; when "11" => <= "0001"; end case; end process P2; end R2; Il corrispondente modello dataflow è il seguente: architecture DT_FLOW1 of DE24 is <= "1000" when (= 0 and = 0 ) else "0100" when (= 0 and = 1 ) else "0010" when (= 1 and = 0 ) else "0001"; end DT_FLOW1; Oppure: architecture DT_FLOW2 of DE24 is 2

with & select <= "1000" when "00", -- 0 "0100" when "01", -- 1 "0010" when "10", -- 2 "0001" when "11"; -- 3 end DT_FLOW2; INV INV ND2 (0) ND2 (1) ND2 (2) ND2 (3) Figura 2: Rappresentazione circuitale del decoder a due vie In alternativa, considerando lo schema in figura 2 (derivato tramite le note tecniche di sintesi dei circuiti combinatori) il decoder può essere descritto tramite la seguente architettura dataflow: architecture DT_FLOW3 of DE24 is (0) <= (not and not ); (1) <= (not and ); (2) <= ( and not ); (3) <= ( and ); end DT_FLOW3; Inoltre, considerando le porte logiche come componenti, è possibile dare la seguente descrizione strutturale del decoder in esame: -- modello strutturale -- architecture STRUT of DE24 is component INV port (: in bit; 3

: out bit); component ND2 port (, : in bit; : out bit); signal NOT_, NOT_: bit; u1: INV port map (, NOT_); u2: INV port map (, NOT_); u3: ND2 port map (NOT_, NOT_, (0)); u4: ND2 port map (NOT_,, (1)); u5: ND2 port map (, NOT_, (2)); u6: ND2 port map (,, (3)); end STRUT; Va sottolineato il fatto che il precedente modello è da intendersi come un esempio di utilizzo dei costrutti sintattici per la descrizione strutturale dei componenti. Le porte logiche sono infatti descrivibili (più efficentemente e con maggiore leggibilità) mediante gli operatori logici, come mostrato nell architecture DT_FLOW2 precedentemente riportata. 1.1 Decoder D 7 segmenti Il concetto di decoder può essere generalizzato, ricordando che la codifica è sempre una scelta arbitraria. La codifica D (inary oded Decimal) viene utilizzata per codificare i simboli 0, 1,..., 9, cioè le cifre utilizzate nella notazione posizionale decimale per la rappresentazione dei numeri. Dato che vi sono dieci simboli da codificare, la codifica D consta di dieci diverse configurazioni di una stringa di 4 bit: numero codifica D 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 I display a sette segmenti sono comunemente utilizzati per la visualizzazione di valori numerici (vedi fig. 3). 4

a b d c e g f Figura 3: Display a sette segmenti Un decoder D - 7 segmenti è un componente che riceve in ingresso un segnale codificato in D e invia in uscita un segnale in grado di attivare la corrispondente configurazione di led. Indicando ognuno dei sette led con un segnale differente, i led possono essere accesi e spenti portando sulla linea corrispondente i valori 1 e 0, rispettivamente. Per esempio, al segnale in ingresso 0010 ( 2 codificato in D) viene fatto corrispondere il segnale in uscita 1011101 (accesi i led {a, c, d, e, g}, spenti gli altri). La tabella di verità del decoder D - 7 segmenti è quindi la seguente: codice D led accesi X 0 X 1 X 2 X 3 a b c d e f g 0 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 La descrizione VHDL di tale componente (dove i segnali a,..., g sono stati rinominati (0),..., (6)) è la seguente: entity DE_D_7 is port (X: in bit_vector(0 to 3); : out bit_vector (0 to 6)); end DE_D_7; La descrizione del funzionamento del decoder può essere espressa dal seguente codice: architecture DTFLOW of DE_D_7 is 5

with X select -- abcdefg D <= "1110111" when "0000", -- 0 "0010010" when "0001", -- 1 "1011001" when "0010", -- 2 "1011011" when "0011", -- 3 "0111010" when "0100", -- 4 "1101011" when "0101", -- 5 "1101111" when "0110", -- 6 "1010010" when "0111", -- 7 "1111111" when "1000", -- 8 "1111011" when "1001", -- 9 "1101101" when others; -- Errore end DTFLOW; Da notare che è stata inserita la clausola when others per visualizzare un messaggio di errore in caso si presenti in ingresso una configurazione che non corrisponde ad alcun elemento della codifica D. 2 Multiplexer Un multiplexer è un componente dotato di due tipi di linee di ingresso (dati e selezione) e da una linea di uscita. Esso pone sulla linea di uscita il valore di una delle sue linee dati in ingresso. Quest ultima viene scelta tramite una opportuna combinazione dei valori delle linee di selezione. Se il multiplexer ha N linee dati, necessita quindi di almeno log 2 N linee di selezione. Il multiplexer più semplice è il multiplexer a due vie, dotato di due linee dati e una linea di selezione (fig 4). MUX2 SEL Figura 4: Multiplexer a due vie La sua tabella di verità è la seguente: 6

SEL 0 0 0 0 1 1 1 0 0 1 1 1 La descrizione dell entità VHDL corrispondente è: entity MUX2 is port (,, SEL: in bit; : out bit); end MUX2; La descrizione del comportamento di questo componente può essere espressa tramite il seguente frammento di codice: -- modello comportamentale -- architecture R1 of MUX2 is P1: process (,, SEL) if (SEL = 0 ) then <= ; else <= ; end if; end process P1; end R1; Il corrispondente modello dataflow è il seguente: architecture DT_FLOW1 of MUX2 is <= when (SEL = 0 ) else ; end DT_FLOW1; Tramite le note tecniche di sintesi di circuiti combinatori, si può verificare che il multiplexer a due vie è equivalente allo schema rappresentato in fig. 5. architecture DT_FLOW2 of MUX2 is <= ( and not SEL) or ( and SEL); end DT_FLOW2; on le stesse considerazioni esposte nel caso del decoder, lo schema circuitale in fig. 5 può essere descritto dalla seguente architettura VHDL: -- modello strutturale -- architecture STRUT of MUX2 is 7

SEL INV SEL INV ND2 ND2 1 2 OR2 Figura 5: Schema circuitale del multiplexer a due vie. component INV port (: in bit; : out bit); component ND2 port (, : in bit; : out bit); component OR2 port (, : in bit; : out bit); signal NOT_SEL, 1, 2: bit; u1: INV port map (SEL, NOT_SEL); u2: ND2 port map (, NOT_SEL, 1); u3: ND2 port map (, SEL, 2); u4: OR2 port map (1, 2, ); end STRUT; 2.1 Multiplexer a 4 vie Il funzionamento del multiplexer a due vie può essere facilmente esteso ad un numero maggiore di linee dati. In fig. 6 è riportato un multiplexer a quattro vie. Il funzionamento di tale componente è riportato nella seguente tabella: 8

SEL0 SEL1 D 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 MUX4 D SEL1 SEL0 Figura 6: Multiplexer a quattro vie La descrizione dell entità VHDL corrispondente è: entity MUX4 is port (,,, D, SEL0, SEL1: in bit; : out bit); end MUX4; La descrizione del comportamento di questo componente può essere espressa tramite il seguente frammento di codice VHDL: -- modello comportamentale -- architecture R1 of MUX4 is P1: process (,,, D, SEL0, SEL1) if (SEL0 = 0 and SEL1 = 0 ) then <= ; elsif (SEL0 = 0 and SEL1 = 1 ) then <= ; elsif (SEL0 = 1 and SEL1 = 0 ) then <= ; elsif (SEL0 = 1 and SEL1 = 1 ) then 9

<= D; end if; end process P1; end R1; Lo stesso comportamento può essere descritto in maniera più appropriata usando il costrutto case-when e l operatore di aggregazione &: -- modello comportamentale -- architecture R2 of MUX4 is P2: process (,,, D, SEL0, SEL1) case (SEL0 & SEL1) is when "00" => <= ; when "01" => <= ; when "10" => <= ; when "11" => <= D; end case; end process P2; end R2; Il seguente codice descrive il modello dataflow di un multiplexer a quattro vie: architecture DT_FLOW1 of MUX4 is <= when (SEL0 = 0 and SEL1 = 0 ) else when (SEL0 = 0 and SEL1 = 1 ) else when (SEL0 = 1 and SEL1 = 0 ) else D; end DT_FLOW1; Sfruttando le tecniche di sintesi di circuiti combinatori, si può ottenere il circuito in fig. 7, descritto dal seguente modello dataflow: architecture DT_FLOW2 of MUX4 is <= ( and not SEL0 and not SEL1)or ( and not SEL0 and SEL1) or ( and SEL0 and not SEL1) or (D and SEL0 and SEL1) ; end DT_FLOW2; Per puro esercizio, lo schema in fig. 7 può essere descritto utilizzando il un modello VHDL strutturale: 10

ND3 SEL0 SEL1 INV NOT SEL0 INV NOT SEL1 1 ND3 ND3 2 3 D OR4 ND3 D 4 Figura 7: Schema circuitale del multiplexer a quattro vie. 11

-- modello strutturale -- architecture STRUT1 of MUX4 is component INV port (: in bit; : out bit); component ND3 port (,, : in bit; : out bit); component OR4 port (,,, D: in bit; : out bit); signal NOT_SEL0, NOT_SEL1, 1, 2, 3, 4: bit; u1: INV port map (SEL0, NOT_SEL0); u2: INV port map (SEL1, NOT_SEL1); u3: ND3 port map (, NOT_SEL0, NOT_SEL1, 1); u4: ND3 port map (, NOT_SEL0, SEL1, 2); u5: ND3 port map (, SEL0, NOT_SEL1, 3); u6: ND3 port map (D, SEL0, SEL1, 4); u7: OR4 port map (1, 2, 3, 4, ); end STRUT1; La fig. 8 illustra come si possano comporre tre multiplexer a due vie per ottenere un multiplexer a quattro vie. Due multiplexer, entrambi pilotati dalla prima linea di selezione, lasciano passare solo due dei segnali dati, i quali vanno in ingresso al terzo multiplexer. Quest ultimo è pilotato dalla seconda linea di selezione, la quale stabilisce quale dei due segnali dovrà essere portato in uscita. Il codice VHDL che descrive questo circuito può giovarsi della descrizione strutturale: -- modello strutturale -- architecture STRUT2 of MUX4 is component MUX2 port (,, SEL: in bit; : out bit); signal 1, 2: bit ; u1: MUX2 port map (,, SEL1, 1); u2: MUX2 port map (, D, SEL1, 2); u3: MUX2 port map (1, 2, SEL0, ); end STRUT2; 12

MUX2 SEL0 D SEL MUX2 SEL 1 2 MUX2 SEL SEL1 Figura 8: MUX4 costruito assemblando tre MUX2 13