You are on page 1of 104

Cuprins

Prefaţă 3

1 Familii logice 7
1.1 Consideraţii teoretice 7
1.1.1 Poarta TTL standard 7
1.1.2 Poarta logică CMOS 11
1.1.3 Zgomote şi reflexii 14
1.2 Demonstraţii practice 19
1.3 Probleme rezolvate 24

2 Sisteme combinaţionale 31
2.1 Consideraţii teoretice 31
2.1.1 Implementarea cu porţi logice 31
2.1.2 Implementarea cu multiplexoare/demultiplexoare 33
2.2 Demonstraţii practice 35
2.3 Probleme rezolvate 40

3 Circuite de impuls 45
3.1 Consideraţii teoretice 45
3.1.1 Circuite astabile 45
3.1.2 Circuite monostabile 48
3.1.3 Circuite bistabile 49
3.2 Demonstraţii practice 50
3.3 Probleme rezolvate 54

4 Sisteme secvenţiale 59
4.1 Consideraţii teoretice 59
4.1.1 Sisteme secvenţiale asincrone 59
4.1.2 Sisteme secvenţiale sincrone 62
4.1.3 Hazard 63
4.2 Demonstraţii practice 64
4.3 Probleme rezolvate 69

5 Structuri programabile 79
5.1 Consideraţii teoretice 79
5.1.1 Memoria ROM 79
5.1.2 Memoria RAM 80
5.1.3 Structuri PLD 81
5.1.4 Structuri FPGA 83
5.2 Demonstraţii practice 84
5.3 Probleme rezolvate 88

6 Analiza şi sinteza automată 91


6.1 Consideraţii teoretice 91
6.1.1 Analiza circuitelor prin simulare PSPICE 91
6.1.2 Sinteza circuitelor folosind limbajul VHDL 97
6.2 Demonstraţii practice 101
6.3 Probleme rezolvate 106

Bibliografie 109
1 FAMILII LOGICE

Aplicaţiile din acest capitol îşi propun să prezinte familiile de porţi logice TTL şi
CMOS, să facă un studiu comparativ al parametrilor şi caracteristicilor unor porţi logice
realizate în cele două tehnologii fundamentale şi să analizeze sursele posibile de zgomote în
sistemele reale cu circuite integrate numerice.

1.1 Consideraţii teoretice

1.1.1 Poarta TTL standard

Structura porţii ŞI-NU (NAND) în tehnologie TTL standard este dată în figura
1.1. Dacă tensiunea pe cel puţin una dintre intrări este nulă, tranzistorul T1 are cel puţin
o joncţiune polarizată direct şi potenţialul bazei lui T1 este de circa 0,6V. În aceste
condiţii, tranzistorii T2 şi T3 sunt blocaţi, iar tranzistorul T4 conduce, rezultând la
ieşire starea 1 logic. Tensiunea la ieşire este VOH (Voltage Output High):
VOH = VCC − VBE ( T 4 ) − VF ( D1)

Vcc
R1 R2 R4
4K 1K6 130
T4
T1 A A. B
A T2 D1
B Vout B
R3 T3
DA DB 1K

Fig. 1.1 Structura porţii ŞI-NU în tehnologie TTL standard


8 1 FAMILII LOGICE

Fig. 1.2 Caracteristica de transfer a inversorului TTL standard

Fig. 1.3 Consumul de curent de la sursa de alimentare

Dacă tensiunile pe intrări sunt în 1 logic, joncţiunea BC a tranzistorului T1 conduce,


polarizând baza tranzistorului T2. Intrarea în conducţie a lui T2 determină şi conducţia lui
T3, rezultând la ieşire 0 logic. Tensiunea la ieşire este VOL (Voltage Output Low):
VOL = VCEsat ( T 3)
Caracteristica Vout = f (Vin ) se numeşte caracteristica de transfer de tensiune a porţii
şi are forma din figura 1.2, pentru o anumită tensiune de alimentare şi temperatură.
Tensiunea de intrare se aplică simultan pe cele 2 intrări A şi B ale porţii, care devine astfel
un simplu inversor. Variaţia consumului de curent de la sursa de alimentare se poate vedea
pe caracteristica din figura 1.3.
Standardul TTL garantează anumite valori de tensiune pentru cele patru nivele logice
de ieşire şi intrare în poarta logică. Pentru o încărcare a ieşirii cu 10 intrări TTL standard
(fan-out = 10), aceste nivele garantate sunt:
1.1 Consideraţii teoretice 9
- V IL , nivelul de tensiune necesar pentru a avea 0 logic la intrare: VIL ≤ V IL max = 0,8 V
- VIH , nivelul de tensiune necesar pentru a avea 1 logic la intrare: VIH ≥ VIH min = 2 V
- VOL , nivelul de tensiune de la ieşire în starea 0 logic: VOL ≤ VOL max = 0,4 V
- VOH , nivelul de tensiune de la ieşire în starea 1 logic: VOH ≥ VOH min = 2,4 V .
Caracteristica I in = f (Vin ) se numeşte caracteristică de intrare şi este reprezentată în
figura 1.4, pentru o anumită tensiune de alimentare şi temperatură. Caracteristica
Vout = f ( I out ) se numeşte caracteristică de ieşire. Există două caracteristici de ieşire, câte
una pentru fiecare din cele două stări logice (figurile 1.5 şi 1.6). Figura 1.7 prezintă o
comparaţie între caracteristicile de transfer pentru diverse grupe ale familiei logice TTL. Se
observă asemănarea lor, deci putem spune că toate grupele TTL se pot interconecta direct,
cu observaţia că frecvenţa de lucru trebuie să fie mai mică decât frecvenţa maximă a celor
mai lente circuite din structură.

Structura porţii ŞI-NU cu colector în gol (open colector) este reprezentată în figura
1.8. În circuitul de ieşire a tranzistorului cu colector în gol se conectează rezistenţa RC .
Această modificare permite deplasarea nivelului semnalului logic de la ieşire din TTL
(circa 0 - 4V) în 0 - Vcc , unde Vcc poate fi o tensiune mai mare de 5V. Configuraţia cu
colector în gol permite şi realizarea funcţiei logice ŞI, prin conectarea directă a ieşirilor,
fără a mai utiliza alte porţi logice în acest scop. Circuitul astfel obţinut se numeşte ŞI
CABLAT, deoarece funcţia ŞI a fost obţinută numai prin cablarea împreună a ieşirilor.

Fig. 1.4 Caracteristica de intrare Fig. 1.5 Caracteristica de ieşire în 1 logic

Fig. 1.6 Caracteristica de ieşire în 0 logic Fig. 1.7 Diverse grupe TTL
10 1 FAMILII LOGICE

Vcc
R1 R2 +
4K 1K6
RC RC
T1 A
A T2 B * A.B
B Vout
R3 T3
DA D B 1K

Fig. 1.8 Structura porţii ŞI-NU cu colector în gol

VCC VCC
RC RC
IIH I IL

IOH IOL .
.
. .
. .
. IOH .
. .

I IL
IOH IIH

n N n N
curenţii în circuit pentru 1 logic curenţii în circuit pentru 0 logic

Fig. 1.9 Calculul rezistenţei RC

Dezavantajul acestei structuri este dat de faptul că rezistenţa de ieşire este dată de
valoarea rezistenţei RC , valoare mai mare decât rezistenţa de ieşire a etajului în contratimp
de la poarta standard.
Valoarea rezistenţei RC depinde de numărul n al porţilor cu colector în gol conectate
în paralel şi de numărul N al sarcinilor comandate. Din condiţia de respectare a nivelelor
standard de tensiune pentru fiecare dintre cele două nivele logice rezultă două valori
pentru RC , iar valoarea rezistenţei se alege în acest interval.

pentru 1 logic:
VCC − VOH min
VOH = VCC − ( n ⋅ I OH + N ⋅ I IH ) ⋅ RC ≥ VOH min , deci RC max =
n ⋅ I OH max + N ⋅ I IH max

pentru 0 logic:
VCC − VOL max
VOL = VCC − (I OL − N ⋅ I IL ) ⋅ RC ≤ VOL max , deci RC min =
I OL max − N ⋅ I IL max
1.1 Consideraţii teoretice 11
1.1.2 Poarta logică CMOS

Configuraţia logică fundamentală la circuitele CMOS (Complementary-symmetry


MOS) este cea de inversor, configuraţie prezentată în figura 1.10. Dacă la intrare se
aplică nivelul logic 1 (tensiunea V+), tranzistorul T1 intră în conducţie şi tranzistorul
T2 se blochează, iar la ieşire nivelul logic este 0 (o tensiune practic nulă). La aplicarea
unei tensiuni nule pe intrare se blochează T1 şi intră în conducţie T2, ieşirea fiind în
acest caz la nivelul logic 1 (tensiunea de alimentare V+).
Caracteristica Vout = f (Vin ) se numeşte caracteristica de transfer de tensiune a porţii,
iar caracteristica I (V+ ) = f (Vin ) este caracteristica de curent (în figura 1.10, I (V+ ) este notat
cu I (VDD ) ; valoarea negativă a curentului indică faptul că acesta este absorbit de la sursă).
Sunt puse în evidenţă 5 regiuni pe parcursul variaţiei tensiunii de intrare în domeniul
0..V+ : - în regiunea I, pentru Vin ≤ VTN , unde VTN este tensiunea prag pentru tranzistorul T1
(nMOS), T1 blocat şi T2 este în conducţie liniară, iar Vout = V+ . Consumul de curent de la
sursa de alimentare este practic nul, unul dintre tranzistoare fiind blocat; - în regiunea II,
definită pentru intervalul VTN < Vin ≤ Vout − VTP , T1 este saturat şi T2 rămâne în conducţie
liniară. VTP este tensiunea prag pentru tranzistorul T2 (pMOS) şi are o valoare negativă; - în
regiunea III, definită pentru intervalul Vout − VTP < Vin ≤ Vout + VTN , ambele tranzistoare sunt
saturate, iar consumul de curent de la sursă este maxim. Regiunea IV oferă o comportare
identică cu regiunea II, dar de data aceasta stările tranzistoarelor sunt inversate, adică T1
este în conducţie liniară, iar T2 este în saturaţie, iar în regiunea V, tranzistorul T1 rămâne în
conducţie liniară, iar T2 intră în blocare.

V+= 15V

T2
Vin Vout

T1

Fig. 1.10 Structura de inversor CMOS şi caracteristicile de transfer


12 1 FAMILII LOGICE
Datorită faptului că cele două tranzistoare din structură au caracteristici aproape
identice, pragul de basculare a stării logice este situat la jumătatea excursiei semnalului
logic de intrare şi la jumătatea tensiunii de alimentare, frontul crescător al semnalului de
ieşire este aproximativ egal cu cel descrescător, iar consumul static de curent este practic nul
(familie logică ideală).

Configuraţia unei porţi logice în tehnologie CMOS este direct legată de funcţia
logică cerută. Structura din figura 1.11 este o poartă ŞI-NU cu 2 intrări, dar ieşirea din nodul
4 este trecută prin alte două structuri inversoare ca cele din figura 1.10 pentru a obţine o
caracteristică cât mai apropiată de una ideală şi pentru a asigura simetria ieşirii faţă de V+
şi faţă de masă. Ieşirea din nodul 7 al structurii este ieşirea porţii logice, ieşire care este
disponibilă la unul dintre pinii circuitului integrat.

Simulările s-au făcut pentru o tensiune de alimentare de +15V, dar, la circuitele


CMOS din seria 4000, de care ne ocupăm la laborator, tensiunile de alimentare pot fi alese
între +3V (tensiune impusă de existenţa obligatorie a zonelor I şi V din figura 1.10, ştiind că
VTN ≈ VTP ≈ 1,5V ) şi +18V, sau chiar +20V, în funcţie de structura circuitului respectiv.

Nivelele logice de ieşire şi intrare garantate prin standard sunt:


- V IL , nivelul de tensiune necesar pentru a avea 0 logic la intrare: VIL ≤ VIL max = 30% ⋅V+
- VIH , nivelul de tensiune necesar pentru a avea 1 logic la intrare: V IH ≥ V IH min = 70% ⋅ V +
- VOL , nivelul de tensiune de la ieşire în starea 0 logic: VOL ≤ VOL max = 0,05 V
- VOH , nivelul de tensiune de la ieşire în starea 1 logic: VOH ≥ VOH min = V+ − 0,05 V

1
V+

4 6 7

Fig. 1.11 Structura porţii ŞI-NU cu 2 intrări şi caracteristici de transfer


1.1 Consideraţii teoretice 13
Imunitatea la zgomot se defineşte ca fiind tensiunea maximă de zgomot prezentă la
intrare, care nu comută parazit poarta. Se observă că marginile de zgomot garantate sunt de
30% din valoarea tensiunii de alimentare, dar practic ele pot atinge 45% din valoarea
tensiunii de alimentare ([Ardelean, 1986]).

Impedanţa de intrare de curent continuu este de circa 1012 Ω , deoarece intrarea


inversorului este complet izolată de substrat prin dielectricul capacitorului poartă-substrat,
care are o grosime de circa 1000 Å. Orice sursă de tensiuni electrostatice poate astfel genera
o tensiune mare pe poartă, care să producă distrugerea ireversibilă a stratului izolator, prin
străpungere. Această impedanţă mare este atenuată în mare măsură de dispozitivele
amplasate pentru protecţia intrării (vezi figura 1.12) şi de elementele parazite proprii
circuitului integrat şi montajului în care acesta se găseşte. Cu toate acestea, valoarea
impedanţei de intrare depăşeşte 10 MΩ, fapt ce influenţează favorabil posibilitatea
comandării în curent continuu a unui număr mare de intrări CMOS. Aici, practic nu sunt
limite teoretice ale "fan-out"-ului, el fiind limitat de fapt numai de sarcina capacitivă de
circa 5pF pentru fiecare intrare CMOS.
De remarcat un parametru de catalog care surprinde la prima vedere, deoarece
curentul de intrare la un circuit CMOS este considerat de obicei nul:
I I − DC input current = ± 10 mA
Este vorba de curentul maxim ce poate trece prin diodele din reţeaua de protecţie, în orice
sens, deoarece aceste diode se pot deschide fie în conducţie directă, fie în conducţie inversă,
prin efect Zener. Avem de-a face şi aici cu o valoare maximă absolută, ca şi tensiunea de
alimentare de +18V! Depăşirea acestor valori are ca efect distrugerea cu mare probabilitate
a structurii!

Comportamentul ieşirii este preponderent rezistiv, un tranzistor MOS având o


rezistenţă drenă-sursă mai mică de 1KΩ în conducţie şi mai mare de 10MΩ în blocare.
Acest lucru determină o sensibilitate crescută la sarcini capacitive de ieşire, sarcini ce
influenţează viteza de comutare şi puterea consumată de circuit. Pe de altă parte, limitarea
curentului de saturaţie la tranzistoarele MOS asigură protecţia ieşirilor la scurtcircuite
accidentale la masă sau la V+ , cu condiţia ca valoarea tensiunii de alimentare, durata
scurtcircuitului şi numărul de ieşiri aflate în scurtcircuit să nu provoace distrugerea
circuitului integrat prin ambalare termică.

V+

D2
D1 D1 T2 D1
R
Vin Vout

T1
D2 D2

Fig. 1.12 Circuitul de protecţie a intrării la seria CMOS 4000


14 1 FAMILII LOGICE

1.1.3 Zgomote şi reflexii

Zgomotele sunt semnale perturbatoare, nedorite, care pot afecta funcţionarea


structurilor numerice. La aplicarea unui algoritm de sinteză a unei structuri numerice
proiectantul foloseşte modele teoretice în care ecuaţiile boolene exprimă perfect
funcţiile dorite. La implementarea acestor ecuaţii cu circuite integrate reale se constată
că porţile logice au anumite limitări, iar firele de conexiune pot distorsiona forma
semnalului transmis. Ne putem aştepta în anumite condiţii la o funcţionare incorectă a
structurilor numerice, iar dacă aceasta este aleatoare, evenimentul este cu atât mai grav.
Structurile numerice implementate în tehnologia CMOS - 4000 se apropie de
modelul ideal. Fiind circuite lente, ele sunt în mică măsură afectate de zgomote şi
reflexii. Familiile logice rapide pot produce însă mari neplăceri, chiar şi în cazul unor
conexiuni relativ scurte (de ordinul centimetrilor).

Zgomotul generat de reflexii pe liniile de transmisiune

Reflexiile se produc la capetele firelor sau traseelor de circuit imprimat în cazul


neadaptării dintre impedanţa de ieşire şi impedanţa liniei. Unui semnal care parcurge
linia de transmisiune aceasta i se înfăţişează ca o impedanţă constantă numită impedanţă
caracteristică. Dacă se neglijează valorile rezistenţelor distribuite şi se notează cu L
inductanţa liniei pe unitatea de lungime şi cu C capacitatea ei pe unitatea de lungime,
atunci impedanţa caracteristică a liniei este ([Nicula, 1994]):

L
Z0 =
C
iar viteza de propagare a semnalului pe linia de transmisiune este:
1
v=
L⋅C
Considerăm acum circuitul din figura 1.13, care generează la momentul de timp
t = 0 o tranziţie de la 0 la V d , tranziţie care se propagă pe linie până la destinaţia cu
impedanţa terminală Z t .
Vd
La propagarea pe linie Z 0 = , unde I d este curentul care circulă pe linie
Id
datorită tensiunii Vd . Tensiunea şi curentul parcurg linia ca o funcţie treaptă, aşa cum
se vede în figura 1.13. Când tranziţia atinge destinaţia, aceasta se prezintă ca o
impedanţă Z t . Dacă Z t = Z 0 atunci legea lui Ohm este în continuare satisfăcută şi nu
apar reflexii. Dacă însă Z t ≠ Z 0 , tensiunea şi curentul trebuie să se modifice pentru a
asigura verificarea legii lui Ohm şi la bornele rezistenţei terminale. Schimbarea are ca
efect apariţia unui semnal tranzitoriu numit reflexie care va străbate linia în sens invers,
de la destinaţie la sursă. Dacă Z t > Z 0 acest semnal se va aduna la cel original, iar dacă
Z t < Z 0 se va scădea din acesta.
1.1 Consideraţii teoretice 15
Zs

Vs Z0 Zt

sursa destinaţia
Circuitul
v
Vd distanţa

Semnalul înainte de atingerea receptorului

Vd Vt distanţa
Semnalul după reflexie (cazul Z t > Z 0)

Vd Vt distanţa
Semnalul după reflexie (cazul Z t < Z 0)

Fig. 1.13 Reflexiile pe liniile de transmisiune

Dacă folosim indicii d pentru semnalele directe, i pentru cele inverse şi t pentru
cele tranzitorii, atunci putem scrie legile lui Kirchoff considerând rezistenţa terminală
ca un sistem închis:
I t = I d + I i şi Vt = Vd + Vi
Vt Vd V
Conform legii lui Ohm: Z t = pe sarcină, Z0 = înainte de sarcină, şi Z 0 = i
It Id − Ii
după sarcină. Prin rezolvarea sistemului format din ecuaţiile de mai sus se deduce
valoarea saltului de tensiune în funcţie de impedanţa caracteristică şi cea de terminaţie:
Zt − Z0
Vi = Vd ⋅
Zt + Z0
Zt − Z0
Raportul K = se numeşte coeficientul de reflexie a tensiunii şi măsoară
Zt + Z0
raportul dintre tensiunea undei reflectate şi tensiunea undei directe.
Unda se va propaga în continuare de la sarcină spre sursă, în sens invers. Când
unda reflectată atinge sursa se poate produce o nouă reflexie dacă Z 0 este diferită de
Z S . Reflexiile vor continua între sursă şi destinaţie însă amplitudinea lor este atenuată
datorită pierderilor prin rezistenţele ohmice ale liniei, care au fost neglijate până acum.
Efectul reflexiilor se materializează prin apariţia unor oscilaţii care însoţesc
tranziţiile între cele două nivele logice. Aceste oscilaţii pot fi cauza funcţionării
necorespunzătoare a unui sistem numeric.
Există o metodă grafică care permite analiza reflexiilor pe linii, cunoscută ca
metoda diagramelor lui Bergeron. Ea foloseşte caracteristicile de intrare şi ieşire ale
.
16 1 FAMILII LOGICE
A B

Z 0 = 100 Ω
Fig. 1.14 Interconexiunea dintre 2 porţi TTL standard

porţilor studiate şi presupune cunoscută impedanţa caracteristică a liniei. Vom


exemplifica metoda pentru două porţi TTL standard conectate printr-o linie cu
impedanţa caracteristică de 100Ω (pentru circuite imprimate Z 0 are valori cuprinse
între 80Ω şi 200Ω).
Figura 1.15 prezintă caracteristicile de intrare şi cele de ieşire pentru cele 2 stări
logice ale unui circuit tipic din seria TTL standard.
Prima diagramă este utilizată pentru evaluarea tranziţiei logice din 0 în 1.
Dreapta de pantă Z 0 ce reprezintă linia de transmisie va intersecta caracteristica de
ieşire în starea logică 1, punct care va determina la momentul de timp t 0 tensiunea de
ieşire a porţii emiţătoare, tensiune de circa 1,75 V. Din acest moment panta liniei de
transmisie devine − Z 0 şi de această dată va intersecta caracteristica de intrare.
Pentru evaluarea tranziţiei logice din 1 în 0 se foloseşte a doua diagramă. Dreapta
de pantă Z 0 va intersecta caracteristica de ieşire în starea logică 0 la circa 0,25V. Din
acest punct, dreapta cu panta modificată intersectează caracteristica de intrare la circa
-1,5V, valoarea tensiunii în punctul B, şi aşa mai departe până la amortizarea reflexiilor.
Formele de undă rezultate în urma tranziţiilor sunt reprezentate în figura 1.16, iar
figura 1.17 arată câteva forme de undă vizualizate pe osciloscop pentru porţile TTL
standard. S observă că poarta de ieşire comută normal, în ciuda reflexiilor existente pe
linia de intrare, dar aceste reflexii pun în pericol funcţionarea corectă a circuitului. La
ora actuală, pachetele CAD care permit analiza prin simulare a sistemelor numerice,
cum ar fi, de exemplu, Protel 99 SE, permit şi simularea reflexiilor care apar pe linii.

Fig. 1.15 Diagramele Bergeron pentru cele două tranziţii posibile


1.1 Consideraţii teoretice 17
A [V] A [V]
4 4

3 3
2 2
1 1
t t
0 τ 2τ 0 τ 2τ
B [V] B [V]
4 4

3 3
2 2
1 1
t t
0 τ 2τ 0 τ 2τ

tranziţia din 0 în 1 tranziţia din 1 în 0


Fig. 1.16 Formele de undă teoretice în punctele A şi B pentru cele 2 tranziţii

Fig. 1.17 Forme de undă reale vizualizate pe osciloscop

Pentru reducerea efectului reflexiilor se recomandă utilizarea unor conexiuni cât


mai scurte (reflexiile se produc pe durata frontului, iar palierele îşi păstrează valorile
logice), adaptarea liniei lungi pe rezistenţa caracteristică prin plasarea unui divizor
rezistiv în punctul B, sau prin folosirea unor porţi cu histerezis pentru mărirea marginii
de zgomot în curent continuu. Valorile rezistenţelor de adaptare ar putea fi cu până la
un ordin de mărime mai mari, sau, una dintre ele, ar putea lipsi complet. Se mai poate
mări şi impedanţa de ieşire a porţii, prin amplasarea unei rezistenţe de zeci de ohmi
între punctele A şi B ([Nicula, 1994]).

+5V
150 Ω
A B

Z 0 = 100 Ω
470 Ω

Fig. 1.18 Adaptarea liniei pe impedanţa caracteristică şi formele de undă reale


18 1 FAMILII LOGICE
Zgomotul generat de diafonia dintre liniile de transmisiune

Datorită apropierii dintre două linii din circuit, semnalul existent pe una din ele
poate influenţa nedorit semnalul de pe cealaltă linie. Acest cuplaj se face prin
intermediul unor capacităţi şi inductanţe mutuale. Dacă notăm cu Z M impedanţa
mutuală dintre două linii şi pe una din ele avem o tranziţie de tensiune VOUT , atunci în
cealaltă apare o tranziţie de tensiune:
Z0 1
V IN = ⋅V = ⋅V
Z 0 + Z M OUT Z M OUT
1+
Z0

Pentru micşorarea efectelor diafoniei trebuie mărită impedanţa mutuală Z M şi


micşorată impedanţa caracteristică Z 0 . Prima condiţie se realizează prin folosirea unor
medii izolatoare cât mai bune şi evitarea menţinerii în paralel a unor trasee apropiate pe
lungime mare. A doua condiţie presupune alăturarea unor trasee de masă (plan de masă,
fire de masă între fire de semnale utile etc.).

Zgomotul generat de injecţia de curent

Acest tip de zgomot se manifestă la porţile cu mai multe intrări. Variaţia


curentului printr-un emitor al tranzistorului multiemitor de intrare într-o poartă TTL
poate fi zgomot pentru celelalte intrări. Se produce de fapt un salt de curent, care
produce un salt de tensiune pe intrările conectate la impedanţa caracteristică. Dacă
intrarea A a porţii ŞI-NU din figura 1.1 este conectată la masă printr-o linie cu
impedanţa caracteristică de 200Ω, iar intrarea B comută din 0 în 1 logic, atunci în A
apare un salt de curent de la 0,8mA la 1,6mA, care va genera la intrarea A un salt de
tensiune de 0,16V. Acest zgomot este cu atât mai mic cu cât curenţii de intrare sunt mai
mici şi amplitudinea lui este prea mică pentru a produce modificarea parazită a nivelului
logic la intrare. El ar putea însă interveni împreună cu alte zgomote într-o conjunctură
nefavorabilă care să perturbe funcţionarea corectă a circuitului ([Nicula, 1994]).
Reducerea efectelor acestui zgomot se face prin folosirea unei legături scurte, cu
impedanţă caracteristică mică şi prin evitarea folosirii porţilor cu mai multe intrări pe
anumite linii de sistem.

Zgomotul generat de variaţia curentului de alimentare

Sursa acestui zgomot o constituie inegalitatea dintre curenţii absorbiţi de circuit


în cele două stări logice 0 şi 1. La comutarea rapidă a porţilor din circuit apare o
variaţie a tensiunii de alimentare a circuitelor integrate, datorită inductanţei parazite a
liniei de alimentare. Pe de altă parte, la comutare apar pulsuri tranzitorii de curent
datorită capacităţilor parazite de la ieşirile porţilor din circuit.
Metodele de reducere a zgomotului constau în reducerea inductanţei liniei de
alimentare prin utilizarea unor plane de alimentare (trasee cât mai groase) şi în plasarea
condensatoarelor ceramice de decuplare care filtrează pulsaţiile tranzitorii de înaltă
frecvenţă ce nu pot fi eliminate de condensatoarele electrolitice.
1.2 Demonstraţii practice 19
Zgomotul generat de traseele de masă

Cauzele acestui zgomot sunt discontinuităţile de impedanţă a traseelor de masă şi


închiderea curenţilor spre masă pe trasee incorecte. Aceste fluxuri de curent determină
căderi de tensiune parazite care se suprapun peste semnalul util.
Reducerea acestui zgomot se face printr-o maximă separare a traseelor de
alimentare pentru fiecare circuit de pe placă şi existenţa unui plan de masă.

Zgomotul generat de interferenţe electromagnetice

Sursele acestui zgomot pot fi: reţeaua de alimentare cu tensiune alternativă,


motoare, relee, întrerupătoare sau alte dispozitive generatoare de câmp electromagnetic.
Reducerea zgomotului se face prin ecranare sau filtre de reţea.

1.2 Demonstraţii practice


Se alimentează panoul logic cu o tensiune de 5V de la o sursă de tensiune reglabilă.
ATENŢIE LA RESPECTAREA POLARITĂŢII ŞI LA VALOAREA INIŢIALĂ A
TENSIUNII! Datorită diodei de protecţie la alimentare inversă, se măsoară cu un
voltmetru tensiunea între pinii de alimentare indicaţi de catalog (la circuitele de pe panou,
între pinii 14 şi 7, aşa cum se arată în figura 1.19). Se porneşte de la 0V şi se măreşte
tensiunea de la sursă, până ce valoarea măsurată ajunge la +5V. Această tensiune este
tensiunea nominală de alimentare pentru circuitele TTL. Valoarea limită absolută de
catalog este de +7V la circuitele TTL şi de +18V la circuitele CMOS – seria 4000.
Depăşirea valorii limită absolute va distruge cu o mare probabilitate circuitul integrat!
Circuitele CMOS din seria 4000 nu au o tensiune nominală precizată. Tensiunea de
alimentare trebuie să fie sub valoarea limită absolută de circa +18V şi mai mare de circa
+3V, pentru a asigura o comutare stabilă. Tensiunile de alimentare folosite în lucrare pentru
aceste circuite sunt de +5V, +10V şi + 15V.
Observaţiile de mai sus sunt valabile pentru toate panourile logice folosite şi în alte
capitole, aşa că nu vom mai reveni cu aceste indicaţii. Dacă un panou logic are cordon de
alimentare la reţea, atunci există o sursă de alimentare cu tensiune continuă încorporată, iar
panoul NU MAI TREBUIE ALIMENTAT la o sursă de tensiune de laborator!
+ _

