Nell’articolo di oggi analizzeremo nel dettaglio il funzionamento del sommatore carry-lookahead.
Negli articoli precedenti abbiamo visto:
- Come funziona una CPU: progetto di circuiti logici #0
- Come funziona una CPU: Flip-Flop SR asincrono #0.1
- Come funziona una CPU: Flip-Flop sincrono #0.1.1
- Come funziona una CPU: Flip-Flop D #0.1.2
- Come funziona una CPU: Flip-Flop Master-Slave #0.1.3
- Come funziona una CPU: Modello di Huffman #0.2
- Come funziona una CPU: progetto di circuiti sequenziali sincroni #0.2.1
- Come funziona una CPU: progetto dei circuiti logici #0.3
- Come funziona una CPU: porte logiche operanti su parole #0.3.1
- Come funziona una CPU: multiplexer #0.3.2
- Come funziona una CPU: decodificatore #0.3.3
- Come funziona una CPU: codificatore (encoder) #0.3.4
- Come funziona una CPU: codificatore prioritario (priority encoder) #0.3.4.1
- Come funziona una CPU: sommatore full-adder #0.3.5
- Come funziona una CPU: sommatore Ripple Carry Adder #0.3.5.1
- Come funziona una CPU: sommatore seriale #0.3.5.2
Vediamo quali sono le caratteristiche generali dei moduli aritmetici e dei sommatori.
Possono avere complessità variabile a seconda di:
- tipo di dati supportati (interi, interi con segno, decimali);
- tipo di operazioni supportate (somma, sottrazione, moltiplicazione, divisione, operazioni trigonometriche);
- velocità (soluzioni combinatorie o sequenziali);
I sommatori sono dei moduli che ricevono in ingresso due numeri su n-bit e producono in uscita il risultato della loro somma, espresso al più su n+1 bit.
Possono essere realizzati seguendo tre soluzioni alternative:
- sommatori seriali
- sommatori combinatori;
- sommatori combinatori modulari;
Ora vediamo nel dettaglio come funziona il sommatore carry-lookahead.
Rappresenta una valida alternativa al Ripple Carry Adder. Permette di ridurre il ritardo nella generazione del risultato, dovuto al fatto che ogni modulo deve attendere il carry generato dal modulo precedente. Il Carry-Lookahead Generator è un circuito in grado di generare il bit di carry di ogni modulo sulla base dei segnali che gli vengono forniti in parallelo da tutti i moduli. Questi ultimi sono in realtà una versione modificata del Full-Adder in cui, al posto del carry out, vengono generati 2 segnali particolari:
gi = xiyi
pi = xi + yi
Il carry-out del singolo modulo è dato da:
Ovvero, sviluppando l’equazione:
N.B. gi e pi dipendono SOLO dagli ingressi del singolo Full-Adder e non dal carry del modulo precedente!
Quindi, nel momento in cui i Full-Adder ricevono gli ingressi, producono immediatamente i corrispondenti gi e pi. Tutti i Full-Adder lavorano in parallelo, riducendo significativamente il ritardo del Sommatore. Il Carry-Lookahead Generator riceve simultaneamente tutti i gi e pi dai rispettivi Full-Adder e produce tutti i carry. A questo punto ciascun Full-Adder, ricevendo in ingresso il rispettivo carry-in, può produrre il proprio risultato zi.
Il ritardo per la generazione del risultato finale non dipende più dal parallelismo degli operandi (ovvero dagli n-bit su cui sono espressi i 2 numeri da sommare). Questa soluzione risulta di facile progetto, buone prestazioni in termini di velocità ma elevato costo hardware (dovuto principalmente al Carry-Lookahead Generator).
Iscriviti ai nostri gruppi Telegram
Link utili
Pazzesco