Esercitazioni Pratiche Di Elettronica
Esercitazioni Pratiche Di Elettronica
Esercitazioni Pratiche Di Elettronica
elettronica
PDF generato attraverso il toolkit opensource ''mwlib''. Per maggiori informazioni, vedi [[http://code.pediapress.com/ http://code.pediapress.com/]].
PDF generated at: Mon, 13 Feb 2012 13:21:53 UTC
Indice
Voci
0
Lezioni 3
Simulazione dei principali circuiti con amplificatore operazionale 3
Differenza fra segnali analogici e segnali digitali 3
Introduzione alle logiche TTL 4
Classi fondamentali dei circuiti digitali 4
I sistemi di numerazione 5
Conversione da base 2 in base 10 7
Conversione da base 10 in base 2 7
Conversione da base 10 in base 16 10
Il ciclo di progetto 11
Software ISE-XILINX Free Webpack 12
Finestra principale 12
Creazione di un nuovo progetto 13
Creazione di uno schema 13
Creazione di un file VHDL 14
Creazione di una Macchina a Stati Finiti 14
Il file di piedinatura 15
La simulazione 16
L'implementazione su scheda e il test 17
Esercitazioni di laboratorio 20
Logica Combinatoria 20
Implementazione di una funzione 21
Dalla tabella della verità all'implementazione 24
Il multiplexer 26
Implementazione di una funzione tramite multiplexer 28
Il Semisommatore o Half-Adder 30
Il Sommatore completo o Full-Adder 32
Full-Adder realizzato con mux a 3 ingressi di selezione 34
Full-Adder realizzato con mux a 2 ingressi di selezione 35
Sommare due parole di 4 bit 38
Sommatore a 4 bit di tipo LOOK AHEAD CARRY 40
Il Comparatore 46
Il Comparatore a più bit 48
Il decodificatore da BCD a sette segmenti 49
Il decodificatore da BCD a 7 segmenti in VHDL 52
Multiplexing di più display a 7 segmenti 53
Logica Sequenziale 54
Flip Flop di tipo D 55
Flip Flop di tipo JK 55
Flip Flop di tipo T 56
Contatore e-o divisore modulo 2 58
Contatori in cascata 58
Macchine a Stati Finiti 59
Appendici 62
Risorse per il laboratorio 62
Laboratorio di Sistemi 63
Acronimi 64
Autori 64
Note
Fonti e autori delle voci 65
Fonti, licenze e autori delle immagini 66
Tsunesaburo Machiguchi.
Rosa Luxemburg.
Rosa Luxemburg
Esercitazioni pratiche di elettronica 2
Libri correlati
• Elettronica pratica
Note
[1] http:/ / www. tmakiguchi. org/
Introduzione
Finalità
Il presente libro multimediale viene realizzato al fine di fornire il materiale didattico che possa essere utilizzato dagli
allievi delle classi terminali dell'istituto professionale al fine del conseguimento del diploma di specializzazione
quale OPERATORE ELETTRONICO, tenendo conto delle teconologie attuali nell'industria, dopo aver riscontrato
la totale inadeguatezza dei testi prodotti dall'editoria per tali corsi professionali e del relativo costo che grava sempre
più pesantemente sull'economia delle famiglie italiane. Speriamo che possa essere di utilità agli allievi e ci
attendiamo contributi positivi a tal fine sotto il coordinamento del professore da parte degli allievi stessi.
Lezioni
I sistemi di numerazione
Discorso introduttivo
"Il saper fare di conto", è una delle operazioni più difficili e che viene invece considerata con sufficienza e
superficialità con il risultato che se parli di numerazione in base 2 oppure in base 8 oppure in base 16, inizialmente ti
sembra di parlare ad una popolazione incontrata dall'enterprise in una delle sue esplorazioni intergalattiche. Bando
agli scherzi! La numerazione avviene accostando un certo numero di cifre numeriche e generalmente siamo abituati a
scrivere i numeri in base 10, accostandoli a partire da sinistra con le cifre aventi peso maggiore e muovendosi verso
destra con le cifre aventi peso minore. Ad esempio se scrivo 7348 settemilatrecentoquarantotto, sto scrivendo
praticamente una quantità pari a 7 migliaia + 3 centinaia + 4 decine + 8 unità. Questo lo abbaimo studiato alle scuole
elementari, ma siamo sicuri di averlo capito?
Quanto abbiamo appena detto merita innanzitutto una generalizzazione in modo che la tecnica con la quale siamo
abituati a scrivere i numeri in base 10 ci possa essere ugualmente utile per scrivere numeri ovvero saper contare, in
sistemi di numerazione che adottano altre basi numeriche.
Chiariamo quindi cosa vuol dire base:
Un esempio chiarirà meglio quanto stiamo per dire; affermare che un numero è espresso in base 10 vuol dire che
quel numero è stato costruito con un numero di oggetti pari a 10 e questi oggetti sono precisamente le cifre
numeriche a partire da zero (0) fino a nove (9).
Se invece un numero è in base 2 allora ho adoperato esclusivamente 2 oggetti per costruirlo che sono le cifre
numeriche da zero (0) a uno (1).
In generale possiamo quindi stabilire la regola che:
Un numero si esprime in una certa base se si adopera per la sua costruzione un numero di cifre pari alla base
adottata e tali cifre vanno da zero (0) alla (base - 1).
Quindi...
• la base 10 usa le cifre da 0 a 9
• la base 2 le cifre da 0 a 1
• la base 8 le cifre da 0 a 7
• la base 16 le cifre da 0 a 15.
Per le basi maggiori di 10, in particolare noi utilizzeremo spesso e volentieri la base 16, si pone il problema che le
cifre numeriche del sistema che utilizziamo noi sono al massimo in numero di 10 (le cifre che vanno da 0 a 9) e
quindi sono state introdotto delle lettere che individuino univocamente le cifre numeriche, ovvero gli oggetti, che
devono rappresentare il decimo, l'undicesimo, il dodicesimo....fino al quindicesimo oggetto. Ecco perché per la
numerazione in base 16, a differenza delle altre basi le cifre numeriche sono:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
I sistemi di numerazione 6
Esempio:
Allora E = E+1 = 6
2^E=64
64 è > 35 ? Sì
Allora E = E-1 = 5
Nb=Nb+2^E= 100000
N=N-2^E = 35-32=3
E=0
2^E=1
1 è > 3 ? No
Allora E = E+1 = 1
2^E=2
2 è > 3 ? No
Allora E = E+1 = 2
2^E=4
4 è > 3 ? Sì
Allora E = E-1 = 1
Nb=100000 + 10
N=N-2^E = 3-2=1
E=0
2^E=1
1 è = 1 ? Sì
Nb=100000 + 10 + 1
N=N-2^E = 1-1=0
NB
100000+
000010+
000001=
100011
FINE
• Più semplicemente.....
Tenere a portata di mano una tabellina con le potenze in base 2 in ordine crescente a partire dall'esponente zero:
Conversione da base 10 in base 2 9
Exp 2^Exp
0 1
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
... ...
Passo Azione
2 Cerco nella tabellina di cui sopra, la potenza Exp del 2 tale che 2^Exp <= N
4 N = N - 2^Exp
5 Se N = 0 hai terminato!!!
Peso 5 4 3 2 1 0
Numero in base 2 1 0 0 0 1 1
ESA
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 8
1 0 0 1 9
1 0 1 0 A
1 0 1 1 B
1 1 0 0 C
1 1 0 1 D
1 1 1 0 E
1 1 1 1 F
Il ciclo di progetto 11
Il ciclo di progetto
• Il processo dalla progettazione al rilascio è un processo ciclico
• Specifiche di progetto
Ottenute le specifiche secondo le quali realizzare un progetto, si può scegliere di realizzarlo in ECS (schemi
elettrici), VHDL (Linguaggio di programmazione per la definizione di un hardware) oppure FSM (macchine a stati
finiti) o comunque utilizzando anche tutti e tre i tipi di files.
• Correzioni, aggiunte, modifiche
Man mano che si progetta si procede all'aggiunta di files o alla correzione di quelli già creati apportando le
opportune modifiche.
• Simulazione
Si può procedere ad una simulazione via software nel momento in cui lo si ritenga più opportuno per osservare
l'andamento dei segnali di output in funzione degli inputs.
• Implementazione e test
Oppure si può procedere all'implementazione su scheda e relativo test hardware per avere una verifica oggettiva di
quanto si è creato.
• Rilascio
Si può procedere al rilascio dell'hardware così programmato, quando lo si ritiene necessario oppure a seconda dei
tempi di rilascio prestabiliti nelle specifiche di progetto.
• Nuove specifiche di progetto
Se dovessero intervenire nuove specifiche riguardanti il progetto, da parte del cliente, non sarà necessario cambiare
la scheda, ma semplicemente provvedere alle opportune modifiche e ad una nuova implementazione sulla scheda,
dato che l'interfaccia JTAG permette infinite programmazioni della scheda in sede, ovvero senza rimuovere
l'hardware o i devices (CPLD, FPGA) ma semplicemente collegandosi ad essa tramite il cavo di collegamento tra PC
e interfaccia JTAG della scheda.
Software ISE-XILINX Free Webpack 12
Finestra principale
Innanzitutto è importante distinguere all'interno della videata principale del software le finestre che la compongono
ed il loro uso e significato.
• Sources in Project - files sorgenti del progetto
In questa finestra in alto a sinistra sono elencati il titolo del progetto e subito sotto di esso il chip programmabile per
il quale vengono creati i files di progetto. Sotto il chip si vede l'elenco dei files che compongono il progetto.
• Processes for Source - processi per il file sorgente selezionato
Selezionando uno dei file di progetto di cui si è detto al punto precedente, in questa finestra appaiono i processi,
ovvero le operazioni, che si possono eseguire su quel determinato file (ad esempio la compilazione di uno schema in
formato VHDL).
• Console - log delle operazioni svolte
Questa ultima finestra contiene, in formato testo, il resoconto delle ultime operazioni eseguite nella finestra
precedente e l'esito delle stesse operazioni. La consultazione di questa finestra eè di notevole importanza per poter
apportare le eventuali correzioni al circuito prima dell'implementazione su scheda SOPC.
Creazione di un nuovo progetto 13
Il file di piedinatura
• Creare un nuovo sorgente...
Inserire il nome de file della piedinatura in File Name. È buona norma chiamare il file icf_nome_del_sorgente al
quale si riferisce, in modo da non far confusione quando si ha a che fare con molti sorgenti, come succede
normalmente quando si progetta. Nella finestra di sinistra selezionate Implementation Constraints File e premere
Avanti>.
In questa nuova finestra che compare selezionare il sorgente di cui al punto precedente. (il software non è così
intelligente da sapere a priori che il file a cui si riferisce è quello indicato nel nome se non lo selezioniamo
espressamente). Premere Avanti>.
La solita finestra di riepilogo di quanto inserito e ormai dovreste aver capito cosa fare. Se tutto è a posto premete
Fine.
La simulazione
Per poter effettuare la simulazione del nostro progetto prima o durante le fasi di implementazione e test bisogna aver
installato il software ModelSim XE III 6.0a Xilinx Edition che potete scaricare gratuitamente dal sito della Xilinx
come avete fatto per il software ISE Free WEBPACK, e poi richiedere un file di licenza perpetuo per la versione
Starter Kit che ModelSim fornisce gratuitamente.
• Creazione di un nuovo sorgente di tipo Test Bench Waveform
La procedura è identica a quanto già detto in Il file di piedinatura. L'unica differenza è chimare il file
tbw_nome_file_sorgente per le stesse ragioni addotte sempre in Il file di piedinatura, e selezionare Test Bench
Waveform nella finestra di sinistra.
Si ottiene l'apertura di un file sul modello indicato nell'immagine nel quale potete forzare gli input (in verde) al
valore booleano che volete prima di lanciare il processo di simulazione in modo da osservare il comportamento degli
outputs (in giallo). In questo modo ModelSim opera in modo nascosto e la simulazione mostra i valori attesi in
uscita ma la simulazione come in questo caso che viene mostrato potrebbe non essere completamente corretta (forse
un bug del software).
Se invece si desidera una simulazione con tutti i crismi, nella quale i segnali si possano osservare con la finezza
temporale che giustamente è necessaria in un progetto di una certa complessità, allora si deve lanciare ModelSim
dall'interno dell'ISE ottenendo i risultati che appaiono in quest'altra figura. Decisamente più corretti.
• Post Scriptum
A proposito di bug del software va sottolineato che se usate il software ISE Free WEBPACK e riscontrate qualche
bug, potete mettervi in contatto sul sito della Xilinx con i programmatori e aiutarli a correggere l'errore che avete
notato. Riceverete sicuramente un supporto professionale e una disponibiità senza alcun problema da parte della
Xilinx che ha tutto l'interesse a correggere i bugs che naturalmente si inseriscono in qualsisasi software. Potreste
ricevere indicazione di scaricare un certo Service Pack dove il problema è già stato risolto o potreste essere voi i
primi ad averlo notato e quindi intraprendere un proficuo dialogo con la Xilinx che ritengo didatticamente e
professionalmente molto utili per qualsiasi studente di istituto professionale.
L'implementazione su scheda e il test 17
Sotto il device selezionato apparirà il nome del file.jed associato ad esso. Ora il device va propriamente
programmato tramite le seguenti azioni:
• Selezionare con il mouse il device
• Il device cambia colore mostrando di essere stato selezionato.
• Restando con il mouse sul device selezionato, premere il tasto destro del mouse
e selezionare l'operazione Erase: tramite questa operazione verrà cancellato dal device qualunque programma che
era stato precedentemente implementato al suo interno. Ci attendiamo la risposta Erase Succeded ad indicare che
l'operazione è andata a buon fine, altrimenti ripetere questo punto.
• Sempre con il mouse sul device selezionato, premere il tasto destro del mouse
e selezionare l'operazione Program: tramite questa operazione il device verrà programmato con il nuovo
programma. NB:L'opzione Erase Before Programming è bene che sia selezionata sempre affinché il device non
venga danneggiato.
L'implementazione su scheda e il test 19
Ci attendiamo la risposta Programming Succeded ad indicare che l'operazione è andata a buon fine, altrimenti
ripetere questo punto.
20
Esercitazioni di laboratorio
Logica Combinatoria
Teoria
Al fine di rendere utili le esercitazioni proposte vanno chiariti alcuni concetti di base:
• Combinazioni di N variabili
Le combinazioni di N variabili in ingresso ad una logica combinatoria sono . La tabella seguente potrà essere
utile se ci si rivolge per la prima volta all'implementazione di una logica combinatoria:
1 2
2 4
3 8
4 16
5 32
6 64
Come si vede la crescita delle combinazioni è di tipo esponenziale, il che presenta notevoli difficoltà per valori di N
già superiori ad ; tale difficoltà, vedremo, sarà facilmente sormontabile quando tratteremo delle logiche
sequenziali tramite l'utilizzo massivo dei dispositivi denominati Contatori Binari.
• Quante variabili di selezione sono necessarie a fronte di N combinazioni?
La risposta è speculare alla precedente: se si deve selezionare univocamente una ed una sola delle N combinazioni,
avremo bisogno almeno di M variabili di selezione, dove . Questo concetto risulterà di utilità
pratica quando si tratteranno i Multiplexer.
• Logaritmo in base 2:
È l'esponente che si deve dare alla base 2 affinché . A tal fine sarà utile una tabella di esempio:
N Combinazioni M Variabili
2 1
3 2
4 2
5 3
6 3
7 3
8 3
9 4
10 4
Logica Combinatoria 21
Ci troviamo di fronte ad una funzione con una singola variabile di uscita y e quattro variabili d'ingresso A, B, C, D.
• La tabella di verità
Costruiamone la tabella di verità ovvero rispondiamo alla domanda: a fronte di tutte le combinazioni possibili e
univoche di quattro variabili booleane quale sarà la risposta del nostro sistema di logica combinatoria?
Si procede ad esprimere l'uscita y analizzando la funzione booleana data, per ogni combinazione delle quattro
variabili di ingresso; ovvero se per una riga della tabella esiste un termine dell'equazione per cui si ottiene un 1 (uno
logico) come uscita, allora poniamo ad 1 (uno logico) l'uscita y della funzione.
Se non abbiamo commesso errori di calcolo la tabella dovrebbe essere la seguente, ma ad ogni modo ci riserveremo
di confermare i risultati ottenuti analiticamente tramite il test hardware dopo aver provveduto all'implementazione
della funzione stessa sulla nostra scheda:
A B C D Y
0 0 0 0 1
0 0 0 1 1
0 0 1 0 1
0 0 1 1 1
0 1 0 0 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
Implementazione di una funzione 22
1 0 1 1 1
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1
L'ISE ci mette a disposizione tutte le porte (o almeno molte e comunque quelle più necessarie) che servono per
esprimere ciascuno dei nostri termini (minterm è il nome tecnico di ciascun termine).
• Gli ingressi
Notare gli I/O Markers: i marcatori di input/output determinano le porte di ingresso e uscita dello schema.
• La somma logica
La porta OR5 è una porta OR a 5 ingressi, notare l'I/O marker di uscita.
• I minterms
•
La porta AND2B1 è una porta AND a 2 ingressi (AND2) di cui uno è negato (B1).
•
La porta AND2B1 è una porta AND a 2 ingressi (AND2) di cui uno è negato (B1).
Implementazione di una funzione 23
•
La porta AND3B3 è una porta AND a 3 ingressi (AND3) di cui tre negati (B3).
•
La porta AND3 è una porta AND a 3 ingressi (AND3) di cui nessuno è negato.
•
La porta AND4B1 è una porta AND a 4 ingressi (AND4) di cui uno è negato (B1).
• La piedinatura
Si veda Il file di piedinatura dal quale ci si potrà convincere che le porte d'ingresso A,B,C,D sono state indirizzate
nella scheda Digilent XCRP ai switch SW1,SW2,SW3,SW4 mentre l'uscita Y viene inviata al LED1.
Implementazione di una funzione 24
• La tabella di verità
Data la seguente tabella di verità, che rappresenta la risposta desiderata dal nostro blocco di logica combinatoria, si
costruisca ed implementi la funzione booleana che la realizza facendo a meno, almeno per il momento di
semplificazioni della stessa funzione, le quali necessitano di altre conoscenze che si tratteranno successivamente:
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0'
0 1 0 1 1
0 1 1 0 1
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
Dalla tabella della verità all'implementazione 25
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1
• Soluzione:
• Si costruisce la funzione booleana
Per ogni riga della tabella della verità la cui uscita Y è uguale ad 1 (uno logico), si costruisce un minterm tramite una
porta AND a 4 ingressi, negando gli ingressi delle variabili che nella tabella sono a 0 (zero logico).
Come si vede la funzione booleana può essere molto complicata se nella tabella figurano molte uscite ad 1 (
), ma quello che per ora a noi interessa è che funzioni all'atto dell'implementazione su scheda, e lo vedremo nei
prossimi punti.
• Si implementa e testa con l'ISE
• La simulazione
Il multiplexer 26
Il multiplexer
• Il dispositivo
Il multiplexer è un dispositivo di logica combinatoria che presenta una interessante innovazione dal punto di vista
concettuale, ovvero, oltre agli N ingressi di segnale e all'uscita è dotato di uno o più ingressi di selezione, dove il
numero S degli ingressi di selezione è pari a .
• Il funzionamento
Gli ingressi di selezione determinano in base alla loro configurazione binaria, quale dei segnali posti in ingresso,
viene inviato all'uscita. Si comporta quindi come un selettore di segnale o commutatore di segnale.
• Multiplexer a 2 ingressi
Avendo due ingressi e , è necessario un solo ingresso di selezione , un solo bit è sufficiente per
determinare quale degli ingressi viene inviato all'uscita ; se , se invece
• Schema interno
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
In Dalla tabella della verità all'implementazione abbiamo descritto come ottenere la funzione booleana che realizza
una tabella di verità del blocco di logica combinatoria. Facciamo la stessa cosa per la tabella qui presentata ed
otteniamo la seguente funzione booleana con tre ingressi ed un'uscita :
Sembrerebbe più complicata dello schema interno ma
possiamo apportare delle semplificazioni alla funzione notando che alcuni termini possono essere messi a
fattor-comune, ottenendo con un primo passaggio algebrico:
ovvero:
0 0 0 0 1
0 0 0 1 1
0 0 1 0 1
0 0 1 1 1
0 1 0 0 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1
Siete d'accordo?
Beh! è vero che si potrebbero adottare delle semplificazioni, applicare alcuni teoremi (che al momento non
conosciamo), ma ad ogni modo il tutto richiederebbe un bel lavoro analitico ed una discreta conoscenza dell'algebra
booleana, senza poi tenere conto degli eventuali, e sempre possibili, errori che si potrebbero introdurre durante i
passaggi analitici.
Ma esiste un metodo molto più semplice per implementare la funzione data che è facilmente applicabile utilizzando
un multiplexer, ed è quello che faremo in questo caso per presentare allo studente la potenza dei multiplexer ed
una delle possibili utilizzazioni che si possono fare di questo interessante dispositivo.
Non ci dimentichiamo che si sta trattando sempre e solo di logica combinatoria, ed uno de nostri scopi è sfruttare al
massimo questo tipo di tecnologia in modo da poter scegliere la soluzione migliore e più veloce per risolvere un
problema che ci si potrebbe presentare nello sviluppo di sistemi più complicati, come faremo nelle lezioni
successive.
I passi da seguire sono i seguenti:
• Ci vuole un multiplexer con M ingressi pari al numero delle righe della tabella di verità.
• Il nostro multiplexer avrà S ingressi di selezione pari a
Implementazione di una funzione tramite multiplexer 29
• Si collegano i nostri ingressi, in questo caso agli ingressi di selezione del multiplexer.
• Si forzano ad 1 (VCC) o a 0 (GND) gli ingressi del multiplexer secondo le uscite della tabella della verità data.
Schema
Come funziona?
Secondo la combinazione delle variabili di ingresso viene selezionato il relativo ingresso del
multiplexer che abbiamo provveduto precedentemente a forzare ad 1 (VCC) o a 0 (GND), e viene inviato all'uscita
Y, ottenendo così il funzionamento desiderato dalla tabella di verità.
La simulazione
Mostra che a fronte delle 16 combinazioni dei 4 ingressi l'uscita Y è quella desiderata.
Il Semisommatore o Half-Adder 30
Il Semisommatore o Half-Adder
HALF ADDER
Tabella di verità
La porta ha la seguente tabella della verità:
0 0 0
0 1 1
1 0 1
1 1 0
Dove si nota che l'uscita assume il valore 1 logico sole se gli ingressi non sono uguali.
Simulazione
La somma aritmetica
A differenza della somma logica, effettuare la somma aritmetica vuol dire operare come per la somma in base 10,
tenendo conto anche di un eventuale riporto che chiameremo CY; se la somma viene effettuata ad una cifra
numerica, il riporto interverrà quando la somma supera o eguaglia la base, e nel caso della base 2, effettuando la
somma ad una sola cifra (ovvero ad un solo bit per volta) avremo il riporto quando la somma supera 1.
Il Semisommatore o Half-Adder 31
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
Come vedete ci troviamo di fronte ad un blocco di logica combinatoria con due ingressi: e , e due uscite:
SUM (la somma) e CY (il riporto). Dovremo quindi realizzare due funzioni booleane distinte, una per ogni uscita del
nostro blocco di logica combinatoria, dove ciascuna funzione booleana sarà una funzione a due ingressi ed una sola
uscita.
SUM
0 0 0
0 1 1
1 0 1
1 1 0
CY
0 0 0
0 1 0
1 0 0
1 1 1
B A SUM CY
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Come vedete, le prime quattro righe della tabella sono identiche a quelle del Semisommatore avente un riporto
precedente, sottinteso, uguale a 0. Nelle ultime quattro righe invece si aggiunge alla somma ottenuta, il riporto che
qui è uguale ad 1, il ché produce dei risultati differenti.
Funzione SUM
Il Sommatore completo o Full-Adder 34
Funzione CYOUT
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Si vuole implementare un sommatore completo (full-adder) tramite l'utilizzo di multiplexer a tre (3) ingressi di
selezione. In base a quanto visto nella lezione riguardante i multiplexer utilizzati per implementare una funzione di
logica combinatoria, procederemo allo stesso modo. Si tratta (vedi tabella della verità) di implementare una funzione
Full-Adder realizzato con mux a 3 ingressi di selezione 35
di logica combinatoria avente tre ingressi, nella fattispecie A, B e CyIn, e due uscite, SUM e CyOut. Quindi in base
alla teoria già studiata, il problema si riduce alla risoluzione, tramite naturalmente multiplexer a tre ingressi, di due
funzioni di logica combinatoria a tre ingressi ed una uscita. Ovvero risolveremo prima l'uscita riguardante la colonna
SUM e poi l'uscita riguardante la colonna CyOut. Infine metteremo insieme le soluzioni trovate al fine di realizzare
un unico blocco di logica combinatoria.
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Si vuole implementare un sommatore completo (full-adder) tramite l'utilizzo di multiplexer a due (2) ingressi di
selezione. In base a quanto visto nella lezione riguardante i multiplexer utilizzati per implementare una funzione di
logica combinatoria, procederemo allo stesso modo. Si tratta (vedi tabella della verità) di implementare una funzione
di logica combinatoria avente tre ingressi, nella fattispecie A, B e CyIn, e due uscite, SUM e CyOut. Quindi in base
alla teoria già studiata, il problema si riduce alla risoluzione, tramite naturalmente multiplexer a due ingressi, di due
funzioni di logica combinatoria a tre ingressi ed una uscita. Ovvero risolveremo prima l'uscita riguardante la colonna
SUM e poi l'uscita riguardante la colonna CyOut. Infine metteremo insieme le soluzioni trovate al fine di realizzare
un unico blocco di logica combinatoria. Sostanziale differenza con la realizzazione del Full Adder che usa i
multiplexer a tre ingressi di selezione è che la tabella della verità è stata implementata dividendola in due: le
prime quattro uscite con CyIn a zero (logico) e le seconde quattro uscite con CyIn a uno (logico)
Full-Adder realizzato con mux a 2 ingressi di selezione 36
Lo schema
La somma delle due parole a bit, A[3:0] e B[3:0], viene effettuata ponendo in cascata 4 Full-Adder, collegati in
modo che il riporto della cifra precedente, CYOUT, venga inviato all'ingresso di riporto, CYIN, della cifra
successiva. L'uscita sarà ancora una parola a 4 bit, SUM[3:0], più l'ultimo riporto in uscita, CYOUT, ottenendo così
un totale di 5 bits in uscita.
• Non dimenticare mai il riporto in uscita ad una somma se non si vogliono perdere cifre significative.
Questo risultato è congruente con il fatto che 4 bits contengono i numeri da 0 a 15 e che sommando due parole di 4
bits potremmo ottenere al massimo, quale risultato, il numero 30 che pùo essere contenuto in un numero di almeno 5
bits.
Bus e Tap
Un BUS è un insieme di connessioni, NETS, che hanno lo stesso nome ma indicizzate. Ad esempio il bus A[3:0], (è
questa la sintassi da adoperare per definire un BUS), contiene al suo interno 4 NET che separatamente assumono i
nomi A[0], A[1], A[2], A[3], e le quali possono essere estratte dal BUS stesso per essere collegate opportunamente
tramite gli oggetti che nell'ISE vengono chiamati TAP.
NB:la NET che viene collegata al TAP deve essere rinominata in modo congruente con i nomi delle NETS contenute
nel BUS dal quale il TAP sta estraendo la singola NET.
A proposito ancora della sintassi, A[3:0] mi dice che il BUS A si estende ordinatamente a partire da A[3] fino ad
A[0]. In modo equivalente da punto di vista elettronico, avremmo potuto chiamare il BUS A con il nome A[0:3]
ottenendo lo stesso risultato, è solo una questione di abitudine. Io preferisco la prima soluzione dove la sintassi è:
NOME_DEL_BUS[MAX_INDEX:MIN_INDEX]
ma come ripeto ugualmente buona è la sintassi:
NOME_DEL_BUS[MIN_INDEX:MAX_INDEX]
Sommare due parole di 4 bit 39
Somma + Riporto
Qui sono evidenziati il BUS somma, SUM[3:0] ed il riporto in uscita dall'ultimo sommatore.
La piedinatura
Si effettua ora la piedinatura dello schema creando un nuovo file sorgente di tipo IMPLEMENTATION
CONSTRAINTS FILE. Assegneremo il BUS A[3:0] a 4 switch ed il BUS B[3:0] a gli altri 4 switch rimanenti; per
le uscite faremo in modo di inviare il BUS SUM[3:0] a 4 LED ed useremo un quinto LED per il riporto in uscita.
L'implementazione e il test
• Dopo aver effettuato il caricamento del file di programma, sum4bit.jed all'interno del device, settare i switch in
modo da assegnare a ciascun bus d'ingresso, A[3:0] e B[3:0], un valore numerico da 0 a 15 a scelta.
• Osservare la configurazione binaria dei LEDs; il risultato ottenuto è esatto?
• Rispondere più volte a questa domanda con diverse configurazioni dei bus, in modo da controllare l'esatto
funzionamento del sommatore.
La simulazione
Sono stati assegnati alcuni valori ai bus di ingresso; osservare la configurazione del bus di uscita, SUM[3:0] e del bit
di riporto, CYOUT.
NB:Una simulazione esaustiva, comprendente cioè tutte le possibili combinazioni dei due bus, qui non viene
effettuata perché altrimenti troppo lunga in quanto comprenderebbe combinazioni differenti.
Sommatore a 4 bit di tipo LOOK AHEAD CARRY 40
Ci B A SUM Co
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Carry-Generate
• Quando A = 1 e B = 1 indipendentemente da Ci viene generato un riporto Co = 1
Isolo le righe della tabella del Full-Adder che mi interessano nella seguente sotto-tabella:
Ci B A SUM Co
0 1 1 0 1
1 1 1 1 1
Carry-Propagate
• Se Ci = 1 allora Co = 1 sse(se e solo se) A = 1 oppure B = 1 oppure sia A = 1 che B = 1
Anche in questo caso, isolo le righe della tabella del Full-Adder che mi interessano e costruisco un'altra funzione di
logica combinatoria:
Ci B A SUM Co
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
Carry-Out
Tenendo conto di entrambe le conclusioni delle due precedenti osservazioni, otteniamo il riporto in uscita:
Co = CG + CP * Ci
Possiamo ritenere questa conclusione valida? La risposta è Sì! perché abbiamo costruito la logica-combinatoria che
realizza la colonna del riporto in uscita al Full-Adder tenndo conto di tutte le righe aventi uscita uguale a '1 e poi le
abbiamo sommate anche se abbiamo preso in considerazione qualche riga più di una volta soltanto, e direi che va
evidenziato il fatto che non sempre una semplificazione del circuito con Karnaugh si rende necessaria, ma che ogni
elaborazione di un circuito va sempre presa in considerazione delle finalità, cioè degli obiettivi che ci si propone di
raggiungere, come nel nostro caso in cui stiamo cercando di realizzare un sommatore più veloce del tipo
RIPPLE-CARRY visto in precedenza.
Sommatore a 4 bit di tipo LOOK AHEAD CARRY 43
Sommatore di peso 0
Sommatore di peso 1
Essendo ottengo:
Il Comparatore
Comparatore ad un bit
Vogliamo risolvere la domanda: il bit A è maggiore, minore o uguale a B?
La tabella di verità
A B
0 0 0 0 1
0 1 0 1 0
1 0 1 0 0
1 1 0 0 1
•
Il Comparatore 47
Lo schema
Il diagramma temporale
Il Comparatore a più bit 48
Il Diodo
Polarizzazione diretta
Il Diodo Led
Polarizzazione diretta
Il decodificatore da BCD a sette segmenti 50
DEC a b c d e f g
0 0 0 0 0 1 1 1 1 1 1 0
0 0 0 1 1 0 1 1 0 0 0 0
0 0 1 0 2 1 1 0 1 1 0 1
0 0 1 1 3 1 1 1 1 0 0 1
0 1 0 0 4 0 1 1 0 0 1 1
0 1 0 1 5 1 0 1 1 0 1 1
0 1 1 0 6 1 0 1 1 1 1 1
0 1 1 1 7 1 1 1 0 0 0 0
1 0 0 0 8 1 1 1 1 1 1 1
1 0 0 1 9 1 1 1 1 0 1 1
In definitiva...
Abbiamo a che fare, con un blocco di logica combinatoria con 4 ingressi e 7 uscite, si dovranno dunque sintetizzare
7 funzioni booleane da 4 ingressi ad una uscita.
Mappe di Karnaugh
Il decodificatore da BCD a 7 segmenti in VHDL 52
clausola library
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use
IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following lines to use the declarations that are -- provided for instantiating Xilinx primitive
components. --library UNISIM; --use UNISIM.VComponents.all;
clausola entity
entity decBCD7seg is
end decBCD7seg;
clausola architecture
architecture Behavioral of decBCD7seg is
begin process(d) begin
case d is
when "0000" => disp <= "1111110";
when "0001" => disp <= "0110000";
when "0010" => disp <= "1101101";
when "0011" => disp <= "1111001";
when "0100" => disp <= "0110011";
when "0101" => disp <= "1011011";
when "0110" => disp <= "1011111";
when "0111" => disp <= "1110000";
when "1000" => disp <= "1111111";
when "1001" => disp <= "1111011";
when others => disp <= "0000000";
end case;
end process;
end Behavioral;
Da cui si evince la relativa facilità di realizzazione di un hardware, se comparata con l'implementazione dello
stesso fatta utilizzando blocchi schematici.
Il decodificatore da BCD a 7 segmenti in VHDL 53
Procedura
Logica Sequenziale
Teoria
La logica sequenziale tratta di sistemi digitali le cui uscite non dipendono solo dai valori attuali degli ingressi, ma
anche dai valori che le uscite avevano in precedenza.
Ciò significa che, anche se vi è la stessa combinazione (sequenza di "1" e "0") agli ingressi della macchina, non è
detto che le uscite assumano sempre gli stessi valori. Le uscite dipendono anche dai valori che erano presenti in
uscita prima che fosse modificata la combinazione in ingresso
Per Macchine a Stati Finiti, si intendono sistemi digitali sequenziali suscettibili di assumere un numero finito di
stati (combinazioni delle uscite interne).
In termini pratici abbiamo a che fare con blocchi di hardware dove le uscite vengono riportate in ingresso dopo
essere state sottoposte ad opportune trasformazioni per poter essere elaborate insieme agli altri Input ed in modo da
determinare quale sarà lo stato che assumerà la macchina al prossimo passaggio di stato, ovvero in corrispondenza
del prossimo scatto della macchina, che avviene in pratica in corrispondenza del fronte di salita del clock.
I Flip Flop
• Flip Flop di tipo D
• Flip Flop di tipo JK
• Flip Flop di tipo T
Caricamento
Avviene quando è presente un fronte di salita nell'ingresso C (clock); in corrispondenza del fronte di salita, Q <= D
ovvero Q assume il valore binario presente in D.
Memoria
Per tutto il resto del periodo dell'onda quadra nell'ingresso C il flip-flop di tipo D si comporta come una cella di
memoria e non importa quale valore assuma il segnale all'ingresso D. Q continua a mantenere il valore caricato in
corrispondenza del fronte di salita.
0->1 0 0 0 0
0->1 0 1 1 0
0->1 1 0 1 0
0->1 1 1 0 0
• Logica Combinatoria associata al contatore (Vedi blocco Es_1 della figura precedente):
Flip Flop di tipo T 57
Modulo
Sta ad indicare il numero di stati che assume il contatore; ad esempio per un contatore modulo 2 si hanno 2 stati
possibili e si riferiscono all'uscita del flip-flop che può assumere il valore binario '0' oppure '1'.
Contatore o Divisore?
Entrambi i nomi sono possibili; si chiama Contatore se ci mettiamo nell'ottica degli stati che la macchina assume; si
chiama Divisore se consideriamo la frequenza dell'onda quadra presente all'uscita Q del flip-flop in relazione alla
frequenza dell'onda quadra applicata all'ingresso di Clock. Nel nostro caso viene appunto, divisa per 2.
Simulazione
Come si può vedere, il circuito si comporta come un contatore modulo 2, in quanto l'uscita assume 2 stati 0 oppure 1;
nello stesso tempo è un divisore x 2 in quanto il periodo del segnale presente all'uscita Q è esattamente il doppio del
periodo del segnale applicato all'ingresso di Clock.
Contatori in cascata
Più blocchi di contatori in cascata realizzano un contatore il cui modulo è il prodotto dei moduli dei singoli blocchi.
(Discorso identico vale per i divisori)
Simulazione
Divisore Modulo 4
Questo contatore è anche un divisore modulo 4. Infatti, dal diagramma temporale si nota che:
Macchine a Stati Finiti 59
È stato dimostrato che i due modelli sono equivalenti e che è possibile trasformare una automa di Mealy in uno di
Moore che esibisce lo stesso comportamento terminale.
ESEMPI:
END BEHAVIOR;
Appendici
Laboratorio di Sistemi
RC passa-basso
Risposta al transitorio
La risposta al transitorio denota il comportamento della rete all'applicazione di uno stimolo a gradino al nostro
circuito. Come si vede dal grafico 2D, la tensione sul condensatore si carica al valore della tensione d'ingresso con
una costante di tempo . Dopo circa il condensatore si può dire che abbia raggiunto il valore di
tensione di ingresso applicata ai suoi capi tramite la resistenza R che ne determina la velocità di carica.
Risposta in frequenza
Per la risposta a regime si osserva il diagramma di Bode nel quale appaiono tensione sul condensatore e fase rispetto
alla tensione di ingresso. La tensione ci dice che la rete si comporta come un filtro passa-basso con frequenza di
taglio di circa 158 Hz. La fase ci dimostra che: mentre a frequenze inferiori alla frequenza di taglio il condensatore è
praticamente ininfluente avendo reattanza molto elevata e lo sfasamento tra le due tensioni è zero radianti,
all'aumentare della frequenza lo sfasamento aumenta fino ad un massimo di radianti (-90 gradi) e che lo
sfasamento alla frequenza di taglio è di radianti (-45 gradi). Questi risultati sono in accordo con l'analisi
matematica della rete.
Analisi matematica
Acronimi 64
Acronimi
• VHDL: VLSI Hardware Description Language
Linguaggio di programmazione per la definizione di un hardware
• VLSI: Very Large Scale of Integration
Un hardware ad elevata scala di integrazione. Si tenga conto che lo stato attuale di questa scala di integrazione e
dell'ordine dei 90 nm (nano metri).
• SOPC: System On Programmable Chip
Sistema implementato su chip programmabile in sede.
• JTAG: Joint Test Action Group
Dall’acronimo del gruppo di aziende riunitesi sotto il nome di Joint Test Action Group che hanno collaborato alla
sua stesura
• IEEE: Institute of Electrical and Electronics Engineers [1].
Note
[1] http:/ / www. ieee. org/
Autori
Hanno contribuito
• Docenti
• prof. Roberto Della Grotta (docente c/o IPIA ROSA LUXEMBURG - MILANO)
• Allievi
• Giampaolo Roberto Classe:3C AS:2005/2006
• Uga Michael Classe:3C AS:2005/2006
• Lazzarini Luca Danilo Classe:3C AS:2006/2007
• Arosio Luca Classe:4C AS:2010/2011
Fonti e autori delle voci 65
Esercitazioni pratiche di elettronica Fonte:: http://it.wikibooks.org/w/index.php?oldid=222184 Autori:: Diablo, LoStrangolatore, Pietrodn, Ramac, Rdgmus, The Doc, 5 Modifiche anonime
Simulazione dei principali circuiti con amplificatore operazionale Fonte:: http://it.wikibooks.org/w/index.php?oldid=114610 Autori:: Az1568, Pietrodn, Rdgmus, Wim b, 2 Modifiche
anonime
Differenza fra segnali analogici e segnali digitali Fonte:: http://it.wikibooks.org/w/index.php?oldid=22048 Autori:: Pietrodn, 2 Modifiche anonime
Classi fondamentali dei circuiti digitali Fonte:: http://it.wikibooks.org/w/index.php?oldid=185464 Autori:: Pietrodn, 3 Modifiche anonime
Conversione da base 10 in base 2 Fonte:: http://it.wikibooks.org/w/index.php?oldid=174577 Autori:: Pietrodn, Rdgmus, 10 Modifiche anonime
Conversione da base 10 in base 16 Fonte:: http://it.wikibooks.org/w/index.php?oldid=38818 Autori:: Diablo, Pietrodn, Rdgmus, 2 Modifiche anonime
Software ISE-XILINX Free Webpack Fonte:: http://it.wikibooks.org/w/index.php?oldid=10644 Autori:: Pietrodn, Rdgmus, The Doc, 4 Modifiche anonime
Creazione di un nuovo progetto Fonte:: http://it.wikibooks.org/w/index.php?oldid=15463 Autori:: Pietrodn, Rdgmus, The Doc
Creazione di uno schema Fonte:: http://it.wikibooks.org/w/index.php?oldid=54669 Autori:: Pietrodn, Rdgmus, The Doc
Creazione di un file VHDL Fonte:: http://it.wikibooks.org/w/index.php?oldid=54520 Autori:: Diablo, Rdgmus, 3 Modifiche anonime
Il file di piedinatura Fonte:: http://it.wikibooks.org/w/index.php?oldid=174473 Autori:: Pietrodn, Rdgmus, The Doc, Wim b
L'implementazione su scheda e il test Fonte:: http://it.wikibooks.org/w/index.php?oldid=22144 Autori:: Pietrodn, Rdgmus, The Doc
Logica Combinatoria Fonte:: http://it.wikibooks.org/w/index.php?oldid=177322 Autori:: Diablo, Pietrodn, Rdgmus, The Doc, 1 Modifiche anonime
Implementazione di una funzione Fonte:: http://it.wikibooks.org/w/index.php?oldid=60411 Autori:: Pietrodn, Rdgmus, The Doc, Wim b, 3 Modifiche anonime
Dalla tabella della verità all'implementazione Fonte:: http://it.wikibooks.org/w/index.php?oldid=77697 Autori:: Diablo, Pietrodn, Rdgmus, The Doc
Implementazione di una funzione tramite multiplexer Fonte:: http://it.wikibooks.org/w/index.php?oldid=185827 Autori:: Franz Liszt, Pietrodn, Ramac, Rdgmus, The Doc
Il Sommatore completo o Full-Adder Fonte:: http://it.wikibooks.org/w/index.php?oldid=177304 Autori:: Pietrodn, Rdgmus, The Doc
Full-Adder realizzato con mux a 3 ingressi di selezione Fonte:: http://it.wikibooks.org/w/index.php?oldid=207600 Autori:: Rdgmus, 3 Modifiche anonime
Full-Adder realizzato con mux a 2 ingressi di selezione Fonte:: http://it.wikibooks.org/w/index.php?oldid=207645 Autori:: Rdgmus
Sommare due parole di 4 bit Fonte:: http://it.wikibooks.org/w/index.php?oldid=177306 Autori:: Pietrodn, Rdgmus, The Doc
Sommatore a 4 bit di tipo LOOK AHEAD CARRY Fonte:: http://it.wikibooks.org/w/index.php?oldid=180987 Autori:: Rdgmus, 1 Modifiche anonime
Il Comparatore Fonte:: http://it.wikibooks.org/w/index.php?oldid=177483 Autori:: Pietrodn, Ramac, Rdgmus, The Doc, 4 Modifiche anonime
Il decodificatore da BCD a sette segmenti Fonte:: http://it.wikibooks.org/w/index.php?oldid=209152 Autori:: Pietrodn, Rdgmus, The Doc, 5 Modifiche anonime
Il decodificatore da BCD a 7 segmenti in VHDL Fonte:: http://it.wikibooks.org/w/index.php?oldid=177300 Autori:: Diablo, Rdgmus, 2 Modifiche anonime
Multiplexing di più display a 7 segmenti Fonte:: http://it.wikibooks.org/w/index.php?oldid=115965 Autori:: Diablo, Rdgmus, The Doc, 2 Modifiche anonime
Logica Sequenziale Fonte:: http://it.wikibooks.org/w/index.php?oldid=219437 Autori:: Diablo, Rdgmus, The Doc, Wim b, 10 Modifiche anonime
Flip Flop di tipo D Fonte:: http://it.wikibooks.org/w/index.php?oldid=178583 Autori:: Enzo D'Ambrosio, Rdgmus, Wim b, Wutsje, 2 Modifiche anonime
Flip Flop di tipo JK Fonte:: http://it.wikibooks.org/w/index.php?oldid=175068 Autori:: Ramac, Rdgmus, 1 Modifiche anonime
Flip Flop di tipo T Fonte:: http://it.wikibooks.org/w/index.php?oldid=175069 Autori:: Ramac, Rdgmus, 1 Modifiche anonime
Contatore e-o divisore modulo 2 Fonte:: http://it.wikibooks.org/w/index.php?oldid=177309 Autori:: Enzo D'Ambrosio, Rdgmus
Contatori in cascata Fonte:: http://it.wikibooks.org/w/index.php?oldid=177307 Autori:: Enzo D'Ambrosio, Rdgmus, 1 Modifiche anonime
Risorse per il laboratorio Fonte:: http://it.wikibooks.org/w/index.php?oldid=54528 Autori:: Pietrodn, Rdgmus, 1 Modifiche anonime
Licenza
Creative Commons Attribution-Share Alike 3.0 Unported
//creativecommons.org/licenses/by-sa/3.0/