dal sito:

31
1 Dal sito: www-lia.deis.unibo.it/materiale/ retilogiche Scaricate i 6 file (dec2 , mux2, mux4 con varie estensioni). È importante che i file siano nella stessa cartella e che non vengano rinominati!

Upload: meris

Post on 18-Mar-2016

41 views

Category:

Documents


0 download

DESCRIPTION

Dal sito: www-lia.deis.unibo.it/materiale/retilogiche Scaricate i 6 file (dec2 , mux2, mux4 con varie estensioni). È importante che i file siano nella stessa cartella e che non vengano rinominati!. Display a 7 segmenti. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Dal sito:

1

Dal sito:

www-lia.deis.unibo.it/materiale/retilogiche

Scaricate i 6 file (dec2 , mux2, mux4 con varie estensioni).

È importante che i file siano nella stessa cartella e che non vengano rinominati!

Page 2: Dal sito:

2

Display a 7 segmentiIl display a 7 segmenti è un dispositivo composto da 7 diodi luminosi LED (Light-Emitting Diode) sagomati a forma di rettangolo o meglio a forma di “segmento” appunto. Dunque mediante una opportuna combinazione di LED accesi e LED spenti è possibile visualizzare su un singolo display un singolo carattere.

Per convenzione i segmenti del display vengono identificati con le lettere da A a G.

Questo è la rappresentazione circuitale del display: ognuno dei 7 led ha due connessioni una è a potenziale costante nullo (è collegato a massa)

e l’altra è collegata al segnale che comanda l’accensione. Quindi nello schema a destra, CC è collegato a massa e i segnali da A a G sono i segnali di controllo. Quando un segnale di controllo vale ‘1’ il corrispondente LED (quindi il segmento) si accende.

Page 3: Dal sito:

3

Display a 7 segmenti

Supponiamo ora di voler visualizzare, su un display a 7 segmenti, una cifra BCD, definita dai 4 segnali X[3..0] Il problema da risolvere è dunque transcodificare, cioè “tradurre” il codice BCD nel codice a 7 segmenti.Gli ingressi del transcodificatore sono i 4 segnali X[3..0]Le uscite del transcodificatore sono i 7 segmenti a,b,c,d,e,f,gSi considerano lecite solo le 10 configurazioni di ingresso associate alle cifre BCD.

?BCDX[3..0]

7 segmentiabcdefg

Page 4: Dal sito:

4

Transcodificatore BCD 7 segmentiIl primo passo per creare la logica di transcodifica è avere una tabella che descrive il funzionamento del transcodificatore.

Dec X3 X2 X1 X0 abcdefg0 0 0 0 0 11111101 0 0 0 1 01100002 0 0 1 0 11011013 0 0 1 1 11110014 0 1 0 0 01100115 0 1 0 1 10110116 0 1 1 0 10111117 0 1 1 1 11100008 1 0 0 0 11111119 1 0 0 1 1111011

Page 5: Dal sito:

5

Transcodificatore BCD 7 segmentiPrendiamo in considerazione il segnale abcdefg cioè il segnale con codifica 7 segmenti: proviamo a scomporre il problema in 7 sotto-problemi, quindi dobbiamo creare 7 reti per gestire altrettanti segmenti!

A questo punto l’ingresso è sempre X, però l’uscita è ad un solo bit, quindi il problema è più semplice…

Se prendiamo come esempio il segmento a, questa è la rete che dobbiamo progettare

BCD ->

1 segmento

BCDX[3..0]

a

Abbiamo tanti ingressi e una sola uscita… un MUX può esserci utile…Possiamo cioè provare a fare la sintesi con un mux a 16 vie. In realtà, visto che ci sono solo dieci configurazioni di ingresso possibili, solo 10 ingressi dovranno essere fissati a un valore ben preciso.Non ha importanza a quale valore logico verranno fissati gli altri 6 ingressi “inutili”, ma un valore dovrà essere scelto perché nessun ingresso di una RL può essere lasciato non connesso.

