Professional Documents
Culture Documents
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
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.
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
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.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
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
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
V+= 15V
T2
Vin Vout
T1
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.
1
V+
4 6 7
V+
D2
D1 D1 T2 D1
R
Vin Vout
T1
D2 D2
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
Vd Vt distanţa
Semnalul după reflexie (cazul Z t > Z 0)
Vd Vt distanţa
Semnalul după reflexie (cazul Z t < Z 0)
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
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τ
+5V
150 Ω
A B
Z 0 = 100 Ω
470 Ω
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
14 13 12 11 10 9 8
+
V 5 V cc
_
1 2 3 4 5 6 7
Vcc = +5V
sarcină
+ +
Vin = 0..5V _ V Vout
_
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
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
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
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
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.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
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
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.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ţă.
.
+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
+V cc Vo
R1 VT- = 0,9V
VT+ = 1,7V
*
.... R2 Vi
VT- VT+
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ă.
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.
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.
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:
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).
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
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
Î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.
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
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
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
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
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
= 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
AG BG CG
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 ):
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
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.
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
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)
out
Q Q
R R
CT CS CS CT
R1 R2
820 820
C
out
7404 1n 7404 7404
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
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.
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.
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
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ă?
.
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
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:
In Out
C
100n
1 Out
R
390
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.
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
OUT
10 nF
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
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.
T T T T
CLK
8 CLK 4 CLK 2 CLK 1 CLK
Q Q Q Q
Q8 Q4 Q2 Q1
00 IDLE RES 10
q
2
Y
01 PLS RESA 11
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
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
4.1.2 Hazard
D Q Q1 D Q Q2 D Q Q3 D Q Q4
1 2 3 4
+ +
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
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
+
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
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
CLK
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.
.
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:
I1 ∆ y1
I2 ∆ y2
I3 CLC ∆ y3
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 - - -
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
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
+
Q 1 = y1
I1
I2 Q 2 = y2
I3 Q 3 = y3
Q1 Q2 Q3
∆1 ∆2 ∆3
Q1
Q2
Q3
∆ 1 ∆ 2 ∆ 3∆ 1 ∆ 2 ∆ 3
+
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
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+
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 .
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
0 1
X1 B 01
11
0 1
C X2
10 1 0
D X3
1 0
X4
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
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
READY (ieşire)
WAIT (ieşire)
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
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.
CLK
RESET
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.
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
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
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.
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
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
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.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.9 Două interfeţe pentru programarea circuitelor GAL 16V8 şi GAL20V8
88 5 STRUCTURI PROGRAMABILE
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.13 Circuit de înmulţire cu memorie EPROM şi un fragment din harta memoriei
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
A
B
C
D
f1
f2
f3
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.
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
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
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
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
Q
2 22
Q1 21 DCD
0
Q0 2 0 1 2 3 4 5 6 7
CYCLE
INACTIVE
ATTENTION F/E
Q2+ = Q2 ⋅ Q1 + Q1 ⋅ Q0 + T/ R ⋅ Q1
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.
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
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
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.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.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Ă
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
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;
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