LABORATOR 2 – REPREZENTAREA DATELOR. OPERAȚII ARITMETICE ZCB (ZECIMAL CODIFICAT BINAR)
1. Prezentarea teoretică
În cadrul acestui laborator se vor prezenta modalităţile de reprezentare a numerelor în calculatoarele numerice, precum şi realizarea operaţiilor de adunare şi scădere a numerelor ZCB.
În calculatoarele numerice, informaţia memorată în format binar se regăseşte în memorie sau în registrele procesorului. Registrele conţin date sau informaţii de control. Informaţia de control este formată dintr‐un grup de biţi utilizat în vederea specificării secvenţei semnalelor de comandă necesare manipulării datelor în registre. Datele sunt numere şi alte informaţii codificate binar, care sunt prelucrate în vederea obţinerii unui rezultat numeric.
Toate tipurile de date, cu excepţia numerelor binare, sunt reprezentate în registrele calculatorului în formă binară, deoarece acestea sunt alcătuite din bistabile, care pot memora informaţie 0 sau l .
Reprezentarea numerelor
Un sistem de numeraţie, care utilizează baza r este un sistem, care foloseşte simboluri distincte pentru cifrele r. Fiecărei cifre îi este asignată un simbol unic. Şirurile prin care se reprezintă numerele sunt compuse din simboluri. Pentru a determina cantitatea reprezentată de un număr este necesar să se înmulţească fiecare cifră cu un întreg putere a lui r şi apoi să se formeze suma tuturor cifrelor ponderate.
Sistemul de numeraţie zecimal este alcătuit din zece simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8 şi 9. Şirul de cifre 126.3 este interpretat ca: l × 102 + 2 × 101 + 6 × 10° + 3 ×10‐1.
Sistemul de numeraţie binar utilizează baza 2 rezultând astfel numai două simboluri 0 şi l, utilizate în cadrul acestui sistem de numerație. Şirul de biţi 101111 este interpretat ca: l × 25 + 0 × 24 + l × 23 + l × 22 + l × 21 + l × 20.
Sistemul de numeraţie octal utilizează baza opt şi este alcătuit din următoarele opt simboluri: 0, l, 2, 3, 4, 5, 6 şi 7. Şirul de cifre 736 este interpretat ca (478)10 si (111011110)2.
Sistemul de numeraţie hexazecimal utilizează baza 16 şi este alcătuit din următoarele simboluri: 0, l, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E şi F. Şirul de cifre F3 este interpretat (243)10 şi (11110011)2.
Sistemul de numeraţie binar este cel mai natural sistem pentru calculator (aşa cum s‐a subliniat, circuitele bistabile pot memora doar 0 şi 1), în timp ce pentru utilizator, sistemul de numeraţie zecimal este considerat ca sistem natural. O metodă de soluţionare a acestui conflict o constituie convertirea tuturor intrărilor din format zecimal în format binar, realizarea tuturor operaţiilor aritmetice în binar şi apoi convertirea rezultatului în format zecimal.
O altă metodă este utilizarea numerelor binare codificate zecimal (ZCB). Este foarte important să nu se confunde conversia numerelor zecimale în binar si codificarea binară a numerelor zecimale. Când se realizează conversia numărului zecimal 99 într‐un număr binar se obţine şirul de biţi 1100011, reprezentarea ZCB fiind 10011001. Singura diferenţă constă în simbolurile utilizate pentru reprezentarea biţilor.
În tabelul 4.1 se poate observa codificarea numerelor zecimale în diferite sisteme de numeraţie.
Codurile complementare
Reprezentarea în cod complementar este utilizată în calculatoarele numerice pentru simplificarea operaţiei de scădere şi pentru manipulări logice. Există două tipuri de coduri complementare pentru fiecare bază r folosită: cod complementar faţă de r şi cod complementar faţă de r ‐ 1. Dacă r este substituit cu 2 atunci se obţine cod complementar faţă de 2 şi cod complementar faţă de 1. Analog dacă r este substituit cu 10.
Cod complement faţă de r ‐ 1
Fie dat numărul N în baza r având n ranguri. Reprezentarea numărului N în cod complementar faţă de r ‐ l este definită ca (rn ‐ 1) ‐ N. În cazul numerelor zecimale, r = 10 şi r ‐ l = 9, reprezentarea numărului N în cod complementar faţă de 9 este (10n ‐ 1) ‐ N.
10n reprezintă un număr care conţine un singur l urmat de un număr de n digiţi 0. 10n ‐ l este un număr reprezentat de n digiţi 9. Dacă n = 4, spre exemplu, 104 = 10000 şi 104 ‐ l = 9999. Concluzia care se impune este următoarea: complementul faţă de 9 al unui număr zecimal este obţinut prin scăderea fiecărui digit din 9. Ca exemplu, se consideră numărul N = 546700 dat. Reprezentarea numărului N în cod complementar faţă de 9 este: 999999 ‐ 546700 = 453299.
Dacă substituim r cu 2 atunci r ‐ 1 = l, iar numărul N reprezentat în cod complementar faţă de l este (2n ‐ 1) ‐ N. Raţionând ca în cazul complementului faţă de 9, se ajunge la concluzia următoare: complementul faţă de l al unui număr binar este obţinut scăzând fiecare bit din 1.
Număr hexazeci‐mal
Hexazecimal codificat binar
Număr octal
Octal codi‐ficat binar
Număr ZCB
Număr zecimal
0 0000 0 000 0000 0 1 0001 1 001 0001 1 2 0010 2 010 0010 2 3 0011 3 011 0011 3 4 0100 4 100 0100 4
5 0101 5 101 0101 5 6 0110 6 110 0110 6 7 0111 7 111 0111 7 8 1000 1000 8 9 1001 1001 9 A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15
Tabelul 4.1: Reprezentarea numerelor zecimale în diferite sisteme de numeraţie.
Când se efectuează scăderea se observă că modificarea biţilor este 0 în l sau l în 0. Astfel, se poate concluziona: complementul faţă de l al unui număr binar se obţine prin inversarea biţilor numărului N. Spre exemplu, reprezentarea numărului N = 1011001 în cod complementar faţă de l este 0100110. Dacă r este substituit cu 8 sau 16 atunci se scade fiecare digit al numărului N din 7 respectiv F.
Complementul faţă de r
Complementul faţă de r al unui număr de n digiţi, N, în baza r este definit ca rn ‐ N în cazul în care N ≠ 0 şi 0 dacă N = 0. Comparând cu complementul faţă de r ‐ 1, se observă că, complementul faţă de r este obţinut prin adăugarea lui l la complementul faţă de r ‐ 1. Astfel, complementul faţă de 10 al numărului zecimal N = 2389 este 7610 + l = 7611, iar complementul faţă de 2 al numărului binar N = 101100 este 010011 + l = 010100.
Complementul faţă de 10 poate fi însă format şi aplicând următoarea procedură:
• rămân nemodificate toate cifrele zero cele mai puţin semnificative; • se scade prima cifră diferită de zero (cea mai puţin semnificativă) din 10; • se scad celelalte cifre până la cifra cea mai semnificativă.
Conform procedurii, reprezentarea numărului N = 246700 în cod complementar faţă de 10 este 753300. În mod similar se procedează în cazul reprezentării în cod complementar faţă de 2. Se păstrează toţi biţii cei mai puţin semnificativi neschimbaţi dacă valoarea lor este 0, precum şi primul bit cel mai puţin semnificativ care are valoarea 1. Se înlocuiesc toţi ceilalţi biţi cu l dacă valoarea lor este 0 si cu 0 dacă valoarea lor este 1. Numărul binar N = 1101100 este reprezentat în cod complement faţă de 2 ca 0010100.
Alte coduri binare
În calculatoarele numerice precum şi în diverse aplicaţii este necesar să se utilizeze alte coduri precum codul Gray, codul 2421, codul excess‐3 Gray, etc. Acestea sunt prezentate în tabelele 4.2 şi 4.3.
Cod Gray
Număr zecimal echivalent
Cod Gray
Număr zecimal echivalent
0000 0 1100 8 0001 1 1101 9 0011 2 1111 10 0010 3 1110 11 0110 4 1010 12 0111 5 1011 13 0101 6 1001 14 0100 7 1000 15
Tabelul 4.2: Codul Gray.
Digital zecimal
BCD 8421
2421 Excess‐3 Excess‐3 Gray
0 0000 0000 0011 0010 1 0001 0001 0100 0110 2 0010 0010 0101 0111 3 0011 0011 0110 0101 4 0100 0100 0111 0100 5 0101 1011 1000 1100 6 0110 1100 1001 1101 7 0111 1101 1010 1111 8 1000 1110 1011 1110 9 1001 1111 1100 1010
Tabelul 4.3: Diferite coduri pentru cifrele zecimale.
2. ZCB
În majoritatea dispozitivelor numerice, operaţiile de prelucrare a informaţiilor se desfăşoară în binar. În multe aplicaţii este necesară o afişare directă, pe dispozitive cu şapte segmente (sau tuburi NIXIE), a informaţiei prelucrate. Din acest motiv, este necesară o conversie a valorii binare, în zecimal codificat binar (ZCB). Codul ZCB permite o decodificare uşoară pentru dispozitive cu şapte segmente.
Convertoarele prezentate sunt de următoarele tipuri:
• ASINCRON – realizate numai cu reţele combinaţionale de porţi logice. Tehnica de conversie se bazează pe metodele descrise de J.P. Couler;
• SINCRON – serie şi paralel, utilizând registre de deplasare şi sumatoare; • SECVENŢIAL – utilizând numărătoare binare şi decadice.
2.1. Conversie din binar în ZCB
Un număr binar, se exprimă de obicei sub forma: Nb = bn‐1 bn‐2 ... b1 b0 unde n este numărul de biţi. bj este o valoare egală cu 0 sau 1. Valoarea zecimală a acestui număr este:
NZ = bn‐1* 2n‐1 + bn‐2 * 2n‐2 + ... + b1 * 21 + b0 * 20
Sau sub formă de înmulţire cu 2 prin împachetare:
NZ = (...((bn‐1 * 2 + bn‐2) * 2 + bn‐3) * 2 + ... + b1) * 2 + b0
Înmulţirea cu 2 prin împachetare, se poate realiza prin deplasare la stânga.
Exemplu: NZ = (((b3 * 2 + b2) + b1) + b0 valoarea zecimală a numărului binar NB = b3b2b1b0.
0 0 0 b3 NZ = b3
0 0 b3 b2 NZ = b3 * 2 + b2
0 b3 b2 b1 NZ = (b3 * 2 + b2) * 2 + b1
b3 b2 b1 b0 NZ = ((b3 * 2 + b2) * 2 + b1) * 2 + b0
Se observă că pentru a converti un număr binar NB într‐un număr ZCB, trebuie modificate ponderile corespunzătoare biţilor registrului, efectuând corecţiile necesare în timpul deplasării. În acest scop registrul, care va păstra numărul ZCB, va trebui împărţit în grupe de 4 biţi (decade). Biţii unei decade d8d4d2d1 vor avea ponderile 8, 4, 2, 1 şi valoarea reprezentată nu va depăşi valoarea 9.
Orice deplasare la stânga va însemna o înmulţire cu 2. În momentul în care o decadă conţine un număr mai mare decât 4, rezultatul deplasării va depăşii valoarea 10 şi în acest caz va trebui făcută următoarea corecţie: înainte de deplasare, se adaugă valoarea 3, la acele decade care conţin un număr mai mare decât 4. Corecţia prezentată rezultă din următoarele constatări:
• dacă valoarea decadei este mai mică sau egală cu 4 prin deplasare la stânga cu o poziţie se obţine un număr mai mic decât 9. Prin urmare nu trebuie făcută nici o corecţie
• dacă valoarea decadei este mai mare decât 4 şi mai mică sau egală cu 7, prin deplasarea la stânga cu o poziţie se obţine un număr mai mare decât 9. se poate scrie:
decadă * 2 = (5 + (decadă ‐ 5)) * 2 = 10 + (decadă ‐ 5) * 2
Se observă că înainte de deplasare se scade 5, iar după deplasare se adaugă 1 la poziţia cea mai puţin semnificativă din decada următoare. Acelaşi lucru se poate realiza dacă se scade valoarea 5 înainte de deplasare şi se forţează în bitul d8 al decadei valoarea 1 (echivalent cu a aduna valoarea 8 înainte de deplasare). Deci înainte de deplasare, se adaugă 8 şi se scade 5, ceea ce este echivalent cu a aduna 3 înainte de deplasare.
• dacă valoarea decadei este mai mare sau egală cu 8 şi mai mică sau egală cu 9, după deplasare bitul cu ponderea 8 (egal cu 1) va trece în bitul cel mai puţin semnificativ al decadei următoare. Prin aceasta, valoarea se modifică de la 8 la 10 în loc să se modifice de la 8 la 16. Are loc o pierdere egală cu 6. Corecţia se poate face, după deplasare, adunând 6 la valoarea decadei sau înainte de deplasare adunând 3.
Exemplu:
NB = 10111
NZ = 23
NZCB = 0010 0011
0000 0000 1 0 1 1 1
0000 0001 < 4 nu se face corecţie
0000 0010 < 4 nu se face corecţie
0000 0101 + > 4 se face corecţie
11
0000 0001 < 4 nu se face corecţie
0001 0011
Modul de conversie prezentat mai sus este serie‐sincron şi necesită un transfer paralel – serie a informaţiei la intrare.
2.2. Conversie BINAR paralel – ZCB paralel de tip sincron
Cu ajutorul reţelelor de porţi logice, nesincronizate se poate face o conversie BINAR paralel – ZCB paralel. Prin faptul că un număr binar mai mare decât 4 trebuie corectat prin adunarea valorii 3, înainte de deplasare, se poate concepe o schemă combinaţională, care să efectueze corecţii fără a apela un sumator.
unde: X = (X3, X2, X1, X0) vector de intrare
Y = (Y3, Y2, Y1, Y0) vector de ieşire
iar Y = X pentru X ≤ 4
Y = X + 3 pentru X > 4
Sinteza circuitului combinaţional, care realizaeză corecţia se face pe baza următoarei tabele de adevăr:
X3 X2 X1 X0 Y3 Y2 Y1 Y0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 0
0 0 1 1 0 0 1 1
0 1 0 0 0 1 0 0
0 1 0 1 1 0 0 0
0 1 1 0 1 0 0 1
0 1 1 1 1 0 1 0
1 0 0 0 1 0 1 1
1 0 0 1 1 1 0 0
1 0 1 0 * * * *
1 0 1 1 * * * *
1 1 0 0 * * * *
1 1 0 1 * * * *
1 1 1 0 * * * *
1 1 1 1 * * * *
210302
302103200
XXXXXY
XXXXXXXXY
+=
++=
321203
2130101
XXXXXYXXXXXXY
++=++=
Utilizând celula elementară din figură, se poate realiza o conversie BINAR – ZCB. În figura 1 se prezintă un exemplu de conversie asincronă pentru numărul binar NB = 10111.
Conversia sincronă a numărului NB = 10111
În figura următoare se prezintă o schemă de conversie asincronă BINAR paralel – ZCB paralel pe 10 biţi ce poate fi uşor generalizată.
Structură de conversie asincronă BINAR paralel – ZCB paralel utilizând celule elementare
2.3. Conversia sincronă BINAR serie – ZCB paralel
Conversia BINAR serie – ZCB paralel funcţionează pe baza corecţiei prezentate anterior. Realizarea conversiei se poate face cu registre de deplasare (X74_194) şi sumatoare (X74_283) aşa cum se prezintă în figura 3. Funcţiile de corecţie fci rezultă din tabela de adevăr de mai jos.
fci = di8 + di1 * di4 + di2 * di4 unde i = 1, 2, 3, ..., n
Iniţial registrele trebuiesc şterse, iar această operaţie se realizaeză activând semnalul CLR (=0), un timp egal cu n*4 perioade de TACT. Corecţia se face cu ajutorul sumatoarelor, iar deplasarea prin legarea conexiunilor, deplasate la dreapta cu o poziţie. Diagrama de stări utilizată în proiectarea unităţii de comandă din figura Conversie BINAR serie – ZCB paralel este următoarea:
Conversie BINAR serie – ZCB paralel
2.4. Conversia secvenţială BINAR – ZCB
Un mod simplu de conversie BINAR – ZCB se poate realiza utilizând numărătoare reversibile. Schema de principiu a unui astfel de convertor este prezentată în figura 4.
Schema bloc de conversie secvenţială BINAR – ZCB
Valoarea binară ce trebuie convertită, se introduce în paralel într‐un numărător binar reversibil (CB4CLED)
şi se şterge un numărător decadic (X74_168). Impulsurile de TACT, vor decrementa numărătorul binar şi vor
incrementa numărătorul decadic. În momentul în care numărătorul binar ajunge la valoarea zero, se
blochează generatorul de TACT, lăsând în acest mod trecerea unui număr de impulsuri egal cu valoarea
numărului binar ce trebuie convertit. Impulsurile de TACT au fost numărate ZCB de numărătorul decadic,
unde se va găsi în final valoarea convertită.
De obicei valorile ZCB sunt afişate pe dispozitive de afişare cu 7 segmente. Pentru a putea fi afişată o
valoare ZCB pe un dispozitiv de afişare cu 7 segmente, ea va trebui să fie decodificată. Decodificarea ZCb –
dispozitiv cu 7 segmente se poate realiza cu un decodificator. Schema de detaliu privind conversia BINAR –
ZCB de tip secvenţial se poate observa în figura următoare.
Conversie secvenţială BINAR – ZCB
Semnalul LOAD, activ pe nivelul 1, va încărca în numărătorul binar valoarea binară, va şterge numărătorul
decadic şi va debloca poarta de acces a semnalului TACT; iar pe nivelul 1 va permite funcţionarea
numărătoarelor. În momentul în care numărătorul binar ajunge la valoarea zero, se va genera un împrumut
(BORROW), care prin intermediul bistabilului FDRS va bloca calea de acces a semnalului TACT. Prin aceasta
conversia a luat sfârşit.
2.5. Conversia din ZCB în Binar
Pentru realizarea conversiei din ZCB în BINAR, numărul ZCB este extras înceăând cu partea cea mai puţin
semnificativă. Deplasarea spre dreapta înseamnă o împărţire cu 2. Trecerea unei unităţi de la o decadă la
alta înseamnă, faptul, că valoarea scade de la 10 la 8 în loc să scadă de la 10 la 5. Rezultatul deplasării este
mai mare cu 3. Trebuie făcută o corecţie, care constă în a scădea valoarea 3, după deplasare, din valorile
mai mari ca 8.
2.6. Conversia sincronă ZCB paralel – BINAR paralel
Corecţia se face cu ajutorul unei celule elementare.
Celula elementară folosită în cazul conversiei asincrone ZCB paralel – BINAR paralel
Ecuaţiile logice pentru celula elementară sunt:
31032331031101
32031032230300
vvvvvwvvvvvvvw
vvvvvvvvwvvvvw
+=++=
++=+=
În figura de mai jos este prezentată o structură de conversie asincronă ZCB paralel – BINAR paralel,
utilizând celula elementară.
Conversia asincronă ZCB paralel – BINAR paralel.
2.7. Conversie sincronă din ZCB paralel în BINAR paralel
Convertorul ZCB paralel, utilizează logica combinaţională directă pentru a realiza o conversie de mare
viteză. Conversia se realizează cu sumatoare (X74_283). Timpul de conversie este limitat la timpul de
propagare al sumatoarelor. Circuitul de bază poate fi extins la orice număr de decade. Un număr ZCB se
poate exprima ca valoare zecimală astfel:
∑=
+++=n
iiiiiZ ddddiN
0
38
2421 )2*2*2*(10
unde: { }1,0.... 81 ∈ii dd ; di1 este bitul cel mai puţin semnificativ din decada 10i ; di8 este bitul cel mai
semnificativ din decada 10i iar n reprezintă numărul de decade.
Se poate exprima valoarea numărului şi astfel:
∑∑= =
+++=n
i
p
jiiii
jjZ ddddcN
0 0
38
2421 )2*2*2*(2
unde p = R{i}; { }1,0∈jc sau o formă echivalentă:
∑ ∑∑= ==
− ++=n
i
p
jiii
jj
i
j
kiZ dddaN
0 0
3421
0
23 )2*2*(22
unde m = R2{k}; }1,0{∈ia . Valoarea numărului ZCB poate fi exprimată sub forma:
∑=
=l
j
jjZ bN
02 unde { } { }1,0;3 ∈= jbnRl
Ţinând seama că ultimele trei relaţii exprimă valoarea aceluiaşi număr prin identificarea puterilor lui 2, va
rezulta: bj = R4 {di1, di2, di4, di8}.
Exemplu n = 2 ⇒ l = 9, p = 6, m = 1, iar în urma identificării:
b0 = d01
b1 = d02 + d11
b2 = d04 + d12 + d21
b3 = d08 + d11 + d14 + d22
b4 = d12 + d18 + d24
b5 = d14 + d21 + d28
b6 = d18 + d21 + d22
b7 = d22 + d24
b8 = d24 + d28
b9 = d28
Circuitul care realizează conversia pentru cazul n = 2 este prezentat în figura următoare.
Conversie din ZCB paralel în BINAR paralel
2.8. Conversia din ZCB serie în BINAR serie
Introducerea biţilor ZCB în convertor se face serial. Este nevoie deci de a asigura deplasarea a n*4 biţi, unde
n este numărul de decade. După ce numărul ZCb a fost introdus în registrul de deplasare al convertorului,
se ţine seama că deplasarea unei unităţi de la o decadă la alta implică o corecţie. Corecţia constă în a
scădea valoarea 3, sau a aduna complementul lui 3 (1101) faţă de 2. Schema de conversie este prezentată
în figura 10.
Diagrama de stări utilizată în proiectarea unităţii de comandă din figura 10 este următoarea:
Figura 10. Conversie ZCB serie – BINAR serie
! 23!
2.9. Dispozitiv aritmetic ZCB
În multe cazuri este necesar, să se efectueze operaţii aritmetice folosind numere zecimale. Această
necesitate apare în sistemele, în care se doreşte afişarea directă pe dispozitive cu 7 segmente şi în toate
cazurile în care se preferă evitarea conversiei. Majoritatea sistemelor de afişare numerică utilizează
direct reprezentările în cod zecimal codificat binar. Efectuarea operaţiilor în cod zecimal este
avantajoasă în momentul în care numărul de informaţii introduse este mai mare, iar operaţiile
desfăşurate sunt puţine şi simple.
Avantajul codului ZCb ponderat 8‐4‐2‐1 este că, adunarea este identică cu adunarea obişnuită pentru
fiecare bit din decadă. Unul din dezavantajele codului ZCB este dificultatea obţinerii complementului
faţă de 9. În acest punct al lucrării de laborator se doreşte să se stabilească modul de desfăşurare a
operaţiilor aritmetice în cod ZCb şi să se prezinte câteva scheme bloc de prelucrare. Se vor descrie
operaţiile de adunare şi scădere în ZCB de tip paralel şi de tip serie‐paralel.
În sistemul zecimal, fiecare cifră este exprimată în cod binar, deci cifrele sunt reprezentate în cod binar.
Întrucât cu n elemente binare }1,0{∈jx , j = 1, 2, ..., n se pot realiza 2n stări distincte, pentru
reprezentarea celor zece stări posibile ale unei cifre zecimale sunt necesare cel puţin patru elemente (24
> 10). În cazul în care se aleg patru cifre binare pentru reprezentarea unei cifre zecimale, se pot alege 10
stări din cele 16 posibile. Felul în care se aleg aceste stări poate duce la simplificarea circuitelor de calcul
şi de comandă a unităţii aritmetice zecimale. De aceea în alegerea celor 10 stări din 16 posibile se va ţine
seama de:
• metoda utilizată pentru adunare şi scădere
! 24!
• necesitatea de complementare • realizarea conversiei cifrei zecimale în cifră binar‐zecimală
Deoarece se poate considera orice grup de zece stări din 16 stări distincte realizate cu 4 biţi, pentru a
exprima cifrele zecimale în binar, există 1010*9.2!6!16≅ coduri posibile pentru numerele binar‐
zecimale. Nu toate aceste coduri sunt distincte. Eliminând stările izomorfe se reduce numărul de stări,
însă acesta rămâne totuşi destul de mare. În general există două tipuri de coduri:
• coduri ponderate • coduri neponderate
Dintre codurile ponderate cel mai des utilizat s‐a dovedit a fi codul ZCB cu ponderile 8, 4, 2, 1 iar dintre
codurile neponderate codul exces 3. În tabelul de mai jos se prezintă câteva coduri binar‐zecimale care
sunt mai des utilizate:
Codul binar Codul 8, 4, 2, 1 Codul 2, 4, 2, 1 Codul 5, 2, 1, 1 Codul exces 3
0000 0000 = 0 0000 = 0 0000 = 0
0001 0001 = 1 0001 = 1 0001 = 1
0010 0010 = 2 0010 = 2
0011 0011 = 3 0011 = 3 0011 = 2 0011 = 0
0100 0100 = 4 0100 = 4 0100 = 1
0101 0101 = 5 0101 = 3 0101 = 2
0110 0110 = 6 0110 = 3
! 25!
0111 0111 = 7 0111 = 4 0111 = 4
1000 1000 = 8 1000 = 5 1000 = 5
1001 1001 = 9 1001 = 6 1001 = 6
1010 1010 = 7
1011 1011 = 5 1011 = 7 1011 = 8
1100 1100 = 6 1100 = 9
1101 1101 = 7 1101 = 8
1110 1110 = 8
1111 1111 = 9 1111 = 9
Coduri zecimal codificate binar
Primele trei coduri sunt coduri ponderate, iar ultimul este un cod neponderat. În codul ponderat 8, 4, 2,
1 cele zece numere de cod corespund cu primele zece numere binare. Codul 2, 4, 2, 1 a fost utilizat în
calculatorul HARWARD. El are o proprietate interesantă şi anume este autocomplementar. Aceeaşi
proprietate o are şi codul exces 3. Într‐un cod ponderat care are şi proprietatea de
autocomplementaritate, suma ponderilor este egală cu 9.
Deşi patru biţi sunt suficienţi pentru a codifica o cifră zecimală, au fost folosite şi coduri cu mai mulţi biţi.
Astfel au fost folosite codurile 8‐6‐4‐2‐1 în calculatoarele HARWARD, 5‐0‐4‐3‐2‐1‐0 numit şi cod bichinar
în calculatoarele Belly Relay şi IBM‐650 codul 2 din 5 şi codul 5‐4‐3‐2‐1‐0. Codurile cu mai mult de 4 biţi
! 26!
au proprietăţi ce sunt folosite pentru realizarea circuitelor de autoverificare. Avantajele obţinute sunt pe
seama complicării circuitelor, deci a creşterii costului.
Numerele zecimale cu semn, se reprezintă prin plasarea unei cifre binare care codifică semnul, de obicei
0 pentru plus, 1 pentru minus, în faţa ordinului cel mai semnificativ al numărului. Există trei moduri
pentru reprezentarea cifrelor numărului:
• reprezentarea prin mărime şi semn • reprezentarea prin complementul faţă de 10 • reprezentarea prin complementul faţă de 9
În general dispozitivele zecimale pot avea o varietate de forme mai numeroase decât cele binare. O
primă clasificare se face după natura codului binar‐zecimal utilizat, deci după structura sumatorului
elementar. O altă clasificare se face după modul în care se execută operaţiile şi anume: serie‐serie, serie‐
paralel, paralel‐paralel.
2.10. Adunarea în ZCB
Pentru codul ZCB se consideră codul ponderat 8‐4‐2‐1. Adunarea în cod ZCB este identică cu adunarea
binară. Suma pentru fiecare decadă trebuie corectată considerând transferul la decada următoare şi
rezultatele care au valori cuprinse între 10 şi 15. În momentul adunării a două decade rezultă douăzeci
de sume posibile. Dintre acestea, numai zece vor fi corecte, celelalte necesitând corecţii. În tabelul
următor sunt prezentate sumele a două cifre ZCB înainte de corectare şi după corectare.
! 27!
Suma incorectă
Tpj Spj8 Spj4 Spj2 Spj1
Suma corectă
Tj Sj8 Sj4 Sj2 Sj1
0 0 0 0 0 0 0 0 = 0
0 0 0 1 0 0 0 1 = 1
0 0 1 0 0 0 1 0 = 2
0 0 1 1 0 0 1 1 = 3
0 1 0 0 0 1 0 0 = 4
0 1 0 1 0 1 0 1 = 5
0 1 1 0 0 1 1 0 = 6
0 1 1 1 0 1 1 1 = 7
1 0 0 0 1 0 0 0 = 8
1 0 0 1 1 0 0 1 = 9
1 0 1 0 1 0 0 0 0 = 10
1 0 1 1 1 0 0 0 1 = 11
1 1 0 0 1 0 0 1 0 = 12
1 1 0 1 1 0 0 1 1 = 13
1 1 1 0 1 0 1 0 0 = 14
1 1 1 1 1 0 1 0 1 = 15
1 0 0 0 0 1 0 1 1 0 = 16
! 28!
1 0 0 0 1 1 0 1 1 1 = 17
1 0 0 1 0 1 1 0 0 0 = 18
1 0 0 1 1 1 1 0 0 1 = 19
Rezultatele adunării ZCB a două numere
Pentru o sumă egală sau mai mare decât 10, este necesar un transport spre decada următoare şi o
corecţie ce constă în a scădea valoarea 10 din decada următoare. Scăderea valorii 10 este echivalentă cu
adunarea complementului faţă de 2, care este 0110 sau 6 în zecimal. Din tabelul de mai sus se observă
că transferul Tj în cazul sumei corectate este: Tj = Tpj + tj unde Tpj este transferul bitului Spj8 la stânga în
cazul sumei necorectate, iar tj este o funcţie de Spj8, Spj4, Spj2, Spj1. Funcţia tj rezultă din următoarea
diagramă Karnaugh:
În figura următoare se prezintă o celulă elementară pentru adunarea a două decade Sj = Aj + Bj. Cu
ajutorul celulei elementare de însumare în ZCB, se poate realiza o unitate aritmetică de adunare.
Aceasta poate fi de tip paralel sau de tip serie‐paralel.
! 29!
Celula elementară de adunare ZCB
2.11. Adunarea ZCB de tip paralel
Pentru a realiza un sumator ZCB paralel se utilizează câte o celulă elementară de însumare pentru
fiecare cifră zecimală (decadă). Cea mai simplă formă este cea cu transport succesiv şi se realizează
legând în cascadă sumatoare elementare. În figura de mai jos se prezintă schema bloc a unui sumator
ZCB paralel.
! 30!
Sumator ZCB paralel
2.12. Scăderea în ZCB Dacă se scade o cifră zecimală şi eventual un împrumut dintr‐o cifră zecimală, în codul 8‐4‐2‐1, există 20
de diferenţe corecte de la 9 la –10. În tabelul următor se prezintă diferenţele incorecte şi diferenţele
corecte ale unei operaţii de scădere.
Rezultatele scăderii a două numere ZCB
! 31!
Dacă numărul împrumută o unitate (‐1) el apare în reprezentarea prin complement faţă de 10. În
continuare vom considera că operanzii negativi vor fi reprezentaţi în complement faţă de 9. În această
reprezentare operaţia de scădere va fi mai uşor de realizat. Operaţia de scădere a doi operanzi ZCB
constă în adunarea complementului faţă de 9 al scăzătorului la descăzut. Complementul faţă de 9 al unei
cifre zecimale reprezentate în cod ZCB, se realizează conform diagramei prezentate în tabelul următor:
Complementul faţă de 9 al unei cifre ZCB
Din tabelul de mai sus rezultă ecuaţiile logice pentru complementul faţă de 9:
c8 = d8 * d4 * d2
c4 = d4 + d2
c2 = d2
c1 = d1
Implementarea ecuaţiilor, se poate realiza uşor aşa cum se vede în figura următoare.
! 32!
Realizarea complementului faţă de 9
2.13. Scăzător ZCB în complement faţă de 1
În cele ce urmează se prezintă un algoritm pentru realizarea scăderii numerelor ZCb reprezentate prin
mărime şi semn. Algoritmul ţine seama de semnul decadei (transport din bitul cel mai semnificativ al
decadei) şi semnul rezultatului (transport din rangul cel mai semnificativ).
Descăzutul se adună cu complementul faţă de 1 al scăzătorului. Transportul (Tn) ce rezultă din rangul cel
mai semnificativ se adună circular la rangul cel mai puţin semnificativ şi constituie şi semnul rezultatului.
Astfel Tn = 0 înseamnă că rezultatul este negativ, iar Tn = 1 rezultatul este pozitiv. În final, trebuie făcută
o corecţie, pentru fiecare decadă în parte în funcţie de semnul decadei (Tj) şi semnul rezultatului (Tn).
Corecţia este următoarea:
! 33!
În figura următoare se prezintă un scăzător ZCB elementar, ce utilizează complementul faţă de 1 al
scăzătorului.
Scăzător paralel ZCB (complement faţă de 1)
Utilizând o celulă elementară se poate concepe un scăzător de tip paralel. Schema bloc se prezintă în
figura următoare.
! 34!
Scăzător ZCB (complement faţă de 1 al scăzătorului elementar)