Salta al contenuto
Note per Studenti Porte logiche, ritardi e porte universali

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 nn ingressi la tabella ha 2n2^n righe.

AND (congiunzione, prodotto logico; Z=X⋅Y=XY=X∧YZ=X\cdot Y=XY=X\land Y): Z=1Z=1 se e solo se tutti gli ingressi valgono 1.

OR (disgiunzione, somma logica; Z=X+Y=X∨YZ=X+Y=X\lor Y): Z=1Z=1 se almeno uno degli ingressi vale 1.

NOT (negazione, inverter; Z=X‾=X′Z=\overline X=X'): Z=1Z=1 se X=0X=0.

XX YY 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: A+BC=A+(B⋅C)A+BC=A+(B\cdot C). Conviene comunque usare le parentesi.

Le porte derivate

  • NAND = NOT(AND): Z=XY‾Z=\overline{XY}; vale 0 solo se tutti gli ingressi sono 1.
  • NOR = NOT(OR): Z=X+Y‾Z=\overline{X+Y}; vale 1 solo se tutti gli ingressi sono 0.
  • XOR (OR esclusivo, Z=X⊕YZ=X\oplus Y): 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 111111 (1 riga su 8). OR a 6 ingressi: l'uscita è 0 solo per 000000000000 (1 riga su 64). XOR a più ingressi: A⊕B⊕C=1A\oplus B\oplus C=1 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: 1⊕0⊕1=01\oplus0\oplus1=0 (due 1, numero pari).

Proprietà utili dello XOR: X⊕0=XX\oplus0=X, X⊕1=X‾X\oplus1=\overline X, X⊕X=0X\oplus X=0, X⊕X‾=1X\oplus\overline X=1; è commutativo e associativo. Per questo X⊕1X\oplus1 "complementa" un bit e X⊕0X\oplus0 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 xx e un segnale binario sull'asse yy: 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 tGt_G (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 0→10\to1 in uscita (tpLHt_{pLH}) è diverso da quello per 1→01\to0 (tpHLt_{pHL}), e dipende da quale ingresso commuta; per semplicità si assume spesso tpLH=tpHL=tGt_{pLH}=t_{pHL}=t_G.

Esempio. Porta AND con tG=2 nst_G=2\,\mathrm{ns}. AA vale 1 tra 1010 e 40 ns40\,\mathrm{ns} (0 altrove); BB vale 1 tra 2020 e 60 ns60\,\mathrm{ns}. Il prodotto ideale A⋅BA\cdot B è 1 tra 2020 e 40 ns40\,\mathrm{ns} (quando entrambi sono 1). Con il ritardo l'uscita sale a 22 ns22\,\mathrm{ns} e scende a 42 ns42\,\mathrm{ns}: stessa forma, spostata di tGt_G.

istante (ns) 0 10 20 22 40 42 60
AA 0 1 1 1 0 0 0
BB 0 0 1 1 1 1 0
YY (ideale) 0 0 1 1 0 0 0
YY (con tG=2t_G=2) 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. {AND,OR,NOT}\{AND, OR, NOT\} lo è per definizione; NAND da sola lo è, e NOR da sola lo è.

Con NAND (un inverter è una NAND con gli ingressi cortocircuitati):

  • NOT: X‾=X⋅X‾\overline X=\overline{X\cdot X} (1 NAND);
  • AND: X⋅Y=XY‾‾X\cdot Y=\overline{\overline{XY}}, cioè una NAND seguita da un inverter (2 NAND);
  • OR: X+Y=X‾⋅Y‾‾X+Y=\overline{\overline X\cdot\overline Y} (De Morgan: due inverter e una NAND, 3 NAND).

Con NOR, dualmente: NOT == NOR con ingressi uniti; OR =X+Y‾‾=\overline{\overline{X+Y}} (2 NOR); AND X⋅Y=X‾+Y‾‾X\cdot Y=\overline{\overline X+\overline Y} (3 NOR).

Esempio: XOR con quattro NAND. Siano n1=ab‾n_1=\overline{ab}, n2=a n1‾n_2=\overline{a\,n_1}, n3=b n1‾n_3=\overline{b\,n_1}, y=n2n3‾y=\overline{n_2n_3}. Verifica (tutte le righe):

aa bb n1n_1 n2n_2 n3n_3 yy
0 0 1 1 1 0
0 1 1 1 0 1
1 0 1 0 1 1
1 1 0 1 1 0

y=a⊕by=a\oplus b ✓. 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

Esercizi su questo argomento

Teoria collegata