Salta al contenuto
Note per Studenti Blocchi logici di un microprocessore - ALU, bus e logica tri-state

Blocchi logici di un microprocessore - ALU, bus e logica tri-state

In questa pagina 5

Il corso collega i circuiti CMOS ai sistemi digitali completi. Questa nota raccoglie i blocchi che compongono un microprocessore elementare, di cui le note successive sviluppano le parti aritmetiche (Sommatori - full adder e ripple-carryLa somma di due bit con riporto in ingresso è realizzata dal full adder: S = A ⊕ B ⊕ C_in, C_out = AB + BC_in + AC_in. Con generate G = AB, propagate P = A ⊕ B (e delete D = Ā B̄) si scrive C_out = G + P·C_in e S = P ⊕ C_in: G e P non dipendono dal riporto in ingresso (fase di set-up), solo C_out ed S ne dipendono. Il sommatore ripple-carry collega N full adder in cascata: il riporto attraversa gli stadi uno dopo l'altro, nel caso peggiore t_add = (N−1) t_carry + t_sum (lineare in N). Il ritardo effettivo dipende dagli operandi: un generate o un delete azzera la catena, un propagate la prolunga; per operandi uguali bit a bit vale t_carry + t_sum.Sommatori - full adder e ripple-carry →, Traslatori, comparatori e moltiplicatoriOltre ai sommatori, la ALU contiene traslatori (shifter), comparatori e moltiplicatori. Lo shift a sinistra di k posizioni moltiplica per 2^k; lo shift a destra aritmetico (con replica del bit di segno) divide per 2^k nel complemento a due; il barrel shifter realizza qualsiasi traslazione fino a N − 1 posizioni con log₂N livelli di multiplexer 2→1. Il comparatore di uguaglianza è l'AND delle XNOR bit a bit; quello di grandezza confronta partendo dal bit più significativo (GT = g_{N−1} + e_{N−1}(g_{N−2} + e_{N−2}(…))) oppure usa la sottrazione e le flag. Il moltiplicatore a matrice (array) forma N² prodotti parziali con porte AND e li somma con N(N−1) full adder; il ritardo cresce come 2N t_carry; moltiplicatori ad albero (Wallace) e sequenziali (shift-and-add) sono alternative; le FPGA hanno blocchi DSP dedicati.Traslatori, comparatori e moltiplicatori →) e programmabili (FPGA - LUT, slice e risorse della famiglia 7Una FPGA è una matrice di blocchi logici configurabili (CLB) immersi in una griglia di interconnessioni programmabili, con risorse dedicate: block RAM, blocchi DSP, gestione del clock (MMCM, PLL), blocchi di I/O e transceiver. La memoria di configurazione è SRAM. L'elemento base è la LUT: una memoria SRAM con 2^k celle che realizza una qualsiasi funzione di k ingressi (i segnali di selezione del multiplexer sono gli ingressi della funzione). Nella famiglia 7 di Xilinx un CLB ha 2 slice; uno slice ha 4 LUT a 6 ingressi (ciascuna divisibile in due LUT a 5), multiplexer larghi F7/F8 (funzioni a 7-8 ingressi), una catena di riporto veloce, 4 flip-flop/latch più 4 flip-flop. Nei SLICEM la LUT può essere usata come RAM distribuita o registro a scorrimento (SRL32), nei SLICEL solo come logica.FPGA - LUT, slice e risorse della famiglia 7 →).

Architettura di un microprocessore semplice

ALU

Una ALU esegue, secondo un codice di selezione SelSel, un'operazione su due operandi AA e BB di NN bit e produce il risultato e alcune flag. Tipica struttura: un sommatore (Sommatori - full adder e ripple-carryLa somma di due bit con riporto in ingresso è realizzata dal full adder: S = A ⊕ B ⊕ C_in, C_out = AB + BC_in + AC_in. Con generate G = AB, propagate P = A ⊕ B (e delete D = Ā B̄) si scrive C_out = G + P·C_in e S = P ⊕ C_in: G e P non dipendono dal riporto in ingresso (fase di set-up), solo C_out ed S ne dipendono. Il sommatore ripple-carry collega N full adder in cascata: il riporto attraversa gli stadi uno dopo l'altro, nel caso peggiore t_add = (N−1) t_carry + t_sum (lineare in N). Il ritardo effettivo dipende dagli operandi: un generate o un delete azzera la catena, un propagate la prolunga; per operandi uguali bit a bit vale t_carry + t_sum.Sommatori - full adder e ripple-carry →), un'unità logica (AND, OR, XOR, NOT bit a bit, in parallelo) e un multiplexer che sceglie l'uscita. In VHDL (esempio di laboratorio, N=2N=2): Sel="00" somma (A+BA+B), "01" sottrazione (A+B‾+1A+\overline B+1), "10" AND, "11" OR.