14 13 12 11 10 9 8

+
V 5 V cc
_

1 2 3 4 5 6 7

Fig. 1.19 Stabilirea tensiunii corecte de alimentare a panoului logic


20 1 FAMILII LOGICE
1.2.1 Se realizează montajul din figura 1.20. La intrarea porţii ŞI-NU, în tehnologie
TTL standard (circuitul integrat CDB400, echivalent cu SN7400), cu intrările conectate
împreună, se aplică o tensiune continuă, variabilă între 0 şi 5V, iar valorile măsurate ale
tensiunii de ieşire se trec într-un tabel. Se reprezintă punct cu punct caracteristica statică de
( )
transfer Vout = f Vin . Să se compare cu caracteristica de transfer din figura 1.2, obţinută
prin simulare analogică PSPICE. Se repetă măsurătorile pentru o poartă ŞI-NU cu 2 intrări
realizată în tehnologie CMOS 4000 (circuitul integrat MMC4011, echivalent cu CD4011),
având grijă ca tensiunea de intrare să nu depăşească tensiunea de alimentare. Se folosesc
următoarele tensiuni de alimentare: VCC = +5V , VCC = +10V şi VCC = +15V . Se măsoară
nivelele logice şi se compară cu valorile garantate prin standard. Caracteristica de transfer
pentru VCC = +15V se compară cu caracteristica de transfer din figura 1.11, obţinută prin
simulare analogică PSPICE. Sarcina porţii este considerată rezistenţa de intrare a
voltmetrului folosit pentru măsurare.

Vcc = +5V

sarcină
+ +
Vin = 0..5V _ V Vout
_

Fig. 1.20 Montajul pentru trasarea punct cu punct a caracteristicii de transfer V

1.2.2 Se realizează montajul din figura 1.21 pentru poarta TTL standard. La intrarea
porţii ŞI-NU cu intrările conectate împreună se aplică un semnal sinusoidal cu amplitudinea
de circa 4V şi frecvenţa de circa 100Hz. Se scoate baza de timp a osciloscopului şi pe
ecranul tubului catodic apare caracteristica de transfer. Măsuraţi nivelele logice de ieşire şi
intrare garantate prin standard. Modificaţi sarcina porţii prin adăugarea circuitului care
simulează 10 intrări TTL standard (vezi figura 1.24) şi refaceţi măsurătorile. Comentaţi
modificarea caracteristicii cu frecvenţa semnalului de intrare şi explicaţi ce se întâmplă dacă
una dintre intrările porţii este lăsată în aer. Se repetă montajul pentru poarta CMOS 4000.
Analizaţi modificarea caracteristicii cu modificarea tensiunii de alimentare şi stabiliţi
tensiunea minimă de alimentare. Scurtcircuitaţi pe rând ieşirea porţii la masă şi apoi la VCC
şi observaţi ce se întâmplă.

Vcc = +5V
generator
R int
sarcină
Vout Y X
Vin

Fig. 1.21 Montajul pentru vizualizarea caracteristicii de transfer V


1.2 Demonstraţii practice 21
1.2.3 Se măsoară în cazurile cele mai defavorabile curenţii de intrare pentru cele
două nivele logice la poarta TTL standard, folosind montajele din figura 1.22. Testarea în
cazul cel mai defavorabil este realizată pentru toate circuitele, pentru a garanta funcţionarea
în toate condiţiile posibile. VCC are valoarea maximă admisă (+5,25V la seria 74SN) pentru
a maximiza curentul I IL . Cu excepţia intrării supuse testării, celelalte intrări nefolosite sunt
conectate la 1 logic pentru a maximiza orice contribuţie a acestor intrări asupra curentului
de intrare I IL . Acest 1 logic este de 4,5V, valoare în general superioară lui VOH . Comparaţi
rezultatele obţinute prin măsurare cu cele din figura 1.4, obţinute prin simulare PSPICE.
Valorile obţinute trebuie să fie în concordanţă cu datele de catalog:

I IL ≤ I ILMAX = − 1,6mA I IH ≤ I IHMAX = 40µA


DACĂ AMPERMETRUL ESTE ANALOGIC (TIP MAVO-35), ATENŢIE LA
POLARITATE ŞI LA DOMENIUL DE MĂSURĂ !

Vcc = +5,25V Vcc = +5,25V


I IH
VIH= 2,4V + _
VIL = 0,4V _ +4,5V mA
mA +
I IL

Fig. 1.22 Montajele pentru măsurarea curentului de intrare la poarta TTL V

1.2.4 Folosind montajul din figura 1.23 se trasează caracteristicile de ieşire ale porţii
TTL standard. Dacă ampermetrul este analogic (tip MAVO-35), atenţie la polaritate şi la
domeniul de măsură! Comparaţi rezultatele cu cele din figurile 1.5 şi 1.6, obţinute prin
simulare analogică PSPICE.

Vcc = +5V

I out
_
mA +
+ (+) (-) 5K 100
V V
_ out

Fig. 1.23 Montajul pentru trasarea caracteristicilor de ieşire la poarta TTL V

1.2.5 Se măsoară timpii de propagare prin poarta TTL cu ajutorul montajului din
figura 1.24. Generatorul furnizează la intrare impulsuri TTL cu frecvenţa de câţiva MHz.
Circuitul de ieşire ( C L = 15 pF ) simulează încărcarea porţii cu o sarcină echivalentă cu 10
intrări TTL standard. Se măsoară timpii de propagare şi pentru C L = 220 pF şi se compară
rezultatele. Dacă performanţele osciloscopului nu sunt satisfăcătoare pentru efectuarea
măsurătorii, se poate încerca înserierea mai multor porţi identice şi medierea rezultatelor
astfel obţinute. Se repetă măsurătoarea pentru poarta CMOS, folosind la intrare impulsuri de
amplitudine 5V. Sarcina porţii este dată acum numai de condensatorul C L , iar intrările sunt
.
22 1 FAMILII LOGICE

Vcc = +5V
generator
50% 50% TTL 400Ω
in t pHL R int +2,4V out
in
t pLH
CL
50% 50%
out

Fig. 1.24 Definirea timpilor de propagare şi montajul pentru măsurarea lor la poarta TTL

conectate împreună. Pe un osciloscop cu 2 canale se vizualizează atât semnalul de intrare cât


şi semnalul de la ieşirea porţii logice. Prin suprapunerea celor două semnale se măsoară cei
doi timpi de propagare t PHL şi t PLH . Se verifică egalitatea aproximativă a celor doi timpi de
propagare la poarta CMOS. Studiaţi variaţia timpilor de propagare cu modificarea tensiunii
de alimentare şi cu modificarea sarcinii de la ieşirea porţii CMOS şi comparaţi valorile
măsurate cu datele de catalog.
.
V

1.2.6 Se realizează montajul din figura 1.25, folosind al doilea circuit integrat de pe
panoul logic TTL. Se calculează limitele de variaţie admise pentru valoarea rezistenţei de
colector şi se verifică dacă rezistenţa de pe panou se încadrează între aceste limite. Se
verifică conexiunea "ŞI cablat" folosind tabelul de adevăr al funcţiei binare Y, precum şi
excursia tensiunii la ieşire.

Vcc = +5V

RC
A Y Y = A B C. .
B
C

Fig. 1.25 Montajul pentru verificarea conexiunii "ŞI cablat" V

1.2.7 Se realizează montajul din figura 1.26. Se vizualizează formele de undă la


ieşirea porţii CMOS (tensiunea de ieşire) şi pe rezistenţa înseriată în circuitul de alimentare
(curentul consumat de circuitul integrat). Intrările celorlalte porţi logice din circuitul integrat
se conectează la nivele logice stabile, 0 sau 1. Astfel consumul de curent al circuitului
integrat este dat în exclusivitate de poarta care comută. Comentaţi imaginea de pe ecranul
tubului catodic. Ce se întâmplă dacă se măreşte tensiunea de alimentare? Dar dacă se
măreşte frecvenţa impulsurilor aplicate la intrare? Acest comportament se întâlneşte la orice
structură CMOS, nu neapărat numai la seria 4000. Şi procesoarele Pentium au un
comportament similar. Acest consum de curent pe poartă la comutare, determină o creştere
accentuată a disipaţiei termice odată cu creşterea frecvenţelor de lucru. Care este soluţia
adoptată în ultimul timp pentru rezolvarea acestei probleme? (vezi problema 1.3.5)
1.2 Demonstraţii practice 23
generator VDD = +5V
impulsuri
R int
sarcină

Vin Y1 Y2
R

Fig. 1.26 Montaj pentru estimarea consumului circuitului integrat care conţine poarta
CMOS din seria 4000 V

1.2.8 Se realizează circuitul din figura 1.14 folosind două porţi TTL standard şi un
cablu de conexiune lung (de circa 2 m). Se introduce pe intrarea primei porţi un semnal TTL
cu o frecvenţă de circa 5 MHz. Se vizualizează semnalele în punctele A şi B când
conductorul AB este scurt şi atunci când are o lungime de circa 1m. Desenaţi semnalele
vizualizate şi explicaţi forma lor. Măsuraţi întârzierea semnalului pe linia lungă AB.
.
V

1.2.9 Se dublează circuitul din figura 1.14 şi cele două linii lungi se apropie pe o
lungime cât mai mare una de alta. Se aplică un semnal TTL pe intrarea unui circuit şi se
vizualizează pe linia celuilalt circuit semnalul indus datorită diafoniei.
.
V

1.2.10 Se realizează montajul din figura 1.27 pentru vizualizarea zgomotului datorat
injecţiei de curent. Se aplică semnal TTL pe linia A, iar linia B se conectează la masă prin
intermediul unui conductor lung. Urmăriţi apariţia pulsurilor de tensiune în punctul B
sincron cu semnalul din punctul A şi măsuraţi durata şi amplitudinea lor.

A
B

Fig. 1.27 Circuit pentru evidenţierea zgomotului datorat injecţiei de curent la TTL V

1.2.11 Se conectează toate porţile circuitului integrat TTL la sursa de semnal TTL,
pentru o comutare sincronă a lor. Se conectează în serie cu sursa de alimentare un fir cu
inductanţă mare (se bobinează nişte spire pe un tor de ferită). Linia de alimentare poate fi
astfel asimilată unei linii lungi de transport al tensiunii. Se vizualizează variaţia tensiunii de
alimentare pe pinul Vcc al circuitului integrat. Măsuraţi durata şi amplitudinea variaţiilor şi
desenaţi formele de undă. Repetaţi măsurătorile după cuplarea unui condensator de
decuplare între Vcc şi GND.
.
V

1.2.12 Să se imagineze şi să se experimenteze un montaj pentru vizualizarea


zgomotelor datorate formei traseelor de masă.
.

1.3 Probleme rezolvate 25
VCC − VOLMAX 5V − 0,4V
Rmin L = = = 1,437 KΩ
I OLMAX − 8 ⋅ I ILMAX 16mA − 8 ⋅ 1,6mA
Se alege pentru rezistenţa R o valoare standardizată cuprinsă în intervalul [1,437KΩ
..3,846KΩ]. Nu am luat aici în considerare variaţiile admisibile ale tensiunii de alimentare. In
această situaţie, ar trebui să luăm în calcul valoarea care minimizează R MAXH , adică VCC min ,
respectiv valoarea care maximizează Rmin L , adică VCCMAX .
c) M L = VOLMAX − VILMAX = 0,4V − 0,8V = 0,4V V
.

1.3.3 Se înlocuiesc cele 8 inversoare ale circuitului din figura 1.29 cu un număr
necunoscut N de porţi ŞI-NU cu câte 2 intrări conectate împreună, în tehnologie TTL
standard. Să se calculeze N, dacă se ştie că R = 1KΩ şi marginea de zgomot în 1 logic
trebuie să fie mai mare de 1V.
Rezolvare:
- pentru starea logică 1:
R ⋅ (2 ⋅ I OHMAX + 2 ⋅ N H ⋅ I IHMAX ) ≤ VCC − VIH min − M H , adică
VCC − V IH min − M H − 2 ⋅ R ⋅ I OHMAX 5V − 2V − 1V − 2 ⋅ 1KΩ ⋅ 0,1mA
NH ≤ = = 22,5
2 ⋅ R ⋅ I IHMAX 2 ⋅ 1KΩ ⋅ 0,04mA
Curentul de intrare în poartă pentru starea logică 1 este suma curenţilor de pe fiecare intrare.
Dacă variază şi VCC , atunci se ia în calcul VCC min .
- pentru starea logică 0:
R ⋅ ( I OLMAX − N L ⋅ I ILMAX ) ≥ VCC − VOLMAX
− VCC + VOLMAX + R ⋅ I OLMAX − 5V + 0,4V + 1KΩ ⋅ 16mA
NL ≤ = = 7,12
R ⋅ I ILMAX 1KΩ ⋅ 1,6mA
Curentul de intrare în poartă pentru starea logică 0 este acelaşi, indiferent de numărul de
intrări ale porţii. Dacă variază şi VCC , atunci se ia în calcul VCCMAX .
.
Deci răspunsul este N = 7. 

1.3.4 Care este marginea de zgomot asigurată de conexiunea din figură? Porţile sunt
TTL standard, dar poarta comandată este un inversor cu histerezis.
V out

VOHmin

Fig. 1.30 Circuitul şi caracteristica de transfer


a inversorului cu histerezis
VOLmax
V T- V T+ V in

Rezolvare:
Inversorul cu histerezis are pragul VT − cuprins între 0,6V şi 1,1V, iar pragul VT + este
cuprins între 1,5V şi 2V, conform datelor de catalog.
- pentru starea logică 1: M H ≥ V H min − VT − max = 2,4V − 1,1V = 1,3V ,
- pentru starea logică 0: M L ≥ VT + min − VOL max = 1,5V − 0,4V = 1,1V .
Marginile de zgomot la o conexiune între două porţi TTL standard sunt de numai 0,4V!
.

26 1 FAMILII LOGICE
1.3.5 Se consideră inversorul CMOS din figura 1.10 alimentat la tensiunea
V+ = +5V . Tranzistorul T1 suportă un curent de drenă I D1 = 1mA , iar T2 un curent
I D2 = 1,5mA . Tensiunea de prag a circuitului este VT = 2,5V , iar capacitatea de ieşire este
Cout = 20 pF .
a) Să se calculeze timpii de propagare pentru ambele tranziţii ştiind că sarcina
inversorului este formată din 10 intrări CMOS, fiecare de 5 pF, iar capacitatea traseelor
exterioare circuitului integrat este de 30 pF.
b) Calculaţi consumul de putere dinamic şi static şi arătaţi care sunt modalităţile de
reducere a consumului de putere din sursă, ştiind că frecvenţa de comutaţie a porţii este de
1MHz, iar fronturile semnalului de ieşire sunt egale cu 100ns.
Rezolvare:
a) Capacitatea totală de sarcină este:
C = Cout + N ⋅ Cin + Ctrasee = 20 pF + 10 ⋅ 5 pF + 30 pF = 100 pF
Pentru tranziţia ieşirii LOW-HIGH se deschide T2 şi se blochează T1, iar timpul de
propagare este:
C ⋅ VT 100 pF ⋅ 2,5V
t PLH = = = 167ns
I D2 15
. mA
Pentru tranziţia ieşirii HIGH-LOW se deschide T1 şi se blochează T2, iar timpul de
propagare este:
C ⋅ (V+ − VT ) 100 pF ⋅ (5V − 2,5V )
t PHL = = = 250ns
I D1 1mA

b) Puterea disipată în regim dinamic este puterea necesară pentru încărcarea şi descărcarea
periodică a capacităţii de sarcină de la ieşire:
C ⋅ V+
Pd = V+ ⋅ = C ⋅ V+2 ⋅ f = 100 pF ⋅ 52 V 2 ⋅ 1MHz = 2,5mW
T
V+

0V

IM
0A

tr T tf

Fig. 1.31 Aproximarea formelor de undă la comutare


Puterea disipată în regim static este puterea disipată în timpul comutării. Figura 1.31 indică
o reprezentare simplificată a tensiunii de ieşire şi a curentului consumat pe durata unei perioade.
T

³ u(t ) ⋅ i(t ) ⋅ dt V+ ⋅ I M t r + t f 5V ⋅ 0,5mA 100ns + 100ns


Ps = 0
≈ ⋅ ≈ ⋅ = 125µW
T 4 T 4 1000ns
Valoarea exactă a lui I M este mai greu de apreciat. Având însă în vedere datele problemei, valoarea
de 0,5mA este pe deplin acoperitoare.
1.3 Probleme rezolvate 27
Ambele componente ale puterii disipate se reduc odată cu micşorarea tensiunii de alimentare
şi a frecvenţei de comutaţie. Capacitatea de sarcină contribuie şi ea la expresia puterii în regim
dinamic.
.


1.3.6 Dacă pe o intrare CMOS apar tensiuni mai mari decât V + (notat de obicei cu
V DD ) sau mai mici decât potenţialul masei (notat de obicei cu VSS ) există pericolul
distrugerii diodelor din circuitul de protecţie al intrării prin depăşirea valorii maxime admise
a curentului prin diode. Să se realizeze un circuit extern de protecţie şi să se dimensioneze
elementele de circuit.
Rezolvare:
Se introduce o rezistenţă serie Rext la intrare care limitează curentul la valoarea maximă
I MAX = 10mA . Se stabilesc valorile maxime ale tensiunilor la intrare:
+ −
V MAX > VDD şi V MAX < VSS
Dimensionarea rezistenţei se face urmărind schema de protecţie a intrării din figura 1.12:

+
V MAX − VDD − V F V MAX − VF
Rext ≥ , Rext ≥ −R
I MAX I MAX
VF este căderea de tensiune în conducţie directă pe diode. Se alege pentru Rext o valoare care
acoperă ambele inegalităţi.
O intrare CMOS nu se lasă niciodată "în aer". Pentru eliminarea eventualelor sarcini statice
induse, se recomandă conectarea unei rezistenţe de circa 100KΩ la masă sau la V+ , după caz.
.


1.3.7 Să se arate cum se poate face cuplajul CMOS - TTL.


Rezolvare:
Verificăm pentru început dacă o ieşire CMOS poate comanda o intrare TTL standard, din
punctul de vedere al tensiunilor şi al curenţilor:
VOLMAX ( CMOS ) < V ILMAX ( TTL ) , adică 0,05V < 0,8V
VOH min( CMOS ) > V IH min( TTL ) , adică 4,95V > 2V
Din punctul de vedere al tensiunilor inegalităţile sunt satisfăcute fără probleme, iar la curenţi:
I OLMAX ( CMOS ) > I ILMAX ( TTL ) , adică 2mA > 1,6mA
I OHMAX ( CMOS ) > I IHMAX ( TTL ) , adică 2mA > 40µA
Relaţia subliniată indică faptul că o ieşire CMOS poate comanda o intrare TTL standard, dar nu
două sau mai multe, deoarece nu ar mai putea asigura curentul de intrare pe 0 logic.
Verificăm în continuare dacă o ieşire TTL poate comanda o intrare CMOS:
VOLMAX ( TTL ) < V ILMAX ( CMOS ) , adică 0,4V < 30% ⋅ 5V = 1,5V
VOH min( TTL ) > V IH min( CMOS ) , adică 2,4V > 70% ⋅ 5V = 3,5V
I OLMAX ( TTL ) > I ILMAX ( CMOS ) , adică 16mA > 100nA
I OHMAX ( TTL ) > I IHMAX ( CMOS ) , adică 400µA > 100nA
Relaţia subliniată nu este respectată, deci conexiunea directă TTL-CMOS nu este corectă! Pentru
a ridica tensiunea la ieşirea porţii TTL aflate în 1 logic se conectează o rezistenţă între ieşirea porţii
TTL şi tensiunea de alimentare.
28 1 FAMILII LOGICE
Pentru dimensionarea rezistenţei:
VCC − VOLMAX ( TTL ) 5V − 0,4V
Rmin L = = = 0,287 KΩ
I OLMAX 16mA
Se alege o valoare mai mare, dar apropiată de R min L , pentru că R MAXH este mai greu de calculat.
Dacă consideram şi variaţia tensiunii de alimentare, foloseam VCCMAX în calculul lui Rmin L , în
scopul maximizării lui Rmin L .
.


1.3.8 Datorită lipsei circuitelor integrate TTL standard care trebuiau să echipeze un
produs de serie, acesta este realizat cu circuite integrate LSTTL. Garantaţi o funcţionare
corectă a circuitului? Dar dacă lucrurile ar fi stat exact invers?
Rezolvare:
Nu se poate garanta o funcţionare corectă a circuitului pentru că circuitele LSTTL sunt mai
rapide şi deci sunt mai sensibile la zgomotele care se propagă pe traseul de masă. Este posibilă deci
o funcţionare defectuoasă a circuitului.
Dacă în loc de LSTTL se montează TTL standard nu mai avem probleme de zgomot, dar
probabil că sistemul nu va funcţiona din cauza frecvenţei prea mari, la care circuitele TTL standard
nu fac faţă.
.


1.3.9 Un BUS cu impedanţa caracteristică Z 0 = 75Ω este adaptat ca în figura 1.32.


Ştiind că pe acest BUS pot fi cuplate cel mult 16 intrări TTL standard şi că se impune în 1
logic o margine de zgomot de cel puţin 0,6V, să se calculeze:
a) valorile rezistenţelor R1 şi R2.
b) curentul I OLMAX al circuitului ce comandă BUS-ul.

+V cc +V cc
IR 1
R1 R1
*
I OH .... IR 2
R2 R2

N
Fig. 1.32 Circuitul de adaptare a liniei de magistrală
Rezolvare:
a) Din condiţia de 1 logic pe linie:
R1 R2 = 2 Z 0
VCC = R1 ⋅ I R1 + V IH min + M H
2 I R1 = I OH + N ⋅ I IH + 2 I R 2
V IH min + M H
I R2 =
R2
Necunoscutele sunt I R1 , I R 2 , R1 şi R2 . Se rezolvă sistemul şi se obţine:
R1 ≈ 226Ω şi R2 ≈ 446Ω
1.3 Probleme rezolvate 29
Făcând anumite simplificări prin neglijarea lui I IH şi I OH obţinem rezultate apropiate cu un efort de
calcul mult mai mic.
b) I OLMAX ≥ 2 I R1 L + N ⋅ I ILMAX − 2 I R 2 L , indicele L indică starea logică 0 în nodul studiat.
Rezultă I OLMAX ≥ 64,5mA , o valoare prea mare pentru un circuit integrat. Soluţii însă există: se
poate accepta o margine de zgomot mai mică, de cel puţin 0,4V, ca la TTL, sau se pot alege circuite
de cuplare la BUS care au curenţi de intrare mai mici. Şi aici se poate neglija I R 2 L . Marginea de
zgomot în 0 logic este de 0,4V şi nu poate fi mărită de proiectant.
.
V

1.3.10 Un BUS cu impedanţa caracteristică Z 0 = 150Ω este adaptat ca în figură. Pe


BUS sunt cuplaţi receptori care au caracteristică de transfer cu histerezis (vezi figura 1.33)
şi curenţi de intrare neglijabili. Ştiind că circuitul care comandă BUS-ul are I OLMAX = 24mA ,
VOLMAX = 0,4V şi I OH ≈ 0 , se cere:
a) să se dimensioneze rezistenţele R1 şi R2.
b) să se calculeze marginea de zgomot garantată în ambele stări logice.

+V cc Vo

R1 VT- = 0,9V
VT+ = 1,7V
*
.... R2 Vi
VT- VT+

Fig. 1.33 Circuitul de adaptare şi caracteristica de transfer a porţilor cu histerezis


Rezolvare:
a) R1 R2 = Z 0 . Neglijând curentul prin R2 în starea 0 logic, obţinem:
VCC − VOLMAX 5V − 0,4V
R1 ≥ = ≈ 200Ω . Alegem o valoare standard R1 = 220Ω . Din prima
I OLMAX 24mA
ecuaţie rezultă R2 = 470Ω .
R2 470Ω
b) - în starea 1 logic: V H = ⋅ VCC = ⋅ 5V = 3,4V
R1 + R2 220Ω + 470Ω
Receptorii vor comuta când Vi scade sub valoarea lui VT − = 0,9V , deci:
M H ≥ V H − VT − = 3,4V − 0,9V = 2,5V

- în starea 0 logic: V L = VOLMAX = 0,4V . Comutarea se face pentru VT + = 1,7V :


M L ≥ VT + − V L = 1,7V − 0,4V = 1,3V 

1.3.11 Explicaţi în ce situaţie un circuit integrat CMOS din seria 4000 poate să
funcţioneze în lipsa tensiunii de alimentare. Care sunt riscurile unei astfel de situaţii şi ce
măsuri de prevenire recomandaţi ?
Rezolvare:
Deşi este greu de crezut, un circuit integrat CMOS din seria 4000 poate funcţiona în lipsa
tensiunii de alimentare, cu condiţia ca cel puţin una din intrările lui să fie pe 1 logic. Este clar că 1
30 1 FAMILII LOGICE
logic înseamnă tensiunea de alimentare, dioda respectivă din reţeaua de protecţie a intrării intră în
conducţie, iar pe linia de alimentare din circuit apare o tensiune V+ − V F , adică cu circa 0,6V mai
mică decât tensiunea de alimentare a sistemului. Dacă curentul consumat de partea nealimentată
depăşeşte însă valoarea de 10mA şi nu există o limitare a acestui curent pe intrarea de 1 logic
(ieşirea unei porţi CMOS poate asigura această limitare), atunci structura este periclitată. Prevenirea
se face numai prin asigurarea unei alimentări corecte a circuitelor integrate din sistem.
.


1.3.12 Tensiunea de prag a inversoarelor din figura 1.34 este de 2,5V. Să se calcu-
leze tensiunea de basculare a circuitului echivalent trigger Schmitt şi să se reprezinte
tensiunea la ieşire dacă pe intrare se aplică semnalul din figură.

Vin R1 Vout Vin

2K +4V
R2
10K 0 t

Fig. 1.34 Trigger Schmitt neinversor realizat cu porţi CMOS şi semnalul de intrare
Rezolvare:
Comutarea ieşirii din 0 se va face la o valoare a tensiunii de intrare V1 :
R2 § R · 2
VT = ⋅ V1 , deci V1 = ¨¨1 + 1 ¸¸ ⋅ VT = §¨1 + ·¸ ⋅ 2,5V = 3V
R1 + R2 © R2 ¹ © 10 ¹
Comutarea ieşirii din 1 se va face la o valoare a tensiunii de intrare V2 :
R2 R1
VT = ⋅ V2 + ⋅ V DD , V DD fiind tensiunea de alimentare de 5V.
R1 + R 2 R1 + R 2
§ R · R § 2 · 2
Rezultă: V 2 = ¨¨ 1 + ¸¸ ⋅ VT − 1 ⋅ V DD = ¨1 + ¸ ⋅ 2,5V − ⋅ 5V = 2V .
1

© R2 ¹ R2 © 10 ¹ 10
Funcţionarea circuitului în condiţiile cerute de problemă este reprezentată în figura 1.35.

Vin
+4V
V1
V2
0 t
Vout
+5V

0 t
Fig. 1.35 Funcţionarea circuitului în condiţiile cerute de problemă 
2 SISTEME COMBINAŢIONALE

Aplicaţiile din acest capitol îşi propun să prezinte metodele de analiză şi sinteză folosite
la implementarea funcţiilor binare cu porţi logice, dar şi cu unele circuite integrate pe scară
medie (MSI), cum ar fi multiplexoarele şi demultiplexoarele.

2.1 Consideraţii teoretice

2.1.1 Implementarea cu porţi logice

Structurile numerice combinaţionale sau circuitele logice combinaţionale (CLC)


implementează funcţii binare. O funcţie binară de n variabile binare independente este o
f : { 0,1} → { 0,1} ,
n
aplicaţie unde domeniul de definiţie este mulţimea
{0,1}n = {( x1x2 ... xn ) x1 ∈{0,1}, x2 ∈ {0,1}, ... , xn ∈{0,1}} .
Numărul maxim de elemente ale mulţimii {0,1} este 2 n , dar nu este absolut necesar
n