Page 6: Dal sito:

6

AstrazioneArrivati a questo punto è necessario richiamare il concetto di astrazione e applicarlo al nostro progetto!

Transcodificatore

MUX e DEC

Gate elementari

Top-DownIn fase di progetto

Bottom-UpPer la realizzazione in Quartus II

Transistor

Livelli di Astrazione

In Quartus II è possibile applicare il concetto di astrazione al progetto grazie alla creazione dei componenti di libreria (file .bsf)

Page 7: Dal sito:

7

Transcodificatore BCD 7 segmenti

a

L’uscita del MUX è ‘a’.‘a’ varia al variare di X, cioè è X che controlla la rete logica. Quindi possiamo collegare X all’ingresso di selezione del MUX e poi colleghiamo gli ingressi del MUX a dei valori costanti 0 e 1 a seconda dei valori della tabella che descrive il transcodificatore. X è a 4 bit allora gli ingressi del MUX saranno 2^4 cioè 16, quindi ci serve un MUX a 16 vie.

X3 X2 X1 X0

0000000100100011010001010110011110001001101010111100110111101111

Dec X3 X2 X1 X0 a

0 0 0 0 0 1

1 0 0 0 1 0

2 0 0 1 0 1

3 0 0 1 1 1

4 0 1 0 0 05 0 1 0 1 1

6 0 1 1 0 1

7 0 1 1 1 1

8 1 0 0 0 1

9 1 0 0 1 1

1011011111

NonpossonoEssere lasciati non connessi

Page 8: Dal sito:

8

Applicazione grafica del teorema di espansione partendo da un MUX a sedici vie con le vie ancorate a costanti

Un MUX a 16 vie, con le vie ancorate a costanti è una funzione di 4 variabili

Volendo utilizzare il MUX a 4 vie che abbiamo già simulato, invece di quello a 16, applichiamo il teorema di espansione due volte; vedremo un vantaggio indotto dal fatto che nella nostra applicazione ci sono 6 configurazioni di ingresso impossibili che rendono “inutili” 6 vie del MUX

Il teorema segnala che un singolo blocco a molti ingressi (molto complesso) può essere realizzato con più blocchi con meno ingressi (meno complessi).

Infatti il teorema dice che una rete logica (RL) con n ingressi (cioè n variabili di ingresso) può essere realizzata con due RL con n-1 ingressi più un MUX a due vie.

Applicando ripetutamente il teorema di espansione, si arriva alla soluzione proposta dal prossimo lucido.

Esercizio: si manipoli l’espressione generale di una funzione di due variabili in modo da concludere che un mux a 4 vie è equivalente a tre mux a due vie disposti “ad albero” (albero di Multiplexer)

Page 9: Dal sito:

9

16 1

Applicazione ripetuta del teorema di espansione

4

2

2

2

2 2

1

3

1

3

1

1

Effetto della prima applicazione

Effetto della seconda applicazione

Page 10: Dal sito:

10

Semplificazione del circuito

X3 X2

X0

X1 X0

1011

0111

11

a

Dec X3 X2 X1 X0 a

0 0 0 0 0 1

1 0 0 0 1 0

2 0 0 1 0 1

3 0 0 1 1 1

4 0 1 0 0 05 0 1 0 1 1

6 0 1 1 0 1

7 0 1 1 1 1

8 1 0 0 0 1

9 1 0 0 1 1

L’ultimo MUX a 4 vie non serve poiché X3 X2 non è mai ‘11’. Inoltre il 3° MUX è sufficiente a 2 vie visto che quando X3 X2=10, X1 è fisso a ‘0’ e varia solo X0

11

10

01

00

Page 11: Dal sito:

11

X0

X1 X0

1011

0111

11

Semplificazione del circuito

3210

X2X3Output Enable

a

Questo circuito potrebbe essere ulteriormente semplificato sostituendo il mux a due vie con la var X0 ma questa semplificazione renderebbe la rete del segmento “a” diversa da quella degli altri segmenti

