Sunteți pe pagina 1din 32

4.

CIRCUITE LOGICE COMBINAŢIONALE (CLC)

4.1. ANALIZA ŞI SINTEZA CIRCUITELOR LOGICE COMBINAŢIONALE

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

Fig. 4.1. Reprezentarea intrare/ieşire a unui CLC

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.

Fig. 4.2. Circuitul logic INHIBARE.

Fig. 4.3. Circuitul logic IMPLICARE.

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).

Exemplul 4.1. Sinteza simplă

Să se implementeze un CLC corespunzător funcţiei de transfer:

f(x0,x1,x2,x3) = ((x0 ·x1’+x2)·x3)’

Circuitul logic corespunzător funcţiei de mai sus este prezentat în Fig.4.4.

Fig. 4.4. Schema circuitului logic din exemplul 4.1.

Exemplul 4.2. Sinteza complexă

Să se implementeze un CLC care să primească la intrare un număr natural cuprins între 0 şi 15


inclusiv, iar ieşirea să fie 1 dacă numărul este în intervalul [0,15] şi este divizibil cu 2 sau 3, şi să fie 0 dacă
este în intervalul [0,15] şi nu este divizibil cu 2 sau 3. Rezolvarea acestei probleme, prin determinarea formei
disjunctive minimale, s-a făcut în Exemplul 2.11, utilizând algoritmul Quine – McCluskey.

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

Fig.4.5. Modul CLC cu intrări de comandă.

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

Fig. 4.6. Structura unui decodificator.

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

Fig. 4.7. Decodificator BCD – 7 segmente şi dispozitivul de afişare cu 7 segmente.

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

Analog, se poate descrie convertorul BCD – zecimal (binar, 1 din 10).

Tabelul 4.1.Tabelul de adevăr pentru decodificatorul 74x49

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 − −

Fig.4.8. Diagrama Karnaugh pentru g.

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.

Tabelul 4.2. Tabelul de adevăr pentru decodificatorul de adrese 3: 8.

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

Fig. 4.9. Decodificatorul de adrese 3: 8.

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

4.2.2. Convertoare de cod

Convertoarele de cod binar au acelaşi număr de intrări şi de ieşiri.

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

Fig. 4.11. Implementarea convertorului Cod BN-Cod Gray.

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.

Fig. 4.12. Convertorul Cod Gray – Cod BN.

49
Fig. 4.13.Implementarea convertorului Cod Gray-Cod BN.

Funcţiile logice ce caracterizează ieşirile y0, y1, y2, y3 sunt următoarele:

y 0 = x0 ⊕ x1 ⊕ x 2 ⊕ x3
y1 = x1 ⊕ x 2 ⊕ x3
y 2 = x 2 ⊕ x3
y 3 = x3

4.2.3. Codificatoare

Codificatoarele sunt circuite logice combinaţionale asemănătoare decodificatoarelor, dar având


funcţionarea inversă, astfel încât, la ieşire oferă un cod binar corespunzător combinaţiei de la intrare
(Fig.4.14). Cuvântul de la intrare are mai mulţi biţi decât cuvântul de la ieşire. În afară de intrările pentru
datele de codificat, I0,...,In-1, şi de ieşirile pentru datele codificate, O0,...,Om-1, codificatorul mai prezintă
comenzi de activare a intrărilor E0,...,Ek-1, şi, respectiv, de validare a ieşirilor, Y0,...,Yp-1. De regulă, n > m, n
> k, n > p, n = 2m .

Y0 Yp-1

I0
O0
CODIFICATOR
In-1
Om -1

E0 Ek-1

Fig. 4.14. Schema generală a unui codificator.

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

Fig. 4.15. Codificator de adresă, simplu.

Tabelul 4.3. Tabelul de adevăr al codificatorului 8:3.

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

Tabelul 4.4. Tabela de adevăr pentru codificatorul cu priorităţi

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

Ieşirile vor avea funcţiile logice următoare:

02= I7+I7’·I6+I7’·I6’ ·I5+I7’·I6’·I5’·I4 ,

01= I7+I7’·I6+I7’·I6’ ·I5’·I4’·I3+ I7’·I6’ ·I5’·I4’·I3’·I2 ,

00= I7+ I7’·I6’ ·I5+I7’·I6’ ·I5’·I4’·I3+ I7’·I6’ ·I5’·I4’·I3’·I2’·I1 ,

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

Fig. 4.17. Schema bloc a unui multiplexor.

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.

Fig. 4.20. Implementarea unui multiplexor de un bit cu 32 de intrari.

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).

Fig. 4.21. Implementarea unei funcţii logice cu ajutorul multiplexoarelor.

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.

f ( x3 , x 2 , x1 , x0 ) = x0' + x3 ⋅ x 2' ⋅ x1' + x3' ⋅ x 2' ⋅ x1' + x3 ⋅ x 2 ⋅ x1 (4.3)

Aceasta este forma minimală a funcţiei din exemplul 2.11.