ca funcţia să fie definită pentru toate aceste combinaţii de variabile. Numărul maxim de
funcţii binare de n variabile este:
2n

¦C
n
i
N= 2n
= 22
i=0
Analiza unui circuit combinaţional are ca scop determinarea funcţiei logice intrare-
ieşire. Aceasta se poate exprima fie în limbaj natural, fie algebric prin expresii logice, fie
prin tabele de adevăr, fie prin diagrame Veitch-Karnaugh.
Sinteza unui circuit combinaţional urmăreşte determinarea schemei logice, pornind
de la unul dintre modurile de reprezentare enumerate mai sus.
32 2 SISTEME COMBINAŢIONALE
Orice funcţie binară poate fi implementată numai cu porţi ŞI-NU. Se spune că
operatorul logic ŞI-NU formează un set complet de operatori. Panoul logic conţine 3 tipuri
de circuite integrate realizate în tehnologie TTL standard: porţi inversoare, porţi ŞI-NU cu 2
intrări şi porţi ŞI-NU cu 3 intrări.
Pentru a găsi circuitul optim care implementează funcţia căutată este necesară
operaţia de minimizare a funcţiei binare, în urma căreia rezultă o expresie algebrică cât mai
simplă, care permite construcţia circuitului folosind un număr minim de porţi.
Există numeroase tehnici de minimizare: pentru calculul manual se preferă utilizarea
diagramelor Veitch-Karnaugh, iar pentru calculul automat metode tabelare cum ar fi
metoda Quine-McCluskey sau metoda Espresso.

Vom prezenta în continuare un exemplu de minimizare a funcţiei binare f,


reprezentată prin tabelul de adevăr din figura 2.1, folosind diagramele Veitch-Karnaugh:
- funcţia dată are 4 variabile, deci diagrama Veitch-Karnaugh are 2 4 compartimente,
fiecare corespunzând uneia dintre cele 16 valori ale funcţiei. Fiecare compartiment este
“adresat” de o anumită combinaţie a variabilelor A, B, C şi D. După completarea
compartimentelor cu valorile funcţiei din tabelul de adevăr, se grupează compartimentele
vecine (diferă valoarea unei singure variabile) care conţin 1 logic, astfel încât fiecare
grupare să conţină un număr de 2 i compartimente, unde i = 0,1,2,3 sau 4. Fiecare grupare
este definită de un produs de variabile, sub formă directă sau negată, iar expresia funcţiei se
obţine prin aplicarea funcţiei SAU acestor “produse logice”.
Pentru exemplul considerat:

f ( A, B, C, D) = B ⋅ D + C ⋅ D + A ⋅ C = B ⋅ D ⋅ C ⋅ D ⋅ A ⋅ C
S-a folosit o teoremă fundamentală a algebrei boolene cunoscută sub numele de "Legile lui
DeMorgan" care permite transformarea operaţiilor binare SAU în ŞI şi invers. Ea permite
implementarea funcţiilor binare numai cu porţi ŞI-NU:

X + Y = X ⋅ Y , sau relaţia duală: X ⋅ Y = X + Y

A B C D f
0 0 0 0 1
0 0 0 1 1
0 0 1 0 1 AB
0 0 1 1 0 A A CD 00 01 11 10
0 1 0 0 0
0 1 0 1 1 1 0 1 1 D 00 1 0 1 1
0 1 1 0 0 C
0 1 1 1 0 1 1 1 1 01 1 1 1 1
1 0 0 0 1 D
1 0 0 1 1 0 0 0 0 11 0 0 0 0
1 0 1 0 1 C
1 0 1 1 0 1 0 0 1 D 10 1 0 0 1
1 1 0 0 1
1 1 0 1 1 B B B
1 1 1 0 0
1 1 1 1 0 Veitch Karnaugh
Fig. 2.1 Exemplu de folosire a diagramelor Veitch-Karnaugh
2.1 Consideraţii teoretice 33
A
A .
A A=A

C f A A

D 1
A
.
A 1=A
B
Fig. 2.2 Schema logică cu număr minim de porţi ŞI-NU

Inversoarele se pot obţine din porţi ŞI-NU prin conectarea împreună a intrărilor
(legile de idempotenţă) sau prin conectarea celorlate intrări la 1 logic (elementul neutru
pentru operaţia binară ŞI).

2.1.2 Implementarea cu multiplexoare/demultiplexoare

Funcţiile binare pot fi implementate cu ajutorul unor structuri combinaţionale


MSI, fără a mai fi necesară minimizarea lor.
Una dintre aceste structuri este decodificatorul(DCD). Decodificatorul este un
circuit integrat pe scară medie, care identifică un cod de intrare prin activarea unei
singure linii de ieşire. Dacă circuitul are n variabile binare de intrare, atunci numărul
liniilor de ieşire este 2 n . Figura 2.3 arată structura circuitului TTL pentru n = 2.
A
A B 0 1 2 3 1
B A 2
0 0 0 1 1 1 0
DCD
0 1 1 0 1 1 B 2
0 1 2 3
1 0 1 1 0 1
1 1 1 1 1 0 P0 P1 P2 P3
P0 P1 P2 P3

Fig. 2.3 Structura, tabelul de adevăr şi reprezentarea decodificatorului TTL pentru n=2
Demultiplexorul(DMUX) este un circuit construit pe structura decodificatorului,
care permite transmiterea datelor de pe o singură cale de intrare pe una din cele 2 n căi
de ieşire. Selecţia liniilor de ieşire se face prin aplicarea unui cod binar pe n linii de
intrare, care devin acum intrări de selecţie. Structura demultiplexorului TTL pentru
n = 2 este prezentată în figura 2.4.

A
B
A 2
1
I
I 0 DMUX
ENABLE B 2
0 1 2 3 ENABLE
( prin conectarea la 0 permite
accesul datelor de pe intrare )

P0 .I P1 .I P2 .I P3 .I

Fig. 2.4 Structura şi reprezentarea demultiplexorului TTL pentru n=2


34 2 SISTEME COMBINAŢIONALE
Multiplexorul(MUX) realizează funcţia inversă demultiplexorului, adică permite
transmiterea datelor de la una din cele 2 n căi de intrare la o singură cale de ieşire.
Selecţia unei anumite intrări de date se face prin aplicarea unui cod binar pe n linii de
intrare, linii care sunt intrările de selecţie. Structura multiplexorului TTL pentru n = 2
este prezentată în figura 2.5.

I0 I1 I2 I3
A
I0 I1 I2 I3
B
0 1 2 3
E A 2
1

B 2
0 MUX E

W W

W W

Fig. 2.5 Structura şi reprezentarea multiplexorului TTL pentru n=2

În descrierile de mai sus, s-a precizat că aceste structuri corespund tehnologiei TTL.
În tehnologia CMOS s-ar putea repeta aceste structuri, dar s-au descoperit alte structuri mai
eficiente, bazate pe poarta de transmisie CMOS. Circuitele pot fi asimilate cu nişte
comutatoare programabile. Aceste comutatoare sunt bidirecţionale, deci acelaşi circuit poate
fi utilizat fie ca multiplexor, fie ca demultiplexor, iar semnalele transmise pot fi şi analogice.
Schema simplificată a unui MUX/DMUX cu 3 intrări de selecţie în tehnologie CMOS, care
selectează intrarea/ieşirea cu numărul 5, este dată în figura 2.6.

Aceste structuri combinaţionale MSI implementează toţi termenii produs


fundamentali ai unei funcţii cu număr de variabile mai mic sau egal cu numărul de intrări de
selecţie n. Din acest motiv, implementarea funcţiilor binare nu necesită operaţii de
minimizare, ci numai alegerea corectă a conexiunilor. Dacă numărul de variabile ale funcţiei
este mai mic sau egal cu numărul de intrări de selecţie n, atunci implementarea se face
direct, iar în caz contrar mai sunt necesare o serie de transformări algebrice pentru a găsi o
altă structură adiţională, formată de obicei din porţi, care să completeze lipsa intrărilor de
selecţie de la MUX sau DMUX.
intrare / ieşire

0 1 2 3 4 5 6 7
2
2
A=1
2
1
E
B=0
0
2
C=1

W MUX / DMUX
ieşire / intrare
Fig. 2.6 Implementarea funcţiei cu demultiplexor şi cu multiplexor CMOS
2.2 Demonstraţii practice 35
Dacă ne propunem să implementăm cu MUX şi apoi cu DMUX funcţia binară
f = P0 + P1 + P2 + P6 + P7 , cele două soluţii TTL sunt prezentate în figura 2.7.

2
A 2 I 1
B 2
1
DMUX
0 E 2 0 1 2 3 4 5 6 7
C 2 A 2
0 1 2 3 4 5 6 7
B 2
1
MUX E
0
C 2
W

f
f

Fig. 2.7 Implementarea funcţiei cu demultiplexor şi cu multiplexor

Implementarea cu MUX este imediată. Intrările corespunzătoare indicilor termenilor


Pi din suma logică se conectează la 1 logic, iar celelalte intrări la 0 logic. Pentru
implementarea cu DMUX ne interesează termenii Pi , deci scriem funcţia sub forma
f = P0 ⋅ P1 ⋅ P2 ⋅ P6 ⋅ P7 . Ieşirile corespunzătoare indicilor termenilor Pi se conectează la
intrările unei porţi ŞI-NU.
Dacă demultiplexorul este o structură CMOS, atunci la fiecare dintre ieşirile 0, … , 7
se conectează câte o rezistenţă la V+ . În caz contrar, ieşirile care nu sunt selectate rămân în
aer (stare de înaltă impedanţă).

2.2 Demonstraţii practice


Consideraţiile asupra alimentării panoului logic, formulate în capitolul anterior,
rămân valabile pentru toate aplicaţiile practice din această lucrare. Circuitele integrate MSI
au deja o complexitate mai mare decât porţile logice şi utilizarea lor la implementarea unor
scheme electrice nu se mai poate face fără consultarea foii de catalog.
Panoul logic conţine porţi logice, două circuite integrate MSI realizate în tehnologie
TTL standard şi un circuit integrat în tehnologie CMOS – seria 4000. Circuitul SN 74150
este un multiplexor TTL cu 4 intrări de selecţie, deci cu 16 căi de intrare, iar circuitul SN
74155 este un circuit TTL cu funcţie dublă: fie un demultiplexor cu 3 intrări de selecţie, fie
două demultiplexoare cu câte 2 intrări de selecţie. Circuitul MMC 4097 este un circuit
CMOS care conţine două multiplexoare/demultiplexoare cu câte 3 intrări de selecţie.
Foile de catalog furnizează informaţia completă pentru utilizarea corectă a acestor
circuite integrate. Chiar dacă circuitele sunt fabricate de alt producător, ele trebuie să
respecte standardul elaborat de firma TEXAS INSTRUMENTS pentru circuitele TTL,
respectiv RCA, pentru circuitele CMOS. Fragmente din foile de catalog, care conţin numai
informaţiile strict necesare pentru utilizarea acestor circuite integrate sunt prezentate în
figurile 2.8, 2.9 şi respectiv 2.10. În cazul structurilor combinaţionale, aceste informaţii
strict necesare sunt cele care permit realizarea conexiunilor conform schemei logice, adică
configuraţia pinilor şi tabelul de adevăr.
36 2 SISTEME COMBINAŢIONALE

Fig. 2.8 Configuraţia pinilor şi tabelul de adevăr pentru circuitul SN 74150

Fig. 2.9 Configuraţia pinilor şi tabelul de adevăr pentru circuitul SN 74155

Observăm că pinul ENABLE din descrierea teoretică de mai sus se numeşte aici
STROBE şi are rolul de a permite accesul datelor la ieşire. El trebuie conectat la masă (0
logic), după cum rezultă din tabelele de adevăr. O altă deosebire importantă constă în
notarea variabilelor aplicate pe intrările de selecţie. La sinteza structurilor combinaţionale
cu porţi logice, sau la prezentarea teoretică de mai sus, s-a notat cu A variabila mai
semnificativă, iar cea mai puţin semnificativă cu B, C sau D, funcţie de numărul total de
variabile. Convenţia adoptată de firma TEXAS INSTRUMENTS, după cum observăm din
tabelele de adevăr, este exact inversă: C sau D este intrarea de selecţie mai semnificativă, iar
A este intrarea de selecţie cea mai puţin semnificativă. În fond este vorba de o simplă
convenţie de care trebuie însă să ţinem seamă pentru folosirea corectă a circuitelor. Iată de
ce, printre altele, este obligatorie consultarea foii de catalog atunci când proiectăm diverse
structuri folosind circuite integrate numerice!
Circuitul integrat MMC 4097(dacă este de fabricaţie românească, sau pur şi simplu
4097, precedat de alte caractere, dacă este fabricat de altă firmă) are un pin numit INHIBIT, cu
acţiune contrară pinului ENABLE. Este activ pe 1 logic, având rolul de a bloca accesul datelor
.
2.2 Demonstraţii practice 37

Fig. 2.10 Configuraţia pinilor şi tabelul de adevăr pentru circuitul MMC 4097

la ieşire. El trebuie conectat la masă (0 logic), după cum rezultă din tabelele de adevăr.
Convenţia de alocare a ponderilor pentru variabilele de selecţie se păstrează la fel ca la TTL:
C este intrarea mai semnificativă, iar A este intrarea cea mai puţin semnificativă.

2.2.1 Se face analiza schemei logice din figura 2.11, reprezentând cele 4 funcţii
binare prin expresii algebrice, tabele de adevăr şi diagrame temporale. Se verifică
experimental rezultatele obţinute în urma analizei teoretice a circuitului.

A f0
B
f1

f2

f3

Fig. 2.11 Schema logică a unui decodificator realizat cu porţi 

2.2.2 Se implementează cu număr minim de porţi ŞI-NU funcţia binară


reprezentată prin tabelul de adevăr din figura 2.12 (x – este 0 sau 1, după cum ne
convine). Se realizează montajul din figură şi se face verificarea sintezei prin analiza
circuitului folosind tabelul de adevăr. Schema logică obţinută este unică?
A B C D f
0 0 0 0 0
0 0 0 1 1
0 0 1 0 x
0 0 1 1 x A A
0 1 0 0 x
0 1 0 1 1 A
0 1 1 0 1 0 x 0 0 D
0 1 1 1 1 C
1 0 0 0 0 1 1 1 1 f
1 0 0 1 1 D
1 0 1 0 0
x x C
1 0 1 1 0 1 0
1 1 0 0 0 C D
1 1 0 1 1 x 1 0 0 D
1
1
1
1
1
1
0
1
0
x B B B . . . . .
f=C D+A C= C D A C
Fig. 2.12 Sinteza funcţiei binare reprezentată prin tabelul de adevăr 
38 2 SISTEME COMBINAŢIONALE
2.2.3 Se consideră funcţia binară definită de tabelul de adevăr din figura 2.13. Se
implementează folosind circuitul integrat SN 74155 ca demultiplexor cu 8 căi de ieşire şi se
verifică funcţionarea circuitului obţinut folosind tabelul de adevăr. Se repetă implementarea
funcţiei cu circuitul MMC4097 şi se verifică din nou funcţionarea corectă a montajului.
C B A f
C 1C 2C 1G
0 0 0 1
0 0 1 0 B B SN 74155 2G
0 1 0 0 A A 0 1 2 3 4 5 6 7
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 0
1 1 1 1 f

Fig. 2.13 Implementarea unei funcţii binare cu circuitul SN 74155 

2.2.4 Un juriu format din 4 persoane decide asupra reuşitei unui concurent prin
majoritate de voturi, semnalizate prin aprinderea unui element de afişaj. Se
implementează funcţia care comandă aprinderea LED-ului, reprezentată prin tabelul de
adevăr din figura 2.14, folosind circuitul integrat SN 74150. Se verifică funcţionarea
corectă a montajului (în schemele logice cu multiplexoare am folosit pentru intrări
notaţia I i ; în foaia de catalog a circuitului 74150 de la TEXAS INSTRUMENTS, ele
sunt notate cu Ei , iar complementarea lor la ieşire indică că este disponibilă ieşirea W ;
informaţia din catalog trebuie adaptată la cunoştinţele noastre şi este posibil ca în
cataloagele altor firme să întâlnim alte notaţii).
D C B A f
0 0 0 0 0
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0 1
0 1 0 1 0 0
0 1 1 0 0
0 1 1 1 1 D D I0 I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15
1 0 0 0 0 C C
1 0 0 1 0 SN 74150 G
1 0 1 0 0 B B
1 0 1 1 1 A A
1 1 0 0 0 W
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1 f

Fig. 2.14 Implementarea funcţiei de vot majoritar cu circuitul SN 74150 

2.2.5 Se repetă implementarea funcţiei de la punctul 2.2.4, folosind de această dată


circuitul integrat SN 74155 ca demultiplexor cu 8 căi de ieşire şi se verifică funcţionarea
circuitului obţinut folosind tabelul de adevăr dat în figura 2.14. Să se arate cum s-a făcut
sinteza schemei logice prezentate în figura 2.15.
40 2 SISTEME COMBINAŢIONALE

2.3 Probleme rezolvate


2.3.1 Să se proiecteze un circuit logic combinaţional de tip "cheie electronică" cu 3
intrări şi o singură ieşire. Fiecare intrare reprezintă starea unui contact: dacă contactul este
deschis, acesta furnizează 1 logic pe intrarea respectivă. În starea iniţială toate contactele
sunt deschise şi ieşirea circuitului este în 1 logic, adică alarma este dezactivată.
Dacă închiderea contactelor (care pot acţiona, de exemplu, nişte zăvoare electro-
magnetice) se face într-o anumită ordine prestabilită, atunci ieşirea rămâne în 1 logic şi
alarma nu este declanşată. Dacă ordinea de închidere a contactelor nu este respectată, ieşirea
trece în 0 logic şi se afişează starea de alarmă prin aprinderea unui LED.
Câte combinaţii posibile există? Dar pentru 5 contacte? Explicaţi cum trebuie să fie
contactele şi de ce.
Rezolvare:
Să presupunem că ordinea prestabilită de închidere a contactelor este B, C, A. Tabelul de
adevăr pentru implementarea funcţiei de alarmare, minimizarea funcţiei cu ajutorul diagramei
Veitch şi schema logică obţinută sunt date în figura 2.17.
A B C f A
0 0 0 1
0 0 1 0 A A f
0 1 0 0
0 1 1 0 B
C 1 0 0 1
1 0 0 1 C
1 0 1 1 C 0 0 1 1
1 1 0 0
1 1 1 1 B B B . . . . A .C
f=B C+A C= B C

Fig. 2.17 Sinteza funcţiei binare de alarmare


Pentru 3 contacte există 3! = 6 combinaţii posibile, iar pentru 5 contacte avem 120 de
combinaţii distincte. Se folosesc întrerupătoare cu menţinere, deoarece este necesară memorarea
stărilor contactelor la fiecare pas. În lipsa acestor memorii mecanice, sunt necesare memorii
electronice, adică circuite secvenţiale, deci problema nu este rezolvabilă prin metodele prezentate
până acum în lucrare.
.
V

2.3.2 Să se proiecteze un circuit de decodificare pentru afişajul cu 7 segmente din


figura 2.18, care să permită afişarea a 4 stări distincte, prin literele O, L, H şi E. Cele 4 stări
distincte sunt date de toate combinaţiile posibile realizate cu 2 variabile de intrare, A şi B.
Segmentele elementului de afişaj sunt aprinse pentru 0 logic şi stinse pentru 1 logic.
a
f g b

e c
d
Fig. 2.18 Notaţii folosite pentru cele 7 segmente ale elementului de afişaj
Rezolvare:
Pentru fiecare segment de afişaj se generează câte o funcţie binară conform cerinţelor
problemei. Rezultă tabelul de adevăr din figura 2.19. Prin minimizare se obţin ecuaţiile circuitului.
2.3 Probleme rezolvate 41
g g =A
A B a b c d e f g Simbol A
0 0 0 0 0 0 0 0 1 a
B b
0 1 1 1 1 0 0 0 1 b=c= B
c
1 0 1 0 0 1 0 0 0 d d= A B .
e
1 1 0 1 1 0 0 0 0 . .
a = A B + A B= A B A B . . . f e=f=0

Fig. 2.19 Sinteza circuitului de decodificare pentru afişajul cu 7 segmente V

2.3.3 O companie face angajări de personal pentru diferite compartimente. Candidaţii


trebuie să îndeplinească cel puţin una dintre următoarele 5 condiţii:
- a: bărbat, necăsătorit, cu studii superioare
- b: necăsătorit(ă), cu studii superioare, vârsta sub 30 de ani
- c: femeie, necăsătorită, fără studii superioare
- d: bărbat, vârsta sub 30 de ani
- e: necăsătorit(ă), vârsta peste 30 de ani
Să se proiecteze un circuit pentru selecţia candidaţilor.
Rezolvare:
Se pune problema să găsim o funcţie binară f, de mai multe variabile, pentru selecţia
candidaţilor. Dacă f = 1 se consideră candidat acceptat, iar dacă f = 0, atunci avem de-a face cu un
candidat respins.
Stabilim pentru început care sunt variabilele funcţiei:
A - vârsta (A = 1 dacă vârsta este sub 30 de ani, şi A = 0 în caz contrar)
B - sexul (B = 1 dacă este bărbătesc şi B = 0 dacă este femeiesc)
C - starea civilă (C = 1 dacă este necăsătorit(ă) şi C = 0 dacă este căsătorit(ă))
D - studii (D = 1 dacă are studii superioare şi D = 0 dacă nu are studii)
Aceste variabile binare rezultă din datele problemei, iar proiectantul este liber să aleagă
modul în care se atribuie valorile logice acestor variabile. Candidatul este acceptat dacă cel puţin
una dintre condiţiile cerute este îndeplinită, adică:
f = a + b + c + d + e , unde
a = BCD, b = ACD, c = BCD, d = AB, e = AC
Expresia algebrică a funcţiei căutate este f = BCD + ACD + BCD + AB + AC , dar această
formă a funcţiei nu este minimă. Pentru o minimizare rapidă şi eficientă se trec termenii produs
într-o diagramă Veitch. Soluţia problemei este dată în figura 2.20.
A A

0 0 1 0 D A
C B
0 0 1 0 f
D C
1 1 1 1
C
1 1 1 1 D
B B B . . .
f = C + A B= C A B

Fig. 2.20 Sinteza funcţiei binare f(A,B,C,D) 


42 2 SISTEME COMBINAŢIONALE
2.3.4 Să se facă sinteza funcţiei de vot majoritar, reprezentată prin tabelul de adevăr
din figura 2.14, cu ajutorul unui demultiplexor cu 8 căi de ieşire.
Rezolvare:
Funcţia poate fi scrisă în forma canonică disjunctivă sub forma:
f = P7 + P11 + P13 + P14 + P15 . Observăm însă că numărul de variabile ale funcţiei este mai mare
decât numărul intrărilor de selecţie ale demultiplexorului. Din acest motiv vom face o serie de
transformări algebrice care să pună în evidenţă mintermenii unei funcţii de 3 variabile, mintermeni
care sunt disponibili la ieşirile demultiplexorului. Cea de-a patra variabilă va fi introdusă într-o
logică combinaţională suplimentară, realizată de obicei cu porţi logice.
f = P7 + P11 + P13 + P14 + P15 = DCBA + DC BA + DCBA + DCBA + DCBA =
= A( DCB + DC B + DCB + DCB) + ADCB = A( P3' + P5' + P6' + P7' ) + A ⋅ P7' =

= A( P3' + P5' + P6' ) + P7' = A ⋅ P3' ⋅ P5' ⋅ P6' + P7' = A ⋅ P3' ⋅ P5' ⋅ P6' ⋅ P7'
Expresia algebrică obţinută permite implementarea funcţiei f, conform schemei din figura
2.15. Este evident că oricare alte 3 variabile puteau fi aplicate pe intrările de selecţie ale
demultiplexorului, cu condiţia refacerii calculelor de mai sus.
.


2.3.5 Să se proiecteze un convertor de cod din cod binar în cod Gray pentru numere
reprezentate pe 3 biţi, folosind:
a) un decodificator cu 3 intrări de selecţie.
b) multiplexoare cu câte 2 intrări de selecţie.
c) un număr minim de circuite.
Rezolvare:
Două reprezentări succesive în cod Gray diferă printr-un singur bit. Tabelul din figura 2.21
indică corespondenţa cod binar - cod Gray, iar schema logică alăturată prezintă soluţia de la punctul
a. Pentru sinteza schemelor logice în probleme, propunem ca variabila A să fie aplicată pe intrarea
de selecţie cea mai semnificativă. La problema 2.3.4 am păstrat convenţia din catalog, pentru că
schema logică obţinută este implementată cu circuitul SN 74155, aşa cum se vede în figura 2.15.

A B C AG BG CG A 2
2

B 2
1
DCD
0 0 0 0 0 0 2
0
C
0 0 1 0 0 1 0 1 2 3 4 5 6 7

0 1 0 0 1 1
0 1 1 0 1 0
1 0 0 1 1 0
1 0 1 1 1 1
1 1 0 1 0 1
1 1 1 1 0 0 AG BG CG

Fig. 2.21 Convertor de cod binar - Gray cu decodificator şi porţi


b) Se pot folosi multiplexoare cu câte 2 intrări de selecţie prin transformările:
AG = ABC + ABC + ABC + ABC = ( AB + AB ) ⋅ C + ( AB + AB ) ⋅ C = P2' + P3'
BG = ABC + ABC + ABC + ABC = ( AB + AB ) ⋅ C + ( AB + AB ) ⋅ C = P1' + P2'
CG = ABC + ABC + ABC + ABC = ( P0' + P2' ) ⋅ C + ( P1' + P3' ) ⋅ C
2.3 Probleme rezolvate 43
C
0 1 0
1
1 0 1 2 3 1 0 1 2 3 1 0 1 2 3
A 2 A 2 A 2
B 2
0 MUX E
B 2
0 MUX E
B 2
0 MUX E
W W W

AG BG CG

Fig. 2.22 Convertor de cod binar - Gray cu multiplexoare


Schema logică din figura 2.22 prezintă o soluţie a problemei. Sunt posibile şi alte soluţii,
funcţie de alegerea variabilelor care se aplică pe intrările de selecţie.
c) Implementarea cea mai simplă este cu porţi logice. Prin minimizare cu ajutorul diagramei
Veitch-Karnaugh rezultă următoarele relaţii:
AG = A , BG = AB + AB = A ⊕ B , CG = BC + BC = B ⊕ C .
Deci sunt necesare numai două porţi logice SAU-EXCLUSIV.
.


2.3.6 Să se implementeze un sumator complet de 1 bit, folosind:


a) multiplexoare cu 4 căi de intrare;
b) demultiplexor cu 4 căi de ieşire şi porţi;
Comparaţi cele două soluţii din punct de vedere al numărului de circuite integrate şi al
timpului de propagare.
Rezolvare:
Sumatorul de 1 bit are două intrări pentru operanzi, notate aici cu A şi B, şi încă o intrare
pentru transportul de la sumatorul de rang inferior, notată aici cu C–1. Circuitul are două ieşiri,
suma, notată cu S, şi transportul, notată cu C. Tabelul de adevăr este dat în figura 2.23.
C = P3 + P5 + P6 + P7 = C−1 AB + C−1 (AB + AB + AB) = P3' + C−1 (P1' + P2' )
S = P1 + P2 + P4 + P7 = C−1 (AB + AB ) + C−1 (A B + AB) = C−1 (P1' + P2' ) + C−1 (P0' + P3' )
Schemele logice care se obţin cu aceste ecuaţii sunt date tot în figura 2.23.

C -1 A B C S
1 C -1
0 0 0 0 0 C -1
0 0 1 0 1
0 1 2 3 0 1 2 3
0 1 0 0 1 A 2
1
A 2
1

0 1 1 1 0 B 2
0 MUX E
B 2
0 MUX E
1 0 0 0 1 W W
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1 C S
Fig. 2.23 Sumator complet de 1 bit implementat cu multiplexoare
b) Pentru implementarea cu demultiplexor, se fac următoarele transformări (punem în
'
evidenţă termeni produs Pi ):

C = P3' + C−1 (P1' + P2' ) = P3' ⋅ C−1 ⋅ P1 ' ⋅ P2'

S = C−1 (P1' + P2' ) + C−1 (P0' + P3' ) = C−1 ⋅ P1 ' ⋅ P2' ⋅ C−1 ⋅ P0' ⋅ P3'
44 2 SISTEME COMBINAŢIONALE

