Documente Academic
Documente Profesional
Documente Cultură
După cum s-a menţionat, circuitele logice combinaţionale sunt mulţimi de componenete electronice
interconectate, capabile să realizeze operaţii logice şi caracterizate prin faptul că setul mărimilor de ieşire
este complet determinat, în orice moment de timp, de combinaţia curentă a mărimilor de intrare.
Reprezentarea intrare/ieşire a unui CLC este prezentată în Fig. 4.1, unde x1, x2, ... ,xn sunt intrările, iar
y1, y2, ... ,ym sunt ieşirile. Din punct de vedere sistemic, funcţia logică yj este o funcţie de transfer.
x1 y1
x2 y2
CLC
xn ym
Din grupa CLC fac parte porţile logice elementare prezentate anterior: NU, ŞI, SAU, ŞI – NU, SAU –
NU, SAU – EXCLUSIV. Alte exemple de porţi logice elementare sunt INHIBARE (Fig. 4.2) şi IMPLICARE
(Fig. 4.3). În afară de structurile elementare, în proiectare interesează şi alte structuri de circuite logice
combinaţionale dedicate, de complexitate mai mare: decodificatoare, codificatoare, convertoare de cod,
multiplexoare, demultiplexoare, comparatoare numerice, generatoare şi detectoare de paritate, sumatoare,
unităţi aritmetice şi logice etc. Aceste structuri pot fi folosite ca module de bază în sinteza altor circuite
logice.
Dată fiind structura fizică (schema circuitului), analiza unui CLC constă, în principal, în deducerea
funcţiei de transfer. Pe baza acestei funcţii de transfer, cunoscând semnalele logice ale intrărilor, se pot
determina semnalele logice de ieşire.
Proiectarea (sinteza) unui CLC este operaţia inversă analizei şi constă în determinarea structurii fizice
(schemei circuitului), cunoscând funcţia de transfer, dedusă, de cele mai multe ori, din intrările şi ieşirile
corespunzătoare. În proiectarea CLC pot fi folosite mai multe metode: metode simple, metode complexe,
incluzând metodele de minimizare a funcţiilor logice obţinute, şi metode bazate pe module. Astfel, metoda
de sinteză simplă pleacă direct de la funcţia de transfer, utilizând porţile logice elementare corespunzătoare
operaţiilor logice din funcţia de transfer. În schimb, metoda de sinteză complexă presupune și o etapă de
minimizare:
a) Formularea problemei prin definirea variabilelor de intrare şi de ieşire; definirea restricţiilor.
b) Alcătuirea tabelului de adevăr (obținerea funcției de transfer).
44
c) Obţinere funcţiei logice în formă minimizată.
d) Implementarea circuitului logic (corespunzător sintezei simple).
Structura fizică a unui CLC simplu depinde de forma de expresie a funcţiei logice şi de operatorii
logici de bază utilizaţi. Astfel, cele mai folosite forme fizice de implementare sunt:
► Forma disjunctivă (NU – ŞI – SAU);
► Forma conjuctivă (NU – SAU – ŞI);
► Forma NAND;
► Forma NOR.
Pentru implementarea unor CLC mari, complexe, cu multe intrări şi ieşiri, această proiectare bazată pe
porţi logice elementare nu mai este posibilă sau nu mai este convenabilă. În acest caz se folosesc combinaţii
de circuite modulare standard, cu un grad sporit de integrare (de regulă, MSI şi LSI) – Fig. 4.5. Aceste
module logice pot avea, pe lângă intrările propriuzise de date (x1 ,..., xk) şi intrări de comandă (c1 ,..., ci).
x1
MODUL y1
CLC
ym
xk
c1 ci
Evident, o funcţie logică are mai multe soluţii de implementare. Alegerea unei soluţii depinde şi de
anumite criterii auxiliare, ce nu apar în etapele de proiectare specificate, ca de exemplu: încadrarea în
familiile de circuite integrate existente, timpii de propagare a fronturilor, cum ar fi tpLH (timpul de propagare
la comutarea ieşirii din 0 în 1) sau tpHL (timpul de propagare la comutarea ieşirii din 1 în 0), fanout – ul
(numărul maxim de intrări de porţi logice pe care le poate comanda o ieşire de poartă logică), gradul de
complexitate (considerat, de regulă, ca fiind numărul total de intrări de poartă din circuit), adâncimea sau
nivelul de profunzime (numărul maxim de niveluri de porţi logice pe care le poate parcurge semnalul de la
intrare la ieşire) etc.
45
4.2. STRUCTURI CLC (MODULE) FOLOSITE ÎN PROIECTARE
Modulele CLC folosite în proiectare sunt împărţite în două categorii, în funcţie de destinaţia
circuitelor complexe proiectate: module CLC pentru sinteza funcţiilor logice (codificatoare, decodificatoare,
multiplexoare, demultiplexoare etc.) şi module CLC pentru sinteza funcţiilor aritmetice (sumatoare, unităţi
logice – aritmetice etc.).
4.2.1. Decodificatoare
Decodificatoarele sunt CLC complexe cu mai multe intrări (I0,I1,...In-1) şi mai multe ieşiri (O0,O1,...,
Om-1) care transformă biunivoc cuvintele dintr-un anume cod la intrare în cuvinte din alt cod la ieşire (sunt de
fapt convertoare de cod). Pentru un decodificator, codul de la intrare are mai puţini biţi decât codul de la
ieşire (m>n). În afară de intrările de date (cuvintele de cod de intrare), decodificatoarele mai au şi intrări de
activare: E0,...,Ek-1, m>k (Fig. 4.6).
Decodificatoarele se folosesc în diverse aplicaţii cum ar fi adresarea memoriilor, afişarea datelor
numerice etc. De obicei, decodificatoarele sunt CI de tip MSI .
I0
DECODIFICA- O0
TOR
Om-1
In-1
E0 Ek-1
Exemplul 4.3
Decodificatorul BCD – 7 segmente 74x49, reprezentat în Fig. 4.7 şi tabelul 4.1 are patru intrări de date
(A,B,C,D), ce pot reprezenta o cifră zecimală codificată binar, şi şapte ieşiri (a,b,c,d,e,f,g), pentru comanda
LED-urilor dispozitivului de afişare. BI reprezintă intrarea de blocare (activă pe 0).
BI
Dispozitivul de afişare considerat are şapte segmente formate din LED-uri şi este conectat doar la Vcc
(nu are legătură directă la masă). Un LED este aprins dacă pe intrarea corespunzătoare (a, b,…,f, g) apare 0
logic. Pentru fiecare ieşire se poate extrage funcţia logică folosită fără a ţine seama de intrarea de blocare BI
(blochează circuitul când este 0). Astfel, pentru funcţia g se obţine diagrama Karnaugh din Fig. 4.8. Rezultă
forma minimală a lui g:
46
g = B’·C’·D’ + A·B·C
BI D C B A a b c d e f g Nr.
afişat
0 X X X X 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 0 0 1 0
1 0 0 0 1 1 0 0 1 1 1 1 1
1 0 0 1 0 0 0 1 0 0 1 0 2
1 0 0 1 1 0 0 0 0 1 1 0 3
1 0 1 0 0 1 0 0 1 1 0 0 4
1 0 1 0 1 0 1 0 0 1 0 0 5
1 0 1 1 0 1 1 0 0 0 0 0 6
1 0 1 1 1 0 0 0 1 1 1 1 7
1 1 0 0 0 0 0 0 0 0 0 0 8
1 1 0 0 1 0 0 0 1 1 0 0 9
BA
DC 00 01 11 10
00 1 1
01 1
11 − − −1 −
10 − −
Exemplul 4.4
Decodificatorul de adrese 74x138, cu 3 intrări şi 8 ieşiri, este reprezentat în Fig. 4.9 şi tabelul 4.2.
Intrări Ieşiri
G1 G2A G2B C B A y7 y6 y5 y4 y3 y2 y1 y0
0 x x x x x 1 1 1 1 1 1 1 1
x 1 x x x x 1 1 1 1 1 1 1 1
47
x x 1 x x x 1 1 1 1 1 1 1 1
1 0 0 0 0 0 1 1 1 1 1 1 1 0
1 0 0 0 0 1 1 1 1 1 1 1 0 1
1 0 0 0 1 0 1 1 1 1 1 0 1 1
1 0 0 0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 0 0 1 1 1 0 1 1 1 1
1 0 0 1 0 1 1 1 0 1 1 1 1 1
1 0 0 1 1 0 1 0 1 1 1 1 1 1
1 0 0 1 1 1 0 1 1 1 1 1 1 1
G1 y0
G2A
y1
G2B y2
y3
y4
A y5
B
C y6
y7
Evident, dacă pe intrările de activare (G1 G2A G2B) se găseşte cuvântul (1 0 0), o singură linie de ieşire
yj este activă (pe 0) pentru un cuvânt de intrare (CBA)j. Rezultă imediat funcţiile logice pentru ieşiri. De
exemplu, pentru y0 se obţine expresia următoare :
y0 = C + B + A ,
de unde:
y0 = C ⋅ B ⋅ A
Exemplul 4.5
Convertorul din cod binar natural în cod Gray pentru patru biţi este prezentat în Fig. 4.10, iar
implementarea lui cu porţi elementare, în Fig. 4.11.
48
Fig. 4.10. Convertorul cod BN – cod Gray.
Ţinând seama de modul de obţinere a codului Gray din codul binar, prezentat în Cap.1, funcţiile
logice ce caracterizează ieşirile y0, y1, y2, y3 sunt următoarele:
y 0 = x0 ⊕ x1
y1 = x1 ⊕ x 2
y 2 = x 2 ⊕ x3
y 3 = x3
Pentru conversia inversă, cod Gray - cod binar natural, schema convertorului este prezentată în Fig
4.12, iar implementarea lui cu porţi elementare, în Fig. 4.13.
49
Fig. 4.13.Implementarea convertorului Cod Gray-Cod BN.
y 0 = x0 ⊕ x1 ⊕ x 2 ⊕ x3
y1 = x1 ⊕ x 2 ⊕ x3
y 2 = x 2 ⊕ x3
y 3 = x3
4.2.3. Codificatoare
Y0 Yp-1
I0
O0
CODIFICATOR
In-1
Om -1
E0 Ek-1
De exemplu, un codificator de adresă simplu, cu opt intrări şi trei ieşiri, este prezentat în Fig. 4.15 şi
tabelul 4.3. Codul de intrare este un cod binar, 1 din 8, iar codul de ieşire este cel binar natural.
50
I0
C
O
I1 D
I
F
O0
I 8:3 O1
C
A O2
T
I7 O
R
Intrări Ieşiri
I7 I6 I5 I4 I3 I2 I1 I0 O2 O1 O0
0 0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 1 0 0 0 1 0
0 0 0 0 1 0 0 0 0 1 1
0 0 0 1 0 0 0 0 1 0 0
0 0 1 0 0 0 0 0 1 0 1
0 1 0 0 0 0 0 0 1 1 0
1 0 0 0 0 0 0 0 1 1 1
Ţinând seama de restricţia ca una şi numai una dintre intrări să fie 1, din tabela de adevăr, rezultă
expresii simple pentru funcţiile logice ale ieşirilor:
O2 = I 7 + I 6 + I 5 + I 4
O1 = I 7 + I 6 + I 3 + I 2
O0 = I 7 + I 5 + I 3 + I 1
Implementarea codificatorului 8:3 cu ajutorul porţilor elementare este foarte simplă şi este prezentată
în Fig. 4.16.
Pentru a preveni funcţionarea defectuoasă a codificatorului, în cazul activării a două sau mai multe
intrări simultan, s-au realizat codificatoare cu priorităţi. De regulă, prioritatea cea mai mare o are intrarea cu
numărul de ordine cel mai mare (I7), iar prioritatea cea mai mică o are intrarea I0. Deoarece este posibil ca
nicio intrare să nu fie egală cu 1, s-a considerat ieşirea suplimentară OS, care indică acestă stare. Tabela de
adevăr pentru un codificator cu priorităţi este prezentată în Tabelul 4.4 (prin x s-a marcat starea indiferentă).
51
Fig. 4.16. Implementarea codificatorului de adrese 8 :3 cu ajutorul funcţiilor logice elementare
Intrări Ieşiri
I7 I6 I5 I4 I3 I2 I1 I0 O2 O1 O0 OS
0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 1 x 0 0 1 1
0 0 0 0 0 1 x x 0 1 0 1
0 0 0 0 1 x x x 0 1 1 1
0 0 0 1 x x x x 1 0 0 1
0 0 1 x x x x x 1 0 1 1
0 1 x x x x x x 1 1 0 1
1 x x x x x x x 1 1 1 1
OS = I7+I6+I5+I4+I3+I2+I1+I0
Un exemplu de codificator 8:3 cu priorităţi este 74x148 la care atât intrările cât şi ieşirile sunt active
pe 0. În acest caz, tabelul de adevăr se modifică în mod corespunzător, înlocuindu-se 0 cu 1 şi 1 cu 0.
52
4.2.4 Multiplexoare
Multiplexorul (MUX) este un dispozitiv cu mai multe canale de intrare şi un canal de ieşire, de acelaşi
tip, care, la un moment dat, comută la ieşire unul dintre canalele de intrare, selectat potrivit unei legi sau unui
cod de selecţie. Datele de pe canalele de intrare şi de ieşire pot fi analogice (multiplexoare analogice) sau
numerice (multiplexoare numerice). În continuare, prin multiplexoare vom denumi multiplexoarele
numerice. Vom considera n canale de intrare sau de date (D0,...,Dn-1), un canal de ieşire (Y), fiecare canal
având câte m biţi, un canal de selecţie (S) având s biţi şi un canal de activare (E) de un bit (Fig. 4.17).
De regulă, n = 2s, iar notaţia semnifică legătura pe mai multe fire (legaturi paralele).
Se poate considera că, dacă adresele canalelor sunt codificate în cod binar natural, tabela de adevăr a
funcţiei de selectare S conţine n = 2s mintermeni mi , i = 0,1,..., n − 1 , dintre care, la un moment dat, doar
unul ia valoarea logică 1.
Presupunând că egalitatea E = 1 are semnificaţia de multiplexor activat şi notând cu b ij şi y j , j =
0,1,.., m-1, biţii canalului de intrare Di , respectiv biţii canalului de ieşire y, se pot scrie următoarele funcţii
logice pentru ieşirea multiplexorului:
n −1
y j = ∑ E ⋅ mi ⋅ b ij , j = 0,1,..., m − 1 (4.1)
i=0
Pentru utilizarea modulară, există multiplexoare standard în capsule dual in line de 16 pini, având
diverse configuraţii: opt intrări de un bit (74x151), patru intrări de doi biţi (74x153) şi două intrări de patru
biţi (74x157). De exemplu, multiplexorul 74x151 are simbolul prezentat în Fig. 4.18, structura în Fig. 4.19,
iar tabela de adevăr in tabelul 4.5. Se observă că, în această schemă, intrarea E este activă pe 0, relaţia (4.1)
devenind (4.2):
7
y = ∑ E ⋅ mi ⋅ Di (4.2)
i =0
D0 E
D1
.
. Y
.
Dn-1
S
53
Fig. 4.18. Simbolul multiplexorului 74x151.
Tabelul 4.5
E C B A y
y
1 X X X 0 1
0 0 0 0 D0 D0
0 0 0 1 D1 D1
0 0 1 0 D2 D2
0 0 1 1 D3 D3
0 1 0 0 D4 D4
0 1 0 1 D5 D5
0 1 1 0 D6 D6
0 1 1 1 D7 D7
Există aplicaţii care cer, fie un număr mai mare de surse de intrare, fie un număr mai mare de biţi, fie
ambele dezvoltări . Aceste cerinţe se pot îndeplini utilizând o structură cu mai multe multiplexoare şi,
eventual, un decodificator.
De exemplu, o structură de multiplexor cu opt intrări de câte patru biţi, se poate realiza fie cu patru
multiplexoare de tip 74x151, fie cu patru multiplexoare de tip 74x157, fie cu patru multiplexoare de tip
74x153. În primul caz, realizarea nu impune un decodificator pentru selectarea multiplexoarelor, ele
funcţionând în paralel, pe fiecare bit. În celelalte două cazuri se impune utilizarea unor decodificatoare
pentru selectarea multiplexoarelor. De regulă, creşterea numărului de canale impune utilizarea
decodificatoarelor pentru selectarea multiplexoarelor intermediare.
54
Fig. 4.19. Structura multiplexorului 74x151.
55
În Fig. 4.20 este prezentată realizarea unui multiplexor de un bit cu 32 de intrări utilizând patru
multiplexoare de un bit cu opt intrări (74x151) şi un decodificator 2:4 (1/2 din 74x139).
Se observă că biţii de adresă care depăşesc capacitatea de adresare (A,B,C) a multiplexoarelor, se
repartizează pe adresarea decodificatorului ( A3 A4 ). Astfel, partea inferioară ( A2 A1 A0 ) a cuvântului de
adresă se distribuie multiplexoarelor (în paralel), iar partea superioară ( A3 A4 ) se repartizează
decodificatorului. Ţinând seama de ieşirile negate ale multiplexoarelor, poarta NAND de la ieşire realizează
de fapt un SAU între ieşirile normale ale multiplexoarelor (care nu pot fi 1 simultan, datorită condiţiilor de
adresare).
Cu ajutorul multiplexoarelor de un bit se pot implementa direct funcţiile logice, utilizând mintermenii.
În acest scop, variabilele funcţiei se asociază intrărilor de adrese ale multiplexorului, iar pe intrările de date
(canale) ale multiplexorului se pun valorile logice asociate mintermenilor din tabelul de adrese.
Intrările de date corespunzatoare mintermenilor de valoare 0 (care nu apar în FCD) se pun la masă, iar
intrările de date corespunzatoare mintermenilor de valoare 1 (care apar in FCD) se pun, printr-o rezistenţă, la
Vcc . Astfel, în Fig. 4.21 este prezentată implementarea funcţiei logice (4.3) de patru variabile cu ajutorul a
două multiplexoare cu opt intrări.
n −1
y = ∑ mi ⋅ Di , (4.4)
i =0
56
unde mi reprezintă mintermenul cu numărul de ordine i din spaţiul de dimensiune s al unei funcţii logice,
reprezentată în tabelul de adevăr prin valorile mintermenilor Di , i = 0,1,....,2 s − 1 .
Dacă numărul de variabile ale funcţiei logice este mai mare decât numărul intrărilor de adrese ale
multiplexorului, atunci se folosesc structuri de multiplexoare extinse, comandate de decodificatoare.
Variabilele cele mai puţin semnificative se pun la intrările de adrese ale multiplexoarelor, iar variabilele cele
mai semnificative se pun la intrările de adrese ale decodificatoarelor.
Dacă se notează cu Y1 ieşirea lui MUX1 şi cu Y2 ieşirea lui MUX2, se observă că:
f = Y1 + Y2
Din acest punct de vedere, circuitul de multiplexare poate fi privit ca un circuit universal.
Se poate reduce complexitatea schemei dacă se utilizează funcţii logice parţiale pentru varibilele cele
mai semnificative. Numărul de funcţii logice parţiale va corespunde cu numărul de intrări de date ale
multiplexorului de un bit.
Funcţia logică de mai sus se poate implementa şi cu un singur MUX de un bit cu opt intrări prin
partiţionarea spaţiului de definiţie S4 în două subspaţii, unul de dimensiune 3 (S3) şi unul de dimensiune 1
(S1). Astfel, în loc de:
15
f = ∑ Di ⋅ mi ,
i =0
se poate scrie:
7
f = ∑ Di ⋅ g i ( x3 ) ,
i=0
unde funcţiile logice parţiale gi, i = 0,1,...,7, se determină înlocuind toate valorile posibile ale variabilelor
logice x0,x1,x2 în forma minimală. Aceste valori se pot stabili şi din tabela de adevăr, urmărind, pentru fiecare
combinaţie de cod a variabilelor x0,x1,x2, comportarea funcţiei f faţă de schimbarea lui x3.
Pentru exemplul dat, expresiile funcţiilor logice parţiale sunt următoarele:
Astfel:
x0 = A, x1 = B, x2 = C, D0 = D2 = D4 = D6 = 1, D5 = 0, D3 = x3’, D1 = D7 = x3
57
Fig. 4.22. Implementarea unei funcţii logice prin partiţionarea spaţiului de intrare.
Pentru variabilele care nu se aplică direct pe adrese, se utilizează porţi logice care realizează, unde este
cazul, restricţiile gj, dependente de aceste variabile. Implementarea funcţiei logice f prin partiţionarea
spaţiului variabilelor de intrare, cu ajutorul unui singur multiplexor, este dată în Fig. 4.22.
4.2.5. Demultiplexoare
Demultiplexorul (DMUX), indeplineşte o funcţie inversă faţă de cea a multiplexorului, adică distribuie
datele de pe canalul de intrare pe unul dintre canalele de ieşire, selectat într-un anume mod.
Schema unui demultiplexor cu n canale de ieşire şi s biţi pentru adresare (de regulă n = 2s) este
prezentată în Fig. 4.23. Atât canalul de intrare cât şi canalul de ieşire pot fi pe unul sau mai multi biţi (m). În
Fig. 4.24 este prezentată schema unui demultiplexor cu opt canale de un bit.
Pentru realizarea demultiplexoarelor pe un bit se pot utiliza decodificatoare. Astfel, în Fig. 4.25 este
prezentat un demultiplexor cu opt canale de ieşire realizat cu un decodificator (de adrese) cu trei intrări şi opt
ieşiri, 74x138. În acest caz, ieşirile apar negate, iar D ≡ G1.
58
Fig. 4.24. Schema bloc a unui demultiplexor de opt canale cu un bit.
Fig. 4.25. Schema bloc a unui demultiplexor de opt canale cu un bit realizat cu un decodificator 74x138.
59
Fig. 4.26. Magistrală pe un bit realizată cu o pereche MUX-DEMUX.
f = x 2 ⋅ x1 ⋅ x 0 + x 2 ⋅ x1 = x 2 ⋅ x1 ⋅ x0 + x 2 ⋅ x1 ⋅ x0 + x 2 ⋅ x1 ⋅x 0
Schema circuitului logic combinaţional de implementare a funcţiei este prezentată în Fig. 4.27.
Circuitele logice de comparare pot furniza informaţii despre relaţiile în care se află două numere A şi
B codificate binar (natural): egal (A = B), mai mic (A < B), mai mare (A > B).
Comparatoarele pentru indicarea egalităţii se pot realiza cu porţi logice de tipul XOR sau NXOR. În
Fig. 4.28 sunt prezentate comparatoare simple, pe un bit, pentru indicarea egalităţii (a) sau a inegalităţii (b).
În tabelul 4.6 sunt prezentate funcţia egalitate (EQ) şi funcţia inegalitate (INEQ) pentru un bit.
Utilizând mai multe porţi de acest tip se pot realiza comparatoare pentru indicarea egalităţii pe mai mulţi biţi
(Fig. 4.29). În acest caz, EQ = 1 dacă sunt îndeplinite simultan condiţiile: A0 = B0, A1 = B1, A2 = B2 şi A3 = B3
60
Tabelul 4.6. Tabelul de adevăr pentru funcţia EQ şi pentru funcţia INEQ.
A B EQ INEQ
0 0 1 0
0 1 0 1
1 0 0 1
1 1 1 0
Există comparatoare pe 4 biţi, realizate ca circuite integrate pe scară medie, pentru indicarea uneia
dintre cele trei stări posibile: A = B, A < B, A > B (Fig. 4.30) şi având posibilităţi de interconectare,
pentru a putea fi extins la mai mulţi biţi. Semnificaţiile notaţiilor din figură sunt următoarele:
A0, A1, A2, A3 – biţii corespunzători numărului A;
B0, B1, B2, B3 – biţii corespunzători numărului B;
ALTB OUT – ieşire pentru A < B;
AEQB OUT – ieşire pentru A = B;
AGRB OUT – ieşire pentru A > B;
ALTB IN – intrare pentru A < B (egală cu 1, dacă A < B în etajul anterior, în cazul în care există o
conexiune în lanţ a modulelor în vederea comparării a două numere reprezentate pe un număr mai mare de
biţi);
AEQB IN – intrare pentru A = B (egală cu 1, dacă A = B, în etajul anterior);
AGRB IN – intrare pentru A > B (egală cu 1, dacă A > B, în etajul anterior).
Se precizează că:
61
AEQB OUT = 1, dacă (A = B) şi (AEQB IN = 1);
În cuvântul binar de ieşire, unul şi numai unul singur dintre cei trei biţi este egal cu 1.
Fig. 4.31. Comparator pe 12 biţi realizat cu trei comparatoare pe 4 biţi standard (de tip 74x85).
Pentru extinderea capacităţii în biţi a comparatoarelor, se conectează mai multe comparatoare standard
(cu număr fixat de biţi) în casacadă, ca în Fig. 4.31.
În cazul codurilor detectoare de erori, bazate pe bit de paritate, este posibilă detectarea
parităţii/imparităţii numărului de biţi ai cuvântului de cod. Ţinând seama de structura cuvântului de cod,
nerespectarea parităţii/imparităţii impuse semnifică apariţia unei erori în cuvântul respectiv. Această
problemă se poate rezolva simplu, printr-o operaţie de tip SAU EXCLUSIV asupra biţilor componenţi ai
cuvântului de cod.
Fie în acest sens x0, x1, ...., xn-1 biţi unui cuvânt de cod. Se poate cosidera funcţia logică IMPAR(x0, x1,
...., xn-1) care ia valoarea 1 dacă:
x0 ⊕ x1 ⊕ ... ⊕ x n −1 = 1
Analog, se poate considera funcţia logică PAR(x0, x1, ...., xn-1), care ia valoarea 1 dacă :
x0 ⊕ x1 ⊕ ... ⊕ x n −1 = 0
62
Având în vedere faptul că porţile XOR elementare sunt realizate în varianta cu două intrări, o schemă
pentru determinarea imparităţii/parităţii conţine mai multe astfel de porţi ce pot fi conectate în mai multe
moduri. Unul dintre ele, bazat pe simetria circuitului, este prezentat în Fig. 4.32.
Evident, ieşirea Y va fi:
Y = 0, pentru un număr par de 1 în cuvântul binar x0, x1, ...., xn-1 şi
Y = 1, pentru un număr par de 1 în cuvântul binar x0, x1, ...., xn-1.
Astfel de porţi sunt integrate pe o singură capsulă (cazul circuitului de paritate 74x280, pentru cuvinte
de nouă biţi).
A B S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
63
operand x operand y
A B transport
C
Σ
S
sumă
Funcţiile logice corespunzătoare lui S (4.5) şi COUT (4.6) se pot implementa direct din tabelul de
adevăr, considerând FCD:
A B Cin S Cout
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
64
operand x operand y
A B
CIN COUT
transport din transport în
rangul inferior Σ rangul superior
sumă
Expresiile celor două funcţii logice pot fi simplificate utilizând proprietăţile algebrei logice şi porţi de
tip XOR. Astfel, relaţia (4.5) devine:
A'⋅B'+ A ⋅ B = (( A'⋅B'+ A ⋅ B)' )' = (( A'⋅B' )'⋅( A ⋅ B)' )' = (( A + B) ⋅ ( A'+ B' ))' = = ( A ⋅ B '+ A'⋅B )' = ( A ⊕ B )' (4.8)
Implementarea celor două funcţii logice Cout şi S este reprezentată prin circuitul logic combinaţional
din Fig. 4.35.
O altă expresie pentru Cout se poate obţine prin minimizarea funcţiei logice (4.2) cu ajutorul
diagramelor Karnangh (Fig. 4.36).
65
Fig. 4.36. Diagrama Karnaugh pentru funcţia logică Cout.
Adunarea a două numere binare pe mai mulţi biţi se face, utilizând transportul în rangul următor, după
regula obişnuită (Exemplul 4.7).
1 1 1 0 C
0 1 0 1 1 x
0 1 1 1 0 y
1 1 0 0 1 (S)
Observaţie
Conform observaţiei precedente, pentru a putea realiza sumatoare pe mai mulţi biţi sumatoarele
complete pe un bit pot fi conectate în cascadă pe liniile de transport. Astfel, în Fig. 4.37 se prezintă un
sumator pe n biţi obţinut prin legarea în cascadă a n sumatoare complete de un bit.
Fig. 4.37. Sumator pe n biţi obţinut prin legarea în cascadă a n sumatoare complete pe un bit.
Sumatorul de mai sus prezintă dezavantajul că, prin legarea in cascadă semnalul de transport este
întârziat foarte mult, proporţional cu numărul de celule conectate. Prin întârzierea semnalului de transport
apar semnale de ieşire false pe durata regimului tranzitoriu. Astfel, presupunând că avem un sumator pe cinci
biţi şi operanzii x = 01111, y = 00001, la ieşirea sumatorului binar paralel se obţin, succesiv
următoarele configuraţii tranzitorii (i), (ii), (iii) (iv):
01111
00001
01110 (i)
01100 (ii)
01000 (iii)
10000 (iv)
Pentru un număr mic de biţi (de exemplu, patru biţi) se poate realiza o schemă de sumator ce
calculează Ci direct din Aj, Bj şi C0, j = 0,1,...,i-1, ocolind legarea în cascadă a sumatoarelor pe un bit. Aceste
sumatoare se numesc sumatoare cu anticiparea transportului sau sumatoare rapide (de exemplu, sumatorul
pe patru biţi 74x283).
66
Structura unei celule a sumatorului rapid este prezentată in Fig. 4.38.
În figură, CLCi este un circuit logic combinaţional pentru calculul direct al transportului Ci. Acesta se
bazează pe relaţia de recurenţă obţinută din (4.10). S-a considerat: COUT = Cn, CIN = Cn-1, A = An-1, B = Bn-1.
În cazul sumatorului rapid pe patru biţi având intrările C0, A0, A1, A2, A3, B0, B1, B2, B3 şi ieşirile S0,
S1, S2, S3, C4 (Fig. 4.39), transporturile intermediare C1, C2, C3 şi transportul de ieşire C4, se determină din
relaţiile următoare:
C1 = A0 ⋅ B0 + C 0 ⋅ ( A0 + B0 )
C 2 = A1 ⋅ B1 + C1 ⋅ ( A1 + B1 ) = A1 ⋅ B1 + A0 ⋅ B0 ⋅ ( A1 + B1 ) + C 0 ⋅ ( A0 + B0 ) ⋅ ( A1 + B1 )
C 3 = A2 ⋅ B2 + C 2 ⋅ ( A2 + B2 ) = A2 ⋅ B2 + A1 ⋅ B1 ⋅ ( A2 + B2 ) +
+ A0 ⋅ B0 ⋅ ( A2 + B2 ) ⋅ ( A1 + B1 ) + C 0 ⋅ ( A2 + B2 ) ⋅ ( A1 + B1 ) ⋅ ( A0 + B0 )
Schema unui sumator rapid, integrat, pe patru biţi (74x283) este prezentată în Fig. 4.39. Semnificaţia
notaţiilor sunt următoarele: C0 - intrarea de transport, A3, A2, A1, A0 - biţii primului operand, B3, B2, B1, B0 -
biţii celui de-al doilea operand, S3, S2, S1, S0 – biţii sumei (ieşirea), C4 –ieşirea de transport.
67
Fig. 4.39. Schema unui sumator rapid, integrat, pe 4 biţi.
Utilizând un sumator paralel, se poate realiza un circuit de scădere (ce realizează operaţia x-y) pe baza
complementării faţă de 2 a scăzătorului y luat cu semnul minus. Pentru complementare, biţii numărului y se
inversează, iar C0 se conectează la Vcc (1 logic) - Fig. 4.40.
Observaţie
Circuitul sumator paralel poate fi folosit ca sumator/scăzător în aceeaşi configuraţie utilizând comanda de
adunare/scădere (ADD/SUB) şi punând 0 pentru adunare şi 1 pentru scădere (Fig. 4.41). Circuitele XOR
joacă rolul unor inversoare programate.
Considerând MSB bitul de semn ( pentru x şi pentru y), se poate semnaliza depăşirea formatului
de opt biţi, examinând cele două situaţii din tabelul de adevăr: prima, când se adună două numere pozitive şi
bitul de semn rezultat ( ) este 1, şi a doua, când se adună două numere negative şi bitul de semn rezultat
este 0 (Tabelul 4.9).
68
Fig. 4.41.
Tabelul 4.9. Tabelul de adevăr pentru funcţia Detector de depăşire (DD) (overflow)
DD
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
Circuitul logic prin care este implementată această funcţie este prezentat în Fig. 4.42.
69
4.2.10. Unitaţi artimetice-logice (ALU)
O unitate aritmetică-logică (ALU) este un CLC capabil să realizeze o serie de operaţii aritmetice sau
logice cu doi operanzi pe n biţi (de obicei, o astfel de unitate, de tip MSI, are n = 4). De asemenea, există un
set de intrări pentru selectarea funcţiei pe care o execută ALU. Unele ALU au prevăzute ieşiri pentru
generarea transportului rapid (anticipat) şi în cazul conectării mai multor ALU standard de patru biţi (de
exemplu, 74x381 sau 74x382) în paralel, fără întârzierea transportului. Generarea transportului anticipat pe
grupe de patru biţi se face cu ajutorul unui CLC integrat 74x182 (până la patru grupe).
S0
OVR
S1 COUT
S2
F0
Cin
F1
A0
B0 F2
F3
A1
B1
A2
B2
A3
B3
S2 S1 S0 Funcţia (F3,F2,F1,F0)
0 0 0 0 0 0 0 (iniţializare 0)
0 0 1 B-A-1+CIN (aritmetică)
0 1 0 A-B-1+CIN (aritmetică)
0 1 1 A+B+CIN (aritmetică)
1 0 0 A ⊕ B (logică)
1 0 1 A+B (logică)
1 1 0 A·B (logică)
1 1 1 1 1 1 1 (iniţializare 1)
70
4.2.11. Realizarea multiplicării cu ajutorul CLC
x3 ⋅ y0 x2 ⋅ y0 x1 ⋅ y0 x0 ⋅ y0
+ + +
x3 ⋅ y1 x2 ⋅ y1 x1 ⋅ y1 x0 ⋅ y1
+ + +
x3 ⋅ y2 x2 ⋅ y2 x1 ⋅ y2 x0 ⋅ y2
+ + +
x3 ⋅ y3 x2 ⋅ y3 x1 ⋅ y3 x0 ⋅ y3
P7 P6 P5 P4 P3 P2 P1 P0
După cum s-a menţionat, un circuit logic combinaţional ideal se caracterizează prin faptul că ieşirea la
un moment dat depinde doar de combinaţia de intrare la acel moment:
y = f ( x0 , x1 ,..., x n −1 ) (4.12)
În realitate, datorită întârzierii introduse de circuitele electronice fizice (porţile logice), apar
desincronizări între modificarea intrării şi modificarea corespunzătoare a ieşirii. Până la obţinerea valorii
ieşirii se manifestă un fenomen tranzitoriu pe parcursul căruia ieşirea poate lua alte valori decât cele ideale,
fenomen numit hazard.
În cele ce urmează, vom presupune că toate porţile logice introduc aceeaşi întârziere, tp (timp de
propagare), între momentul modificării intrării şi momentul în care apare schimbarea la ieşire.
În fond, hazardul se referă la contrazicerea, pentru cazul real, a două teoreme fundamentale ale
algebrei logice: teorema terţului exclus şi teorema contradicţiei:
f = x + x’ = 1
şi, respectiv,
g = x·x’ = 0
71
Fig. 4.45. Circuit logic ce verifică cele două teoreme.
Dacă se modifică intrarea x din 0→1 şi din 1→0, conform diagramelor de semnal din Fig. 4.46,
datorită timpilor de propagare tp prin cele trei porţi, semnalele de ieşire g şi f din montajul de test (Fig.
4.45) vor avea, pe o durată scurtă, alte valori decât cele teoretice. Se observă că salturile nedorite, de scurtă
durată, pot fi 0→1→0 (risc sau hazard static în 0) sau 1→0→1 (risc sau hazard static în 1). Un astfel de
impuls se numeşte glitch.
Observaţie.
Hazardul static în 0 nu apare în cazul formelor disjunctive, deoarece ar fi lipsit de sens să se aplice x şi
x’ aceleiaşi porţi ŞI din nivelul 1. De asemenea, hazardul static în 1 nu apare în cazul formelor conjunctive,
deoarece nu pot apărea x şi x’ pe aceeaşi poartă SAU din nivelul 1.
Hazardul static în 1 poate fi prezent atunci când există două combinaţii de intrare care se deosebesc
printr-o singură variabilă şi au, ambele, ieşirile corespunzătoare egale cu 1.
Hazardul static în 0 poate fi prezent atunci când există două combinaţii de intrare care se deosebesc
printr-o singură variabilă şi au, ambele, ieşirile corespunzătoare egale cu 0. De fapt, hazardul static în 0 este
dualul hazardului static în 1.
x
x' t1 t2 t
x· x’ t1+tp t2+tp t
x + x’ t1+2tp t
t2+2tp t
Pentru eliminarea hazardului se pot introduce termeni suplimentari (redundanţi), obţinând o nouă
funcţie logică, echivalentă din punctul de vedere al comportării ideale cu cea iniţială, dar care nu mai
prezintă fenomenul de hazard.
O altă metodă de evitare a fenomenului de hazard constă în introducerea unor impulsuri de
sincronizare, pentru validarea datelor în zone lipsite de hazard. Astfel, în cazul sistemelor numerice sincrone
(Cap. 5) proiectate corect nu este necesară analiza hazardului. De fapt, eliminarea hazardului apare necesară
doar în cazul circuitelor secvenţiale asincrone.
Pentru studiul modalităţilor de eliminare a hazardului static combinaţional, vom considera doar
reprezentarea în formă disjunctivă, cea în formă conjunctivă fiind tratată similar. O metodă simplă de
eliminare a hazardului în 1 este metoda diagramelor Karnaugh. În acest caz, toate grupările de 1, selectate
pentru minimizare, trebuie să fie înlănţuite (să nu fie separate). Termenii suplimentari introduşi faţă de forma
minimală elimină glitch-urile, susţinând valoarea 1 pe această durată, şi se numesc termeni de consens.
72
Exemplul 4.9. CLC cu hazard static.
Expresia analitică a funcţiei de tranziţie f este (4.13) iar diagrama Karnaugh este prezentată în Fig.
4.48.
Cu linie plină sunt marcaţi implicanţii ce apar în f (A şi B). Cele două grupări nu sunt legate. Se introduce un
termen de consens care leagă cele două grupări (cu linie punctată): x2·x0’. Adăugarea acestui termen la forma
disjunctivă a lui f schimbă expresia lui f cu fC (4.14) - funcţia corectată. Cele două funcţii sunt, evident,
echivalente.
x1 x0
x2 00 01 11 10
A
0 0 0 0 1
B
1 1 1 0 1
Fig. 4.48. Diagrama Karnaugh pentru funcţia (4.10) şi evidenţierea termenilor de consens.
Modul de eliminare a hazardului static în 1, la trecerea din combinaţia A (110) în combinaţia B (100),
se observă din diagrama de semnal din Fig. 4.49.
73
Fig. 4.49. Diagrama de semnal pentru ilustrarea eliminării hazardului static în 1 din exemplul 4.9.
Exemplul 4.10
Pentru funcţia logică f, reprezentată prin diagrama Karnaugh din Fig. 4.50, să se elimine hazardul
static în 1. Funcţia logică minimizată f este (4.15). Înlănţuind grupările separate din diagramă rezultă trei
termeni de consens: x1’·x0, x3 ·x2 ·x1 şi x3’·x2 ·x0’ şi funcţia corectată fC (4.16).
f = x3’·x1’+ x3 ·x0 + x2 ·x1 ·x0’+ x1’·x0 + x3 ·x2 ·x1 + x3’·x2 ·x0’ (4.16)
x1 x0
x3 x2 00 01 11 10
00
00 1 1 0 0
01
01 1 1 0 1
11
11 0 1 1 1
10
10 0 1 1 0
Fig. 4.50. Diagrama Karnaugh pentru funcţia (4.15) şi evidenţierea termenilor de consens.
Hazardul dinamic se caracterizează prin faptul că ieşirea se poate schimba de mai multe ori în cadrul
regimului tranzitoriu. Acest lucru se întâmplă atunci când semnalele parcurg, la acelaşi circuit, căi ce conţin
un număr diferit de porţi logice sau atunci când parcurg, la acelaşi circuit, căi ce conţin porţi mai lente şi căi
ce conţin porţi mai rapide.
La circuitele combinaţionale cu trei niveluri, de tipul FD sau FC, corect implementate, nu apar
hazarduri dinamice.
74
Un exemplu de hazard dinamic este dat în Fig. 4.51.
fideal
freal
Aplicaţii
f = x 2 ⋅ x0 + x1 ⋅ x 2 + x1
f = ( x 2 + x0 ) ⋅ ( x1 ⊕ x 2 )
iv) Utilizând un MUX integrat pe un bit cu opt intrări, să se implementeze funcţia logică:
f = x 2 ⋅ x1 ⋅ x0 + x 2 ⋅ x1 ⋅ x0
v) Să se alcătuiască tabela de adevăr pentru ieşirea LSB a unui convertor pe trei biţi din cod binar natural în
cod Gray.
vi) Să se alcătuiască tabela de adevăr pentru ieşirea MSB a unui convertor pe patru biţi din cod BCD (8421)
în cod BCD exces 3.
75