Considerând multiplexorul activat, relaţia (4.1) se poate scrie astfel:

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:

g0(x3) = f(x3 ,0,0,0) = 1,

g1(x3) = f(x3 ,0,0,1) = x3 ,

g2(x3) = f(x3 ,0,1,0) = 1,

g3(x3) = f(x3 ,0,1,1) = x3’,

g4(x3) = f(x3 ,1,0,0) = 1,

g5(x3) = f(x3 ,1,0,1) = 0,

g6(x3) = f(x3 ,1,1,0) = 1,

g7(x3) = f(x3 ,1,1,1) = x3

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.

Fig. 4.23. Schema bloc a unui demultiplexor.

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.

O pereche MUX-DMUX poate fi utilizată pentru a gestiona transmiterea pe o magistrală de date de la


mai multe surse S1, S2, ..., S8 la mai multe receptoare R1, R2, ..., R8 (Fig. 4.26).
Cu ajutorul unui DEMUX şi al unor tranzistoare MOS de comutaţie se poate realiza un circuit de
multiplexare bidirecţional (MDX).
Ca şi multiplexoarele, demultiplexoarele pot fi utilizate drept circuite universale pentru implementarea
unei funcţii logice reprezentate în FCD (Exemplul 4.6). Considerând un DMUX cu ieşiri nenegate, pentru
implementarea funcţiei logice, dată în FCD sau prin tabel de adevăr, se conectează variabilele funcţiei pe
intrările de adresă (respectând ponderile corespunzatoare). Intrarea de date D se pune la Vcc (valoare logică
1), iar ieşirile corespunzătoare adreselor mintermenilor de valoare logică 1 (sau care apar în FCD) se leagă la
intrările unui SAU a cărui ieşire reprezintă funcţia logică f. Celelalte ieşiri se lasă libere (Fig. 4.27). Dacă
ieşirile sunt negate, poarta SAU se înlocuieşte cu NAND.

59
Fig. 4.26. Magistrală pe un bit realizată cu o pereche MUX-DEMUX.

Exemplul 4.6. Implementarea unei funcţii logice cu ajutorul 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.

Fig. 4. 27. Schema circuitului de implementare a funcţiei din exemplul 4.1.

4.2.6. Circuite logice de comparare

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

Fig.4.28. Comparatoare simple pentru indicarea inegalității/egalităţii.

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

Fig. 4.29. Comparator pe 4 biţi pentru indicarea egalităţii.

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).

Fig. 4.30. Simbolul comparatorului pe 4 biţi 74x85.

Se precizează că:

ALTB OUT = 1, dacă (A < B) sau [(A = B) şi (ALTB IN = 1)];

61
AEQB OUT = 1, dacă (A = B) şi (AEQB IN = 1);

AGRB OUT = 1, dacă (A > B) sau [(A= B) şi (AGRB 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.

4.2.7. Detectoare de paritate / imparitate

Î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).

Fig. 4.32. Detector de paritate/imparitate pentru opt biţi.

4.2.8. Sumatoare şi unităţi aritmetice logice

Sumatoarele, circuitele de scădere şi unităţile aritmetice-logice, realizează funcţii aritmetice utilizând


circuite logice.
În cazul sumării a două numere binare de un bit (Tabelul 4.7), rezultatul este furnizat pe doi biţi, un bit
pentru sumă (S) şi un bit pentru transport în rangul superior – carry (C). Acest CLC se numeşte
semisumator. Simbolul lui este dat în Fig. 4.33.
Pentru ca acest sumator elementar să poată fi utilizat la implementarea unui sumator pe mai mulţi biţi
este necesară încă o intrare şi anume transportul din rangul inferior Cin. În acest caz, C = Cout (Tabelul 4.8)
iar sumatorul pe un bit se numeşte sumator complet. Simbolul unui sumator complet este dat în Fig. 4.34.

Tabelul 4.7. Tabela de adevăr pentru un semisumator.

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ă

Fig. 4.33. Simbol unui semisumator.

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:

C OUT = A'⋅B ⋅ C IN + A ⋅ B '⋅C IN + A ⋅ B ⋅ C IN


'
+ A ⋅ B ⋅ C IN (4.5)

S = A'⋅B '⋅C IN + A'⋅B ⋅ C IN


'
+ A ⋅ B '⋅C IN
'
+ A ⋅ B ⋅ C IN (4.6)

Tabelul 4.8. Tabelul de adevăr pentru un sumator complet pe un bit.

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ă

Fig. 4.34. Simbol unui sumator complet pe un bit.

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:

COUT = ( A'⋅B + A⋅ B' ) ⋅ CIN + A⋅ B ⋅ (CIN


'
+ CIN ) = ( A ⊕ B) ⋅ CIN + A⋅ B (4.7)

Considerând transformarea (4.8):

A'⋅B'+ A ⋅ B = (( A'⋅B'+ A ⋅ B)' )' = (( A'⋅B' )'⋅( A ⋅ B)' )' = (( A + B) ⋅ ( A'+ B' ))' = = ( A ⋅ B '+ A'⋅B )' = ( A ⊕ B )' (4.8)

relaţia (4.6) se poate scrie în modul următor:

S = ( A'⋅B'+ A ⋅ B) ⋅ CIN + ( A'⋅B + A ⋅ B' ) ⋅ CIN


'
= ( A ⊕ B)'⋅CIN + ( A ⊕ B) ⋅ CIN
'
= = A ⊕ B ⊕ C IN (4.9)

Implementarea celor două funcţii logice Cout şi S este reprezentată prin circuitul logic combinaţional
din Fig. 4.35.

Fig. 4.35. Implementare funcţiilor S şi Cout.

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.

Din minimizarea funcţiei conform diagramei Karnaugh de mai sus rezultă:

COUT = B·A + A·CIN + B· CIN = A·B + CIN · (A + B) (4.10)

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).

Exemplul 4.7. Adunarea a două numere binare utilizând transportul.

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

CIN (rang i) = COUT (rang i-1)

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.

Fig. 4.38. Structura unei celule a sumatorului rapid.

Î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.

C n = An −1 ⋅ Bn −1 + C n −1 ⋅ ( An−1 + Bn −1 ), n = 1,2,... (4.11)

Î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.

4.2.9. Circuite de scădere

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.

Fig. 4.40. Configurarea unui sumator pe patru biţi ca dispozitiv de scădere.

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.

Sumator/scăzător pe opt biţi în C2.

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

Astfel, pentru n = 8, rezultă funcţia logică a detectorului de depăşire DD în forma canonică


disjunctivă:

DD = x7' ⋅ y 7' ⋅ s 7 + x7 ⋅ y 7 ⋅ s 7'

Circuitul logic prin care este implementată această funcţie este prezentat în Fig. 4.42.

Fig. 4.42. Implementarea circuitului DD utilizând biţii de semn.

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).