A 2
1
I
DMUX
0 E
B 2 0 1 2 3

C -1

S C

Fig. 2.24 Sumator complet de 1 bit implementat cu decodificator şi porţi ŞI-NU


Dacă se compară schemele logice astfel obţinute, observăm că implementarea cu
demultiplexor este mult prea costisitoare, atât din punct de vedere al numărului de circuite integrate,
cât şi al timpului de propagare. Implementarea cu multiplexoare este mai rezonabilă, dar cea mai
simplă soluţie se obţine prin minimizarea funcţiilor şi implementare cu porţi. Această soluţie a fost
prezentată în curs.
.
V

2.3.7 Un circuit logic combinaţional are 4 intrări, 2 ieşiri şi funcţionează astfel încât:
- dacă F = 00 , atunci Q = I ;
- dacă F = 01 , atunci Q = I + 1 (mod 4) ;
- dacă F = 10 , atunci Q = I − 1 (mod 4) ;
- dacă F = 11, atunci Q = I ,
unde F, Q şi I sunt cuvinte de câte doi biţi.
a) Să se scrie funcţiile logice Q1 şi Q0 asociate ieşirilor circuitului.
b) Să se implementeze circuitul anterior descris.
Rezolvare:
a) Se poate folosi tabelul de adevăr pentru fiecare dintre funcţiile cerute, dar şi o metodă mai
rapidă care presupune scrierea directă a funcţiei pornind de la o formulare convenabilă în limbaj
natural. Este evident că pentru F1 = 0 şi F0 = 0 , Q1 = I 1 şi Q0 = I 0 . Pentru F1 = 0 şi F0 = 1 , se
impune ca intrarea să fie I 1 = 0 şi I 0 = 1 , sau exact invers, I 1 = 1 şi I 0 = 0 , deoarece numerele 01
şi 10 generează prin incrementare bitul cel mai semnificativ, Q1 = 1 . Se pot folosi şi diagramele
Veitch – Karnaugh de două variabile, I 1 şi I 0 , pentru fiecare combinaţie F1 , F0 . Expresiile cerute
în problemă devin:
( )
Q1 = F1 F0 I1 + F1 F0 (I1 ⊕ I 0 ) + F1 F0 I1 ⊕ I 0 + F1 F0 I1
Q0 = F1 F0 I 0 + F1 F0 I 0 + F1 F0 I 0 + F1 F0 I 0

b) Probabil că implementarea cea mai simplă se poate face folosind două multiplexoare cu
câte 2 intrări de selecţie ( F1 şi F0 ) şi porţi (două inversoare, o poartă SAU-EXCLUSIV şi o poartă
SAU-EXCLUSIV NEGAT). Lăsăm în seama cititorului găsirea altor soluţii posibile.
.

3 CIRCUITE DE IMPULS

Aplicaţiile din acest capitol îşi propun să prezinte circuite secvenţiale regenerative, care
generează şi prelucrează impulsuri. Este vorba de clasa circuitelor multivibratoare, care conţine
circuite astabile, monostabile sau bistabile, realizate cu porţi logice sau cu circuite integrate
specializate.

3.1 Consideraţii teoretice

3.1.1 Circuite astabile

Circuitele astabile sunt circuite basculante care nu au nici o stare stabilă. Ele au
numai două stări cvasistabile, iar trecerea de la o stare la alta se face fără comandă din
exterior. Circuitul este de fapt un oscilator care generează semnal numeric.
Cvasistabilitatea nu se referă la nivelele logice ale semnalului generat, ele sunt 0 logic
sau 1 logic şi sunt perfect stabile pe o anumită durată de timp. Cvasistabilitatea se referă
la faptul că nici unul dintre nivelele logice 0 sau 1 nu poate fi menţinut la ieşire un
interval de timp oricât de mare. De aici rezultă şi denumirea circuitului.
Durata şi frecvenţa impulsurilor generate de circuitul astabil depind de parametrii
acestuia, de obicei determinaţi de reţele RC. Pentru o stabilitate ridicată a frecvenţei se
utilizează cristale de cuarţ.
Circuitele astabile pot funcţiona şi în regim de sincronizare declanşată sau
comandată. În primul caz, la fiecare impuls de declanşare astabilul porneşte cu fază fixă
a oscilaţiilor. În al doilea caz, se generează impulsuri atât timp cât la intrare există un
semnal de comandă activ pe unul dintre cele două nivele logice.
Circuitele astabile se pot implementa cu componente discrete, cu porţi logice sau
cu circuite integrate specializate. Nu vom discuta în acest capitol implementările cu
tranzistoare, iar folosirea circuitelor integrate specializate va fi discutată în secţiunea
următoare a acestui capitol.
46 3 CIRCUITE DE IMPULS
Vout

V1 V2 Vout
0V
R V1
C VT
0V

Fig. 3.1 Circuit astabil cu porţi CMOS

O schemă simplă de circuit astabil cu porţi CMOS este prezentată în figura 3.1. Vom
neglija întârzierea semnalelor prin porţi şi vom presupune că nivelul de tensiune la ieşire se
schimbă instantaneu când tensiunea de intrare atinge valoarea de prag VT.
Dacă V1 atinge valoarea lui VT, inversoarele comută şi ieşirea Vout trece în 1 logic.
Acest salt de tensiune este transmis prin condensator şi V1 devine VT + V+, unde V+ este
tensiunea de alimentare a circuitului. De fapt, tensiunea nu poate fi chiar atât de mare,
pentru că intervine limitarea din reţeaua de protecţie a intrării, dar deocamdată să neglijăm
şi acest lucru. Condensatorul începe să se descarce prin rezistenţa R, iar când tensiunea pe el
atinge din nou valoarea VT porţile comută din nou. Se produce un nou salt de tensiune pe
intrarea V1, de la VT la VT - V+, cu aceeaşi observaţie de mai sus. Condensatorul se încarcă
acum, iar când V1 atinge din nou valoarea lui VT, întregul ciclu se reia.
Circuitul nu are o stare stabilă. Salturile de tensiune între nivele se produc cu o
periodicitate determinată de elemente pasive R, C şi de pragul de tensiune VT. Pentru
1
VT = V+/2 factorul de umplere este ½, iar frecvenţa este dată de relaţia: f = . Cu
2,2 ⋅ R ⋅ C
acest circuit se pot genera impulsuri cu o frecvenţă stabilă de până la 1MHz.
Pentru obţinerea unor frecvenţe stabile în timp (ceasuri electronice, calculatoare etc.)
se folosesc astabile cu cristal de cuarţ. Din punct de vedere electric, cristalul oferă o
impedanţă cu proprietăţi de circuit rezonant cu factor de calitate foarte mare. În figura 3.2 se
prezintă simbolul convenţional pentru cristalul de cuarţ, circuitul electric echivalent şi
variaţia reactanţei cu frecvenţa (dacă se neglijează rezistenţa r).
Se constată existenţa unei rezonanţe serie la frecvenţa Ω S = 1 , şi a unei
L⋅C
rezonanţe paralel la frecvenţa Ω P = 1 .
C ⋅ C0
L⋅
C + C0

X X>0
(inductiv)

fp f
L r C
fs
X<0
C0 (capacitiv)

Fig. 3.2 Cristalul de cuarţ, circuitul echivalent şi dependenţa reactanţei de frecvenţă


3.1 Consideraţii teoretice 47
Rf

out

Q Q
R R

CT CS CS CT

Fig. 3.3 Reţeaua de reacţie π şi oscilator CMOS cu cuarţ

Oscilatoarele cu rezonanţă serie sunt proiectate să oscileze la frecvenţa de


rezonanţă serie. Cele cu rezonanţă paralel oscilează la frecvenţe cuprinse între cele două
frecvenţe de rezonanţă serie şi paralel, în funcţie de valoarea încărcării capacitive a
cuarţului. Circuitele cu rezonanţă paralel au performanţe mai bune când lucrează cu
amplificatoare cu impedanţă mare de intrare, deci ele sunt cele mai răspândite pentru
oscilatoarele cu cuarţ care utilizează amplificatoare CMOS.
Figura 3.3 ilustrează configuraţia adecvată pentru o reţea de reacţie a unui
oscilator cu rezonanţă paralel, reţea care asigură un defazaj de 1800, iar schema practică
de oscilator mai conţine un inversor CMOS pe post de amplificator care realizează un
defazaj de 1800, polarizat prin rezistenţa R f , pentru a îndeplini condiţia
Vout = Vin = V+ / 2 . Valoarea acestei rezistenţe este suficient de mare pentru a preveni
încărcarea reţelei de reacţie, dar mică în comparaţie cu rezistenţa de intrare a
amplificatorului inversor.

Principalul dezavantaj al oscilatoarelor cu porţi CMOS – seria 4000 îl constituie


frecvenţa redusă a semnalelor generate. La frecvenţe ce depăşesc 4MHz stabilitatea
funcţionării circuitului pune mari probleme. Pentru frecvenţe de ordinul zecilor de MHz se
folosesc circuite cu porţi TTL.
Figura 3.4 prezintă schema completă a unui oscilator cu cuarţ şi porţi TTL. Abaterea
de frecvenţă este de ordinul 10 −6...10 −7 şi poate atinge valori de 10 −8...10 −9 dacă cuarţul este
introdus într-o incintă termostatată ([Nicula, 1994]).

R1 R2
820 820
C
out
7404 1n 7404 7404

Fig. 3.4 Oscilator cu cuarţ şi porţi TTL


48 3 CIRCUITE DE IMPULS

3.1.2 Circuite monostabile

Circuitele monostabile sunt circuite basculante cu o singură stare stabilă şi cu o


stare cvasistabilă. Trecerea în starea cvasistabilă se realizează sub acţiunea unei
comenzi exterioare, iar revenirea se face după un anumit timp, dependent numai de
parametrii circuitului şi nu de semnalele externe de comandă.
Durata stării cvasistabile este dată de circuitul extern de temporizare format
dintr-un grup RC. Stabilitatea acestei durate este una din cerinţele principale impuse
unui monostabil.
Un circuit monostabil poate fi făcut să funcţioneze şi în regim de redeclanşare
(retriggerable), când procesul cvasistaţionar poate fi reînceput chiar în timpul
desfăşurării ciclului de temporizare.
Circuitele monostabile se pot implementa cu componente discrete, cu porţi logice
sau cu circuite integrate specializate. Nu vom discuta în acest capitol implementările cu
tranzistoare, iar folosirea circuitelor integrate specializate va fi discutată în secţiunea
următoare a acestui capitol.

O schemă simplă de circuit monostabil cu porţi CMOS este prezentată în figura 3.5.
Pulsul de declanşare aplicat pe intrarea porţii SAU-NU va determina comutarea ieşirii porţii
din 1 în 0 logic. Condensatorul C, neîncărcat, transmite impulsul spre poarta inversoare,
care comută şi ea, iar Vout devine 1 logic. Ieşirea Vout se aplică prin reacţie celeilalte intrări
în poarta SAU-NU, care poate substitui impulsul iniţiator (bucla s-a închis). Durata minimă
a impulsului de iniţiere trebuie să fie egală cu suma timpilor de propagare prin cele două
porţi. Tensiunea pe condensator creşte cu o constantă de timp RC şi atunci când atinge
valoarea de prag VT , inversorul comută , iar tensiunea la ieşire revine la 0 logic.
Dacă tensiunea de prag este cam jumătate din tensiunea de alimentare, atunci durata
temporizării este de circa 0,69 ⋅ R ⋅ C , valoare ce rezultă din rezolvarea ecuaţiei de încărcare
a unui condensator între două limite de tensiune cunoscute.
Stabilitatea acestui circuit este destul de bună pentru că tensiunile de prag la
circuitele CMOS nu sunt influenţate de temperatură. După cum indică şi relaţia de mai sus,
durata pulsului poate fi modificată prin reglarea valorilor rezistenţei (R) şi a condensatorului
(C). Este însă evident că o structură de circuit integrat specializat oferă performanţe
superioare în privinţa stabilităţii duratei pulsului şi a parametrilor formelor de undă de la
ieşire.
Vin
V+ 0V
V1
R 0V
Vin C
Vout V2
V1 V2 0V
Vout
0V

Fig. 3.5 Circuit monostabil cu porţi CMOS


3.1 Consideraţii teoretice 49
3.1.3 Circuite bistabile

Circuitele bistabile sunt circuite basculante care au două stări stabile. Trecerea de
la o stare la alta se face cu ajutorul unor semnale de comandă aplicate din exterior.
În general, bistabilele au două ieşiri complementare notate cu Q şi Q. Ele pot
bascula asincron, imediat ce primesc comanda la intrare, sau sincron cu un impuls de
ceas care condiţionează bascularea.
Un exemplu de bistabil asincron în sensul definiţiei de mai sus este circuitul din
figura 3.6. Stările logice la ieşiri sunt complementare şi comută la fiecare acţionare a
comutatorului cu 2 poziţii de la intrare. Dacă comutatorul nu mai este acţionat, durata
fiecărei stări logice, 0 sau 1, este nelimitată, cu condiţia ca circuitul să rămână alimentat
pe toată durata experimentului.

Fig. 3.6 Latch pentru filtrarea impulsurilor parazite pe contacte

Circuitul se mai numeşte LATCH, sau element de memorare, şi probabil că aplicaţia


principală a acestui circuit este filtrarea impulsurilor parazite care apar la comutarea
contactelor mecanice.
Bistabilele cu ceas, sau bistabilele sincrone, sunt structuri mai complexe, uneori cu
mai multe etaje comandate de semnalul de ceas, semnal furnizat de cele mai multe ori de un
astabil. Modificarea stării la ieşiri se face pe fronturile semnalului de ceas. Pentru ca
tranziţiile efectuate de bistabile să fie corecte, pe intrările lor se aplică semnale de
comandă sintetizate pe baza tabelelor de tranziţie corespunzătoare tipurilor de bistabile
utilizate.
Figura 3.7 reprezintă tabelele pentru bistabilul de tip D. Cele două tabele sunt
perfect echivalente. Primul tabel se numeşte de obicei tabel de adevăr, datorită
asemănării cu un tabel de adevăr pentru circuite combinaţionale: intrările sunt în
coloanele din stânga, iar ieşirea Q+ este în dreapta. Aici avem o singură intrare de date,
notată cu D. Notaţia Q indică starea actuală a ieşirii Q, iar Q+ indică valoarea viitoare a
ieşirii Q, după apariţia frontului de ceas care comută bistabilul. Ieşirea Q este ignorată,
ea fiind mereu complementul lui Q. Tabelul tranziţiilor conţine în stânga coloanele Q şi
Q+, iar în dreapta valorile D ale intrării care ar genera tranziţia respectivă din Q în Q+.

Q Q+ D
D Q+ 0 0 0
0 0 0 1 1
1 1 1 0 0
1 1 1
tabel de adevăr tabel de tranziţie
Fig. 3.7 Tabele de tranziţie pentru bistabilul de tip D
50 3 CIRCUITE DE IMPULS

J K Q+ Q Q+ J K
0 0 Q 0 0 0 x
0 1 0 0 1 1 x
1 0 1 1 0 x 1
1 1 Q 1 1 x 0
tabel de adevăr tabel de tranziţie
Fig. 3.8 Tabele de tranziţie pentru bistabilul de tip JK

Figura 3.8 reprezintă tabelele pentru bistabilul de tip JK. De data aceasta există
două intrări separate de date, notate cu J şi K, iar funcţionarea acestui bistabil este mai
complexă. El nu mai este un simplu element de memorie ca bistabilul de tip D, fiind
capabil de complementarea stării prezente, oricare ar fi ea, prin aplicarea lui 1 logic pe
cele două intrări: Q+ = Q. Simbolul “x” are semnificaţia cunoscută: “don’t care”.
Aceste două tipuri de bistabile sunt implementate în structurile integrate care
conţin bistabile separate. Bistabilele de tip SR au fost mai puţin utilizate datorită
restricţiei impuse intrărilor, iar bistabilele de tip T sunt utilizate numai în circuite care
realizează funcţia de numărare.

3.2 Demonstraţii practice


Consideraţiile asupra alimentării panoului logic, formulate în primul capitol, rămân
valabile şi aici. Pentru circuitele integrate specializate care sunt folosite în această aplicaţie
avem din nou nevoie de foile de catalog.
Panoul logic conţine porţi logice, trei circuite integrate CMOS şi un circuit integrat
TTL. Primul circuit integrat folosit în aplicaţie este MMC 4047, un circuit cu funcţie de
astabil sau monostabil, după cum este conectat. Configuraţia pinilor şi tabelul de funcţionare
sunt prezentate în figura 3.9.

Fig. 3.9 Configuraţia pinilor şi tabelul de funcţionare pentru circuitul MMC 4047
3.2 Demonstraţii practice 51

Fig. 3.10 Configura!ia pinilor "i rela!ia de calcul al frecven!ei pentru circuitul SN 74S124

Circuitul integrat SN 74S124 conţine două oscilatoare controlate în tensiune identice,


realizate în tehnologie Schottky TTL. O aplicaţie frecventă a circuitului este realizarea unei
bucle cu calare de fază(PLL – Phase Locked Loop), care permite implementarea
sintetizoarelor de frecvenţă, a demodulatoarelor etc. Noi am folosit aici numai oscilatorul
comandat în tensiune(VCO – Voltage Controlled Oscillator) pentru a verifica modul în care
se face controlul frecvenţei astabilului comandat.
Cele două circuite CMOS care conţin bistabile integrate sunt frecvent utilizate de
proiectanţii care lucrează la acest nivel de integrare. Circuitul MMC 4013 conţine 2
bistabile de tip D, iar circuitul MMC 4027 conţine două bistabile de tip JK. Informaţia
esenţială preluată din foile de catalog este prezentată în figurile 3.11 şi respectiv 3.12.

Fig. 3.11 Configura!ia pinilor "i tabelele de tranzi!ie pentru circuitul MMC 4013

Fig. 3.12 Configura!ia pinilor "i tabelele de tranzi!ie pentru circuitul MMC 4027
52 3 CIRCUITE DE IMPULS
3.2.1 Se realizează circuitul din figura 3.1, folosind o rezistenţă de 10KΩ şi un
condensator de 1nF. Comparaţi formele de undă cu cele din figură şi justificaţi eventualele
diferenţe, dacă acestea există. Variaţi tensiunea de alimentare şi observaţi dacă se produc
modificări. Calculaţi frecvenţa de oscilaţie cu formula dată la pagina 46 şi măsuraţi
frecvenţa reală a oscilaţiei. Care este eroarea şi explicaţi care sunt cauzele acestei diferenţe.
Modificaţi valorile componentelor RC şi vizualizaţi formele de undă.
.


3.2.2 Se realizează circuitul din figura 3.4. Vizualizaţi şi desenaţi formele de undă la
intrările şi ieşirile tuturor inversoarelor din circuit. Care este frecvenţa semnalului la ieşire?
Comparaţi această valoare cu cea înscrisă pe capsula cristalului de cuarţ. Care este rolul
porţii inversoare de la ieşire? Este ea absolut necesară?
.


3.2.3 Se realizează circuitul din figura 3.5, folosind o rezistenţă de 10KΩ şi un


condensator de 1nF. Declanşaţi circuitul cu un impuls de circa 1µs şi comparaţi formele de
undă în noduri cu cele date în figură. Modificaţi tensiunea de alimentare în limitele permise
şi observaţi dacă se produc modificări. Calculaţi lăţimea pulsului de ieşire cu formula dată la
pagina 48 şi măsuraţi durata reală a lui. Care este eroarea şi explicaţi care sunt cauzele
acestei diferenţe. Modificaţi valorile componentelor RC şi vizualizaţi formele de undă. 
.

3.2.4 Se realizează un circuit astabil folosind circuitul integrat MMC 4047 şi


informaţiile din catalog, date în figura 3.9. Verificaţi funcţionarea circuitului în toate
modurile de lucru. Măsuraţi perioada oscilaţiei şi verificaţi formula dată în catalog
( TQ ≈ 4,4 ⋅ R ⋅ C ). Care este eroarea şi explicaţi care sunt cauzele acestei diferenţe. Folosiţi şi
alte componente RC de pe panoul logic. Pentru modul de lucru de astabil cu funcţionare
continuă (prima linie din tabel) se foloseşte schema din figura 3.13.
.


C R
1 3 2

5 C R-C R
1 E A0 13
6
O
T1
4 MMC 4047 Q
10
ieşiri
don't care E A1
8 11
T0 Q
I RT MR
12 9

Fig. 3.13 Circuitul MMC 4047 conectat ca astabil cu func!ionare continu#

3.2.5 Se realizează un circuit monostabil folosind circuitul integrat MMC 4047 şi


informaţiile din catalog, date în figura 3.9. Verificaţi funcţionarea circuitului în toate
modurile de lucru. Măsuraţi durata stării cvasistabile şi verificaţi formula dată în catalog
( TQ ≈ 2,48 ⋅ R ⋅ C ). Se folosesc diverse rezistenţe şi condensatoare de pe panoul logic. Pentru
modul de lucru de monostabil cu declanşare pe front crescător se foloseşte schema din
figura 3.14. Realizaţi o schemă de monostabil retriggerabil şi verificaţi funcţionarea
circuitului. Pentru generarea fronturilor de comandă se folosesc impulsuri de la generatorul
de semnal.
54 3 CIRCUITE DE IMPULS

3.3 Probleme rezolvate


3.3.1 Se dă circuitul din figură realizat cu porţi TTL standard.
a) Să se explice funcţionarea circuitului şi să se deseneze formele de undă în nodurile
1, 2, 3 şi 4.
b) Să se calculeze frecvenţa de oscilaţie şi să se explice de ce primul inversor din
schemă trebuie să aibă caracteristică de transfer cu histerezis (trigger Schmitt).
c) Există limitări în alegerea valorilor componentelor RC?

R
C 300
10n

1 2 3 4
Fig. 3.16 Astabil cu inversoare
Rezolvare:
a) Figura 5.2 reprezintă formele de undă rezultate prin simularea PSPICE:

Fig. 3.17 Forma tensiunilor din cele 4 noduri ale circuitului


3.3 Probleme rezolvate 55
Este evident că semnalul din nodul 2 este un semnal numeric. Celelalte sunt interpretate ca
semnale analogice. Funcţionarea circuitului se bazează pe încărcarea şi descărcarea condensatorului
C prin rezistenţa R. Dacă V(1) > 2V, atunci V(2) = 0, V(3) = 1 şi V(4) = 0 şi condensatorul se
încarcă de la nodul 3 la nodul 4. Tensiunea pe C fiind de semn contrar, prin încărcarea
condensatorului V(1) scade până la atingerea pragului de 2V la care se produce comutarea: V(3) = 0
care produce o scădere instantanee a lui V(1) cu circa 2,4V, V(4) = 1 şi se reia încărcarea
condensatorului de la nodul 4 la nodul 3. Tensiunea V(1) începe să crească, iar la atingerea pragului
de 0,8V se produce o nouă comutare şi ciclul se reia. Modelul PSpice pentru inversorul TTL
foloseşte cele 2 praguri de 0,8V şi 2V pentru comutare. Palierele semnalelor V(3) şi V(4) nu sunt
constante, datorită variaţiilor de curent la încărcarea şi descărcarea condensatorului.
b) Condensatorul se încarcă prin rezistenţa R de la -0,4V la +0,8V şi se descarcă prin
rezistenţa R de la +3,2V la +2V. Pentru calculul timpului de încărcare se particularizează relaţia:
t
u( t ) = u( ∞) − [u( ∞) − u( 0) ] ⋅ e

RC

pentru condiţiile la limită: u( ∞) = 2,4V , u( t ) = 0,8V , u( 0) = −0,4V . Se obţine:


u( ∞) − u( t ) 2,4V − 0,8V
t1 = − RC ⋅ ln = −300Ω ⋅ 10nF ⋅ ln = 1,678µs
u( ∞) − u( 0) 2,4V − ( −0,4V )
Pentru calculul timpului de descărcare, condiţiile la limită sunt: u( t ) = 2V , u( 0) = 3,2V şi
u( ∞) = 0V . Rezultă :
u( ∞ ) − u( t ) − 2V
t 2 = − RC ⋅ ln = −300Ω ⋅ 10nF ⋅ ln = 1,410µs
u( ∞) − u( 0) − 3,2V
Perioada semnalului generat este T = t1 + t 2 = 1,678µs + 1,410µs ≈ 3,1µs , care corespunde unei
1
frecvenţe f = = 322,5KHz . Perioada semnalelor obţinute prin simulare PSPICE este T ≈ 3,5µs ,
T
corespunzătoare unei frecvenţe de 285,7 KHz.
Există o variaţie lentă a semnalului V(1) care poate produce oscilaţia inversorului conectat
între nodurile 1 şi 2. Pentru tensiuni de intrare cuprinse între pragurile de 0,8V şi 2V tranzistorii din
etajul final sunt în regiunea activă normală şi apare o reacţie pozitivă (creşte curentul de colector al
lui T2, deci şi potenţialul bazei lui T3, scade tensiunea de ieşire, creşte curentul de colector al lui
T4, deci şi cel de bază şi curentul de colector al lui T2 va creşte şi mai mult).
c) Condensatorul poate avea orice valoare, dar trebuie să fie nepolarizat, însă valoarea
maximă a rezistenţei nu trebuie să depăşească în principiu 300 Ω, pentru că intervine curentul de
intrare în poartă care afectează marginea de zgomot (vezi problema 1.3.1).
.
V

3.3.2 Să se reprezinte formele de undă în timp şi să se calculeze durata stării


cvasistabile pentru monostabilul realizat cu porţi TTL din figura 3.18.

In Out

C
100n
1 Out
R
390

Fig. 3.18 Monostabil cu două porţi ŞI-NU în tehnologie TTL standard


56 3 CIRCUITE DE IMPULS
Rezolvare:
Formele de undă obţinute prin simulare PSPICE sunt date în figura 3.19. Pentru a calcula
t
durata impulsului generat folosim relaţia u( t ) = u( ∞) − [u( ∞) − u( 0) ] ⋅ e RC , unde: u( t ) = 1,4V ,

u( ∞) − u( t ) 1,4V
u( 0) = 2,4V şi u( ∞) = 0V . Rezultă : TM = − RC ⋅ ln = − 390 Ω ⋅ 100 nF ⋅ ln ≈
( )
u ∞ −u 0 ( ) 2,4V
≈ 21µs , valoare foarte apropiată de cea din figura 3.19.

Fig. 3.19 Formele de undă pentru circuitul din figura 3.18 V

3.3.3 Se consideră astabilul realizat cu circuite CMOS din figura 3.20. Desenaţi
formele de undă în nodurile 1, 2 şi 3 ale circuitului şi calculaţi frecvenţa de oscilaţie.
C 10n

R 100K

1 2 3
Out

Fig. 3.20 Astabil cu porţi CMOS


Rezolvare:
Ca şi la porţile TTL, modelele PSPICE pentru porţile CMOS folosesc două praguri diferite
pentru comutare: 30% şi 70% din valoarea tensiunii de alimentare. Din relaţia cunoscută rezultă
1 1
f ≈ = = 1,428 KHz .
0,7 ⋅ RC 0,7 ⋅ 100 KΩ ⋅ 10nF

Fig. 3.21 Formele de undă pentru circuitul din figura 3.20 V


3.3 Probleme rezolvate 57
3.3.4 Să se reprezinte diagramele de timp pentru astabilul din figura 3.22. Să se
calculeze frecvenţa şi factorul de umplere pentru semnalul generat, dacă:
a) se utilizează o poartă ŞI-NU cu două intrări cu trigger Schmitt din
familia TTL standard. Se cunosc: VOH = 3,6V , VOL = 0,2V , I IL ⋅ R = 0,2V , V p1 = 1,1V ,
V p 2 = 1,9V , R = 1KΩ ;
b) se utilizează o poartă ŞI-NU cu trigger Schmitt din familia CMOS. Se
cunosc: VDD = 5V , V p1 = 2,3V , V p 2 = 3,3V , I IL = I IH = 0 , R = 10KΩ .

OUT

10 nF

Fig. 3.22 Circuit astabil cu trigger Schmitt


Rezolvare:
Funcţionarea circuitului este descrisă de formele de undă din figura 3.23. Tensiunea pe
condensator la momentul de timp t este:
t

, unde u(∞) = VOH , u(0) = VP1 , iar u(t1 ) = VP 2



u(t ) = u(∞) − [u(∞) − u(0)] ⋅ e RC