Sottrazione. In complemento a due A−B=A+B‾+1A-B=A+\overline B+1 (Rappresentazione dei numeri e dell'informazioneUn'informazione digitale è una stringa di bit. Numeri senza segno: N bit rappresentano 0…2^N − 1; in esadecimale ogni cifra raggruppa 4 bit. Numeri con segno: complemento a due (range −2^(N−1)…2^(N−1) − 1; si nega invertendo i bit e sommando 1; il bit più significativo è il segno e l'estensione di segno lo replica). Il BCD codifica ogni cifra decimale con 4 bit (0…9) e si ottiene dal binario con l'algoritmo double dabble (shift a sinistra, e +3 a ogni gruppo maggiore di 4 prima dello shift). Il codice Gray cambia un solo bit tra valori consecutivi. I numeri frazionari si trattano in virgola fissa (4 bit di parte frazionaria = multipli di 1/16), i caratteri in ASCII, gli errori con un bit di parità.Rappresentazione dei numeri e dell'informazione →): si usano gli stessi sommatori, con una porta XOR su ogni ingresso BiB_i comandata da un segnale "sottrai" (che inverte BB quando vale 11) e lo stesso segnale come riporto in ingresso CinC_{in}.

Esempio (N=4N=4). A=0110A=0110 (66), B=0011B=0011 (33): somma 10011001 (99); sottrazione: B‾=1100\overline B=1100, 0110+1100+1=1 00110110+1100+1=1\,0011, risultato 00110011 (33) con riporto 11; AND: 00100010; OR: 01110111.

Flag:

Condivisione del bus

Su un bus più sorgenti (registri, memoria, ALU) possono trasmettere in momenti diversi sulla stessa linea. Se due uscite CMOS statiche pilotano la stessa linea con valori diversi, si crea un cammino diretto tra VDDV_{DD} e massa attraverso i due driver: conflitto (contention), che produce una tensione intermedia (non un livello logico valido) e corrente elevata (come in Esercizio 5 · NAND e NOR con soglia logica assegnata, ritardi, potenza e uscite in contrasto (tema d'esame luglio 2025), dove NAND e NOR hanno le uscite cortocircuitate). Servono quindi uscite che possano staccarsi dal bus.

Logica tri-state (three-state)

Si aggiunge un segnale di enable (en) che abilita la porta a imporre il valore logico di uscita; se non abilitata l'uscita è flottante (alta impedenza, ZZ). L'inverter tri-state ha, tra VDDV_{DD} e massa, in serie: un p-MOS comandato da en‾\overline{en}, un p-MOS comandato da AA, l'uscita, un n-MOS comandato da AA e un n-MOS comandato da enen:

Logica open-drain

Le porte che pilotano il bus hanno solo la PDN (un n-MOS verso massa, senza p-MOS): possono solo imporre uno 0. Una o più porte possono imporre 00 sul bus senza conflitti (la corrente scorre verso massa attraverso più n-MOS in parallelo); se tutte lasciano il bus, serve un pull-up (resistenza o p-MOS di carico) che lo porta a 11. Il bus è quindi l'AND cablato delle uscite (wired-AND): basta uno 00 per avere 00. Il prezzo è il consumo statico quando il bus è basso e il ritardo di salita del pull-up (Logica pseudo-nMOS e logiche a caricoNella logica pseudo-nMOS (a rapporto, ratioed) la PUN della CMOS complementare è sostituita da un solo p-MOS con gate a massa, sempre acceso, che fa da carico per la PDN a n-MOS. Così servono N+1 transistor invece di 2N e la capacità di ingresso è minore, ma l'uscita bassa non è 0: V_OL si ricava uguagliando la corrente dell'n-MOS (zona lineare) a quella del p-MOS (saturazione), ed esiste potenza statica quando l'uscita è bassa (P = V_DD·I). V_OH = V_DD. Per V_OL piccola serve Z_n ≫ Z_p; il ritardo di salita è lento (carica solo il p-MOS debole: t_pLH = 0,69 R_p C_L), quello di discesa è più veloce (t_pHL ≈ 0,69 R_n C_L). Lo stesso schema (carichi p-MOS a massa) si ritrova nelle ROM a NOR.Logica pseudo-nMOS e logiche a carico →).

Decoder e multiplexer come blocchi

Errori comuni

  • Collegare due uscite push-pull alla stessa linea senza tri-state: conflitto e corrente di cortocircuito.
  • Confondere ZZ con 00: l'uscita in alta impedenza non è né 00 né 11.
  • Scrivere la sottrazione come A+B‾A+\overline B senza il +1+1.
  • Confondere le flag CC (senza segno) e VV (con segno).
  • Dimenticare il pull-up nel bus open-drain.

Versione ripasso

  • Architettura: unità di controllo (decodifica, abilita), ALU, memoria/registri, bus unidirezionali o bidirezionali.
  • ALU: sommatore + unità logica + mux; SelSel: somma, sottrazione, AND, OR. Sottrazione: A+B‾+1A+\overline B+1 (XOR su BB, Cin=1C_{in}=1). Esempio 44 bit: 0110±00110110\pm0011: 10011001, 00110011 (riporto 11); AND 00100010; OR 01110111. Flag: Z, C, N, V (0110+0101=10110110+0101=1011: overflow, V=CN−1⊕CNV=C_{N-1}\oplus C_N).
  • Bus: conflitto se due push-pull pilotano valori diversi (cammino VDDV_{DD}-massa). Tri-state: enable, uscita ZZ (alta impedenza); inverter: p-MOS(en‾\overline{en}), p-MOS(AA), n-MOS(AA), n-MOS(enen) in serie; una sola sorgente attiva.
  • Open-drain: solo PDN, ciascuna impone 00, pull-up per l'11; AND cablato; consumo statico a bus basso.
  • Errori: push-pull in conflitto; Z=0Z=0; sottrazione senza +1+1; C e V; pull-up mancante.

Esercizi su questo argomento

Teoria collegata