Un sumator în cibernetică este un dispozitiv care convertește semnalele informaționale (analogice sau digitale) într-un semnal echivalent cu suma acestor semnale [1] ; un dispozitiv care efectuează o operație de adăugare .
În funcție de forma de prezentare a informațiilor, se disting sumatori analogici și digitali [1] .
Aditoarele tabelare au fost folosite pentru prima dată în calculatoarele releu în SUA înainte de cel de-al Doilea Război Mondial.
Un sumator binar poate fi descris în trei moduri:
Deoarece formulele și circuitele pot fi transformate identic, un tabel de adevăr al unui sumator binar poate corespunde multor formule logice și circuite logice diferite. Prin urmare, din punctul de vedere al obținerii rezultatului fără a ține cont de timpul petrecut la calculul sumei, metoda tabelară de determinare a sumatorului binar este cea principală. Descrierea tabelară obișnuită și descrierea obișnuită a sumatorului nu iau în considerare timpii de întârziere în elementele logice reale și nu sunt potrivite pentru determinarea performanței sumatorilor reali.
x 0 =A | unu | 0 | unu | 0 | unu | 0 | unu | 0 | ||
---|---|---|---|---|---|---|---|---|---|---|
x 1 =B | unu | unu | 0 | 0 | unu | unu | 0 | 0 | ||
x 2 = | unu | unu | unu | unu | 0 | 0 | 0 | 0 | Nume acțiune (funcție). | Numărul funcției |
unu | 0 | 0 | unu | 0 | unu | unu | 0 | Suma biților modulo 2 | F3.150 | |
unu | unu | unu | 0 | unu | 0 | 0 | 0 | Poartă bit | F3.232 |
O unitate de transport apare de 4 ori din 8.
Sumele SDNF modulo 2:
bit de transport SDNF :
Un circuit care furnizează adăugarea a două numere de un bit A și B fără a primi un bit de transport de la bitul anterior se numește semi-adunator . Semi-adunatorul are 4 linii de semnal: două intrări pentru semnale reprezentând numere binare cu o singură cifră A și B și două ieșiri: suma lui A și B modulo 2 (S) și semnalul de transport la următorul bit (P). În acest caz, S este bitul cel mai puțin semnificativ, iar P este bitul cel mai semnificativ.
Combinând două jumătăți de adunare și adăugând un circuit SAU suplimentar, puteți crea un sumator complet în trei trepte cu o intrare suplimentară Pi -1 (în Figura 1) care primește semnalul de transport de la circuitul anterior. Prima etapă a semi-adunatorului efectuează adăugarea a două numere binare și generează primul bit de transport parțial, a doua etapă de pe jumătate adună rezultatul primei etape cu al treilea număr binar și generează al doilea bit de transport parțial , a treia etapă a elementului logic 2OR generează bitul de transport rezultat la bitul cel mai semnificativ.
Un circuit de sumator complet poate fi folosit ca „blocuri de construcție” pentru a construi circuite de adunare cu mai mulți biți prin adăugarea de sumători completi pe un singur bit. Pentru fiecare cifră pe care circuitul trebuie să o poată gestiona, se folosește un sumator complet.
În sumatorul din Fig. 1, timpul pentru calcularea sumei modulo 2 este 2dt, timpul pentru calcularea transportului este 3dt, unde dt este timpul de întârziere într-un element logic tipic. Într-un adunator de m-biți în cel mai rău caz (unități de transport în toți biții), semnalul de transport trece prin m-1 biți până la ultimul bit, iar suma va fi gata în încă 2 dt, deci timpul maxim de adăugare este:
Timpii maximi de adunare și de calcul pentru mai mulți biți sunt afișați în Tabelul 1:
Tabelul 1.
numărul de cifre ale sumatorului | unu | 2 | patru | opt | 16 | 32 | 64 |
---|---|---|---|---|---|---|---|
timp suplimentar, dt | 2 | 5 | unsprezece | 23 | 47 | 95 | 191 |
timp de calcul report, dt | 3 | 6 | 12 | 24 | 48 | 96 | 192 |
Un sumator complet binar de un bit este o funcție logică binară complet trinar (cu trei operanzi) cu o ieșire binară (de doi biți). Toți cei trei operanzi și ambii biți de ieșire sunt de un bit.
Adunatorul zecimal poate fi specificat sub forma a două tabele:
cu zero reportat din cifra anterioară:
+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
---|---|---|---|---|---|---|---|---|---|---|
+ | 0 | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 |
0 | 0 | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 |
unu | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece |
2 | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece |
3 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 |
patru | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 |
5 | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece |
6 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece |
7 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 |
opt | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 |
9 | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 | optsprezece |
și cu un report de la cifra anterioară:
+ | unu | unu | unu | unu | unu | unu | unu | unu | unu | unu |
---|---|---|---|---|---|---|---|---|---|---|
+ | 0 | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 |
0 | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece |
unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece |
2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 |
3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 |
patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece |
5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece |
6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 |
7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 |
opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 | optsprezece |
9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 | optsprezece | 19 |
sau sub forma unui singur tabel, în care unitatea de transport de la bitul anterior se deplasează cu o coloană la dreapta:
+ | 0 | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece |
unu | unu | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece |
2 | 2 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 |
3 | 3 | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 |
patru | patru | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece |
5 | 5 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece |
6 | 6 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 |
7 | 7 | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 |
opt | opt | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 | optsprezece |
9 | 9 | zece | unsprezece | 12 | 13 | paisprezece | cincisprezece | 16 | 17 | optsprezece | 19 |
Cu firmware-ul adecvat, un adunator hexazecimal și un sumator-scădere cu douăzeci și șapte de pe ROM pot funcționa ca sumator zecimal (zecimal).
Aditoarele paralele sunt suficient de rapide pentru a adăuga rapid un număr mic de numere cu lungime fixă. Deoarece adăugarea pe biți este în mod inerent secvențială, atunci când există foarte multe adăugiri, este mai avantajos să reconfigurați același hardware ( ALU ) pentru a efectua mai multe adăugiri seriale în paralel, sau nu simultan.
De exemplu, un sumator binar paralel pe 64 de biți de 64 de sumători binari cu scheme complexe de transport rapid va adăuga 1 pereche de numere de 64 de biți în cele mai bune scheme în aproximativ 5 dt și 32 de perechi de numere de 64 de biți în aproximativ 32*5 dt = 160 dt.
32 de sumatori binari consecutivi fără circuite de avans rapid bit-cu-bit vor adăuga 32 de perechi de numere pe 64 de biți în aproximativ 64*2dt=128dt.
32 de sumatori cuaternari consecutivi fără circuite de transport rapid vor adăuga 32 de perechi de numere pe 64 de biți în aproximativ (64/lg 2 4)*2dt=64dt.
32 de adaosuri hexazecimale consecutive fără circuite de transport rapid vor adăuga 32 de perechi de numere pe 64 de biți în aproximativ (64/lg 2 16)*2dt=32dt.
32 de adunatori consecutivi de 250-șase fără circuite de transport rapid vor adăuga 32 de perechi de numere pe 64 de biți în aproximativ (64/lg 2 256)*2dt=16dt, adică. de aproximativ zece ori mai rapid decât un adunator paralel pe 64 de biți cu circuite de transport rapid.
32 de sumatori consecutivi de patru mii nouăzeci și șase fără circuite de transport rapid vor adăuga 32 de perechi de numere de 64 de biți în aproximativ (64/lg 2 4096)*2dt=10,67dt.