Page 12: Dal sito:

12

Se osserviamo bene il circuito del transcoder ci accorgiamo di non aver inventato nulla di nuovo. In realtà non c’è nemmeno bisogno di creare tale circuito con MUX e decoder in quanto esiste già in commercio un circuito molto simile: tale circuito è una memoria ROM (Read Only Memory).

Infatti potremmo realizzare il transcodificatore semplicemente collegando X[3..0] all’ingresso degli indirizzi di una ROM e l’uscita della ROM direttamente al display a 7 segmenti. Poi dobbiamo memorizzare nella ROM i valori di uscita della tabella che descrive il transcoder, in pratica in memoria dobbiamo inserire i valori che nel circuito di prima sono in ingresso ai MUX.

Transcoder con ROM

Page 13: Dal sito:

13

Addresses

Out

X[3..0]

ROM 10x7 (non esiste)Utilizzo della ROM

Servirebbe una ROM con 10 celle di memoria (quindi 10 indirizzi descritti da 4 bit di indirizzo) ognuna da 7 bit ma chiaramente non esiste!

La ROM che più si adatta alle nostre esigenze è una ROM con celle di memoria da 8 bit (1byte). Per quanto riguarda gli indirizzi, oggi non si trovano memorie con meno di 1K (2^10) indirizzi cioè 10 bit di indirizzo.

Gli ingressi non utilizzati sono a valore logico 0 mentre le uscite non utilizzate sono semplicemente non connesse.

X[3..0]

0

ADDRESS0

ADDRESS9 Non connesso

abcdefg

OUT0

OUT7

(EEP/EP/P) ROM 1024x8

1111110

abcdefg

00000001

10001001

abcdefg

RD 1

RD/WR*

Page 14: Dal sito:

14

Accedere alla finestra Customize dal menu Tools, quindi selezionare MAX+PLUS II nel tab General.

Impostazioni iniziali per QuartusPer le esercitazioni utilizzeremo Quartus II con l’interfaccia di MAX+PLUS II. All’avvio, nel campo Look, scegliete MAX+PLUS II, oppure una volta avviato Quartus II seguite il seguente procedimento:

Page 15: Dal sito:

15

Poi nel tab Toolbars scegliere Standard MAX+PLUS II. Lasciare il resto a default.

Impostazioni iniziali per Quartus

Page 16: Dal sito:

16

Creazione del transcodificatore con Quartus II

I file .bdf e .bsf che avete scaricato non contengono nessuna descrizione logica del transcodificatore, bensì tutti i componenti di libreria necessari per realizzarlo cioè: MUX a 4 vie, MUX a 2 vie e decoder a 2 bit. Entrambi i MUX sono con uscita tristate.

Ora è necessario creare le rete del transcodificatore con il graphic editor di Quartus II.

Page 17: Dal sito:

17

Per creare un nuovo progetto andare in File -> New Project Wizard

Nel primo campo indicare la directory in cui verranno salvati i file del progetto (conviene creare una cartella contenente una cartella diversa per ogni progetto!).

Nel secondo campo indicare il nome del progetto. Il terzo campo verrà riempito automaticamente con lo stesso nome del progetto. Cliccare Finish

Creare un nuovo progetto

Page 18: Dal sito:

18

Creazione dello schema logico

Dal menu MAX+PLUS II aprire il Graphic Editor. Utilizzando semplicemente il Symbol Tool e il Node Tool è possibile disegnare un circuito.

Symbol Tool Apre la libreria per selezionare i componenti da aggiungere

Text Tool Permette di scrivere del testo

Node Tool Disegna i “fili” di collegamento tra i componenti

Zoom

Specchia il componente

Ruota il componente

Page 19: Dal sito:

19

Aggiunta dei file al progetto

Prima di analizzare il nostro file .bdf dobbiamo specificare a Quartus quali sono i file che compongono il nostro progetto: oltre al file appena creato dal graphic editor, fanno parte del progetto anche i file .bdf che descrivono i circuiti di libreria.