V −V
Rezultă de aici valoarea lui t1 : t1 = RC ⋅ ln OH P1 .
VOH − VP 2
Pentru calculul lui t 2 , mărimile devin: u(∞) = VOL + I IL ⋅ R , u(0) = VP 2 şi u(t 2 ) = VP1
V −V − I ⋅ R
Se obţine valoarea lui t 2 : t 2 = RC ⋅ ln P 2 OL IL .
VP1 − VOL − I IL ⋅ R
a) Dacă înlocuim acum numeric, cu valorile pentru TTL, obţinem:
VOH − VP1 3,6 − 1,1
t1 = RC ⋅ ln = 103 ⋅ 10 −8 ⋅ ln ≈ 3,9µs ;
VOH − VP 2 3,6 − 1,9
VP 2 − VOL − I IL ⋅ R 1,9 − 0,2 − 0,2
t 2 = RC ⋅ ln = 103 ⋅ 10−8⋅ ⋅ ln ≈ 7,6µs ,
VP1 − VOL − I IL ⋅ R 1,1 − 0,2 − 0,2
deci f = 87 KHz, iar factorul de umplere este 0,34.
b) Similar, înlocuind valorile pentru CMOS, se obţine t1 ≈ 4,6µs , t 2 ≈ 3,6µs , deci frecvenţa
de 122 KHz şi un factor de umplere de 0,56.
VOUT t1 t2
VOH

VOL
0 t
VC
VP2
VP1
0 t

Fig. 3.23 Circuit astabil cu trigger Schmitt 


58 3 CIRCUITE DE IMPULS
3.3.5 Să se implementeze:
a) un bistabil de tip D, folosind un bistabil de tip JK;
b) un bistabil de tip JK, folosind un bistabil de tip D;
Comparaţi cele două soluţii din punct de vedere al gradului de structurare.
Rezolvare:
a) Avem la dispoziţie un bistabil de tip JK şi dorim să realizăm un circuit care să aibă
comportarea unui bistabil de tip D. Problema se reduce la sinteza unei structuri combinaţionale,
conform schemei de mai jos:

J Q Q
D CLC CLK
K Q Q
CLK
Fig. 3.24 Structura bistabilului de tip D
Dacă noul circuit este superior structurat, atunci reacţia care aduce la intrarea în CLC
informaţia asupra stării prezente a sistemului este necesară. În caz contrar această legătură va
dispare în procesul de minimizare a funcţiilor J şi K.
D D D D
D Q Q+ J K
Q 0 1 Q x x
0 0 0 0 x
0 1 0 x 1 Q x x Q 1 0
1 0 1 1 x
1 1 1 x 0 J=D K=D
Fig. 3.25 Sinteza bistabilului de tip D
b) Avem la dispoziţie un bistabil de tip D şi dorim să realizăm un circuit care să aibă
comportarea unui bistabil de tip JK.

J D Q Q
CLC
K CLK Q Q
CLK

J K Q Q+ D
0 0 0 0 0 J J
0 0 1 1 1 Q 0 0 1 1
0 1 0 0 0
1 1 0 0 Q 1 0 0 1
0
1 0 0 1 1 K K K
1 0 1 1 1
1 1 0 1 1 D = J.Q + K.Q
1 1 1 0 0
Fig. 5.3 Structura şi sinteza bistabilului de tip JK
Bistabilul JK are un grad de structurare superior bistabilului D (conţine o reacţie în plus). 
4 SISTEME SECVENŢIALE

Aplicaţiile din acest capitol îşi propun să prezinte circuite secvenţiale sincrone şi
asincrone cu un nivel de structurare superior faţă de cel al circuitelor prezentate în capitolul
anterior. Pentru sinteza şi analiza acestor circuite există algoritmi, în timp ce un circuit de
impuls este folosit atunci când este cazul, prin simpla introducere a lui în sistem.

4.1 Consideraţii teoretice

4.1.1 Sisteme secvenţiale asincrone

Circuitele prezentate în capitolul anterior erau circuite secvenţiale, adică circuite


cu porţi, care conţineau bucle de reacţie, conexiuni de la ieşirile sistemului la intrări.
Funcţionarea acestor circuite nu poate fi explicată decât dacă ţinem seama de timpii de
propagare prin porţi, condiţie ignorată de obicei la sistemele combinaţionale. Modelul
logic asincron, care este folosit pentru analiza şi sinteza acestor sisteme, echivalează
poarta logică reală cu o poartă logică ideală(realizează aceeaşi funcţie logică, dar timpul
de propagare este nul) şi un element de întârziere, aşa cum se poate vedea în figura 4.1.
Funcţionarea latch-ului cu inversoare, prezentat în capitolul anterior, este uşor
explicată folosind modelul logic asincron. Bistabilele de tip D sau JK au în componenţă
structuri de porţi cu numeroase bucle interne, deci blocuri asincrone, deşi pe ansamblu,
ele au fost astfel construite încât momentul de timp la care se modifică ieşirile să fie
.

poarta reală poarta ideală + element de întârziere


Fig. 4.1 Modelul logic asincron
60 4 SISTEME SECVENŢIALE
un front al semnalului de ceas. Dacă însă bistabilele componente ale unui sistem secvenţial
complex nu primesc acelaşi semnal de ceas, deci nu comută simultan, atunci spunem că
sistemul secvenţial este asincron.
Un astfel de sistem asincron este numărătorul asincron, sau divizorul de frecvenţă.
Bistabilele din numărătoarele asincrone funcţionează într-un singur fel, şi anume, ca
divizoare de frecvenţă prin 2. Prin urmare, bistabilele din structură, fie că sunt de tip D
sau de tip JK, sunt transformate în bistabile de tip T, având intrarea de date T conectată
la 1 logic. Schimbându-şi starea pe fiecare front activ al ceasului, ele divizează prin 2
frecvenţa semnalului aplicat pe intrarea de ceas.
Figura 4.2 reprezintă schema unui divizor de frecvenţă de 4 biţi realizat cu bistabile
T. Dacă acceptăm că bistabilele comută pe frontul descrescător al ceasului, atunci se obţin
formele de undă prezentate în figura 4.3. La scara de timp la care s-a făcut simularea
funcţionării nu se observă nimic deosebit şi diagrama stărilor pare a fi cea ideală. Dacă
privim însă printr-o “lupă de timp” porţiunea selectată, vom obţine formele de undă din
figura 4.4. Frontul descrescător al semnalului CLK produce comutarea primului bistabil , iar
ieşirea lui, notată cu Q1 , se modifică cu o mică întârziere, dată de timpul de propagare a
informaţiei prin porţile din structura bistabilului. Semnalul Q1 este ceasul pentru bistabilul
2, iar semnalul Q2 se modifică şi el cu o mică întârziere faţă de Q1 , şi aşa mai departe. Deci
pe lângă cele 16 stări permanente, există un număr de stări tranzitorii.
1

T T T T
CLK
8 CLK 4 CLK 2 CLK 1 CLK
Q Q Q Q

Q8 Q4 Q2 Q1

Fig. 4.2 Divizor de frecvenţă de 4 biţi

Fig. 4.3 Forme de undă pentru divizorul de frecvenţă de 4 biţi

Fig. 4.4 Forme de undă văzute printr-o “lupă de timp”


4.1 Consideraţii teoretice 61
Având în vedere funcţionarea lor, analiza şi sinteza numărătoarelor asincrone nu
ridică probleme deosebite. În schimb, analiza şi sinteza sistemelor asincrone cu porţi logice
este dificilă, pentru că timpul nu este discretizat ca la sistemele sincrone. Starea următoare
nu apare după o perioadă de ceas, ci poate apare după un multiplu de τ, τ fiind timpul de
propagare prin poartă.
Circuitul din figura 4.5, de exemplu, poate fi analizat prin stabilirea numărului minim
de bucle. Considerând porţile ideale şi singurele întârzieri fiind introduse de cele 3 bucle ale
latch-urilor S R , tabelul tranziţiilor este cel alăturat circuitului din figură. Tabelul
conţine curse(starea următoare diferă prin cel puţin 2 biţi faţă de starea prezentă), dar
ele nu sunt critice(cursa critică apare dacă există posibilitatea ca stările următoare să fie
diferite, adică să avem o funcţionare imprevizibilă). Tabelul tranziţiilor poate fi redus
prin eliminarea stărilor care nu sunt total stabile (neîncercuite).
CLK D q + q +q +
1 2 3
q1 q2 q3 00 01 11 10
q 1+
000 010 010 000 000
q1
001 011 011 000 000
Q 010 010 110 110 000
q 3+
011 011 111 111 000
q3
Q 100 010 010 111 111
CLK
q+ 101 011 011 111 111
2
q2
110 010 110 111 111
111 011 111 111 111
D

Fig. 4.5 Structura unui bistabil de tip D şi tabelul tranziţiilor


Pentru sinteza unui sistem secvenţial asincron, codificarea stărilor din tabelul redus
este importantă. Pentru eliminarea curselor critice, putem fi obligaţi să introducem stări
suplimentare. Exemplul din figurile 4.6 şi 4.7 elimină complet cursele prin codificarea
adiacentă a stărilor între care au loc tranziţii.
P R q+
q 00 01 11 10 Y
P R q+
q 00 01 11 10 Y IDLE IDLE IDLE RES PLS 0
IDLE IDLE IDLE RES PLS 0 PLS PLS IDLE RESA PLS 1
PLS PLS IDLE RES PLS 1 RESA _ _ RES
_ _
RES IDLE IDLE RES RES 0 RES IDLE IDLE RES RES 0

Fig. 4.6 Tabelul redus şi tabelul fără curse


P
R q
1

00 IDLE RES 10
q
2
Y

01 PLS RESA 11

Fig. 4.7 Schema logică a circuitului şi diagrama de adiacenţă a stărilor


62 4 SISTEME SECVENŢIALE

4.1.2 Sisteme secvenţiale sincrone

Analiza şi sinteza sistemelor sincrone este mult mai comodă pentru proiectant,
pentru că putem ignora întârzierile logicii combinaţionale, cu condiţia ca duratele
stărilor, date de frecvenţa ceasului, să fie semnificativ mai mari decât întârzierile prin
porţi. Timpul se transformă astfel dintr-o mărime continuă într-una discretă, perfect
controlabilă prin semnalul de ceas aplicat sistemului.
Sistemele secvenţiale sincrone, ca şi cele asincrone de altfel, pot fi uşor tratate folosind
teoria automatelor cu stări finite. Un automat cu stări finite se defineşte formal prin cvintuplul
A = ( X , Y , Q, λ , δ ) , unde entităţile componente au următoarea semnificaţie:
X = {x1 , x2 ,..., xn } - mulţimea configuraţiilor binare de intrare,
Y = { y1 , y2 ,..., yr } - mulţimea configuraţiilor binare de ieşire,
{
Q = q1 , q 2 ,..., q p } - mulţimea configuraţiilor binare de stare,
λ : X × Q → Q - funcţia de tranziţie a stărilor,
δ : X × Q → Y - funcţia de tranziţie a ieşirilor.
Datorită faptului că mulţimile X , Y şi Q sunt finite, circuitul se numeşte automat cu
stări finite. Spaţiul timpului nu apare explicit în descrierea de mai sus. El este discret şi este
format din mulţimea numerelor întregi care semnifică multiplul de T , unde T este perioada
după care se comandă o nouă modificare în circuit. Funcţiile de tranziţie se pot defini şi
reprezenta prin tabele de tranziţii, grafuri, sau organigrame. Schema din figura 4.8
reprezintă un automat finit ale cărui ieşiri apar cu întârziere deoarece sunt trecute prin
memorie. Ele pot fi obţinute şi imediat, de la ieşirea CLC-ului.
X
Q

CLC

CLK MEMORIE

Fig. 4.8 Structura generală a unui automat finit

Fără a fi absolut necesară, această separare în două blocuri funcţionale, logica


combinaţională şi blocul de memorare, este deosebit de utilă în proiectare. Aceasta,
deoarece blocul de memorare poate fi definit foarte simplu, ca un registru paralel cu un
număr suficient de bistabile, în funcţie de codificarea adoptată pentru stările sistemului, iar
blocul de prelucrare este format dintr-o logică combinaţională mai complexă şi mai greu de
definit. Efortul de proiectare este orientat spre sinteza circuitului combinaţional.
Problema fundamentală care se pune la sinteza automatelor finite este o problemă de
optimizare. Proiectantul nu poate acţiona asupra numărului de intrări şi ieşiri din sistem,
deoarece ele sunt date prin specificaţiile de proiectare, dar are deplina libertate de a acţiona
asupra mulţimii stărilor sistemului. Prin reducerea numărului de stări scade numărul
.
4.1 Consideraţii teoretice 63
0

Q 1Q 2 10 01 00
A 00 x 1 0
Q A B C
y1 y2 1
YY11 ===111
Y1=1
Y1
2 ==00
YY2
Y2=0
11 0
0 1
X B CLK
01
X
C Y1 = 0
Y2 = 1 Q1
Y1 = 0 0 1 Q2
Y2 = 0 X
Y1

Y2

Fig. 4.9 Exemplu de automat finit şi câteva moduri de reprezentare

elementelor de memorie, deci a bistabilelor din structură, şi se reduce numărul funcţiilor de


excitaţie, cu alte cuvinte complexitatea circuitului combinaţional.
Poate că cea mai importantă chestiune este codificarea stărilor rămase după reducere.
Dacă variabilele de intrare sunt sincrone, adică se modifică în funcţie de semnalul de ceas,
atunci o codificare care respectă anumite principii poate genera un circuit combinaţional
foarte apropiat de optim, în timp ce o codificare întâmplătoare poate genera un circuit mult
prea complicat. Dar în orice situaţie, circuitul obţinut va funcţiona corect. Dacă însă
variabilele de intrare sunt asincrone, adică se pot modifica oricând în timp, apare din nou
problema întâlnită la cursele critice, iar rezolvarea ei se face prin alocarea unor coduri
adiacente stărilor care urmează testării variabilei asincrone (principiul dependenţei reduse
de o variabilă). La nevoie, se pot introduce şi aici stări suplimentare.
Sistemul din figura 4.9 are o singură intrare notată cu x, să presupunem deocamdată
că este sincronă, două ieşiri notate cu y1 şi y 2 , şi un număr de trei stări notate cu A, B şi C.
O codificare binară minimală a stărilor se poate face folosind numai 2 biţi, adică două
circuite bistabile, având ieşirile Q1 şi Q2 .

4.1.2 Hazard

Prin hazard sau risc, înţelegem posibilitatea de modificare neaşteptată a ieşirii,


pentru o durată foarte mică de timp, datorită întârzierilor prin porţi. El poate fi static,
dacă are loc o singură comutare a ieşirii la modificarea unei variabile, sau dinamic, dacă
apar comutări multiple datorită unei singure tranziţii a unei intrări. Structurile
combinaţionale cu două nivele de logică, care pot fi implementate într-o structură
programabilă PLD, nu generează hazard dinamic.
În sistemele secvenţiale sincrone nu se pune de obicei problema analizei hazardului,
pentru că frontul activ al ceasului se aplică după ce logica combinaţională a livrat valorile
logice aşteptate ale funcţiilor de excitaţie. În sistemele asincrone însă, această analiză a
hazardului şi găsirea unor modalităţi de eliminare a lui, este absolut necesară.
64 4 SISTEME SECVENŢIALE

4.2 Demonstraţii practice


Consideraţiile asupra alimentării panoului logic, formulate în primul capitol, rămân
valabile şi aici. Panoul logic conţine circuitele integrate MMC 4013 şi MMC 4027, studiate
în capitolul anterior. Pentru implementarea automatului finit prezentat mai sus, se foloseşte
un panou care conţine, conform figurii 4.14, 4 circuite integrate CMOS: MMC 4013,
MMC 4052(2 buc.) şi MMC 4011. Circuitul MMC 4052 conţine câte 2 multiplexoare, dar
foaia lui de catalog nu a mai fost dată, deoarece conexiunile conform schemei din figură
sunt deja realizate. Porţile ŞI-NU ale circuitului MMC 4011 sunt folosite pentru generarea
semnalului de CLK, prin apăsarea butonului cu revenire de pe panou. Biţii de stare şi de
ieşire sunt vizualizaţi prin intermediul a 4 LED-uri. Starea 1 logic este semnalizată prin
aprinderea LED-ului corespunzător, iar cea de 0 logic prin stingerea lui. Montajul se poate
alimenta cu orice tensiune continuă, cuprinsă între 5 şi 15 Vcc.
Un alt panou logic, destinat implementării aceluiaşi automat cu bistabile de tip D
şi memorie, este implementat după schema din figura 4.16. Panoul conţine două circuite
de memorie: 82S147, care este o memorie PROM şi MMN 2114, o memorie RAM
statică. Placa mai conţine circuitele MMC 4013, MMC 4011 şi MMC 4066, ultimul
având în structură 4 comutatoare CMOS necesare pentru înscrierea, respectiv citirea
datelor din memoria RAM. Vizualizarea stării şi a ieşirii se face tot cu ajutorul a 4
LED-uri. Despre memorii vom discuta în capitolul următor, dar circuitul este deja cablat
şi utilizarea lui aici se poate face fără a avea prea multe cunoştinţe despre memorii.
Montajul se alimentează cu tensiunea de 5 Vcc, datorită prezenţei circuitelor de
memorie. De fapt, tensiunea sursei este de circa 5,6 - 5,7 V din cauza diodei serie de
protecţie la alimentare inversă. Din acest motiv se măsoară cu voltmetrul tensiunea
de 5 Vcc între catodul diodei de protecţie şi masă.

4.2.1 Se implementează numărătorul asincron din figura 4.1, folosind bistabile de


tip D. Rezultă circuitul din figura 4.10. Se verifică funcţionarea montajului. Se pot
vizualiza stările tranzitorii? Modificaţi circuitul pentru a obţine un numărător asincron
cu 16 stări care să numere în sens descrescător. Repetaţi implementările folosind
bistabile de tip JK şi verificaţi funcţionarea corectă a circuitelor.

D Q Q1 D Q Q2 D Q Q3 D Q Q4
1 2 3 4

CLK CLK Q CLK Q CLK Q CLK Q

Fig. 4.10 Schema logic! a divizorului de frecven"! cu bistabile de tip D

Fig. 4.11 Forme de und! pentru circuitul din figura 4.#0 V


4.2 Demonstraţii practice 65
4.2.2 Se realizează numărătorul sincron din figura 4.12, care realizează tranziţiile
Q1Q2 = 00 → 10 → 11 → 01 → 00 . Sinteza circutului se face cu ajutorul tabelului
tranziţiilor din figură. Folosind tabelul tranziţiilor pentru bistabilul de tip JK se deduc
funcţiile de excitaţie pentru fiecare dintre cele două bistabile. De ce spunem că este un
numărător sincron? Refaceţi circuitul pentru a modifica sensul de numărare şi verificaţi
funcţionarea lui. Puteţi construi acelaşi numărător, dar folosind bistabile de tip D? Care
dintre cele două soluţii este mai avantajoasă şi de ce?

+ +
Q1 Q2 Q1 Q2 J1 K1 J2 K2
0 0 1 0 1 x 0 x J1 = Q 2 K1 = Q 2
1 0 1 1 x 0 1 x
1 1 0 1 x 1 x 0 J2 = Q 1 K2 = Q1
0 1 0 0 0 x x 1

Q1
J Q J Q Q2
CLK CLK CLK
K Q K Q

Fig. 4.12 Schema logic! a unui num!r!tor sincron cu bistabile de tip JK

Fig. 4.13 Forme de und! pentru circuitul din figura 4.#2 V

4.2.3 Se foloseşte panoul logic cu bistabile D şi multiplexoare pentru


