Porte logiche, ritardi e porte universali
In questa pagina 6
Un circuito digitale è fatto di porte logiche (logic gates): ognuna svolge un'operazione logica sui segnali binari in ingresso e produce un'uscita binaria. Realizzate con transistor (Porte CMOS e parametri tecnologici dei circuiti integratiNei circuiti integrati digitali (CMOS) i MOSFET si modellano come interruttori: nMOS chiuso se il gate vale 1, pMOS chiuso se il gate vale 0. Una porta CMOS ha una rete di pull-up (PUN, solo pMOS) verso Vdd e una di pull-down (PDN, solo nMOS) verso massa, duali: una è ON e l'altra OFF. NAND: nMOS in serie e pMOS in parallelo; NOR: nMOS in parallelo e pMOS in serie; una porta a $n$ ingressi ha $2n$ transistor. Parametri: fan-in, fan-out, margine di rumore, ritardo di propagazione ($t_{pHL}$, $t_{pLH}$, limita la frequenza di clock), dissipazione di potenza, costo (area di silicio; costi NRE e di produzione).Porte CMOS e parametri tecnologici dei circuiti integrati →), a livello logico si trattano come funzioni.
Le tre porte fondamentali
Ogni funzione logica si descrive con la tabella di verità: l'elenco dei valori dell'uscita per tutte le combinazioni degli ingressi. Con ingressi la tabella ha righe.
AND (congiunzione, prodotto logico; ): se e solo se tutti gli ingressi valgono 1.
OR (disgiunzione, somma logica; ): se almeno uno degli ingressi vale 1.
NOT (negazione, inverter; ): se .
| AND | OR | NAND | NOR | XOR | XNOR | ||
|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |
AND ha la precedenza su OR, come la moltiplicazione sull'addizione: . Conviene comunque usare le parentesi.
Le porte derivate
- NAND = NOT(AND): ; vale 0 solo se tutti gli ingressi sono 1.
- NOR = NOT(OR): ; vale 1 solo se tutti gli ingressi sono 0.
- XOR (OR esclusivo, ): vale 1 se gli ingressi sono diversi.
- XNOR: complemento dello XOR; vale 1 se gli ingressi sono uguali.
Nei simboli un pallino (bubble) in uscita o in ingresso indica una negazione.
Una porta può avere più di due ingressi. AND a 3 ingressi: l'uscita è 1 solo per (1 riga su 8). OR a 6 ingressi: l'uscita è 0 solo per (1 riga su 64). XOR a più ingressi: se il numero di ingressi a 1 è dispari (funzione di disparità); il suo complemento (XNOR a più ingressi) vale 1 se gli 1 sono in numero pari (funzione di parità). Esempio: (due 1, numero pari).
Proprietà utili dello XOR: , , , ; è commutativo e associativo. Per questo "complementa" un bit e lo lascia invariato: la sottrazione binaria (Numeri con segno, complemento a 2, sottrazione e overflowSottrazione senza segno: se $M\ge N$ nessun prestito in uscita, altrimenti il risultato $M-N+2^n$ è scorretto. Complemento a 1: $2^n-1-N$ (inversione bit a bit); complemento a 2: $2^n-N=$ complemento a 1 $+1$. Numeri con segno: segno e modulo (due zeri, intervallo simmetrico) oppure complemento a 2 (un solo zero, da $-2^{n-1}$ a $2^{n-1}-1$, MSB di peso $-2^{n-1}$). In complemento a 2 somma e sottrazione sono la stessa addizione: $A-B=A+\overline B+1$, riporto in uscita scartato. Overflow: senza segno $\Leftrightarrow C_{out}=1$ nella somma; con segno $\Leftrightarrow C_{in,MSB}\ne C_{out,MSB}$ (due operandi dello stesso segno con risultato di segno opposto).Numeri con segno, complemento a 2, sottrazione e overflow →) usa XOR proprio per questo.
Porte in VHDL
Gli operatori predefiniti sono and, or, not, nand, nor, xor, xnor (VHDL - istruzioni concorrenti, process e testbenchLe istruzioni concorrenti VHDL sono l'assegnazione di segnale, when-else (logica prioritaria, condizioni valutate in ordine) e with-select (logica parallela: tutti i casi coperti da una sola scelta, others obbligatorio). Un process è un'istruzione concorrente il cui corpo è sequenziale (if, case, loop); parte quando cambia un segnale della sensitivity list (per la logica combinatoria: tutti gli ingressi); i segnali si aggiornano alla sospensione e vince l'ultima assegnazione. Un if senza else (o un caso non coperto) crea memoria non voluta. Il testbench è codice di simulazione con entity vuota, DUT istanziato e un process di stimoli con wait.VHDL - istruzioni concorrenti, process e testbench →). Per esempio y <= a nand b;. In VHDL le parentesi sono obbligatorie quando si mescolano operatori diversi (and e or hanno la stessa precedenza).
Diagramma temporale e ritardo di una porta
Un diagramma temporale ha il tempo sull'asse e un segnale binario sull'asse : mostra come evolve l'uscita al variare degli ingressi nel tempo. Una porta ideale ha ritardo nullo: l'uscita cambia nello stesso istante in cui cambia l'ingresso.
Una porta reale ha un tempo di ritardo (gate delay, tempo di propagazione): il tempo che trascorre da quando cambia almeno un ingresso a quando il cambiamento arriva all'uscita. Dipende dalla tecnologia, dalla tensione di alimentazione, dalla temperatura e dal carico pilotato (fan-out). In genere il ritardo per la commutazione in uscita () è diverso da quello per (), e dipende da quale ingresso commuta; per semplicità si assume spesso .
Esempio. Porta AND con . vale 1 tra e (0 altrove); vale 1 tra e . Il prodotto ideale è 1 tra e (quando entrambi sono 1). Con il ritardo l'uscita sale a e scende a : stessa forma, spostata di .
| istante (ns) | 0 | 10 | 20 | 22 | 40 | 42 | 60 |
|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 1 | 0 | 0 | 0 | |
| 0 | 0 | 1 | 1 | 1 | 1 | 0 | |
| (ideale) | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| (con ) | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
(Ogni colonna è il valore dopo l'evento di quell'istante.) Nei circuiti sequenziali i ritardi delle porte determinano la frequenza massima di funzionamento (Temporizzazione dei flip-flop - setup, hold e frequenza massima di clockUn flip-flop memorizza il dato corretto solo se l'ingresso è stabile per $t_s$ (setup) prima e $t_h$ (hold) dopo il fronte di clock; l'uscita cambia dopo il tempo di propagazione $t_{pd,FF}$ dal fronte. In un circuito sincrono il periodo deve soddisfare $T\ge t_{pd,FF}+t_{COMB}+t_{s,FF}+t_{slack}$, quindi $f_{max}=1/T_{min}$; abbassare la frequenza risolve le violazioni di setup. Il vincolo di hold $t_{pd,FF,min}+t_{COMB,min}\ge t_h$ non dipende dal clock (e non si risolve rallentandolo). Il clock skew modifica i vincoli.Temporizzazione dei flip-flop - setup, hold e frequenza massima di clock →).
Porte universali
Un insieme di porte è universale (o completo) se con esse si realizza ogni funzione booleana. lo è per definizione; NAND da sola lo è, e NOR da sola lo è.
Con NAND (un inverter è una NAND con gli ingressi cortocircuitati):
- NOT: (1 NAND);
- AND: , cioè una NAND seguita da un inverter (2 NAND);
- OR: (De Morgan: due inverter e una NAND, 3 NAND).
Con NOR, dualmente: NOT NOR con ingressi uniti; OR (2 NOR); AND (3 NOR).
Esempio: XOR con quattro NAND. Siano , , , . Verifica (tutte le righe):
| 0 | 0 | 1 | 1 | 1 | 0 |
| 0 | 1 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 | 1 | 0 |
✓. In tecnologia CMOS le NAND e le NOR sono più compatte e veloci delle AND e OR, quindi si realizzano di solito circuiti con sole NAND e NOR (Progettazione di una rete combinatoria - approccio gerarchico e porte NAND-NORUna rete combinatoria ha uscite che dipendono solo dagli ingressi presenti (nessuna memoria, nessuna retroazione); una sequenziale dipende anche dalla storia (stato, memoria, feedback). Progetto: specifiche, tabella di verità, funzione a costo minimo, diagramma logico, verifica. Con molti ingressi si usa l'approccio gerarchico (blocchi e sottoblocchi riusabili; regolarità). Blocchi base: funzioni di una variabile, vettori, enabling. Mappatura tecnologica: in CMOS NAND e NOR sono più compatte, quindi SOP $\to$ NAND-NAND e POS $\to$ NOR-NOR.Progettazione di una rete combinatoria - approccio gerarchico e porte NAND-NOR →).
Errori comuni
- Confondere XOR (1 se diversi) con OR (1 anche se entrambi 1).
- Dire che la NAND non realizza il NOT: lo realizza collegando insieme gli ingressi.
- Scordare che XOR a tre ingressi è la funzione di disparità, non "esattamente un 1".
- Trascurare il ritardo: nel diagramma temporale reale l'uscita non cambia nell'istante dell'ingresso.
Versione ripasso
- Fondamentali: AND ( se tutti ), OR ( se almeno un ), NOT. Derivate: NAND (0 solo se tutti 1), NOR (1 solo se tutti 0), XOR (1 se diversi), XNOR (1 se uguali). Tabella con righe.
- XOR a più ingressi = disparità (1 se gli 1 sono dispari); , . Esempio .
- VHDL:
and or not nand nor xor xnor. - Ritardo : l'uscita cambia dopo l'ingresso (AND con ns: ideale 20–40 ns, reale 22–42 ns); in generale (Temporizzazione dei flip-flop - setup, hold e frequenza massima di clockUn flip-flop memorizza il dato corretto solo se l'ingresso è stabile per $t_s$ (setup) prima e $t_h$ (hold) dopo il fronte di clock; l'uscita cambia dopo il tempo di propagazione $t_{pd,FF}$ dal fronte. In un circuito sincrono il periodo deve soddisfare $T\ge t_{pd,FF}+t_{COMB}+t_{s,FF}+t_{slack}$, quindi $f_{max}=1/T_{min}$; abbassare la frequenza risolve le violazioni di setup. Il vincolo di hold $t_{pd,FF,min}+t_{COMB,min}\ge t_h$ non dipende dal clock (e non si risolve rallentandolo). Il clock skew modifica i vincoli.Temporizzazione dei flip-flop - setup, hold e frequenza massima di clock →).
- Universali: NAND e NOR. NOT NAND con ingressi uniti; AND NAND + inverter; OR (3 NAND). XOR con 4 NAND: , , , .
- Errori: XOR vs OR; NAND "senza NOT"; ritardo ignorato.