03/12/2007 08:40 | |
| | | OFFLINE | | Post: 1 | Registrato il: 15/11/2007
| Città: VELLETRI | Sesso: Maschile | Utente Junior | |
|
Ciao,
ho un dubbio riguardo i sommatori con carry look-ahead.
Purtroppo non ho uno scanner per cui non posso mettere immagini.
In pratica per un sommatore 4 bit, si progettano 4 celle base, ognuna delle quali prende in ingresso due operandi da 1 bit
il "carry in" e restituisce in uscita la somma ed il "carry out".
Si connettono poi queste celle base in cascata e si ha un blocco completo.
Considerando il carry look ahead, si fa uscire da ogni cella due segnali G e P: "generatore di carry" e "propagatore di carry".
Mettendo in entrata di una rete combinatoria tali uscite si produce in anticipo il carry di uscita dell'intero gruppo,
prima della stessa somma.
Infatti se "t" è il ritardo di porta allora la somma è pronta dopo "8t" (propagazione attraverso 3 celle del carry e somma)
ed il carry look-ahead dopo "4t" ("2t" per la generazione di G e P per le celle e "2t" per cout).
Ora il mio dubbio è questo: potremo creare una rete combinatoria che prenda in ingresso "cin" ed i 2 operandi a 4 bit.
Tale rete, vista l'espressione algebrica di G e P per ogni cella base, potrebbe produrre in uscita dopo "2t" (minimizzazione su due livelli)
"cout", ma anche c1, c2, c3 cioè i carry in entrata alle varie celle base.
A questo punto il carry in entrata ad ogni cella non lo preleviamo più dalla cella precedente ma dalla rete suddetta.
Avremo in questo modo il "cout" dopo 2t e la somma dopo "4t" ("2t" per la produzione degli "ci" e "2t" per la produzione della somma stessa).
Perchè non si prende in considerazione tale soluzione? C'è un problema di fondo che mi sfugge(forse la complessità per la minimizzazione di tale rete)?
Spero di essere stato chiaro e mi scuso per la prolissità, ma senza figure è ardua. |
|
|
03/12/2007 18:29 | |
| | | OFFLINE | | Post: 96 | Registrato il: 26/10/2006
| Sesso: Maschile | Admin | Utente Gold | |
|
Il suo ragionamento è corretto; tuttavia, da un punto di vista pratico, c'e' sempre il solito compromesso tra velocità e complessità. Come lei giustamente osserva, il circuito che propone sarebbe senz'altro più efficiente, ma altrettanto sicuramente più complesso; consideri poi quanto complessa potrebbe essere la rete che risulterebbe spingendo all'estremo il concetto, quando gli operandi non fossero più da 4 bit ma da 8, o 16, o 32, etc. E, in ogni caso, si potrebbe fare sicuramente meglio: un addizionatore per due operandi da N bit e un carry-in, è in fondo assimilabile a una rete combinatoria a 2N+1 ingressi e N+1 uscite, dunque può -- in linea di principio -- essere sicuramente risolta su due livelli di logica, con tempo di generazione dei risultati pari a 2T sia per la somma che per il carry-out, qualunque sia N. Ma a prezzo di quale complessità??
|
|
|
|