Rappresentazione dei numeri e dell'informazione
In questa pagina 7
Un sistema digitale manipola solo bit (Segnali digitali, livelli logici e margini di rumoreUn segnale digitale assume un insieme finito di valori (di solito due: bit, tipicamente 0 V e V_DD); con N bit si distinguono 2^N livelli. Il valore logico di un'uscita è garantito sopra V_OH (uno) e sotto V_OL (zero); un ingresso è letto come uno sopra V_IH e come zero sotto V_IL, con intervalli di ingresso più larghi di quelli di uscita. I margini di rumore sono NM_H = V_OH − V_IH e NM_L = V_IL − V_OL. La caratteristica di trasferimento statica (VTC) ha la soglia logica V_M (V_out = V_in); V_IL e V_IH sono i punti a pendenza −1. La proprietà rigenerativa (pendenza alta nella zona di transizione, guadagno maggiore di 1) ripulisce il segnale a ogni stadio ed è legata alla bistabilità della coppia di inverter in retroazione. Altre figure di merito: fan-in, fan-out, tempi di propagazione, potenza, costo.Segnali digitali, livelli logici e margini di rumore →): ogni informazione (un numero, una lettera, un colore) deve essere tradotta in una stringa di bit con una convenzione condivisa. Il programma prevede la rappresentazione di dati numerici e di informazioni complesse; qui si raccolgono le codifiche che servono in tutto il corso (sommatori, ALU, display, convertitori VHDL).
Numeri senza segno
Con bit il valore è e l'intervallo rappresentabile è . Il bit è il più significativo (MSB), il meno significativo (LSB).
- Conversione in binario: divisioni successive per , leggendo i resti dall'ultimo al primo. .
- Esadecimale: 16 simboli –, –; ogni cifra equivale a un gruppo di bit (nibble). . Compare ovunque (indirizzi, display a 7 segmenti, VHDL:
X"B35"). - Quantità: : –; : – (quattro cifre decimali bastano); : –.
Numeri con segno: complemento a due
Nel complemento a due su bit il bit più significativo ha peso negativo: Con : da a . Il motivo per cui è la scelta universale è che somma e sottrazione usano lo stesso sommatore degli interi senza segno, ignorando il riporto finale.
- Negare un numero: si invertono tutti i bit e si somma . ; invertendo ; sommando : (controllo: ).
- Estensione di segno: per passare da a bit si replica l'MSB: su bit non esiste, su bit diventa su .
- Sottrazione : è la riga
A + (not B) + 1dell'ALU di esempio (Blocchi logici di un microprocessore - ALU, bus e logica tri-stateUn microprocessore semplice è formato da un'unità di controllo (decodifica le istruzioni e abilita gli altri blocchi), una ALU (operazioni aritmetiche e logiche), la memoria e i registri, collegati da bus (linee condivise unidirezionali o bidirezionali). La ALU combina un sommatore con un'unità logica e un multiplexer di selezione dell'operazione: la sottrazione è A + B̄ + 1 (XOR su B e riporto in ingresso a 1), le flag (zero, riporto, segno, overflow) descrivono il risultato. Un bus è una linea pilotata da più sorgenti: per evitare conflitti ogni uscita collegata è tri-state (il segnale enable la mette in alta impedenza) oppure open-drain (solo PDN: ciascuna può imporre 0, serve un pull-up per l'1).Blocchi logici di un microprocessore - ALU, bus e logica tri-state →). - Overflow: il risultato esce dall'intervallo quando due operandi dello stesso segno danno un risultato di segno opposto (su bit: dà ).
BCD (Binary Coded Decimal)
Nel BCD ogni cifra decimale è codificata con bit (valori –; gli altri sei non sono ammessi). diventa (cifra e cifra ), : occupa più bit del binario puro ( contro ), ma ogni gruppo si manda direttamente a un decoder per display a 7 segmenti.
Conversione binario BCD (double dabble). Si scorre il binario a sinistra un bit alla volta nel registro BCD; prima di ogni shift, se un gruppo di bit del BCD è maggiore di , gli si somma . Il motivo: un gruppo che vale raddoppiato darebbe (non ammesso in BCD), mentre , cioè una decina e zero unità; per un gruppo il doppio è e non crea problemi. Per (8 passi):
| passo | BCD (centinaia, decine, unità) | binario che resta |
|---|---|---|
| 1 | 0000 0000 0001 | 0011 1000 |
| 2 | 0000 0000 0010 | 0111 0000 |
| 3 | 0000 0000 0100 | 1110 0000 |
| 4 | 0000 0000 1001 | 1100 0000 |
| 5 | 0000 0001 1001 | 1000 0000 |
| 6 | 0000 0011 1001 | 0000 0000 |
| 7 | 0000 0111 1000 | 0000 0000 |
| 8 | 0001 0101 0110 | 0000 0000 |
Dopo passi il registro BCD contiene il valore decimale dei primi bit del numero (dopo passi , dopo passi ). Al passo le unità valgono e non si correggono; al passo valgono e prima dello shift diventano , da cui . All'ultimo passo unità e decine prima dello shift, che produce . Per convertire bit servono gruppi BCD () e passi: nel laboratorio si usa per mostrare un numero su quattro display.
Codice Gray
Nel codice Gray due valori consecutivi differiscono per un solo bit: . Per bit: . Serve dove un conteggio potrebbe essere letto durante una transizione (codificatori ottici, contatori che attraversano domini di clock diversi): in binario il passaggio cambia tre bit, e con tempi diversi si potrebbe leggere o ; in Gray si legge sempre o il vecchio o il nuovo valore.
Numeri frazionari: virgola fissa
In virgola fissa il punto decimale ha posizione stabilita a priori: con bit frazionari il numero rappresentato è l'intero diviso . Un sensore di temperatura che restituisce un dato a bit (segno, bit di parte intera, bit di parte frazionaria) ha una risoluzione di . Il dato ha parte intera e parte frazionaria , cioè : . Per mostrarla in decimale la parte frazionaria va rimappata su – (moltiplicando per : ) e poi convertita in BCD.
Altre codifiche
- ASCII: bit per carattere (, la cifra è ).
- Bit di parità: un bit aggiunto in modo che il numero di sia pari (o dispari): rivela un errore su un singolo bit (non lo corregge).
- Codici one-hot: una linea per valore (la codifica di molte macchine a stati e dei decoder di riga: Memorie a semiconduttore - struttura a matrice, decoder e ROMLe memorie a semiconduttore si classificano in lettura/scrittura (SRAM, DRAM: volatili) e sola lettura (ROM a maschera, PROM, EPROM, EEPROM, Flash: non volatili); l'accesso è casuale o non casuale (FIFO, registri a scorrimento, CAM). La struttura è a matrice di celle: una word line (WL) seleziona una riga attraverso il decoder di riga (N indirizzi → 2^N WL), una bit line (BL) porta il dato alla colonna scelta dal decoder/multiplexer di colonna e dal sense amplifier. La ROM a NOR ha per ogni bit line un p-MOS di carico e n-MOS dove il bit è 0 (con WL alta tirano la BL a massa): compatta e veloce; la ROM a NAND ha serie di n-MOS ed è molto più piccola ma più lenta. Ritardo di una WL: R del polisilicio × C dei gate (Elmore); di una BL: C dei drain con la R dei transistor o del carico.Memorie a semiconduttore - struttura a matrice, decoder e ROM →).
Errori comuni
- Dimenticare che nel complemento a due l'intervallo è asimmetrico ( esiste, no su bit) e che dà ancora .
- Applicare la correzione dopo lo shift invece che prima.
- Leggere un BCD come binario: è (BCD) ma come binario.
- Confondere LSB e MSB (nel testo di alcune prove il vettore ha l'LSB a sinistra).
Versione ripasso
- Senza segno: bit ; esadecimale = gruppi di bit ().
- Complemento a due: , range ; negazione = inverti + (); estensione di segno = replica dell'MSB; ; overflow se due operandi dello stesso segno danno segno opposto ( su bit).
- BCD: 4 bit per cifra (); . Double dabble: shift a sinistra; prima di ogni shift ogni gruppo riceve ; bit passi (13 bit: 4 gruppi).
- Gray: , un solo bit cambia; evita letture errate durante le transizioni.
- Virgola fissa: intero (4 bit frazionari: ; , mappato su –: ); ASCII (7 bit), bit di parità.
- Errori: asimmetria del range, correzione dopo lo shift, BCD letto come binario, LSB/MSB scambiati.