Introduzione ai circuiti elettronici digitali G.- F. Dalla Betta, G. Soncini. Appunti di Elettronica 2. Capitolo I Introduzione ai circuiti elettronici digitali I.1. Segnali analogici e digitali Appendice A.1. Sistemi di numerazione A.2. Sistema binario A.3. Codici 1
I.1. Segnali analogici e digitali Segnale analogico: variabile continua assume un numero infinito di valori entro l’intervallo di variazione v t intervallo di variazione 2
in ogni istante all’interno dell’intervallo di variazione Elettronica analogica: sistemi di elaborazione di segnali analogici vi(t) vo(t)=f[vi(t)] Sistema elettronico analogico vo(t)=A·vi(t) Esempio: amplificatore I segnali vi(t) e vo(t) per evitare distorsioni devono rimanere in ogni istante all’interno dell’intervallo di variazione caratteristico del funzionamento lineare del sistema vo(t)=A·vi(t) intervallo di variazione vi(t) t 3
Il segnale digitale approssima Segnale digitale: variabile discreta assume un numero finito di valori entro l’intervallo di variazione v Il segnale digitale approssima il segnale analogico intervallo di variazione t intervallo di campionamento L’approssimazione migliora al crescere del numero di valori discreti in cui viene suddiviso l’intervallo di variazione e l’intervallo di campionamento temporale 4
Per comunicare con il mondo analogico ... Mondo digitale Sistema elettronico digitale (elaboratore) Ingressi digitali Uscite digitali Per comunicare con il mondo analogico ... Sistema elettronico digitale (elaboratore) segnale analogico (sensor output) segnale analogico (actuator input) Convertitore A/D Convertitore D/A Teorema del campionamento (Nyquist): Ts = 1/(2×fmax) Discretizzazione del tempo e delle ampiezze dei segnali 8
Convertitore Analogico/Digitale (A/D) Sample&Hold Quantizzatore B1 A A* B2 B3 (A/D) REF Bn A* Valori continui tempo-discreti B Valori discreti tempo-discreti Classificazione dei convertitori A/D a contatore a integrazione ad approssimazioni successive paralleli
Convertitore Digitale/Analogico (D/A) B1 B2 Segnale Digitale (binario) B3 D/A Segnale Analogico Bn REF (riferimento analogico) f(B) = caratteristica di conversione (lineare o non lineare) Caso lineare:
Il segnale binario assume nominalmente due soli valori e costituisce quindi il caso piu’ elementare di segnale discreto. La quasi totalità delle apparecchiature digitali impiega segnali binari. Occorrono ovviamente più segnali binari per sostituire un segnale discreto La forma d’onda del segnale binario raramente presenta un’alternanza di due soli valori (continuità della grandezza fisica impiegata, disturbi, …) All’interno dell’intervallo di variabilità sono definiti a priori due distinti valori di soglia, H e L; normalmente il valore dei segnali è sopra H o sotto L. Il passaggio nella fascia intermedia di valori avviene con rapidi transitori, detti “fronti di salita” e “fronti di discesa”. G H L t G H Fronte di salita Fronte di discesa L t 5
Esempio: controllo livello liquido in un serbatoio a) analogico b) digitale Vcc Vcc va (t) vd (t) massa massa va , vd Vcc 3 2 1 t 10
Sistema elettronico digitale Digit di ingresso Sistema elettronico digitale (elaboratore) Digit di uscita Sistema elettronico digitale combinatorio: il digit di uscita all’istante t dipende dai digit di ingresso allo stesso istante t. Sistema elettronico digitale sequenziale: il digit di uscita all’istante t dipende e dai digit di ingresso allo stesso istante t e dai digit di ingresso agli istanti precedenti. Presuppone l’esistenza di circuiti di memorizzazione dei dati. I sistemi sequenziali possono essere ulteriormente classificati in: Sistemi asincroni, ovvero privi di ogni riferimento temporale. Sistemi sincroni, nei quali invece i segnali possono cambiare solo in corrispondenza di istanti di tempo prefissati e, di norma, ugualmente intervallati. 9
Vantaggi approssimazione (approccio) digitale: maggiore immunità ai disturbi, sia in fase di acquisizione che di trasmissione dei dati facilità di elaborazione numerica e di memorizzazione del segnale bassi costi dell’elettronica integrata digitale versatilità e programmabilità margine d’immunità ai disturbi 000 001 010 011 100 101 110 111 12
APPENDICE A.1. Sistemi di numerazione a) sistema decimale: numerazione a base 10 Cifre (digits): CiÎ 0, 1, 2, …9. Numero10 : Alla posizione della cifra nel numero è associato un peso decimale Esempio (numero intero): migliaia centinaia decine unità Esempio (numero frazionario decimale): decine unità decimi centesimi Esiste una infinita possibilità di sviluppare diversi sistemi di numerazione modificando la scelta della base. Di fatto si usano un numero limitato di sistemi di numerazione 13
b) sistema binario: numerazione a base 2 Cifre CiÎ 0, 1. Binary digit=Bit=informazione elementare Numero2: Alla posizione della cifra nel numero è associato un peso binario Esempio (numero intero): Esempio (numero frazionario): Il sistema binario è particolarmente vantaggioso per semplificare la realizzazione dei circuiti elettronici di elaborazione numerica e per interfacciarsi con calcolatori e microprocessori 14
c) sistema ottale: numerazione a base 8 Cifre CiÎ 0, 1,…, 7. Numero: esempio: d) sistema esadecimale: numerazione a base 16 Cifre CiÎ 0, 1,…, 9, A, B, C, D, E, F. Numero: esempio: 15
Conversione fra i diversi sistemi di numerazione Regola generale: conversione del numero reale a (maggiore di 1) in base b=10 nel corrispondente numero reale c in base d. c si ottiene dividendo a per d. I resti ad ogni passo della divisione rappresentano le cifre di c. Esempio: convertire 2710 nel suo equivalente in base 2 in questo caso: c=?; a=27(decimale >1); b=10; d=2 27:2=13 resto 1 ( bit meno significativo: peso 20 ) 13:2=6 resto 1 ( peso 21 ) 6:2=3 resto 0 ( peso 22 ) 3:2=1 resto 1 ( peso 23 ) 1:2=0 resto 1 ( bit più significativo: peso 24 ) per cui: 2710=110112 (=1´ 24+ 1´ 23+ 0´ 22+ 1´ 21+ 1´ 20 ) 16
conversione del numero reale a (minore di 1) in base b=10 Regola generale: conversione del numero reale a (minore di 1) in base b=10 nel corrispondente numero reale c in base d. c si ottiene moltiplicando a per d. Le parti intere ad ogni passo della moltiplicazione rappresentano le cifre di c. Esempio: convertire 0.37510 nel suo equivalente in base 2 in questo caso: c=?; a=0.375(decimale <1); b=10; d=2 0.375×2 = 0.750 parte intera 0; parte frazionaria 0.750; ( peso 2- 1 ) 0.750×2 = 1.500 parte intera 1; parte frazionaria 0.500; ( peso 2- 2 ) 0.500×2 = 1.000 parte intera 1; parte frazionaria 0.000; ( peso 2- 3 ) per cui: 0.37510=0.0112 (=0+0´ 2- 1 + 1´ 2- 2 + 1´ 2- 3) Per convertire un numero frazionario, basta procedere separatamente alla conversione della parte intera e della parte frazionaria Analogamente per le conversioni da decimale in altri sistemi numerici 17
Esempio 1: convertire 11910 nel suo equivalente in base 8 in questo caso: c=?; a=119; b=10; d=8 119:8=14 resto 7 ( bit meno significativo: peso 80 ) 14:8=1 resto 6 ( peso 81 ) 1:8=0 resto 1 ( bit più significativo: peso 82 ) per cui: 11910=1678 ( =1´ 82+ 6´ 81+ 7´ 80 ) Esempio 2: convertire 93310 nel suo equivalente in base 16 in questo caso: c=?; a=933; b=10; d=16 933:16=58 resto 5 ( bit meno significativo: peso 160 ) 58:16=3 resto 10º A ( peso 161 ) 3:16=0 resto 3 ( bit più significativo: peso 162 ) per cui: 93310=3A516 ( =3´ 162+ A´ 161+ 3´ 160 ) 18
Esempio 3: convertire 207.87410 nel suo equivalente in base 2 Parte intera 207:2=103 resto 1 ( peso 20 ) 103:2=51 resto 1 ( peso 21 ) 51:2=25 resto 1 ( peso 22) 25:2=12 resto 1 ( peso 23) 12:2= 6 resto 0 ( peso 24) 6:2= 3 resto 0 ( peso 25) 3:2= 1 resto 1 ( peso 26) 1:2= 0 resto 1 ( peso 27) Parte frazionaria 0.874x2=0.748 parte intera 1 ( peso 2-1 ) 0.748x2=0.496 parte intera 1 ( peso 2-2) 0.496x2=0.992 parte intera 0 ( peso 2-3) 0.984x2=0.968 parte intera 1 ( peso 2-4) 0.968x2=0.936 parte intera 1 ( peso 2-5) 0.936x2=0.872 parte intera 1 ( peso 2-6) 0.872x2=0.744 parte intera 1 ( peso 2-7) 0.744x2=0.488 parte intera 1 ( peso 2-8) ... troncamento alla ottava cifra dopo la virgola per cui: 207.87410=11001111.110111112
Esempio 4: convertire 40.310 nel suo equivalente in base 16 Parte intera 40:16=2 resto 8 ( bit meno significativo: peso 160 ) 2:16=0 resto 2 ( bit più significativo: peso 161 ) Parte frazionaria 0.3x16=0.8 parte intera 4 ( bit più significativo: peso 16-1) 0.8x16=0.8 parte intera 12 = C ( peso 16-2) 0.8x16=0.8 parte intera 12 = C ( peso 16-3) periodico ... ... troncamento alla terza cifra dopo la virgola per cui: 40.310=28.4CC16
{ { { { { { Esempio 5: convertire il numero binario 10110110010001102 nel suo equivalente in base 8. Raggruppare le cifre in gruppi di tre partendo da destra, completando l’ultimo terzetto a sinistra con degli zeri se necessario: 001 011 011 001 000 1102 Convertire i terzetti binari nel loro equivalente in base 8: 1 3 3 1 0 6 10110110010001102 = 1331068 { { { { { {
{ { { { Esempio 6: convertire il numero binario 10110110010001102 nel suo equivalente in base 16. Raggruppare le cifre in gruppi di quattro partendo da destra, completando l’ultimo quartetto a sinistra con degli zeri se necessario: 1011 0110 0100 01102 Convertire i quartetti binari nel loro equivalente in base 16: 1011 0110 0100 01102 B 6 4 6 10110110010001102 = B64616 { { { {
Appendice A.2. Sistema binario sistema di numerazione a base 2 Cifre CiÎ 0, 1. Binary digit=Bit=informazione elementare Numero2: sequenza ordinata di bits I numeri binari sono convenzionalmente suddivisi in gruppi di 4 bits Con 4 bits (nibble) si conta da 0 ad 1111 (da 0 a 15 in decimale) Con 8 bits (byte) si conta da 0 ad 11111111 (da 0 a 255 in decimale) Con 16 bits (word) si conta da 0 a 1111111111111111 (da 0 a 65535 in decimale) max. numero decimale rappresentabile con n bit E’ possibile sviluppare una matematica binaria e definire regole di calcolo in binario in analogia al sistema decimale (Algebra di Boole) 19
Sistema binario: operazioni aritmetiche elementari Si applicano regole formalmente analoghe al sistema decimale a) somma di due numeri binari: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 con riporto 1 Esempio: 1012+1112= ? 1 1 riporto 1 0 1+ 1 1 1= 1 1 0 0 b) sottrazione di due numeri binari: 0 – 0 = 0 1 – 0 = 1 1 – 1 = 0 0 – 1 = 1 con resto 1 Esempio: 10012 – 1112=? 1 1 prestito 1 0 0 1 – 0 1 1 1= 0 0 1 0 20
c) moltiplicazione di due numeri binari: Esempio:1012 ´ 102=? 0 ´ 0 = 0 1 ´ 0 = 0 0 ´ 1 = 0 1 ´ 1 = 1 1 0 1 ´ 1 0 = 0 0 0 1 0 1 1 0 1 0 d) La divisione di due numeri binari non e’ immediata e si basa sul seguente procedimento: si pone il divisore sotto il dividendo in modo che le cifre piu’ significative coincidano; si confronta il divisore con la porzione del dividendo equivalente; se questa porzione e’ maggiore o uguale al divindendo, si scrive un 1 nel quoziente e il divisore e’ sottratto alla porzione del dividendo, altrimenti si pone uno zero nel quoziente; altrimenti si scrive uno 0 nel quoziente. 21
si sposta il divisore di una posizione verso destra e si ripete la procedura finche’ la cifra meno significativa del divisore e’ allineata con la cifra meno significativa del dividendo. Esempio: 10012 : 112=? Dividendo 1 0 0 1 0 1 1 Quoziente A Divisore 1 1 Dividend o 1 0 0 1 B Divisore 1 1 Sottrazione 0 1 Dividend o 0 1 1 C Divisore 1 1 Sottrazione 0 Resto
La moltiplicazione (divisione) è riconducibile ad una semplice operazione di scorrimento o shift a sinistra (destra) di m posizioni del moltiplicando (dividendo) nel caso in cui il valore del moltiplicatore (divisore) coincida con una potenza intera m della base (2). Esempi: 1012 ´ 102 = 10102 scorrimento a sinistra di una posizione 11102 ´ 1002 = 1110002 scorrimento a sinistra di due posizioni 1010102 : 102 = 101012 scorrimento a destra di una posizione 10112 : 10002 = 1.0112 scorrimento a destra di tre posizioni
Rappresentazione numeri negativi a) bit di segno rappresentazione modulo preceduta dal bit di segno: 0 per + 1 per – Esempio: +4510 = 0 101101 – 4510 = 1 101101 bit di segno bit di modulo Con questa convenzione una parola di 8 bit (di cui uno di segno e sette di modulo) può rappresentare numeri decimali interi nell’intervallo: 22
b) complemento ad 1 di un numero binario Il complemento ad 1 di un numero binario N2 ad n cifre si ottiene sottraendo il numero stesso da (2n–1). In formule: Esempio: N2=101 complemento ad 1: (23–1) – 101= (1000 –1) – 101=111 – 101=010 Esempio: N2 =10110 complemento ad 1: (25–1) – 10110 = 11111 – 10110=01001 Cambia ogni cifra del numero binario con il suo opposto: 0 per 1 1 per 0 Esempio: N2 = 101101 (= 4510 ); complemento ad 1: 010010 N2 = 100100 (= 3610 ); complemento ad 1: 011011 23
c) complemento a 2 di un numero binario Il complemento a 2 di un numero binario N ad n cifre si ottiene sottraendo il numero stesso da 2n. In formula: Esempio: N2=101 complemento a 2: 23– 101= 1000 –101= 011 Esempio: N2=10110 complemento ad 1: 25 – 10110 = 100000 - 10110 = 01010 Si copia ogni cifra del numero binario partendo dall’ultimo bit (bit meno significativo) fino al primo 1 incluso, quindi si procede sostituendo i bit successivi con il loro opposto: 0 per 1 e 1 per 0 Esempio: N2= 101101(= 4510 ); complemento a 2: 010011 N2= 100100(= 3610 ); complemento a 2: 011100 24
il numero binario negativo viene rappresentato dal suo compl. a 2 Convenzione: il numero binario negativo viene rappresentato dal suo compl. a 2 Esempio: +1110 = 0 1011 0 1011 – 610 = 1 0110 1 1010 +1010 = 0 1010 0 1010 – 1410 = 1 1110 1 0010 In questa convenzione la somma algebrica tra due numeri binari si effettua sommando i due numeri, incluso il bit di segno Esempio: +1110 = 0 1011 + 1010 = 0 1010 – 610 = 1 1010 – 1410 = 1 0010 +510 = 0 0101 –410 = 1 1100 complemento a 2 di –410 25
L’utilizzo della rappresentazione convenzionale in complemento a 2 del numero binario negativo si rivela in generale vantaggiosa, poiché semplifica la realizzazione dei circuiti elettronici di elaborazione nel sistema binario (basta realizzare circuiti sommatori). Esempio: + 310 = 0 0011 0 0011 – 610 = 1 0110 1 1010 1 1101 complemento a 2 di –310 Esempio: + 710 = 0 0111 0 0111 – 810 = 1 1000 1 1000 1 1111 complemento a 2 di –110 26
Esempio: – 310 = 1 0011 1 1101 – 510 = 1 0101 1 1011 1 1000 complemento a 2 di –810 Esempio: + 2.7510 = 0 10.11 0 10.11 – 0.5010 = 1 00.10 1 11.10 0 10.01 (=2.2510) Esempio: + 1.12510 = 0 01.001 0 01.001 – 3.37510 = 1 11.011 1 00.101 1 01.110 complemento a 2 di 1 10.0102 = –2.2510 27
Appendice A.3. Codici E’ denominato Codice Binario ogni regola che stabilisce una funzione dall’insieme formato dalle configurazioni binarie di N bit ad un insieme costituito da simboli, oggetti, o da eventi mutuamente esclusivi. Proprieta’ dei codici binari: non si devono utilizzare necessariamente tutte le possibili configurazioni di N bit; la stessa informazione può essere associata a più configurazioni, ma ogni configurazione utilizzata deve avere significato univoco; per stabilire un codice è necessario che il numero delle configurazioni rese disponibili dagli N bit di codifica sia maggiore o uguale al numero M degli elementi dell’insieme che si vuole rappresentare, ovvero: NMIN = il più piccolo intero superiore a log2 M 28
Rappresentazioni convenzionali di numeri decimali con numeri binari A) codice BCD (Binary Coded Decimal), detto anche 8-4-2-1, dal valore dei pesi: NBCD=b3b2b1b0= 8´b3+ 4´b2 + 2´b1 + 1´b0 Le singole cifre decimali vengono rappresentate da 4 cifre binarie 9 2 5 decimale Esempio: 92510 1001 0010 0101 Codice BCD B) codice Gray Le singole cifre decimali vengono rappresentate da cifre binarie che variano sempre di un solo bit nel procedere con il conteggio: Decimale : 0 1 2 3 4 5 6 7 8 9 Binario: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Gray: 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 Altri codici vengono utilizzati per specifiche applicazioni.
Esempio: Calcolatrice tascabile Ingresso operandi Esecuzione operazione Uscita risultato Codice 1 su 10 Codice BCD Codice a 7 segmenti a f b g e c d
Esempio: Position encoders ottici (trasduttori che forniscono in forma digitale ed in parallelo la posizione angolare di un albero rotante). N corone circolari, 2N tacche opache e trasparenti, disposte secondo il codice Gray (variazione di un solo bit nella codifica di settori contigui) Esempio (3 bit) 31