Prima di tutto salvate il file corrente del graphic editor.

Quindi dal menu Project cliccate su Add/Remove Files In Project e selezionate tutti e 3 i file .bdf che avete scaricato e cliccate su Add.

Ora si può lavorare sul file .bdf del progetto inserendo i componenti di libreria.

Page 20: Dal sito:

20

Creazione dello schema logico

La libreria interna di Quartus contiene molti componenti, sia elementari (AND, OR, ecc…) sia più complessi, sufficienti a creare tutti gli schemi che verranno utilizzati durante le esercitazioni.

Per prima cosa vanno piazzati i componenti utilizzando il Symbol Tool. Premendo il relativo pulsante si aprirà una finestra nella quale si può scegliere un componente per volta navigando tra le varie categorie (i gate elementari sono in Primitives -> Logic).

Per aprire un componente creato dall’utente selezionare la cartella in cui è salvato il file .bsf.

Una volta piazzati sull’area di lavoro, i componenti si possono spostare, ruotare, specchiare e rinominare.

Page 21: Dal sito:

21

Creazione dello schema logico

A questo punto bisogna effettuare le connessioni con Orthogonal Node Tool prestando molta attenzione ai collegamenti con gli ingressi/uscite dei componenti. Nell’esempio possiamo vedere che il collegamento a destra è stato effettuato correttamente mentre il collegamento a sinistra è errato. Infatti anche se graficamente il “filo” è a contatto con l’ingresso dell’AND, il collegamento reale non c’è!!!

Il Graphic Editor evidenzia con una X le terminazioni dei fili volanti

Collegamento sbagliato Collegamento

corretto

Page 22: Dal sito:

22

Creazione dello schema logicoFinito di creare il circuito logico bisogna specificare quali sono i nodi di ingresso e di uscita. Quartus è in grado di riconoscere in automatico solo alcuni nodi di input e output cioè solo quelli non connessi a niente! Nell’esempio riconosce l’uscita dell’OR come output e solo gli ingressi non connessi degli AND come input, mentre non è in grado di riconoscere i due ingressi centrali degli AND in quanto sono connessi tra loro!

Per l’assegnazione in automatico bisogna selezionare tutto le schema (o un gate per volta), cliccare con il tasto destro e selezionare l’opzione Generate Pins for Symbol Ports

Page 23: Dal sito:

23

Creazione dello schema logico

IN1, IN2 e OUT sono stati aggiunti con il procedimento descritto prima, mentre Input_Symbol_Tool è stato aggiunto con Symbol Tool (Primitives -> Pin) come fosse un normale componente ed è stato collegato al circuito

Page 24: Dal sito:

24

Editor Grafico

GenerazioneNetlist

Analisi ed Elaborazione

Simulazione

Forme d’onda

Riassumendo…

Simbolo del componente (bsf)

Descrizione logica (bdf)

Page 25: Dal sito:

25

Ora il circuito è finito ed è pronto per l’analisi (non la simulazione!).

Il processo testa il circuito, verifica cioè che le connessioni siano corrette, che gli ingressi e le uscite siano nella giusta direzione, ecc… Al termine se l’esito è Not Successful in basso verranno indicati Errors e Warnings: leggeteli attentamente per capire dov’è l’errore! Se l’esito invece è positivo potrete generare la netlist del circuito.

Analisi ed Elaborazione

Page 26: Dal sito:

26

La netlist è un file che contiene la lista di tutte le connessioni del circuito, quindi è questo il file che descrive realmente il circuito!

Se il processo di Analysis & Elaboration ha avuto esito negativo o non è stato eseguito non è possibile creare la Netlist! La generazione della Netlist si può effettuare solo dopo un Analysis & Elaboration andata a buon fine.

Inoltre se l’analisi precedente ha avuto esito positivo ma con alcuni Warnings allora la generazione della Netlist potrebbe non andare a buon fine, in tal caso è necessario risolvere i Warnings e ripetere la generazione della Netlist.