implementarea automatului finit reprezentat în figura 4.9. Schema logică a circuitului
este dată în figura 4.14. Se verifică funcţionarea corectă a montajului prin urmărirea tuturor
tranziţiilor posibile din organigramă sau tabel. Figura 4.15 reprezintă tabelul tranziţiilor,
tabel ce a fost construit pe baza tranziţiilor din organigramă şi care este foarte util pentru
sinteza schemei logice a circuitului.
Simbolul d poate fi 0 sau 1 logic(don' t care). S-a folosit această notaţie pentru a evita
confuzia cu semnalul de intrare, notat aici cu X. Implementarea memoriei se face cu doi
bistabili de tip D care comută sincron. Circuitul logic combinaţional are intrările X, Q 1 şi
Q 2 şi trebuie să genereze la ieşire funcţiile binare Q 1+ = D 1 şi Q +2 = D 2 . Nu este necesară
minimizarea funcţiilor binare D 1 şi D 2 pentru că toţi termenii canonici sunt disponibili la
ieşirile multiplexoarelor. Reacţia de la ieşirea memoriei la intrarea în CLC se realizează prin
conectarea ieşirilor Q 1 şi Q 2 la intrările de selecţie ale multiplexoarelor. Conexiunile la
intrările multiplexoarelor se realizează în funcţie de alegerea conexiunilor de reacţie.
66 4 SISTEME SECVENŢIALE
Q1
X 0 1 0
MUX
0 1 MUX 0 1 Y1
w w
d 2 D Q d 2
X 3 1 0 0 3 1 0
2 2 CLK 2 2

1 0 1 0
2 2 0 0 2 2
1 0
0 0 1 Y2
1 w D Q w
d d 2
2
MUX MUX
1 3
1 3 CLK

Q2

CLK

Fig. 4.14 Schema logic! a automatului implementat cu multiplexoare

+
X Q1 Q2 Q 1+ Q 2 Y1 Y2
0 0 0 0 1 1 0
1 0 0 1 1 1 0
d 0 1 0 0 0 0
0 1 1 0 1 0 1
1 1 1 1 1 0 1

Fig. 4.15 Tabelul tranzi"iilor

Dacă privim tabelul tranziţiilor observăm că pentru starea prezentă A, codificată prin
Q 1 Q 2 = 00 , starea următoare este fie B(codul Q 1Q 2 = 11 ), fie C(codul Q 1Q 2 = 01 ). Decizia
este luată în funcţie de valoarea logică a variabilei de intrare X. Se vede că pentru stările B
şi C valoarea lui Q 2 este o constantă, Q 2 = 1 , iar valoarea lui Q 1 este dependentă de
valoarea lui X : pentru X = 0 , Q 1 = 0 , iar pentru X = 1 , Q 1 = 1 . Deci putem spune că Q 1 = X .
Celelalte două multiplexoare au prima intrare(notată cu 0) conectată la valorile logice ale
ieşirilor în starea prezentă A, adică Y1 = 1 şi Y2 = 0 . Acelaşi raţionament se face şi pentru
celelalte stări.
.
V

4.2.4 Se foloseşte panoul logic cu bistabile D şi memorii. Cele două circuite


integrate, memoria PROM 82S147 şi memoria RAM MMN 2114, sunt destinate
implementării logicii combinaţionale a automatului finit. Blocul de memorie din figura 4.8
este un registru destinat memorării stării curente şi este realizat, ca şi până acum, cu cele
două bistabile de tip D. Memoria de tip ROM este un circuit combinaţional, care furnizează
la ieşiri informaţia conţinută în harta memoriei (tabelul din figura 4.17), în timp ce memoria
RAM este un emulator de ROM, adică un circuit care simulează prezenţa unei memorii
ROM în circuit. Memoria RAM nu conţine o informaţie utilă la cuplarea alimentării şi de
aceea în primul rând trebuie să înscriem datele din tabel în memorie (vezi subcapitolul 5.1).
4.2 Demonstraţii practice 67
A9 Q1
A8 O1 D Q
A7
A6 CLK
A5 O2
A4 PROM Q2
A3 D Q
O3 Y1
X A2
CLK
A1
A0 O4 Y2

CLK

Fig. 4.16 Schema logic! a automatului implementat cu memorie PROM

A2 A1 A0 O1 O2 O3 O4
+
X Q1 Q2 Q 1+ Q 2 Y1 Y2
0 0 0 0 1 1 0
0 0 1 0 0 0 0
0 1 0 d d d d
0 1 1 0 1 0 1
1 0 0 1 1 1 0
1 0 1 0 0 0 0
1 1 0 d d d d
1 1 1 1 1 0 1

Fig. 4.17 Harta memoriei pentru schema logic! din figura 4.#6

Circuitul 82S147 este realizat în tehnologie Schottky TTL şi conţine 512 cuvinte de
câte 8 biţi. Memoria RAM MMN 2114 este realizată în tehnologie NMOS şi conţine 1024
cuvinte de câte 4 biţi. Memoria PROM din figura 4.16 este un circuit generic de 1024
cuvinte (10 linii de adresare A 9 ...A 0 , care sunt intrări) de câte 4 biţi (4 linii de date O 4 ...O1 ,
care sunt ieşiri). Automatul conceput foloseşte numai 6 dintre cele 1024 cuvinte, conform
tabelului de tranziţii din figură.
Verificarea funcţionării circuitului cu memorie PROM se face imediat, prin simpla
verificare a tranziţiilor din tabel. Comentaţi cuplajul TTL – CMOS.
Pentru circuitul cu memorie RAM, trebuie să introducem de la început datele necesare
în memorie. În acest scop, pentru a asigura adresa 0 de start a memoriei la cuplarea
alimentării (A2 = A1 = A0 = 0), comutatorul S2 are pârghia înspre comutatoarele S1 şi S3(în
jos), iar comutatorul S3 în dreapta (vezi fig. 4.18). Intrarea X este conectată la masă.
Cele 4 comutatoare notate cu S1 sunt destinate introducerii celor 4 biţi pe cuvânt în
memorie. Dacă pârghia este în jos, bitul corespunzător este pe 0 logic, iar dacă este în sus,
pe 1 logic. După fixarea cuvântului dorit prin poziţionarea celor 4 comutatoare, acesta este
introdus în memorie prin ridicarea şi coborârea înapoi a pârghiei comutatorului S2
(activarea şi dezactivarea semnalului WE - WRITE ENABLE ). Pe urmă se modifică adresa
pentru introducerea unui nou cuvânt prin acţionarea în cele două sensuri a comutatorului S3
(pentru a genera cele 2 fronturi ale semnalului de ceas CLK - CLOCK ). Pentru introducerea
datelor în memorie urmărim harta memoriei din figura 4.17. Dacă în locul comutatoarelor
S2 şi S3 există butoane cu revenire, atunci ele sunt acţionate o singură dată.
.
4.3 Probleme rezolvate 69
4.2.6 Ce înseamnă codificare care urmăreşte principiul dependenţei reduse faţă de o
variabilă? În cazul nostru variabila X poate fi asincronă? Alegeţi o altă codificare a stărilor
şi arătaţi sub formă tabelară harta memoriei precum şi operaţiunile necesare pentru
înscrierea datelor în memorie. Verificaţi funcţionarea circuitului obţinut.
.


4.3 Probleme rezolvate


4.3.1 Să se analizeze circuitul din figura 4.19 şi să se reprezinte formele de undă şi
diagrama stărilor. Să se stabilească numărul de stări netranzitorii P şi raportul de divizare N.

1 J Q Q1 1 J Q Q 2 = out
CLK CLK
CLK 1 K Q K Q
1

Fig. 4.19 Schema logică a unui divizor de frecvenţă realizat cu bistabile de tip JK
Rezolvare:

Fig. 4.20 Forme de undă pentru circuitul din figura 4.19


Analiza circuitului se face prin desenarea formelor de undă, ţinând seamă de
întârzierile prin porţi şi bistabile. Figura 4.20 prezintă analiza PSpice a circuitului. Stările
tranzitorii se datorează timpilor de propagare prin bistabile. Diagrama stărilor pentru
circuitul analizat este: Q1Q2 = 00 → 10 → 11 → 01 → 11 → 10 → 00 , unde stările tranzitorii sunt
subliniate. Rezultă imediat P = 4 şi N = 3 .
.
V

4.3.2 Să se proiecteze un circuit basculant cu 3 bucle, unde ∆ reprezintă întârzierea


proprie circuitelor logice şi traseelor de conexiune. În repaus, intrările I 1 , I 2 şi I 3 sunt în 0
logic. Atunci când intrarea I i trece în 1 logic, ieşirea y i trece în 1 logic dacă era în 0 logic,
.

I1 ∆ y1
I2 ∆ y2
I3 CLC ∆ y3

Fig. 4.21 Un circuit secvenţial asincron


70 4 SISTEME SECVENŢIALE
sau îşi păstrează starea dacă era în 1 logic. La revenirea intrării I i în 0 logic, ieşirile y i îşi
păstrează vechea valoare. Admitem că se modifică o singură intrare, iar comenzile se exclud
reciproc, adică I 1 I 2 = I 1 I 3 = I 2 I 3 = I 1 I 2 I 3 = 0 .

Rezolvare:
În conformitate cu cerinţele problemei, formele de undă ar putea fi cele din figura 4.22.
După evidenţierea stărilor distincte ale sistemului se construieşte tabelul tranziţiilor şi al ieşirilor din
figura 4.23, valorile din tabel fiind starea următoare şi ieşirile Q + y1 y2 y3 :

I1
I2
I3
y1
y2
y3

0 1 0 2 3 2 3 4 5 4 5 1 0
Fig. 4.22 Stările sistemului deduse din formele de undă

Q +, y1 y2 y3
I1I2 I3 000 001 010 011 100 101 110 111
Q
0 0,100 4,001 2,010 - 1,100 - - -
1 0,100 4,001 2,010 - 1,100 - - -
2 3,010 4,001 2,010 - 1,100 - - -
3 3,010 4,001 2,010 - 1,100 - - -
4 5,001 4,001 2,010 - 1,100 - - -

5 5,001 4,001 2,010 - 1,100 - - -

Fig. 4.23 Tabelul tranziţiilor şi al ieşirilor


Cele 6 stări ale sistemului sunt compatibile două câte două, deci avem în final 3 stări
distincte. Pentru prevenirea hazardului şi a curselor critice, două stări succesive trebuie să aibă
coduri adiacente(care diferă printr-un singur bit). Cum între fiecare dintre cele 3 stări există tranziţii
bilaterale, o codificare binară minimală cu 2 biţi nu este posibilă. Folosim pentru fiecare stare un
cod de 3 biţi, astfel încât să existe o corespondenţă directă între variabilele de stare Q1 , Q2 şi Q3 şi
ieşirile sistemului y1 , y2 şi respectiv y3 : Qi = yi , unde i = 1, 2 şi 3. Atribuim deci, conform
formelor de undă stabilite în figura 4.22, stărilor 0 şi 1 codul 100, stărilor 2 şi 3 codul 010, iar
stărilor 4 şi 5 codul 001. Pentru a respecta şi condiţiile de adiacenţă, mai introducem starea 000,
care este atinsă la fiecare tranziţie pentru foarte scurt timp(stare tranzitorie).
Tabelul tranziţiilor stărilor sau al ieşirilor este reprezentat în figura 4.24. Folosind diagrame
Veitch-Karnaugh pentru 6 variabile, se minimizează funcţiile Qi+ , i = 1, 2 şi 3, iar cu ajutorul
ecuaţiilor obţinute se construieşte schema logică a circuitului, care este prezentată în figura 4.25.
Aici întârzierile între stări nu sunt date de un ceas extern, ci numai de timpii de propagare prin porţi.
4.3 Probleme rezolvate 71
+ + +
Q 1Q 2Q 3
I1I2 I3
000 001 010 011 100 101 110 111
Q 1Q 2Q 3
000 - 001 010 - 100 - - -
001 001 001 000 - 000 - - -
010 010 000 010 - 000 - - -
011 - - - - - - - -
100 100 000 000 - 100 - - -
101 - - - - - - - -
110 - - - - - - - -
111 - - - - - - - -

Q3 Q3

I2
d 1 0 0 I3 0 0 d d d d d d 1 1 d d
0 d d 0 0 d d d d d d d 0 d d d
I3
d d d d d d d d d d d d d d d d
I2
0 d d 0 I3 0 d d d d d d d 0 d d d
I1 I1 I1
Q 1 Q 2 = 00 Q 1 Q 2 = 01 Q 1 Q 2 = 11 Q 1 Q 2 = 10

Fig. 4.24 Tabelul tranziţiilor şi diagramele Karnaugh pentru funcţia Q1+

Dacă grupăm zerourile din diagrama prezentată în figura de mai sus, obţinem expresia lui
Q : Q1+ = I 2 + I 3 + Q2 + Q3 , sau Q1+ = I 2 + I 3 + Q2 + Q3 . În mod asemănător rezultă şi celelalte
1
+

ecuaţii: Q2+ = I 1 + I 3 + Q1 + Q3 şi Q3+ = I 1 + I 2 + Q1 + Q2 .

Q 1 = y1
I1

I2 Q 2 = y2

I3 Q 3 = y3

Fig. 4.25 Schema logică a circuitului

Fig. 4.26 Formele de undă obţinute prin simulare PSPICE


72 4 SISTEME SECVENŢIALE
Figura 4.26 verifică corectitudinea sintezei prin analiză, folosind o simulare PSPICE.
Formele de undă coincid cu cele din figura 4.22, cu excepţia stării iniţiale, în care toate intrările sunt
la 0 logic. Ieşirile circuitului au o valoare logică necunoscută, pentru că circuitul nu a fost iniţializat.
În circuitele reale există cu siguranţă la ieşiri una dintre cele două valori logice posibile, 0 sau 1.
Aceeaşi problemă apare şi la sistemele secvenţiale sincrone cu bistabile integrate.
.


4.3.3 Să se analizeze sistemul secvenţial din figura 4.27, reprezentând cronograma,


tabelul tranziţiilor şi diagrama stărilor acestuia. Arătaţi că circuitul este un oscilator şi
stabiliţi perioada de oscilaţie.

Q1 Q2 Q3
∆1 ∆2 ∆3

Fig. 4.27 Schema logică a circuitului


Rezolvare:
Dacă ţinem seama de întârzierile prin porţi, rezultă formele de undă din figura 4.28.
Semnalele la ieşirile porţilor sunt periodice, cu perioada T = 2 ⋅ (∆1 + ∆ 2 + ∆ 3 ) . Tabelul tranziţiilor
şi diagrama stărilor sunt prezentate în figura 4.29.

Q1

Q2

Q3

∆ 1 ∆ 2 ∆ 3∆ 1 ∆ 2 ∆ 3

Fig. 4.28 Cronograma circuitului din figura 4.27

+
Q 1Q 2Q 3 Q +1 Q 2 Q +
3
Q1Q2Q3
000 -
001 011
010 110
011 010
100 101 001 001 001 001 001 001
101 001
110 100
111 -
Fig. 4.29 Tabelul tranziţiilor şi diagrama stărilor 

4.3.4 Să se proiecteze un bistabil D cu basculare dublă pe front, respectiv care


basculează pe ambele fronturi ale semnalului de ceas.
4.3 Probleme rezolvate 73
Rezolvare:
Circuitul căutat este un sistem secvenţial asincron, implementat cu porţi, care trebuie să
basculeze ca un bistabil D la aplicarea unui front crescător, sau descrescător, pe intrarea de ceas.
Notăm cu C intrarea de ceas şi cu D intrarea de date, iar cu Q ieşirea. Ca orice bistabil, trebuie să
aibă şi o ieşire Q, dar deocamdată ea nu ne preocupă, pentru că o putem obţine cu un simplu
inversor de la ieşirea Q. Formele de undă care descriu funcţionarea circuitului sunt date în figură.

D
C
Q
1 2 3 4 1 5 1 5 6 7 8 7 9 5
Fig. 4.30 Formele de undă şi stările sistemului

Q +, y
D C 00 01 11 10
Q
1 1,0 5,0 - 2,0
2 - - 3,1 2,0
3 - 4,1 3,1 -
4 1,0 4,1 - -
5 1,0 5,0 6,0 -
6 - - 6,0 7,1
7 - - 8,1 7,1
8 - - 8,1 7,1
9 9,1 5,0 - -
Fig. 4.31 Tabelul tranziţiilor şi al ieşirii

Tabelul tranziţiilor din figura 4.31 sugerează că sistemul are 4 stări distincte. Respectând
condiţia ca două stări între care au loc tranziţii să aibă coduri adiacente, alegem următoarele coduri
binare: stările compatibile 1 şi 2 primesc codul 00, stările compatibile 3 şi 4, codul 10, stările
compatibile 5 şi 6, codul 01, iar stările compatibile 7, 8 şi 9 primesc codul rămas 11. Evident că
sunt posibile şi alte codificări binare.
Cu aceste coduri, rezultă tabelul redus al tranziţiilor din figura 4.32. Se descompune în 3
diagrame Veitch-Karnaugh şi se deduc expresiile minime pentru funcţiile Q1+ , Q2+ şi Q3+ .

Q+ +
1 Q2 , y
DC
00 01 11 10
Q1 Q2
00 00,0 01,0 10,1 00,0
01 00,0 01,0 01,0 11,1
11 11,1 01,0 11,1 11,1
10 00,0 10,1 10,1 -
Fig. 4.32 Tabelul redus al tranziţiilor şi codificarea stărilor
74 4 SISTEME SECVENŢIALE
Rezultă următoarele ecuaţii:
Q1+ = D ⋅ Q1 + C ⋅ Q1 ⋅ Q2 + C ⋅ D ⋅ Q2 + C ⋅ Q1 ⋅ Q2 + C ⋅ D ⋅ Q2
Q2+ = D ⋅ Q2 + Q1 ⋅ Q2 + C ⋅ D ⋅ Q1
y = Q1+
Dacă implementăm acum sistemul folosind numai două nivele de logică (porţi ŞI şi porţi
SAU), obţinem un circuit care conţine 14 porţi logice, iar analiza circuitului prin simulare PSpice
generează formele de undă din figura 4.33. Verificaţi dacă circuitul funcţionează corect şi comentaţi
apariţia “spike”-ului la momentul de 13µs pe traseul lui Q2 .
Ce se întâmplă dacă dorim să folosim un circuit cu număr mai mic de porţi? Ecuaţiile de mai
sus se pot transforma aşa cum se vede mai jos şi rezultă un circuit care conţine numai 10 porţi
logice. Verificaţi prin simulare PSPICE funcţionarea circuitului şi comentaţi rezultatele obţinute.
Q1+ = D ⋅ Q1 + (C ⊕ Q2 ) ⋅ (D + Q1 )
Q2+ = (D + Q1 ) ⋅ Q2 + C ⋅ D ⋅ Q1
y = Q1+

Fig. 4.33 Formele de undă obţinute prin simulare PSPICE 

4.3.5 Să se proiecteze un sistem numeric care să asigure funcţionarea automată a


barierelor la o trecere la nivel peste calea ferată. Sistemul are 2 intrări, notate cu x1 şi x 2 ,
date de stările unor contacte amplasate de o parte şi de alta a şoselei. Ieşirea y comandă
închiderea barierelor.
Rezolvare:
Avem de proiectat un sistem sincron cu comportament asincron, datorită intrărilor, care se
pot modifica în orice moment de timp. Frecvenţa semnalului de ceas CLOCK, este mult mai mare
decât rata de modificare a intrărilor. Presupunem că atunci când contactele sunt închise(trece trenul)
avem 1 logic pe intrări, iar comanda de închidere a barierelor se dă pentru 1 logic la ieşire. Stările
sistemului au fost marcate direct pe formele de undă rezultate prin simulare PSPICE din figura 4.34,
unde s-au considerat trenuri scurte sau lungi, care vin dintr-o parte sau cealaltă a barierei.

Fig. 4.34 Sistemul are 9 stări distincte, numerotate de la 0 la 8


4.3 Probleme rezolvate 75
Q +, y Q +, y
x1x2 x1x2
Q 00 01 11 10 Q 00 01 11 10
0 0,0 4,1 - 1,1 0 0,0 4,1 - 1,1
1 2,1 - 7,1 1,1 1= 2 = 7 2,1 3,1 7,1 1,1
2 2,1 3,1 - -
3 0,0 3,1 - - 3=6 0,0 3,1 - 6,1
4 5,1 4,1 8,1 - 5,1 4,1 8,1 6,1
5 5,1 - - 6,1 4 = 5= 8
6 0,0 - - 6,1
7 - 3,1 7,1 -
8 - - 8,1 6,1
Codificarea binară a stărilor: 0 00 , 1 = 2 = 7 01, 3 = 6 11, 4 = 5 = 8 10
Fig. 4.35 Tabelul tranziţiilor. Reducerea şi codificarea stărilor

După reducerea stărilor rămân 4 stări distincte, care sunt codificate aşa cum se arată în
figura 4.35. Se minimizează funcţiile de excitaţie şi ieşirea, rezultând ecuaţiile care permit
implementarea circuitului cu bistabile de tip D şi porţi logice:
D1 = x1 x 2 + x1Q1 + Q1Q2 ,
D2 = x1 x 2 + x 2 Q2 + Q1 Q2 , şi
y = Q1 + Q2 .
Ar putea exista probleme în funcţionare, dacă ne uităm la tabelul tranziţiilor şi la codurile
alese? Observăm că există o situaţie în care se face o tranziţie de la o stare la alta, deşi cele două
stări nu au coduri adiacente. Este aceasta o problemă reală şi dacă da, atunci cum ar putea fi
rezolvată?
.
V

4.3.6 Un sistem secvenţial are 2 intrări şi o ieşire care detectează orice secvenţă de 4
stări succesive pentru care cele două intrări sunt identice. La detectarea acestei secvenţe
ieşirea capătă valoarea logică 1 atât timp cât intrările sunt identice. Să se proiecteze
sistemul.
Rezolvare:
Avem de proiectat un sistem sincron cu comportament sincron, deoarece modificarea
intrărilor este dată de semnalul de ceas. Stările sistemului au fost marcate direct pe formele de undă
rezultate prin simulare PSPICE din figura 4.36. Se observă din tabelul tranziţiilor dat în figura 4.37
că sistemul are 4 stări distincte. Codificarea propusă a stărilor generează următoarele expresii pentru
funcţiile de excitaţie şi ieşire: D1 = x1 ⊕ x 2 ⋅ ( Q1 + Q2 ) , D2 = x1 ⊕ x 2 ⋅ Q1 şi y = x1 ⊕ x 2 ⋅ Q1 ⋅ Q2 .
Problema se putea rezolva mai simplu, dacă observam de la început că x1 = x 2 înseamnă
x1 ⊕ x 2 = 1 şi obţineam un sistem cu o singură intrare x = x1 ⊕ x 2 .

Fig. 4.36 Sistemul are 5 stări distincte, numerotate de la 1 la 5


76 4 SISTEME SECVENŢIALE

Q +, y
x1x2
Q 00 01 11 10 Sistemul are 4 stări distincte.
1 2,0 1,0 2,0 1,0 Alegem următoarele coduri binare
2 3,0 1,0 3,0 1,0 1 00
3 4,0 1,0 4,0 1,0 2 01
4 5,1 1,0 5,1 1,0 3 11
5 5,1 1,0 5,1 1,0 4=5 10
Fig. 4.37 Tabelul tranziţiilor. Reducerea şi codificarea stărilor 

4.3.7 Se consideră automatul finit descris de organigrama din figură. Să se


implementeze circuitul folosind bistabile de tip D şi având:
a) număr minim de porţi
b) multiplexoare cu 4 căi de intrare
c) memorie ROM de 32 cuvinte a câte 4 biţi
d) un circuit combinaţional format din memorie ROM de 4 cuvinte a câte 4 biţi şi
multiplexoare. Reprezentaţi harta memoriei.
Q1Q2
00
A

0 1
X1 B 01

11
0 1
C X2

10 1 0
D X3

1 0
X4

Fig. 4.38 Organigrama care descrie funcţionarea automatului finit


Rezolvare:
Construim tabelul tranziţiilor urmărind organigrama. Sistemul are 2 bistabile şi 4 intrări, al
căror sincronism cu ceasul nu ne preocupă, codurile stărilor fiind deja date. Oricum, dacă
variabilele X1 şi X3 pot fi şi asincrone, variabilele X2 şi X4 sunt obligatoriu sincrone.
+
X1 X2 X3 X4 Q1 Q2 Q 1+ Q 2
0 x x x 0 0 0 0
1 x x x 0 0 0 1
x 0 x x 0 1 1 1
x 1 x x 0 1 0 0
x x 0 x 1 1 0 0
x x 1 x 1 1 1 0
x x x 0 1 0 0 0
x x x 1 1 0 1 1
Fig. 4.39 Tabelul tranziţiilor pentru organigrama din figura 4.38
4.3 Probleme rezolvate 77
a) Pentru implementarea cu porţi este necesară minimizarea funcţiilor binare Q 1+ = D 1 şi
Q +2 = D 2 . Folosim diagramele Veitch-Karnaugh condensate.
b) Urmărind tabelul tranziţiilor se poate face uşor implementarea funcţiilor cu
multiplexoare, la fel ca în exemplul prezentat la punctul 4.2.3.

0 x2 x 4 x3 x1 x 2 x 4 0
Q1 Q1 Q1 Q1
Q 2 0 x4 Q 2 x1 x 4 Q1 21
0 1 2 3 Q1 21
0 1 2 3
MUX MUX
Q 2 x2 x3 Q 2 x2 0 Q2 20 W Q2 20 W

D1 D2 D1 D2
a b
Fig. 4.40 Soluţiile problemei pentru punctele a şi b

c) Cele 6 variabile necesită folosirea unui număr de 2 cipuri de memorie ROM de 32


cuvinte (2 5 ) , având ieşiri cu 3 stări (figura 4.41.a). Variabila suplimentară, aici x1 ,
selectează citirea datelor numai de la circuitul selectat. Se poate utiliza şi un singur
circuit de memorie de 32 cuvinte a câte 4 biţi şi două multiplexoare cu câte 2 intrări.
Desenaţi schema logică şi comparaţi cele două implementări propuse.
d) O altă soluţie de implementare cu memorie este dată în figura 4.41.b. Orice soluţie care
foloseşte un cip de memorie ROM trebuie să aibă şi harta memoriei, care indică
conţinutul memoriei ROM. Deci soluţia din figura 4.41.b este completă. Este evident că
toate aceste soluţii implementează numai logica combinaţională a automatului finit. Se
vede că cele două bistabile de tip D nu sunt reprezentate în scheme.

x1 x 2 x 4 x 3
x2 A4 O0 D1
x3 A3
O1 D2 Q1 21
0 1 2 3
x4 A2 ROM MUX
O2 Q2 20 W
Q1 A1
O3
Q2 A0
OE
O0 0
Q1 A1 MUX D1
x1 O1 1
ROM
O2 0
A4 O0 Q2 A0 MUX D2
O3 1
A3 OE
O1
A2 ROM
O2
A1
A0 O3 A1 A0 O0 O1 O2 O3
OE
0 0 0 0 0 1
0 1 1 0 1 0
1 0 0 1 0 1
1 1 0 1 0 0
a b
Fig. 4.41 Soluţiile problemei pentru punctele c şi d 

4.3.8 Să se facă sinteza unui circuit de generare a stărilor de WAIT pentru


microprocesoarele 8080, 8085 şi Z80, folosind formele de undă din figura de mai jos. Încercaţi
şi o soluţie de implementare cu registre de deplasare. Arătaţi modul de conectare a circuitului
la fiecare dintre cele trei microprocesoare pe 8 biţi.
78 4 SISTEME SECVENŢIALE
CLK

WAIT REQUEST (intrare)

READY (ieşire)

WAIT (ieşire)

Fig. 4.42 Formele de undă pentru problema 4.3.8


Rezolvare:
Semnalul de intrare WAIT REQUEST este considerat asincron, deşi ar putea fi chiar sincron
sau sincronizabil cu semnalul de ceas. Pentru simplitate vom nota acest semnal cu x, iar ieşirile
READY şi WAIT cu y1 şi respectiv y 2 .

CLK
x
Q 0 1
x
1 2,11 1,11
y1 2 3,00 -
3 4,01 -
y2
4 4,11 1,11
1 2 3 4 1

Fig. 4.43 Stările circuitului şi tabelul tranziţiilor

Dacă alocăm celor 4 stări codurile Q1Q2 : 1 = 00, 2 = 01, 3 = 11 şi 4 = 10, atunci obţinem
următoarele ecuaţii pentru logica combinaţională: D1 = Q2 + Q1 ⋅ x , D2 = Q1 ⋅ x , y1 = Q2 şi
y 2 = Q1 + Q2 . Desenaţi schema logică a circuitului.

O soluţie alternativă, agreată de multe ori în practică, este implementarea cu registru. Chiar
dacă ea introduce un bistabil în plus, se reduce numărul de porţi folosite. Funcţiile de ieşire READY
şi WAIT sunt generate pentru anumite secvenţe ale intrării WAIT REQUEST. Atât timp cât intrarea
este în 1 logic, READY = WAIT = 1, condiţie ce trebuie îndeplinită pentru oricare dintre stările
interne Q2 Q1Q0 = 000, 100, 110 sau 111 ale sistemului. La trecerea intrării în 0 logic, ieşirile
Q2 Q1Q0 ale bistabilelor trec succesiv prin stările 011, 001 şi una dintre stările deja menţionate
anterior. În starea Q2 Q1Q0 = 011 ieşirile circuitului sunt y1 y 2 = 00 , iar în starea Q2 Q1Q0 = 001
ieşirile sunt y1 y 2 = 01 . Se construieşte tabelul de adevăr pentru funcţiile de ieşire, având ca
variabile ieşirile bistabilelor, se minimizează folosind diagramele Veitch-Karnaugh şi se obţine
schema logică din figura 4.44. Pentru conectarea acestui circuit la o schemă cu microprocesor
trebuie să avem informaţii de catalog despre microprocesorul utilizat.

WAIT REQUEST READY


D Q D Q D Q
2 1 0
CLK Q CLK Q CLK Q
R R R WAIT

CLK
RESET

Fig. 4.44 Schema logică a circuitului implementat cu registru V


5 STRUCTURI PROGRAMABILE

Aplicaţiile din acest capitol îşi propun să prezinte funcţionarea circuitelor de memorie
ROM(Read Only Memory) şi RAM(Random Access Memory), a structurilor programabile
PLD(Programmable Logic Devices), structuri care conţin reţele programabile de porţi logice şi
bistabile, precum şi a structurilor FPGA(Field Programmable Gate Arrays), reţele complexe de
blocuri logice programabile şi resurse de interconectare a lor, care se configurează prin
programare pentru o anumită aplicaţie.

5.1 Consideraţii teoretice

5.1.1 Memoria ROM

Memoria ROM este un circuit combinaţional care stochează permanent date binare, iar
această informaţie poate fi numai citită. Această structură este de obicei definită ca un
convertor de cod compus dintr-un decodificator şi un codificator. Vectorul de intrare în
decodificator este interpretat ca o adresă, iar datele obţinute la ieşirea codificatorului
reprezintă informaţia memorată la adresa respectivă.
În figura 5.1 s-a luat un exemplu de memorie ROM care conţine 8 cuvinte de câte 4
biţi. O combinaţie binară care se aplică pe cele 3 intrări de adresă, A2 , A1 şi A0 , selectează
unul dintre cele 8 cuvinte, iar cei 4 biţi de date ai cuvântului selectat sunt disponibili la
ieşirile O0 , O1 , O2 şi O3 , cu condiţia ca intrarea OE (Output Enable) să fie activată (în
exemplul nostru activarea se face pe 0 logic). Dacă OE = 1 ieşirile memoriei sunt în
starea de înaltă impedanţă (high Z). Tabelul de adevăr din figură este numai un exemplu
care arată o posibilitate de implementare a 4 funcţii binare de câte 3 variabile.
Există mai multe tipuri constructive de memorie ROM. Memoriile ROM sunt de
obicei considerate cele care sunt încărcate cu date în procesul de fabricaţie al circuitului
integrat, deci care nu sunt programabile de către utilizator. Utilizatorul poate introduce
datele lui o singură dată într-o memorie PROM(Programmable ROM), sau de mai multe
.
80 5 STRUCTURI PROGRAMABILE

ROM A2 A1 A 0 OE O0 O1 O2 O3
O0 0 0 0 0 1 1 1 0
A2 0 0 1 0 1 1 0 1
O1 0 1 0 0 1 0 1 1
A1 0 1 1 0 0 1 1 1
O2 1 0 0 0 0 0 0 1
A0 1 0 1 0 0 0 1 0
OE O3 1 1 0 0 0 1 0 0
1 1 1 0 1 0 0 0
x x x 1 high Z high Z high Z high Z

Fig. 5.1 Memorie ROM de 8 cuvinte de 4 biţi şi harta memoriei

ori, în memoriile EPROM(Erasable PROM) sau EEPROM (Electrically EPROM), diferenţa


fiind dată de modalitatea de ştergere a datelor din memorie. Memoriile EPROM conţin
tranzistoare MOS care conţin o poartă suplimentară, izolată de restul circuitului. Această
poartă permite stocarea pe termen lung a sarcinii electrice necesare pentru memorarea
bitului respectiv de informaţie. Ştergerea se face prin expunere la radiaţii ultraviolete. La
memoriile EEPROM izolaţia porţii este mult mai subţire şi sarcina electrică în exces poate fi
eliminată prin aplicarea unei tensiuni de polaritate inversă pe poarta tranzistorului care nu
este flotantă, deci ştergerea se face pe cale electrică.
Circuitul integrat 82S147, care este o memorie PROM în tehnologie Schottky
TTL, a fost utilizat deja în aplicaţiile prezentate în capitolul anterior. Rolul lui era de a
implementa logica combinaţională a unui automat cu stări finite (vezi punctul 4.2.4 şi
problema 4.3.7).

5.1.2 Memoria RAM

Memoria RAM este un circuit care stochează biţi de informaţie într-o matrice de
memorie, la fel ca memoria ROM. Diferenţa constă în faptul că informaţia utilă memorată în
RAM trebuie mai întâi să fie “scrisă” acolo, înainte de a fi citită.
DIN3 DIN2 DIN1 DIN0

A2
MATRICE DE MEMORIE
A1 DCD
8 4
A0
WR
LATCH
DIN D Q
WE DOUT
SEL
CL
CS WR
un bit de memorie
OE
DOUT3 DOUT2 DOUT1 DOUT0

Fig. 5.2 Structura unei memorii SRAM de 8 cuvinte de 4 biţi


5.1 Consideraţii teoretice 81
Există două tipuri constructive de memorie RAM: RAM static sau SRAM, în care
biţii de date, odată ce au fost înscrişi, sunt memoraţi atât timp cât circuitul integrat este
alimentat cu tensiune, şi RAM dinamic sau DRAM, în care datele memorate trebuie să fie
mereu reîmprospătate prin citirea şi apoi rescrierea lor periodică în locaţiile respective de
memorie, în caz contrar ele pierzându-se definitiv.
Structura unei memorii SRAM este asemănătoare cu cea a unei memorii ROM.
Apare în plus semnalul WE (Write Enable) care, odată ce este activat pe 0 logic, memorează
datele de pe intrările de date la adresa indicată de intrările de adresă. Se poate vedea în
figura 5.2 că celula de memorie de un bit conţine un latch de tip D, iar memorarea datelor se
face pe palierul de 1 logic al ceasului, adică atunci când sunt activate semnalele WR şi
SEL , acesta din urmă fiind generat de una din ieşirile decodificatorului liniilor de adresă.
Activarea semnalului WR este o consecinţă a activării semnalelor de intrare WE şi CS .
Circuitul integrat MMN 2114, care este o memorie SRAM în tehnologie NMOS,
a fost utilizat deja în aplicaţiile prezentate în capitolul anterior. Rolul lui era de a emula
o memorie ROM care implementa logica combinaţională a unui automat cu stări finite
(vezi punctul 4.2.4).

5.1.3 Structuri PLD

Structurile PLD conţin porţi logice şi, în unele cazuri, circuite bistabile, aranjate în
aşa fel încât interconectările dintre componente să poată fi modificate pentru a implementa
diverse funcţii binare.
Structurile PLD combinaţionale conţin numai porţi logice cu conexiuni
programabile, care permit implementarea comodă a funcţiilor binare reprezentate în formă
disjunctivă. Circuitele reprezentative din această categorie sunt structurile PLA
(Programmable Logic Arrays) şi structurile PAL (Programmable Array Logic). Acestea
din urmă sunt marcă înregistrată a firmei AMD.

Un exemplu de circuit PLD secvenţial de tip registru este circuitul integrat


GAL16V8, marcă înregistrată a firmei Lattice Semiconductor, circuit care conţine 8 intrări,
8 intrări/ieşiri cu 3 stări şi 8 macrocelule programabile, numite aici OLMC (Output Logic
Macro Cell). Schema completă a circuitului este dată în figura 5.3. Terminaţia QS din codul
circuitului integrat provine de la “Quiet Series” şi are în vedere modificarea traseului intern
de masă în scopul reducerii zgomotelor. Matricea de porţi ŞI conţine 2048 de conexiuni
programabile, iar porţile SAU au conexiuni fixe (vezi figura 5.4). Matricea de conexiuni
programabile permite conectarea oricărei intrări numerice, în formă directă sau negată, la
orice termen produs. Fiecare macrocelulă programabilă mai conţine câte 10 conexiuni
programabile, care stabilesc modul de lucru. În sfârşit, un număr de 64 de conexiuni
programabile, grupate în 8 octeţi, stabilesc o semnătură digitală a utilizatorului, adică cel
care programează circuitul integrat, pentru secretizarea hărţii de conexiuni şi evitarea
multiplicării neautorizate a unui produs care conţine astfel de circuite.
Schema internă a unei macrocelule programabile este dată în figura 5.4. Ieşirea porţii
SAU poate fi complementată sau nu cu poarta SAU-EXCLUSIV şi aplicată direct la intrarea
porţii cu 3 stări de la ieşire printr-un canal de multiplexor, sau poate fi aplicată la intrarea
unui bistabil D, a cărui ieşire se poate trimite la exterior, sau returna spre matricea de
.
82 5 STRUCTURI PROGRAMABILE