Exemplul 4.8. Unitate aritmetică-logică pe patru biţi.


Circuitul integrat 74x381, ALU de patru biţi este prezentat în Fig. 4.43, iar funcţiile realizate, în
Tabelul 4.10.
Funcţia realizată de circuitul integrat 74x382 este selectată cu ajutorul intrărilor S2, S1, S0. Cuvintele
binare A şi B, care reprezintă cei doi operanzi, au biţii A3, A2, A1, A0, şi, respectiv, B3, B2, B1, B0. De
asemenea, există o intrare de transport CIN şi două ieşiri active în 0, G şi P, utilizate pentru generarea
transportului anticipat în rangul următor, cu ajutorul circuitului integrat 74x182.

S0
OVR
S1 COUT
S2
F0
Cin
F1
A0
B0 F2
F3
A1
B1
A2
B2
A3
B3

Fig. 4.43. Circuitul integrat 74x382, ALU de patru biţi.

Tabelul 4.10. Funcţiile realizate de ALU 74x382

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

Pentru implementarea unui multiplicator combinaţional se foloseşte algoritmul obişnuit, care


utilizează deplasări şi adunări.
De exemplu, pentru înmulţirea a două numere de patru biţi: x3x2x1x0 şi y3y2y1y0, se aplică schema din
Fig. 4.44.
Se observă ca operaţiile elementare principale ale produsului (considerat ca operaţie aritmetică) sunt:
înmulţirile pe un bit (operaţie logică), deplasările cu un bit şi adunarea (operaţie aritmetică) pe mai mulţi biţi.
Pentru fiecare ieşire: P6, P5, … , P0, se pot implementa funcţiile logice corespunzătoare, sub forma unor
circuite logice combinaţionale.

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

Fig. 4.44. Schemă pentru realizarea multiplicatorului combinaţional pe 4 biţi.

4.3. HAZARDUL COMBINAŢIONAL AL FUNCŢIILOR LOGICE

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

Fig. 4.46. Diagrama de semnale pentru ilustrarea hazardului static.

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.

Să se analizeze hazardul static pentru circuitul din Fig. 4.47.

Fig. 4.47. Circuit logic combinaţional cu hazard static.

Expresia analitică a funcţiei de tranziţie f este (4.13) iar diagrama Karnaugh este prezentată în Fig.
4.48.

f = x1·x0’ + x2·x1’ (4.13)

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.

fC = x1·x0’ + x2·x1’ + x2·x0’ (4.14)

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’ (4.15)

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

Fig. 4.51. Exemplu de hazard dinamic.

Aplicaţii

i) Să se implementeze un MUX de un bit cu două intrări utilizând porţi logice elementare.

ii) Să se implementeze funcţia f direct, utilizând porţi logice elementare:

f = x 2 ⋅ x0 + x1 ⋅ x 2 + x1

iii) Să se implementeze funcţia f direct, utilizând porţi logice elementare:

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.

vii) Să se implementeze funcţia f direct, utilizând porţi logice elementare: f = x1 ⋅ ( x 2 ⊕ x 0 ) + x1 ⋅ x 2

75

S-ar putea să vă placă și