La Netlist va rigenerata ogni volta che si modifica il circuito, dopo il processo di Analysis & Elaboration.

Netlist

Page 27: Dal sito:

27

Editor Grafico

GenerazioneNetlist

Analisi ed Elaborazione

Simulazione

Forme d’onda

1) Processing -> Start -> Start Analysis & Elaboration

2) Processing -> Generate Functional Simulation Netlist

Riassumendo…

Librerie .bsf

Page 28: Dal sito:

28

Vector Waveform File (.vwf )

Per assegnare gli ingressi di un circuito è necessario creare un file .vwf . Per fare ciò cliccare su File -> New e selezionare Vector Waveform File

Quindi doppio click sulla tabella vuota a sinistra -> Node Finder…

Lasciate tutto a default, assicurandovi che nel campo Filter sia selezionata l’opzione Pins: all , ora cliccate su List: vi compariranno in automatico tutti gli ingressi e le uscite del vostro circuito.

DoppioClick qui

Page 29: Dal sito:

29

Vector Waveform File (.vwf )Selezionate i segnali che vi interessano (generalmente tutti!) e questi vi compariranno nella schermata principale.

Una funzionalità molto comoda di Quartus II è quella di raggruppare i singoli segnali (a singolo bit) che compongono un segnale a più bit, in un segnale unico. Ad esempio i segnali X3 X2 X1 X0 vengono visti da Quartus come 4 segnali diversi, in realtà tutti formano l’unico segnale X. Nel file delle forme d’onda basta selezionare i segnali che vogliamo raggruppare e con il tasto destro selezionare Grouping… -> Group e dare un nome al nuovo segnale. Poi dalle proprietà del segnale (sempre con il tasto destro) si può decidere come visualizzare il valore del segnale (binary, signed decimal, unsigned decimal…).

Risultato del raggruppamento dei segnali X3 X2 X1 X0 nel segnale X visualizzato in unsigned decimal.

I segnali vanno ordinati cliccando con il destro su X e selezionando un’opzione da Group Order (fate una prova per verificare l’ordine corretto). Ora è sufficiente variare il valore di X per dare un valore a X[3..0].

Page 30: Dal sito:

30

Simulazione del circuito

Ora è necessario impostare l’End Time della simulazione dal menu Edit e dopo, coerentemente, la Grid Size… (non ha senso impostare End Time= 1s e Grid Size= 1us : avrete la griglia divisa in 1milione di parti!).

Per modificare un segnale, selezionate la parte del segnale che vi interessa e con i comandi sulla sinistra (o con il tasto destro del mouse -> Value) assegnategli un valore. Ora potete finalmente simulare il vostro circuito dal menu Processing -> Start Simulation

Page 31: Dal sito:

31

Astrazione in Quartus IIPer utilizzare il concetto di astrazione in Quartus II dobbiamo creare dei componenti di libreria (file .bsf) e quindi disegnare una nuova rete logica utilizzando componenti di libreria sempre più complessi (Bottom-Up) fino a che non arriveremo al nostro circuito finale senza vedere più gate elementari.

Durante la prima esercitazione abbiamo già fatto un passaggio dal livello più basso livello di astrazione al successivo, infatti abbiamo creato un MUX e ora abbiamo utilizzato quello stesso MUX, senza doverlo realizzare nuovamente con AND e OR.

Un componente di libreria (in Quartus) è composto dal file .bsf che rappresenta il disegno grafico del componente stesso e dal relativo file .bdf che ne descrive il funzionamento.

Per prima cosa è necessario creare il file .bdf e poi andare in File -> Create/Update -> Create Symbol Files For Current File. Verrà così creato un file .bsf nella cartella del progetto e sarà proprio questo file che dovete selezionare dal symbol tool nel graphic editor. Se vengono utilizzati dei componenti di libreria .bsf, è necessario aggiungere al progetto (Add/Remove Files In Project) i relativi file .bdf.