Fig. 5.3 Structura circuitului GAL 16V8

comutatoare programabile de la intrare. Fluxul datelor prin circuit este stabilit cu ajutorul
unor multiplexoare cu intrări de selecţie programabile. Există legături între macrocelule, pe
de o parte, pentru transfer de date, iar pe de altă parte, comutatorul AC0 se conectează fie la
0 logic, fie la 1 logic pentru toate macrocelulele din structură. Comutatoarele AC1, XOR şi
PTD se programează independent, pentru fiecare celulă în parte, după necesităţi.
Proiectantul nu este obligat să cunoască structura internă a circuitului integrat, decât dacă
stabileşte manual harta de conexiuni, lucru foarte plictisitor şi cu mare şansă de eroare.
Există programe care realizează automat harta de conexiuni, pornind de la ecuaţiile furnizate
de proiectant şi folosind un model software al circuitului PLD folosit.
5.1 Consideraţii teoretice 83

Fig. 5.4 Structura unei macrocelule programabile din circuitul GAL 16V8

5.1.4 Structuri FPGA

Arhitectura unui circuit FPGA este prezentată în figura 5.5. Există trei elemente
constructive de bază care se repetă ori de câte ori este necesar în structură: blocul logic,
blocul de intrare-ieşire, şi resursele de interconectare ale blocurilor, de fapt matrici de
comutatoare programabile, numite şi switchbox-uri. Blocul logic poate conţine sute sau mii
de porţi logice şi poate fi configurat diferit în funcţie de aplicaţie. Realizarea
interconexiunilor permite o utilizare superioară a resurselor logice faţă de structurile PLD.
Resurse de interconectare

Bloc
logic

Bloc de
intrare
ieşire

Switch Box

Fig. 5.5 Arhitectura FPGA


84 5 STRUCTURI PROGRAMABILE

Fig. 5.6 Schema simplificată a blocului logic la circuitul XC4000

Structura blocului logic al circuitului XC4000 produs de firma Xilinx este dată în
figura 5.6. Modulele F şi G sunt generatoare de funcţii binare programabile cu câte 4 intrări,
iar împreună cu modulul H, care este tot un generator de funcţii binare, permit
implementarea unor funcţii cu 9 variabile independente. Blocul logic mai conţine o logică
combinaţională de selecţie şi 2 bistabile de tip D pentru stocarea rezultatelor date de
generatoarele de funcţii. Ieşirile generatoarelor de funcţii se pot utiliza independent de
ieşirile elementelor de stocare de tip registru.
Fiecare bloc de intrare/ieşire controlează un singur pin al circuitului integrat şi se
poate configura ca port de intrare, port de ieşire sau port bidirecţional. Semnalele de intrare
se pot aplica direct sau prin bistabile de intrare. Semnalele de ieşire, care se pot inversa în
interiorul blocului, se pot conecta direct la ieşirea pinului sau la bistabilul de ieşire. Matricea
de cuplare programabilă, sau switchbox-ul, este alcătuită din conexiuni programabile care
permit realizarea oricărei configuraţii posibile de conexiuni.

5.2 Demonstraţii practice


Consideraţiile asupra alimentării panoului logic, formulate în primul capitol, rămân
valabile şi aici. Panourile logice folosite în aplicaţii, fie au surse proprii de alimentare
(programatorul de memorii EPROM sau sistemul de dezvoltare cu FPGA), fie se
alimentează cu o tensiune nominală de 5Vcc (panoul logic cu memorie RAM sau panoul cu
GAL), în cazul în care acestea din urmă nu sunt şi ele prevăzute cu surse proprii de
alimentare.
5.2 Demonstraţii practice 85
5.2.1 Se conectează programatorul de memorii EPROM la portul paralel al unui
calculator. Se porneşte calculatorul şi apoi se alimentează şi programatorul de la sursa
proprie de alimentare, care furnizează toate tensiunile necesare pentru citirea şi
programarea unei memorii EPROM de tipul 2716 sau 2732. Memoria 2716 are
2Kcuvinte de câte 8 biţi, iar memoria 2732 are 4Kcuvinte de câte 8 biţi.
Se lansează aplicaţia “Programator EPROM”, care deschide fereastra
reprezentată în partea stângă a figurii 5.7. Din lista de opţiuni se selectează tipul
memoriei EPROM, din butoanele radio operaţia dorită, iar offset-ul reprezintă adresa de
la care se începe citirea sau programarea memoriei. Operaţia de elaborare a fişierului
sursă deschide o a doua fereastră, dată în partea dreaptă a figurii 5.7, prin care se
introduce într-un fişier valoarea conţinută de fiecare adresă, de la offset +1 şi până la
offset + număr de locaţii. În exemplul dat, prin apăsarea butonului “Save”, se introduce
numărul binar 01101001 la adresa 5, offset-ul fiind 0. Fişierul construit în acest mod va
fi folosit la operaţia de programare a memoriei.
Introduceţi în soclu o memorie EPROM de tipul 2716, după ce aţi oprit mai întâi
tensiunea de alimentare a programatorului, şi apoi citiţi conţinutul ei. Toate locaţiile
sunt programate? Dacă nu, atunci introduceţi în locaţiile imediat următoare offset-ului
10 cuvinte identice alese de dumneavoastră. Citiţi din nou memoria pentru a verifica că
datele au fost înscrise corect. Opriţi tensiunea de alimentare a programatorului şi apoi
alimentaţi din nou programatorul. Verificaţi dacă datele înscrise s-au păstrat. Consultaţi
foaia de catalog şi observaţi cronogramele ciclurilor de citire şi programare.
Repetaţi operaţiile de mai sus pentru o memorie EPROM de tipul 2732. Nu am
precizat exact codurile memoriilor EPROM, pentru că ele depind de producător: I 2716,
dacă circuitul este fabricat de INTEL, MMN 2716 dacă este fabricat de
“Microelectronica” Bucureşti, sau K573PΦ2 (echivalent cu 2716) dacă este fabricat în
Rusia. Dacă aveţi la dispoziţie o lampă cu ultraviolete, încercaţi să ştergeţi memoriile
EPROM şi verificaţi dacă acest lucru s-a realizat (toţi biţii sunt poziţionaţi pe 1 logic).

Fig. 5.7 Două ferestre ale aplicaţiei “Programator EPROM” 

5.2.2 Se studiază memoria RAM static de tipul 2114, care are o capacitate de 1K
de câte 4 biţi. Panoul logic folosit deja la automatele cu memorie RAM are un circuit
integrat MMN 2114. Se reia scrierea datelor în memorie, aşa cum se arată la pagina 68,
86 5 STRUCTURI PROGRAMABILE
şi se justifică operaţiile care se fac. Se citeşte memoria, măsurând de această dată
ieşirile memoriei şi se verifică dacă datele introduse au fost memorate corect. Se
întrerupe tensiunea de alimentare câteva secunde şi, după revenirea ei, se citesc din nou
datele de la adresele respective. Ce constataţi? Justificaţi răspunsul şi indicaţi o soluţie
pentru păstrarea datelor chiar şi după decuplarea temporară a tensiunii de alimentare.
Se repetă operaţiile de mai sus pentru panoul logic care conţine o memorie RAM
static de tipul 2102, cu o capacitate de 1K de câte 1 bit şi linii separate pentru intrarea şi
ieşirea bitului de date. O schemă simplificată a panoului logic este dată în figura 5.8. De
această dată adresarea locaţiilor de memorie se face cu ajutorul a două numărătoare de
câte 5 biţi (MMC 4024), care pot fi uşor poziţionate în orice stare dorită cu ajutorul
unui ceas manual, realizat cu comutator mecanic şi latch. Astfel se poate fixa orice
adresă din spaţiul de 1024 adrese disponibile. Datele se introduc pe linia de intrare
printr-un comutator cu două poziţii, iar linia de ieşire arată conţinutul memoriei prin
starea unui LED. Semnalul R W este generat tot cu un latch.
+Vcc +V cc
Q6 RESET Q6 RESET
LATCH CLK 4024 4024 CLK LATCH
Q5 Q4 Q3 Q2 Q1 Q5 Q4 Q3 Q2 Q1
+V cc
+Vcc
A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
D IN
LATCH R/W 2102
D OUT

Fig. 5.8 Schema simplificată a panoului logic cu memorie RAM 2102 

5.2.3 Se introduce în soclul programatorului de circuite GAL un circuit


GAL16V8 şi se conectează programatorul la portul paralel al unui calculator. Se
porneşte calculatorul şi apoi se alimentează şi programatorul de la sursa proprie de
alimentare. Se lansează programul freeware “galprog2”, care permite prin intermediul
unei interfeţe grafice selecţia portului paralel, a tipului de GAL, încărcarea datelor din
fişier şi salvarea lor în fişierul JEDEC, care conţine harta conexiunilor programabile,
.

Fig. 5.9 Două interfeţe pentru programarea circuitelor GAL 16V8 şi GAL20V8
88 5 STRUCTURI PROGRAMABILE

5.1 Probleme rezolvate


5.3.1 Să se implementeze cu memorie ROM un generator al funcţiei sinus, ştiind că
argumentul funcţiei variază între 0 şi π/2 cu paşi de π/512. Se cere rezultatul cu 4 zecimale
exacte în cod BCD.
Rezolvare:
Patru cifre zecimale în cod BCD se reprezintă pe 16 biţi, deci cuvintele memoriei sunt
structurate pe 16 biţi. Numărul de cuvinte de memorie N este dat de raportul dintre interval şi
π 512
numărul de paşi, deci: N = ⋅ = 256 . Deci memoria necesară are 256 cuvinte a câte 16 biţi.
2 π
Dacă folosim, de exemplu, cipuri de 256 cuvinte a câte 8 biţi, atunci schema logică ar fi cea
din figura 5.11.
A 7 ... A 0
8 8

A 7 ... A 0 A 7 ... A 0
ROM 1 OE ROM 2 OE
D 7 ... D 0 D 7 ... D 0

D 15 ... D 8 D 7 ... D 0

Fig. 5.11 Extinderea numărului de biţi pe cuvânt


Un fragment din harta memoriei pentru întregul sistem (cele două cipuri împreună) este
prezentat în figura 5.12.
A7 A6 A5 A4 A3 A2 A1 A 0 D 15 D 14 D 13 D 12 D 11 D 10 D9 D 8 D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...... .........
1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1
1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1

Fig. 5.12 Harta memoriei pentru generatorul funcţiei sinus 

5.3.2 Folosind o memorie EPROM să se implementeze un circuit care realizează


înmulţirea M × N = P , unde M, N şi P sunt exprimate în cod BCD, iar M şi N sunt cuprinse
între 0 şi 9.
Rezolvare:
Operanzii M şi N se reprezintă pe câte 4 biţi, deci memoria trebuie să aibă 8 biţi de
adresă. Valoarea maximă a produsului P este 9 × 9 = 81 , număr care se reprezintă în binar pe 7
biţi, deoarece 2 6 < 81 < 2 7 . În cod BCD numărul P se reprezintă însă pe 8 biţi, fiind format din
două cifre BCD. El se obţine la ieşirile de date ale memoriei. Deci, memoria are 256 cuvinte de
câte 8 biţi fiecare. Figura 5.13 reprezintă schema logică şi un fragment din harta memoriei.
5.3 Probleme rezolvate 89
EPROM A7 A6 A5 A4 A3 A2 A1 A0 D7 D6 D5 D4 D3 D2 D1 D0
A7 D7
A6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
M D6 ...... ......
A5 D5
A4 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0
D4
D3 P 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0
A3 ...... ......
D2
A2 0 1 1 1 0 1 0 1 0 0 1 1 0 1 0 1
N A1 D1
...... ......
A0 D0
1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1

Fig. 5.13 Circuit de înmulţire cu memorie EPROM şi un fragment din harta memoriei 

5.3.3 Să se implementeze cu memorie ROM şi apoi cu o structură PLA următorul set


de funcţii binare:
f 1 = P1 + P3 + P4 + P8 + P12 + P14 + P15
f 2 = P0 + P1 + P5 + P8 + P12
f 3 = P2 + P4 + P5 + P8 + P13 + P15
Rezolvare:
Implementarea funcţiilor binare cu memorii ROM presupune stabilirea capacităţii
memoriei necesare, alegerea tipului potrivit de memorie din oferta disponibilă în catalog şi
stabilirea hărţii memoriei. De obicei se urmăreşte utilizarea unui număr minim de circuite
integrate, chiar dacă memoria ROM rămâne parţial nefolosită.
În exemplul considerat, termenul canonic de rang maxim este P15 , deci sunt necesare 4
intrări de adrese. Pentru cele 3 funcţii binare sunt necesare 3 ieşiri de date. Folosim o memorie
de 16 cuvinte de câte 4 biţi. Soluţia cu memorie ROM este prezentată în figura 5.14.
Implementarea cu o structură PLA este prezentată în figura 5.15.

A3 A2 A1A0 D3 D2 D1 D0 A3 A2 A1A0 D3 D2 D1 D0
ROM
0 0 0 0 0 1 0 X 1 0 0 0 1 1 1 X
A A3 D3 f1 0 0 0 1 1 1 0 X 1 0 0 1 0 0 0 X
B A2 D2 f2 0 0 1 0 0 0 1 X 1 0 1 0 0 0 0 X
0 0 1 1 1 0 0 X 1 0 1 1 0 0 0 X
C A1 D1 f3 0 1 0 0 1 0 1 X 1 1 0 0 1 1 0 X
D0 0 1 0 1 0 1 1 X 1 1 0 1 0 0 1 X
D A0
0 1 1 0 0 0 0 X 1 1 1 0 1 0 0 X
0 1 1 1 0 0 0 X 1 1 1 1 1 0 1 X

Fig. 5.14 Implementarea sistemului de 3 funcţii binare cu memorie ROM

A
B
C
D

f1
f2

f3

Fig. 5.15 Implementarea sistemului de 3 funcţii binare cu PLA 


90 5 STRUCTURI PROGRAMABILE
5.3.4 Să se implementeze o memorie EPROM de 2 K × 32 , folosind o memorie
EPROM de 64 K × 1 . Se pot utiliza circuite auxiliare SSI/MSI şi se presupune că
dispunem de un semnal de ceas cu o perioadă ceva mai lungă decât timpul de acces la
memoria de 64 K × 1 . Care este timpul de acces al memoriei de 2 K × 32 ?
Rezolvare:
Capacitatea totală a memoriei rămâne neschimbată, se modifică numai organizarea ei. O
soluţie este prezentată în figura 5.16, unde spaţiul adreselor este împărţit în două, cei 5 biţi mai
puţin semnificativi fiind generaţi intern, cu ajutorul unui numărător în inel comandat de
semnalul de ceas. La fiecare perioadă de ceas, un alt bit este memorat în registru, astfel încât,
după 32 perioade de ceas dispunem de un cuvânt de 32 biţi la ieşirea registrului. Timpul de
acces al memoriei este de 32 de ori mai mare decât perioada ceasului. Presupunem că timpul
de acces la memoria ROM este suficient de mare pentru a evita orice probleme legate de
metastabilitate.
ROM 64K 1
ADRESE 11
A 15 ... A 5

OUT Registru serie de 32 biţi CLK


5 32
CLK Numărător A 4 ... A 0
DATE IEŞIRE

Fig. 5.16 Schema simplificată a unei memorii de 2K × 32 

5.3.5 Să se proiecteze un numărător binar reversibil pentru controlerul unui lift


într-o clădire cu 20 etaje, folosind un singur circuit PAL16R6. Numărătorul trebuie să
aibă o intrare care permite numărarea şi o intrare care stabileşte sensul de numărare. La
numărarea înapoi trebuie să se blocheze în starea 1, iar la numărarea înainte trebuie să
se blocheze în starea 20. În orice sens de numărare se sare peste starea 13. Reprezentaţi
diagrama stărilor şi ecuaţiile scrise în ABEL.
Rezolvare:
Circuitul integrat PAL16R6 are 8 intrări, 2 intrări/ieşiri programabile şi 6 bistabile de
tip D având ieşirile cu 3 stări. Matricea de 64× 32 comutatoare programabile permite
implementarea oricărei funcţii binare. Pentru cele 20 stări sunt necesare 5 bistabile. Dacă
notăm cu E intrarea care permite numărarea (activă pe 1 logic) şi cu S intrarea de sens (S = 1
crescător, iar S = 0 descrescător), atunci diagrama stărilor este cea din figura 5.17. Detalii
despre limbajul ABEL sunt date în curs. O implementare completă de automat finit cu
PAL16R4 este dată în capitolul următor.

0X 0X 0X 0X 0X 0X 0X
11 11 11 11 11 11
ES
Q 10 1 2 3 12 14 19 20 11
10 10 10 10 10 10
Fig. 5.17 Diagrama stărilor pentru numărătorul din problema 5.3.5 V
6 ANALIZA ŞI
SINTEZA AUTOMATĂ

Aplicaţiile din acest capitol îşi propun să prezinte posibilităţi de analiză şi sinteză a
sistemelor numerice folosind programe de calculator concepute în acest scop. Un standard
pentru analiza circuitelor prin simulare pe calculator, fie ele analogice sau numerice, este
programul SPICE(Simulation Program with Integrated Circuit Emphasis), elaborat la
Universitatea Berkeley din California şi perfecţionat pe parcursul câtorva decenii. Limbajul
VHDL(Very High Speed Integrated Circuit Hardware Description Language), folosit astăzi pe
scară largă de proiectanţii de sisteme numerice, este destinat sintezei structurilor numerice de
mare complexitate, fiind standardizat de IEEE în 1993.

6.1 Consideraţii teoretice

6.1.1 Analiza circuitelor prin simulare PSPICE

Pachetul de programe SPICE nu a fost iniţial conceput pentru calculatoare personale.


Odată cu apariţia PC-urilor, au apărut şi programe de analiză a circuitelor pe PC, similare cu
programul SPICE, cunoscute de obicei sub numele PSPICE (PC SPICE).
Programul PSPICE folosit este Design Center 5.2, un mediu integrat sub Windows
3.X, produs de firma americană MicroSim. Acest mediu conţine subprograme de editare,
analiză şi prezentare a rezultatelor obţinute. Cea mai importantă parte a programului de
simulare o reprezintă subprogramul de analiză, care execută analizele de circuit specificate
în fişierul editat, ieşirile din acest subprogram furnizând date pentru a fi utilizate ulterior de
subprogramul de prezentare a rezultatelor, care materializează rezultatele sub formă de
grafice şi texte. Subprogramul de analiză conţine procedeele numerice ale reprezentării
matematice a circuitului. Pentru a trece de la circuitul propriu-zis la un sistem matematic de
ecuaţii, elementele de circuit (rezistoare, condensatoare, surse, diode, tranzistoare, porţi
logice, bistabile, registre etc.) sunt reprezentate prin modele matematice. Sistemul de ecuaţii
care descrie întregul circuit este determinat de ecuaţiile modelului fiecărui element şi
92 6 ANALIZA ŞI SINTEZA AUTOMATĂ
relaţiile topologice care sunt date de interconectarea elementelor. Relaţiile topologice au la
bază legile lui Kirchhoff iar comportarea generală a circuitului este descrisă printr-un sistem
de ecuaţii diferenţiale, ale cărui soluţii se obţin prin analiza circuitului, pentru diferite cazuri
particulare de abordare: analiza de curent continuu (.DC), analiza de curent alternativ
(.AC), analiza regimurilor tranzitorii (.TRAN) şi altele. Aceste analize se realizează pe
baza unor metode numerice, care presupun formularea ecuaţiilor, rezolvarea ecuaţiilor
liniare, a ecuaţiilor neliniare şi integrarea numerică.
Pe măsură ce creşte experienţa lucrului cu PSPICE se pun tot mai clar în evidenţă
avantajele simulării. În afară de faptul că simularea este mult mai ieftină decât realizarea
experimentală a circuitului, ea permite efectuarea unor analize imposibil de realizat pe
model experimental: cum am putea măsura de exemplu tensiunea într-un nod din interiorul
unui circuit integrat sau comportarea unui tranzistor la temperatura de 120 grade Celsius?
Deşi primele variante ale programelor PSPICE au fost concepute în exclusivitate
pentru analiza circuitelor analogice, Design Center 5.2 şi variantele ulterioare permit şi
analiza circuitelor numerice. Opţiunea DIGITAL SIMULATION permite modelarea
comportării unui număr mare de dispozitive numerice (porţi, bistabile, registre,
numărătoare, dispozitive logice programabile etc.), numite primitive. Aceste primitive sunt
folosite de o bibliotecă numerică DIGITAL.LIB pentru a modela un număr mare de
componente care pot fi introduse direct în circuit printr-un apel de subcircuit.
PSPICE recunoaşte trei tipuri de noduri: analogice, numerice şi de interfaţă. Dacă la
un nod sunt conectate numai dispozitive analogice, atunci el este analogic. Dacă sunt
conectate numai dispozitive digitale, atunci el este digital. Dacă la nod sunt conectate atât
dispozitive analogice cât şi digitale, atunci avem nod de interfaţă. PSPICE separă automat
nodurile de interfaţă în analogice şi numerice, inserând una sau mai multe circuite de
interfaţă analog/numerice.
Nivelele logice utilizate în PSPICE nu trebuie să fie neapărat tensiuni. Ele sunt:
0 LOW
1 HIGH
R RISE ( crescător, de la 0 la 1)
F FALL ( descrescător, de la 1 la 0)
X necunoscut
În situaţia conectării mai multor ieşiri logice împreună, pentru determinarea nivelului
logic corect al nodului, s-a asociat fiecărei ieşiri câte o intensitate, a cărei valoare este
determinată în raport cu intensităţile celorlalte ieşiri. Nodurile conduse de ieşiri cu aceeaşi
intensitate, dar de nivele diferite, vor avea nivelul logic X. Pspice are 64 de nivele de
intensitate, cea mai slabă fiind Z (înaltă impedanţă), iar cea mai puternică, intensitatea de
forţare (scurtcircuitul). Aceste nivele se fixează prin parametrii DIGDRVZ şi DIGDRVF ai
comenzii OPTIONS.
Programul de simulare numerică PSPICE defineşte trei noduri numerice globale,
având următoarele nume şi valori:
$D_HI 1
$D_LO 0
$D_X X
Ele sunt folosite pentru a menţine un pin al unui dispozitiv sau subcircuit, la nivelul logic
dorit, pe tot parcursul simulării. La aceste noduri nu se conectează dispozitive analogice. În
simularea numerică, tot nod global este considerat şi nodul analogic de masă (potenţial nul
sau nod logic 0).
6.1 Consideraţii teoretice 93
Pentru a furniza semnalele de intrare necesare simulării funcţionării unui circuit
numeric, programul PSPICE pune la dispoziţia utilizatorului două tipuri de dispozitive.
Primul dispozitiv este un generator de impuls, care permite obţinerea unei game largi de
semnale numerice, în mod asemănător cu cele generate la simularea circuitelor analogice.
Al doilea dispozitiv este un fişier de impulsuri, care permite obţinerea unui număr oricât de
mare de forme de undă dintr-un fişier extern. În aplicaţiile noastre vom utiliza un fişier de
impulsuri pentru generarea semnalelor de intrare.
Dacă circuitul supus analizei conţine atât dispozitive analogice cât şi numerice, cum
este cazul oscilatorului din figura 6.1, se face o simulare mixtă analog/numerică. Figura 6.2
arată formele de undă rezultate în urma simulării. În partea de sus sunt reprezentate formele
de undă numerice, iar în cea de jos tensiunile în diferite noduri importante ale circuitului.
Semnalul RESET este aplicat prin U4 la intrarea CLEAR a bistabilului JK, iar prin
inversorul cu colector în gol U3 la nodul 1 al oscilatorului, pentru stabilirea condiţiilor
iniţiale de simulare.

Fig. 6.1 Schemă electrică editată în Design Center 5.2

Fig. 6.2 Formele de undă rezultate în urma simulării


94 6 ANALIZA ŞI SINTEZA AUTOMATĂ

URESET STIM(1,1) $G_DPWR $G_DGND


+ RESET
+ IO_STM
+ TIMESTEP=10n
+ 0c 1
+ 10c 0

Fig. 6.3 Fişierul text INPUT.STM

Figura 6.3 prezintă fişierul text pentru generarea semnalului RESET. Numele
fişierului este INPUT.STM şi este introdus în schema electrică prin directiva INCLUDE
(vezi figura 6.1). Circuitul realizat fizic funcţionează şi fără semnal de reset, dar simulatorul
are nevoie de stări iniţiale, înainte de a începe analiza. În lipsa semnalului de reset, se
porneşte de la o stare logică necunoscută şi analiza nu se poate face.
Fişierul text INPUT.STM se editează cu un simplu editor de text, de exemplu
NOTEPAD. Formatul generatorului de impuls pentru un semnal este următorul:
U<nume> STIM(<lăţime>,<format>)
+ <nod alimentare numerică> <nod masă numerică>
+ <nod>
+ <nume (Model de I/E)>
+ [IO_LEVEL = <valoare (selectare subcircuit interfaţă)>]
+ [TIMESTEP = <pas>]
+ <(comandă)>
unde <lăţime> specifică numărul semnalelor de ieşire furnizate de generator, iar <format>
specifică formatul valorilor utilizate în definirea impulsului. <nume (Model de I/E)> este de
cele mai multe ori modelul IO_STM. IO_LEVEL este un parametru opţional prin care se
pot selecta subcircuitele interfaţă numeric analogice; el a fost fixat înainte de analiză la
valoarea recomandată 3 (prin comanda ANALYSIS, urmată de SETUP, şi OPTIONS din
meniul principal, s-a fixat parametrul DIGIOLVL = 3). TIMESTEP reprezintă timpul pe un
ciclu de tact sau un pas, iar <comandă> este o descriere a semnalului prin valorile logice ale
acestuia la valori ale timpului care sunt multipli de TIMESTEP.
După desenarea schemei electrice a circuitului, se selectează ANALYSIS din meniul
principal şi apoi ANNOTATE (numai dacă se doreşte o renumerotare a componentelor din
circuit) şi ELECTRICAL RULE CHECK. Dacă există erori în schemă, programul anunţă
acest lucru înainte de a merge mai departe. Dacă nu există erori, se lansează CREATE
NETLIST şi pe urmă se alege tipul de analiză dorit. Acest lucru se face prin comanda
ANALYSIS, urmată de SETUP şi TRANSIENT. Pentru analiza tranzitorie s-a fixat o
durată totală de 10 µsec, cu un pas de 0,1 µsec. Nu uitaţi selectarea opţiunii ENABLED
înainte de a părăsi fereastra de setare a tipului de analiză.
Urmează rularea programului de analiză, cu comanda RUN PSPICE. La terminarea
rulării, care poate dura de la fracţiuni de secundă la zeci sau sute de secunde, funcţie de
complexitatea circuitului, tipul de analiză, numărul de paşi ales şi viteza sistemului de
calcul, apare ecranul mediului PROBE cu un alt meniu specific. Comanda TRACE, urmată
de ADD afişează o fereastră cu toate semnalele din circuit. Se selectează semnalele pe care
vrem să le vizualizăm şi obţinem formele de undă în timp, ca cele din figura 6.2.
6.1 Consideraţii teoretice 95
Ne propunem în continuare să proiectăm o interfaţă calculator-microcalculator cu 4
intrări şi cu 4 ieşiri, sincronă cu ceasul microcalculatorului. Semnalele sunt reprezentate în
figura 6.4, iar organigrama de funcţionare a circuitului, în figura 6.5. Vom verifica dacă
sinteza este corectă, făcând analiza circuitului rezultat prin simulare PSPICE.

START ATTENTION

INACTIVE READY
Micro -
Calculator Interfaţă
T/R CYCLE calculator

F/E CYEND

CLK

Fig. 6.4 Semnalele interfeţei calculator-microcalculator


.

Q2 Q1 Q0
A 000
001
0 1
START B

ATTENTION

010
1 0
C READY

INACTIVE

011
D

0 1 100
T/R E

CYCLE

110
F 1 CYEND
0

F/E

Fig. 6.5 Organigrama interfeţei

Cele 6 stări ale automatului finit sunt codificate binar minimal folosind 3 biţi.
Semnalele de ieşire sunt generate pe stare, iar codurile stărilor succesoare stărilor în care
sunt testate intrările asincrone START şi T/R sunt adiacente. Vom implementa circuitul
într-o primă variantă folosind 3 bistabile de tip JK şi porţi logice, iar pe urmă vom face o
implementare cu un singur circuit PLD de tip PAL. Ne ocupăm în această secţiune numai de
sinteza schemelor logice, iar analiza schemelor electrice, prin simulare PSPICE, va fi făcută
în secţiunea 6.2.
96 6 ANALIZA ŞI SINTEZA AUTOMATĂ
Start Ready T/R Cyend Q2 Q1 Q0 Q2+ Q1+ Q0+ Atten Inac Cycle F/E
tion tive
0 x x x 0 0 0 0 0 0 0 0 0 0
1 x x x 0 0 0 0 0 1 0 0 0 0
x 0 x x 0 0 1 0 0 1 1 0 0 0
x 1 x x 0 0 1 0 1 0 1 0 0 0
x x x x 0 1 0 0 1 1 0 1 0 0
x x 0 x 0 1 1 0 0 0 0 0 0 0
x x 1 x 0 1 1 1 0 0 0 0 0 0
x x x 0 1 0 0 1 0 0 0 0 1 0
x x x 1 1 0 0 1 1 0 0 0 1 0
x x x x 1 1 0 0 1 1 0 0 0 1
Fig. 6.6 Tabelul tranziţiilor şi al ieşirilor

Tabelul tranziţiilor şi al ieşirilor este dat în figura 6.6. Dacă construim în


continuare coloanele funcţiilor de excitaţie pentru implementarea cu bistabile JK şi
minimizăm aceste funcţii folosind diagrame Veitch-Karnaugh, obţinem următoarele
ecuaţii:
J 2 = T / R ⋅ Q1 ⋅ Q 2 şi K2 = Q1

J 1 = READY ⋅ Q 0 + CYEND ⋅ Q 2 şi K1 = Q 0

J 0 = Q2 ⋅ START + Q1 şi K 0 = READY + Q1

READY

T/R J Q J Q J Q
2 1 0

K Q K Q K Q
CLK CLK CLK
CYEND
START
CLK

Fig. 6.7 Schema logică a interfeţei implementate cu bistabile JK şi porţi

Q
2 22
Q1 21 DCD
0
Q0 2 0 1 2 3 4 5 6 7

CYCLE
INACTIVE
ATTENTION F/E

Fig. 6.8 O soluţie posibilă pentru sinteza ieşirilor


6.1 Consideraţii teoretice 97
Folosind ecuaţiile de mai sus rezultă schema logică a circuitului, reprezentată în
figura 6.7, iar schema din figura 6.8 oferă o soluţie de implementare cu decodificator a
funcţiilor de ieşire, fără a mai fi necesară minimizarea lor.
Pentru a face sinteza cu PLD a circuitului propus mai sus, trebuie să alegem o structură
de circuit din catalog. Circuitul PAL16R4 de la AMD are foaia de catalog dată în figura 6.18.
Observăm că ieşirile bistabilelor sunt trecute prin inversoare cu 3 stări înainte de a ajunge la
pinii de ieşire ai circuitului. Atribuim ieşirea O6 lui Q2, O5 lui Q1 şi O4 lui Q0. Aria
combinaţională implementează funcţiile D2, D1 şi D0 cu porţi ŞI-SAU şi conţine 2048 de
fuzibile ce pot fi arse o singură dată. Ecuaţiile lor, deduse cu ajutorul tabelului din figura 6.6,
sunt:

Q2+ = Q2 ⋅ Q1 + Q1 ⋅ Q0 + T/ R ⋅ Q1

Q1+ = Q2 ⋅ Q1 ⋅ Q0 + Q1 ⋅ Q0 + READY ⋅ Q 0 + CYEND ⋅ Q 2 ⋅ Q1

Q0+ = Q2 ⋅ Q1 + Q1 ⋅ Q0 + READY ⋅ Q0 + Q1 ⋅ Q0 ⋅ START

Celelalte 4 semnale de ieşire ATTENTION, INACTIVE, CYCLE şi F/E sunt


atribuite ieşirilor I/O8, I/O7, I/O2 şi respectiv I/O1, care au şi ele inversoare cu 3 stări pe
ieşire. Ecuaţiile lor devin:

ATTENTION = Q1 + Q0 ; INACTIVE = Q 2 + Q1 + Q 0 ;

CYCLE = Q2 + Q1 ; F/ E = Q2 + Q1 ;
Semnalele de intrare START, READY, T/R şi CYEND sunt atribuite intrărilor I1, I2,
I3 şi respectiv I4, iar pe I5 se aplică intrarea RESET, absolut necesară şi aici, din motivul
iniţializării bistabilelor la începutul simulării.

6.1.2 Sinteza circuitelor folosind limbajul VHDL

Limbajul VHDL este cel mai cunoscut şi cel mai puternic limbaj de descriere hardware
a circuitelor. Pe lângă modelarea şi simularea sistemelor numerice, el permite sinteza
structurilor numerice la orice nivel, de la structuri alcătuite din câteva porţi logice până la un
sistem complet cu microprocesor, de exemplu.
Proiectele pot fi descompuse ierarhic, iar VHDL oferă un cadru de lucru de bună
calitate pentru definirea modulelor şi a interfeţelor lor, precum şi pentru completarea ulterioară
a detaliilor. După scrierea propriu-zisă a codului VHDL pentru fiecare dintre elementele
menţionate mai sus, se compilează proiectul, iar dacă nu avem erori, se trece la etapa de
simulare. De fapt, simularea este doar un fragment al unei etape mai ample, numită verificare.
Este vorba de o verificare funcţională, în care se verifică logica circuitului, fără a ţine seamă de
aspectele de temporizare (întârzierile introduse de porţi se consideră nule), urmată de o
verificare temporală, care are un caracter preliminar. După verificare se trece la stadiul de
finalizare a proiectului. Descrierea VHDL se transpune într-un set de primitive ce pot fi
asamblate în tehnologia propusă. Aceste primitive se aplică resurselor de dispozitive
disponibile, folosind un instrument de aplicare, iar în final, se face o verificare temporală finală
a circuitului rezultat după aplicare.
98 6 ANALIZA ŞI SINTEZA AUTOMATĂ

A S1
p1
B p3 F
S2
C p2

Fig. 6.9 Schema logică a unei structuri combinaţionale

Pentru a introduce câteva dintre conceptele limbajului VHDL vom considera


circuitul foarte simplu din figura 6.9. Pentru verificarea codului creat şi simularea circuitului
am folosit versiunea freeware a programului VHDL Simili 2.2, realizat de firma Symphony
EDA. Această versiune are unele limitări funcţionale şi poate fi folosită timp de câteva luni.
La depăşirea acestui timp, se poate descărca din Internet o versiune actualizată freeware a
programului.
Un cod posibil VHDL pentru circuitul din figura 6.9 este dat în figura 6.10. După
declararea bibliotecilor folosite, se declară entitatea FUNC şi apoi arhitectura asociată
entităţii. În exemplul din figura 6.10 s-a făcut o descriere comportamentală a arhitecturii
circuitului, în care ansamblul celor 3 porţi logice este văzut ca o componentă, numită
GATES, căreia i se specifică intrările şi ieşirile, iar relaţia dintre ele este dată de ecuaţia
F <= not((A and B) or (not C)). Mai există o declaraţie a semnalelor A, B, C şi F, precum şi
variaţiile lor în vederea simulării. În final aceste semnale sunt mapate pe intrările şi ieşirile
componentei GATES, în ordinea în care au fost declarate.
Componenta Sonata din VHDL Simili 2.2 oferă un mediu IDE (Integrated
Development Environment) prietenos. Se crează de la început un nou proiect prin File şi
NewWorkspace. Din acest moment toate acţiunile din meniul principal devin posibile şi se
.

library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity FUNC is
end;
architecture VAR1 of FUNC is
component GATES
port (A, B, C: in STD_LOGIC;
F: out STD_LOGIC);
end component;

signal A, B, C, F: STD_LOGIC;
begin
A <= '0', '1' after 100 NS, '0' after 300 NS;
B <= '0', '1' after 200 NS, '0' after 400 NS;
C <= '1', '0' after 350 NS;
F <= not((A and B) or (not C));
M: GATES port map (A, B, C, F);

end VAR1;

Fig. 6.10 Codul VHDL pentru descrierea şi simularea circuitului din figura 6.9
6.1 Consideraţii teoretice 99

Fig. 6.11 Mediul Sonata şi câteva ferestre reprezentative

crează două fişiere cu extensiile .sws şi .sym. Se asociază un set de fişiere VHDL cu biblioteca
curentă (fişierul sursă tut.vhd în exemplul nostru), iar modulele entitate şi arhitectură apar ca
subcomponente ale fişierului tut.vhd în workspace. În figura 6.11 sunt prezentate patru ferestre
reprezentative ale mediului Sonata: workspace, editorul de text, lista semnalelor vizualizate şi
fereastra de consolă, care informează în permanenţă programatorul asupra acţiunilor
desfăşurate în mediul prezentat.
Se face compilarea setului de fişiere ataşat, sau a fişierului în exemplul nostru, şi dacă
nu sunt semnalate erori în fereastra de consolă, se poate trece la faza de simulare. Semnalele
declarate sunt prezente în fereastra Scope şi ele pot fi trimise în fereastra Signals prin
procedeul Drag and Drop.

Fig. 6.12 Mediul Sonata şi fereastra Waveforms


100 6 ANALIZA ŞI SINTEZA AUTOMATĂ
Simularea se poate face fie în regim continuu, până la valoarea de timp stabilită de
proiectant, fie în paşi care au o anumită durată ce poate fi selectată după dorinţă. Formele de
undă din figura 6.12 (dreapta, sus) arată că funcţionarea circuitului este corectă. Este
adevărat că în această simulare s-au neglijat timpii de propagare prin porţi.
Porţiunea de cod din figura 6.13 generează o arhitectură structurală a circuitului,
făcând o descriere la nivel de componente şi interconexiuni. Circuitul este descris ca o
interconectare a unor blocuri sau componente disponibile (porţi logice, multiplexoare,
memorii etc.). În acest context clasa signal va putea fi interpretată ca interconexiune.
Descrierea structurală este echivalentă schemei electrice. Fiecare poartă logică este
introdusă prin directiva component, se declară semnalele de intrare/ieşire A, B, C, F, dar şi
semnalele interne S1 şi S2 (vezi figura 6.9). Se precizează apoi variaţia semnalelor de
intrare, iar semnalele de intrare/ieşire pentru fiecare componentă de circuit sunt mapate pe
intrările/ieşirile fiecărei componente, conform schemei electrice a circuitului.
Declaraţiile de tip de componente sunt însă fără conţinut deoarece lipsesc
informaţiile despre obiectele la care se referă. Aceste declaraţii asigură denumiri formale
proprii fiecărui fişier sursă. Atribuirea conţinutului se face prin asocierea numelor
componentelor declarate cu entităţile utilizate pentru fiecare componentă. În acest fel se
păstrează rezultatele anterioare la eventuale modificări de context, asigurându-se
modularitatea proiectării, un mare avantaj al limbajului VHDL ([Burdia,1999]). Alte
avantaje remarcabile ale limbajului VHDL sunt portabilitatea, independenţa proiectării de
tehnologia de integrare şi simularea comportamentală a circuitelor.

architecture VAR2 of FUNC is


component and2gate
port (A, B: in STD_LOGIC;
F: out STD_LOGIC);
end component;
component invgate
port (A: in STD_LOGIC;
F: out STD_LOGIC);
end component;
component nor2gate
port (A, B: in STD_LOGIC;
F: out STD_LOGIC);
end component;
signal A, B, C, F: STD_LOGIC;
signal S1, S2: STD_LOGIC;
begin
A <= '0', '1' after 100 NS, '0' after 300 NS;
B <= '0', '1' after 200 NS, '0' after 400 NS;
C <= '1', '0' after 350 NS;
p1: and2gate port map(A, B, S1);
p2: invgate port map(C, S2);
p3: nor2gate port map(S1, S2, F);
end VAR2;

Fig. 6.13 O altă descriere VHDL pentru circuitul din figura 6.9
6.2 Demonstraţii practice 101
6.2 Demonstraţii practice
6.2.1 Se lansează în execuţie editorul grafic Schematics din mediul Design Center
5.2. Se desenează schema oscilatorului din figura 6.1 şi se salvează într-un fişier cu extensia
.sch. Se editează în NOTEPAD fişierul text Input.stm, dat în figura 6.3, şi se salvează în
acelaşi director cu fişierul sursă *.sch. Se alege analiza .TRAN pe o durată de 10 µs,
folosind un pas de 100ns, şi, dacă nu sunt erori, apare mediul PROBE din care se aleg
formele de undă care ne interesează. Se verifică dacă ele corespund cu cele din figura 6.2 şi
se repetă simularea cu modificarea unor parametri (constanta de timp RC, durata simulării,
pasul simulării etc.).
.
V

6.2.2 Se desenează în editorul grafic Schematics, pe aceeaşi foaie de lucru,


schemele din figurile 6.7 şi 6.8. Se editează în NOTEPAD un fişier de stimuli după modelul
din figura 6.14. Acest fişier, care are extensia *.stm, se salvează în acelaşi director cu
fişierul sursă *.sch şi se include în desen prin directiva INCLUDE. Se face analiza .TRAN
şi se confruntă rezultatul obţinut cu cel din figura 6.15. Observaţi modul în care este generat
semnalul de ceas în fişierul de stimuli. Observaţi modul în care sunt generate celelalte
semnale de intrare. Explicaţi de ce s-au luat paşi diferiţi pe scara timpului pentru semnalele
START şi T/R. Explicaţi de ce nivelele logice ale ieşirilor nu sunt cunoscute în primele
momente de timp de la începutul simulării şi arătaţi care este rolul semnalului RESET,
semnal care nu apare în organigramă. Verificaţi dacă formele de undă reprezintă absolut
toate tranziţiile posibile din organigramă şi, în caz contrar, construiţi un alt fişier de stimuli
care să evidenţieze şi acele tranziţii care lipsesc. Se repetă simularea şi pentru alte semnale
de intrare, punând în evidenţă asincronismul intrărilor START şi T/R.

UCLOCK STIM(1,1) $G_DPWR $G_DGND UREADY STIM(1,1) $G_DPWR $G_DGND


+ CLOCK + READY
+ IO_STM TIMESTEP=0.5u + IO_STM
+ 0c 0 + TIMESTEP=0.5u
+ label=loop + 0c 0
+ 1c 1 + 20c 1
+ 2c 0 + 25c 0
+ 3c goto loop -1 times

URESET STIM(1,1) $G_DPWR $G_DGND UT/R STIM(1,1) $G_DPWR $G_DGND


+ RESET + T/R
+ IO_STM + IO_STM
+ TIMESTEP=0.5u + TIMESTEP=0.2u
+ 0c 1 + 0c 0
+ 2c 0 + 53c 1
+ 6c 1 + 84c 0

USTART STIM(1,1) $G_DPWR $G_DGND UCYEND STIM(1,1) $G_DPWR $G_DGND


+ START + CYEND
+ IO_STM + IO_STM
+ TIMESTEP=0.2u + TIMESTEP=0.5u
+ 0c 0 + 0c 0
+ 29c 1 + 40c 1
+ 57c 0 + 50c 0

Fig. 6.14 Fişier de stimuli


102 6 ANALIZA ŞI SINTEZA AUTOMATĂ

Fig. 6.15 Simularea PSPICE a funcţionării interfeţei V

6.2.3 Se analizează schema din figura 6.16 şi se discută problema metastabilităţii.


Structura interfeţei este memorată în aria combinaţională prin starea fuzibilelor. Fişierul
care conţine această informaţie se numeşte PAL.JED şi este un fişier în format standard
JEDEC (Joint Electronic Device Engineering Council). Figura 6.17 arată conţinutul acestui
fişier pentru exemplul considerat. Formele de undă obţinute în urma simulării sunt practic
identice cu cele obţinute în figura 6.15, cu excepţia semnalului RESET, care se activează de
această dată pe 1 logic. Fişierul PAL.JED începe cu caracterul 02H (start of text) şi se
termină cu caracterul 03H (end of text) şi este divizat în câmpuri, separate prin asterisc (*).
Primul câmp este de identificare şi conţine numele circuitului, atribuirea pinilor şi alte
informaţii. D este un identificator pentru tipul circuitului, G este fuzibilul de siguranţă, QF
indică numărul total de fuzibile, iar F reprezintă starea implicită a fuzibilelor. L este un
identificator pentru lista fuzibilelor, numerotate de sus în jos şi de la dreapta la stânga,
începând de la L0000. Structura internă a circuitului PAL 16R4 este dată în figura 6.18.

Fig. 6.16 Schema electrică a interfeţei realizată cu PAL16R4


6.2 Demonstraţii practice 103
$DEVICE
PAL16R4;
$PIN L0320 11111111111111101111111111111111*
1=CLOCK; L0352 11111111111111111101111111111111*
2=START; L0512 11111111111011101111111111111111*
3=READY; L0544 11111111111111011110111111111111*
4=T/R; L0576 11111111101111011111111111111111*
5=CYEND; L0608 11111111111111110111111111111111*
6=RESET; L0768 11111111111011101110111111111111*
12=F/E; L0800 11111111111111011101111111111111*
13=CYCLE; L0832 11111011111111111101111111111111*
18=INACTIVE; L0864 11111111110110101111111111111111*
19=ATTENTION; L0896 11111111111111110111111111111111*
$END L1024 11111111110111101111111111111111*
* L1056 11111111111111011101111111111111*
D1234* L1088 11110111111111111101111111111111*
G0* L1120 10111111111111101110111111111111*
QF2048* L1152 11111111111111110111111111111111*
F0* L1536 11111111111111111111111111111111*
L0000 11111111111111111111111111111111* L1568 11111111111011111111111111111111*
L0032 11111111111111011111111111111111* L1600 11111111111111011111111111111111*
L0064 11111111111111111110111111111111* L1792 11111111111111111111111111111111*
L0256 11111111111111111111111111111111* L1824 11111111111011111111111111111111*
L0288 11111111110111111111111111111111* L1856 11111111111111101111111111111111*

Fig. 6.17 Conţinutul fişierului PAL.JED V

6.2.4 Se lansează în execuţie mediul Sonata din programul Symphony EDA, grupul
VHDL Simili 2.2 şi se introduce numele unui nou proiect, selectând din meniul File
opţiunea NewWorkspace. Se verifică faptul că toate acţiunile din meniu devin posibile
(compilarea, simularea etc.). Se editează în fereastra de editare codul VHDL propus în
figura 6.10 şi se salvează într-un fişier .vhd, fişier care se asociază cu biblioteca curentă. Se
compilează fişierul creat (prima opţiune din meniul Compile) şi dacă nu există erori în
fereastra de consolă, atunci se poate simula funcţionarea circuitului. După alegerea pasului
de simulare (de exemplu 100ns), din meniul Simulate se alege opţiunea Go şi la apariţia
ferestrei formelor de undă se selectează prin Drag and Drop semnalele pe care dorim să le
vizualizăm din lista de semnale existente în fereastra Scope. În continuare, la fiecare apăsare
de buton se desenează noile forme de undă pe durata pasului de simulare. Verificaţi că
semnalele obţinute coincid cu cele din figura 6.12. Complicaţi fişierul sursă, introducând şi
timpii de întârziere prin porţi şi reluaţi simulările de mai sus.
.
V

6.2.5 Se modelează automatul finit descris prin organigrama din figura 6.5.
Modelarea se poate face folosind instrucţiunea case. Variantele definite în instrucţiunea
case modelează comportamentul în fiecare stare. Starea la un moment dat poate fi memorată
într-un semnal. Sursa VHDL pentru o arhitectură comportamentală este dată în figura 6.19.
Semnalele de intrare pentru simularea entităţii interfaţa se pot introduce separat cu ajutorul
unui fişier de comenzi, sau pot fi descrise într-un alt fişier .vhd, care se compilează
împreună cu fişierul care descrie circuitul. Vizualizaţi formele de undă şi verificaţi
comportarea automatului pentru toate tranziţiile posibile. Încercaţi să construiţi un nou fişier
sursă care să realizeze o descriere structurală a automatului, asemănătoare celei din figura
6.13. Verificaţi prin simulare funcţionarea corectă a structurii.
104 6 ANALIZA ŞI SINTEZA AUTOMATĂ

Fig. 6.18 Structura internă a circuitului PAL16R4


106 6 ANALIZA ŞI SINTEZA AUTOMATĂ

6.3 Probleme rezolvate


6.3.1 Nivelele logice ale semnalelor de ieşire reprezentate în figura 6.15 nu sunt
cunoscute în prima microsecundă de la începutul simulării. Explicaţi de ce şi arătaţi cum se
poate rezolva această problemă.
Rezolvare:
Este exact aceeaşi problemă semnalată la oscilatorul din figura 6.1. Bistabilele din structura
PAL nu sunt iniţializate, deci valorile ieşirilor Q2 , Q1 şi Q0 , precum şi valorile ieşirilor
ATTENTION, INACTIVE, CYCLE şi F/E, care la rândul lor sunt generate de ieşirile bistabilelor,
nu sunt cunoscute la începutul simulării. Aici nu este vorba de starea de înaltă impedanţă (high Z),
ci de nivele logice 0 sau 1, dar care sunt necunoscute pentru simulator.
Soluţia constă în introducerea unui semnal de RESET, care aplică un nivel logic de 0 pe
intrările bistabilelor din structură, iar la activarea semnalului de ceas acestea se resetează. Din acest
moment toate ieşirile automatului sunt cunoscute şi simulatorul poate analiza funcţionarea
circuitului. Spre deosebire de bistabilele discrete, cele din structura PAL nu sunt prevăzute cu intrări
asincrone de SET şi RESET.
Este evident că la circuitele reale această problemă nu apare pentru că ieşirile bistabilelor au
o valoare logică fermă la cuplarea alimentării, deci ele sunt automat iniţializate, iar comportarea lor
viitoare depinde de semnalele aplicate pe intrările circuitului.
.
V

6.3.2 Scrieţi o secvenţă de cod VHDL pentru generarea unui semnal periodic de ceas
necesar sistemelor secvenţiale sincrone.
Rezolvare: (după [Burdia, 1999])
Cea mai simplă metodă de generare a unei secvenţe periodice este utilizarea instrucţiunii de
atribuire concurentă pentru semnale:
a <= not a after 10 ns;
Rezultatul este o formă de undă periodică cu perioada T = 20 ns şi factor de umplere de 50%, dacă
semnalul este de tip bit. Pentru tipul std_logic valoarea de iniţializare nu mai este ‘0’, ca la tipul bit,
ci ‘U’, adică necunoscută. Deci expresia not ‘U’ rămâne tot ‘U’ şi semnalul apare ca fiind
necunoscut pe toată durata simulării.
O altă variantă de generare a acestui semnal este utilizarea într-un proces a instrucţiunii
wait, cu observaţia că trebuie să existe o limitare explicită a timpului simulat printr-o introducere
condiţionată fără limită de timp a lui wait. Codul pentru acest proces este dat mai jos:
process
begin
wait for 10 ns;
a <= ‘1’;
wait for 20 ns;
a <= ‘0’;
end process; V

6.3.3 Scrieţi un program VHDL pentru un decodificator BCD – 7 segmente.


Rezolvare: (după [Cîrstea, 2001])
Considerăm că vectorul aplicat pe cele 7 segmente ale afişajului este abcdefg, păstrând
notaţiile din problema 2.3.2. Codul VHDL pentru acest circuit este dat în figura 6.20.
6.3 Probleme rezolvate 107
library IEEE;
use IEEE.std_logic_1164.all;
entity decodificator is
port (CNTIN: in STD_LOGIC_VECTOR (3 downto 0);
CNTOUT: out STD_LOGIC_VECTOR (6 downto 0));
end decodificator;
architecture dec_arch of decodificator is
begin
WITH CNTIN SELECT
CNTOUT <= "1111110" WHEN "0000",
"0110000" WHEN "0001",
"1101101" WHEN "0010",
"1111001" WHEN "0011",
"0110011" WHEN "0100",
"1011011" WHEN "0101",
"1011111" WHEN "0110",
"1110000" WHEN "0111",
"1111111" WHEN "1000",
"1111011" WHEN "1001",
"0000000" WHEN OTHERS;
end dec_arch;

Fig. 6.20 Un program VHDL pentru decodificatorul BCD – 7 segmente

Entitatea “decodificator” este formată dintr-un bloc care are 4 biţi de intrare grupaţi în
magistrala CNTIN şi 7 biţi de ieşire grupaţi în magistrala CNTOUT. Aceste semnale sunt tratate ca
vectori. Arhitectura circuitului este de tip comportamental, urmărind cazurile posibile descrise în
tabelul de adevăr al decodificatorului BCD-7segmente.
Instrucţiunea WITH CNTIN SELECT specifică faptul că valorile celor patru elemente
componente ale vectorului CNTIN se vor utiliza împreună pentru a selecta o valoare care va fi
încărcată în cele 7 elemente ale vectorului CNTOUT.
Observăm că LED-urile afişajului sunt aprinse pentru valoarea logică 1 aplicată segmentului
respectiv, deci pentru celelate combinaţii binare care sunt interzise în codul BCD segmentele
afişajului sunt stinse.
.
V

6.3.4 Scrieţi un program VHDL pentru un automat finit cu două intrări sincrone A şi
B şi cu o ieşire Y. Ieşirea trebuie să fie 1 dacă numărul de valori 1 aplicate pe cele 2 intrări,
după ultima reiniţializare, este multiplu de 4; iar în celelalte cazuri ieşirea trebuie să fie 0.
Rezolvare: (după [Wakerly, 2002])
O variantă de program VHDL care rezolvă problema dată este prezentată în figura 6.21. În
cadrul arhitecturii se declară un subtip COUNTER, care este o valoare UNSIGNED de 2 biţi. Apoi
declarăm un semnal COUNT de acest tip, pentru a păstra numărul valorilor 1, şi o constantă ZERO,
de acelaşi tip, pentru iniţializarea şi verificarea valorii COUNT.
În cadrul procesului, se verifică apariţia frontului crescător al ceasului, iar clauza “if” face o
reiniţializare sincronă, în timp ce “else” adaugă la COUNT un 0, 1 sau 2, după cum apar biţii de 1
pe intrările A şi B. Expresia de tipul “(0,X)” este o variabilă literală tablou, iar tipul ei este
compatibil cu UNSIGNED. Deci se poate face operaţia de adunare, definită în pachetul
std_logic_arith. În exteriorul procesului, instrucţiunea simultană de atribuire a semnalelor impune
valoarea 1 la ieşirea Y atunci când COUNT este zero.
108 6 ANALIZA ŞI SINTEZA AUTOMATĂ

library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;

entity numarator is
port(CLOCK, RESET, A, B: in std_logic;
Y: out std_logic);
end numarator;

architecture automat_finit of numarator is


subtype COUNTER is UNSIGNED (1 downto 0);
signal COUNT: COUNTER;
constant ZERO: COUNTER := "00";
begin
process(CLOCK)
begin
if CLOCK'event and CLOCK = '1' then
if RESET = '1' then COUNT <= ZERO;
else COUNT <= COUNT + ('0', A) + ('0', B);
end if;
end if;
end process;
Y <= '1' when COUNT = ZERO else '0';
end automat_finit;

Fig. 6.21 Un program VHDL pentru automatul de numărare a valorilor de 1 pe intrări V

6.3.5 Reluaţi problema 6.3.4 şi modificaţi procesul VHDL pentru acelaşi automat,
arătând care sunt opţiunile posibile folosind o instrucţiune case.
Rezolvare: (după [Wakerly, 2002])
Vom prezenta în figura 6.22 numai modificarea adusă procesului. Prin formularea
corespunzătoare a opţiunilor dintr-o instrucţiune case, devine posibilă funcţionarea în paralel a celor
două circuite de incrementare, iar pentru selecţia uneia dintre ieşiri se poate folosi un multiplexor.

process(CLOCK)
variable ONES: STD_LOGIC_VECTOR (1 to 2);
begin
if CLOCK'event and CLOCK = '1' then
ONES := (A, B);
if RESET = '1' then COUNT <= ZERO;
else case ONES is
when "01" | "10" => COUNT <= COUNT + "01";
when "11" => COUNT <= COUNT + "10";
when others => null;
end case;
end if;
end if;
end process;

Fig. 6.22 Un alt proces VHDL pentru automatul de numărare a valorilor de 1 pe intrări V

You might also like