Post on 17-Jul-2015
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 1/150
MINISTERUL EDUCAŢIEI ŞI CERCETĂRII
UNIVERSITATEA DIN BACĂU FACULTATEA DE INGINERIE
NALIZA şi
10111011010101000100100101110110110
11111000111010101001110101
10100100011110000000110101011
10101001110001010010101
010010001010000101000101010001001010010
101101001001010001001010010001010
10010010101001010001
10001001010010101000101001010 SINTEZA
DISPOZITIVELOR
NUMERICE
EDITURA ALMA MATER
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 2/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 3
CUPRINS
paginaCAPITOLUL 0 (zero)
Elemente de algebră binară (algebră logică)
0.1. Introducere 50.2. Axiomele şi teoremele algebrei binare 60.3. Funcţii binare 80.4. Formele canonice ale funcţiilor logice 12
CAPITOLUL 1
Analiza şi sinteza circuitelor logice combinaţionale
1.1. Introducere 171.2. Elemente de analiză a circuitelor logice combinaţionale 181.3. Sinteza circuitelor logice combinaţionale 271.4. Minimizarea funcţiilor logice combinaţionale 291.4.1. Metoda minimizarii pe baza axiomelor si teoremelor algebrei
booleene 1.4.2. Metoda diagramelor Karnaugh 291.4.3. Metoda Quine-Mc Cluskey 371.4.4. Minimizarea funcţiilor logice combinaţionale incomplet definite 42
1.4.5. Minimizarea sistemelor de funcţii booleene 431.5. Apariţia hazardului 511.5.1. Eliminarea hazardului cu ajutorul diagramelor Karnaugh 531.6. Analiza circuitelor logice combinaţionale cu ajutorul pachetului de
programe OrCAD 1.6.1. Proiectarea schemei electronice cu ajutorul programului OrCAD
CAPTURE 551.6.1.1. Începerea unui proiect nou 551.6.1.2. Plasarea componentelor în schema electronică 571.6.1.3. Conectarea componentelor schemei electronice 591.6.1.4. Verificarea corectitudinii realizării schemei electrice 60
1.6.1.5. Plasarea punctelor de test pe schema electronică 611.6.1.6. Stabilirea profilului de simulare 611.6.1.7. Simularea circuitului 621.7. Analiza circuitelor logice combinaţionale cu ajutorul limbajelor
pentru descrierea structurii hardware (HDL) 621.7.1. Introducere 621.7.2. Limbajul Verilog HDL 671.7.2.1. Structura unui program Verilog HDL 671.7.2.2. Testarea programelor Verilog HDL 871.7.3. Limbajul VHDL 1001.7.3.1. Structura unui program VHDL 100
1.7.3.2. Testarea programelor VHDL 103
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 3/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 4
CAPITOLUL 2
Analiza şi sinteza circuitelor logice secvenţiale
2.1. Introducere 108
2.2. Tabelul tranziţiilor şi al ieşirilor 1112.3. Graful tranziţiilor 1172.4. Alte modele ale circuitelor secvenţiale 1182.5. Analiza circuitelor logice secvenţiale 1212.6. Sinteza circuitelor logice secvenţiale 1232.7. Circuite basculante bistabile folosite ca elemente de memorie
pentru circuitele secvenţiale 1232.7.1. Introducere 1232.7.2. Tabelele caracteristice, tabelele excitaţiilor şi ecuaţiile intr ărilor 1242.8. Exemplificarea sintezei unui circuit logic secvenţial 1332.9. Analiza circuitelor logice secvenţiale asistată de calculator 1402.9.1. Simularea circuitelor logice secvenţiale cu ajutorul aplicaţiei
OrCAD 1402.9.2. Simularea circuitelor logice secvenţiale cu ajutorul Verilog HDL 1422.9.3. Simularea circuitelor logice secvenţiale cu ajutorul VHDL 143
SeminarSeminar 1 145Seminar 2 147Seminar 3Seminar 4
Seminar 5Seminar 6Seminar 7
LaboratorLaborator 1Laborator 2Laborator 3Laborator 4Laborator 5Laborator 6
Laborator 7Laborator 8Laborator 9Laborator 10Laborator 11Laborator 12Laborator 13Laborator 14
Bibliografie
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 4/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 5
CAPITOLUL 0 (zero)
Elemente de algebră binară (algebră logică)
0.1. Introducere
Primul capitol al acestui curs este capitolul zero şi nu capitolul unu aşa cum seobişnuieşte. Numărul zero a fost folosit din mai multe motive: în primul rând pentru cainformaţia din acest capitol reprezintă o recapitulare a cunoştiinţelor dobândite la altecursuri şi el reaminteşte doar noţiuni ce vor fi folosite şi aici. Cele câteva elemente alealgebrei binare prezentate, au doar scopul să limpezească noţiunile ce apar în capitoleleurmătoare. În al doilea rând, folosirea cifrei zero pentru numerotarea capitolului este
justificată şi de faptul că această cifr ă reprezintă primul simbol din orice baza denumeraţie. Ultimul motiv, şi cel mai important, este determinat de faptul că în tehnicanumerică primul indice are valoarea zero şi deci este momentul să ne obişnuim cunumerotarea: 0, 1, 2, … .
Algebra logică numită şi calcul propoziţional, operează cu propoziţii, despre careare sens să afirmăm că sunt adevărate sau false. Din însăşi definirea propoziţiilor rezultă că o propoziţie poate fi adevărată sau falsă. Propoziţiile pot fi simple sau copmuse. Celecompuse se obţin ca rezultat al legăturii propoziţiilor simple, prin intermediul unor conective logice. Adevărul sau falsitatea unei propoziţii compuse este în funcţie devaloarea propoziţiilor simple din care se compune şi de tipul legăturii logice.
În logica simbolică se poate face abstracţie de sensul propoziţiilor, operând curelaţiile de valoare. Convenim ca unei propoziţii adevărate să-i atribuim valoarea binar ă
unu (1), iar falsitatea acesteia să o notăm cu valoarea binar ă zero (0).Propoziţia compusă a cărei valoare depinde de valorile propoziţiilor simple, putândavea două valori, se numeşte funcţie logică sau binar ă.
Funcţia compusă este complet definită cu ajutorul unui tabel finit în care se trecvalorile funcţiei în corespondenţă cu valorile propoziţiilor simple considerateindependente. O astfel de exprimare a funcţiei compuse este cunoscută sub numele de tabelde adevăr.
Calculul propoziţiilor poate fi extrapolat în tehnică la sistemele automate careutilizează elemente de comutaţie cu două stări. Acestora le putem atribui relaţii de valoare(1 sau 0) binar ă corespunzătoare adevărului (1) sau falsităţii (0) propoziţiilor.
Algebra Boole operează pe mulţimea binar ă:
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 5/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 6
{ }1,0x/xB == (0.1)
Pe această mulţime sunt definite trei legi de compoziţie:o complementarea (negaţia), variabila negată “x” o vom nota cu x ;o disjuncţia, pe care o vom nota cu +;o conjuncţia, pe care o vom nota cu *;
Tabelele de adevăr pentru aceste trei legi de compoziţie sunt (TABELUL 0.1):
x x
0 1
1 0
Complementarea(negaţia)
y x x+y
0 0 0
0 1 1
1 0 1
1 1 1Disjuncţia
y x x+y
0 0 0
0 1 0
1 0 0
1 1 1
Conjuncţia
Din tabelele de adevăr prezentate mai sus se constată că operaţia de disjuncţie este similar ă operaţiei de adunare iar cea de conjuncţie cu cea de înmulţire.
O altă observaţie care trebuie f ăcută este faptul că toate relaţiile definite pemulţimea B sunt duale în sensul că se obţin relaţii echivalente dacă schimbăm operaţia dedisjuncţie cu cea de conjuncţie şi “1” în “0” (variabilele directe cu cele negate iar celenegate cu variabilele directe).
0.2. Axiomele şi teoremele algebrei binare
În algebra binar ă sunt valabile 6 axiome şi 5 teoreme de bază. Datorită proprietăţii
de dualitate, atât axiomele cât şi teoremele au două forme de exprimare aşa cum se va ar ătamai departe.
Axiome:1. Mulţimea B este închisă în raport cu operatorii + şi *.
Byx,By*xatunciBy,Bxdaca ∈+∈∈∈ (0.2)2. Asociativitatea.
z)yx()zy(x,z*)y*x()z*y(*xatunci
Bz,By,Bxdaca
++=++=
∈∈∈ (0.3)
3. Comutativitatea.xyyx,x*yy*xatunciBy,Bxdaca +=+=∈∈ (0.4)
4. Distributivitatea.
)zx(*)yx(z*yx,z*xy*x)zy(*xatunci
Bz,By,Bxdaca
++=++=+
∈∈∈ (0.5)
5. Existenţa elementului neutru.xx00x,xx*11*xatunciBxdaca =+=+==∈ (0.6)
6. Existenţa complementului.1xx,0x*xatunciBxdaca =+=∈ (0.7)
Teoreme:1. Idempotenţa sau tautologia.
xxx,xx*xatunciBxdaca =+=∈ (0.8)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 6/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 7
2. Legile lui unu şi zero.11x,00*xatunciBxdaca =+=∈ (0.9)
3. Dubla negaţie sau involuţia.0xatunciBxdaca =∈ (0.10)
4. Absorbţia.xy*xx,x)yx(*xatunciBy,Bxdaca =+=+∈∈ (0.11)
5. Teorema De Morgan.
y*xyx,yxy*xatunciBy,Bxdaca =++=∈∈ (0.12)
Verificarea afirmaţiilor f ăcute poate fi realizată prin utilizarea tabelelor de adevăr.De exemplu vom ar ăta în continuare faptul că cele două relaţii (0.5) sunt echivalente.Pentru aceasta vom construi un tabel în care se trec toate valorile posibile pentruvariabilele funcţiei, eventual termenii intermediari care să permită determinarea mai uşoar ă a rezultatului final şi funcţia de determinat.
Tabelul de adevăr pentru funcţia x(y+z) (TABELUL 0.2):
z y x (y+z) x*(y+z)0 0 0 0 00 0 1 0 00 1 0 1 00 1 1 1 11 0 0 1 01 0 1 1 11 1 0 1 01 1 1 1 1
Tabelul de adevăr pentru funcţia x*y+x*z (TABELUL 0.3):
z y x x*y x*z x*y+x*z0 0 0 0 0 00 0 1 0 0 00 1 0 0 0 00 1 1 1 0 11 0 0 0 0 01 0 1 0 1 11 1 0 0 0 01 1 1 1 1 1
Din studiul tabelelor 0.2 şi 0.3 se constată echivalenţa celor două funcţii ceea ce justifică prima egalitate din ecuaţia (0.5).
Tabelul de adevăr pentru funcţia x+y*z (TABELUL 0.4):z y X y*z x+y*z
0 0 0 0 00 0 1 0 10 1 0 0 00 1 1 0 11 0 0 0 01 0 1 0 11 1 0 1 11 1 1 1 1
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 7/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 8
Tabelul de adevăr pentru funcţia (x+y)*(x+z) (TABELUL 0.5):z y x (x+y) (x+z) (x+y)*(x+z)
0 0 0 0 0 00 0 1 1 1 1
0 1 0 1 0 00 1 1 1 1 11 0 0 0 1 01 0 1 1 1 11 1 0 1 1 11 1 1 1 1 1
Din studiul tabelelor 0.4 şi 0.5 se constată echivalenţa celor două funcţii ceea ce justifică a doua egalitate din ecuaţia (0.5).
De asemenea, dacă într-unul din tabelele 0.2 sau 0.3 se înlocuieşte valoarea “0” cu“1” şi valoarea “1” cu “0” se obţine aceeaşi funcţie cu cea reprezentată în tabelele 0.4 şi
0.5, şi reciproc ceea ce arată proprietatea de dualitate enunţată mai sus.O mulţime B dotată cu legile de compoziţie "*", respectiv "+" care satisfaceaxiomele 1-6, se numeşte latice distributivă. Laticea distributivă care admite teoremele 1-5se numeşte algebr ă booleană.
0.3. Funcţii binare
Aşa cum s-a ar ătat în paragraful anterior, variabilele independente pot avea numaidouă valori: “0” şi “1”.
O funcţie binar ă poate avea un singur termen, mai mulţi termeni apar ţinândmulţimii termenilor ce se pot obţine cu n variabile sau nici un termen.
Cu n variabile se obţin 2n
=m termeni, de exemplu pentru n=2 se obţin 22
=4termeni: 00, 01, 10, 11.
În general numărul de funcţii NF în cazul a m termeni se calculează astfel:
∑=
==−
=+++=m
0 j
2mmm
1m
0mF
n
22)! jm(! j
!mC...CC N (0.13)
În lipsa variabilei independente (n=0) se obţin două funcţii: F=1 şi F=0 – funcţiileconstante.
Pentru n=1 se obţin 4 funcţii : F=1, F=0, F=x şi F= x , unde x este variabilaindependentă iar pentru n=2 se obţin 16 funcţii.
Prezentăm în continuare funcţiile logice combinaţionale cu două variabile şi acolo
unde este cazul, por ţile logice care le implementează.
1. Conjuncţia F1 = x*y (x şi y, produs logic)
Tabelul de adevăr y x F1
0 0 0
0 1 0
1 0 0
1 1 1
Simbolul
F1x
y
Denumirea circuitului logic:ŞI (AND)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 8/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 9
2. Disjuncţia F2 = x+y (x sau y, suma logică)
Tabelul de adevăr
y x F2
0 0 0
0 1 1
1 0 1
1 1 1
Simbolulx
y
F2
Denumirea circuitului logic:SAU (OR)
3. şi 4. Negaţia F3 = x (non x )F4 = y (non y )
Tabelul de adevăr
x F3 y F40 1 0 1
1 0 1 0
Simbolul
x
F3
Denumirea circuitului logic:INVERSOR (INVERTER)
5. Implicaţia directă yxyxF5 +=→= (x implică y)
Tabelul de adevăr
y x F5
0 0 1
0 1 0
1 0 1
1 1 1
Circuitul logic nu are o denumireconsacrată
6. Implicaţia inversă yxxyF6 +=→= (y implică x)
Tabelul de adevăr
y x F6
0 0 1
0 1 1 Circuitul logic nu are o denumireconsacrată 1 0 0
1 1 1
7. Echivalenţa ( ) ( )
yxF
yx*yxF
)xy(*)yx(F
y~xF
7
7
7
7
⊕=
++=
→→=
=
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 9/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 10
SimbolulTabelul de adevăr
y x F7
x
yF7
0 0 10 1 0
Denumirea circuitului logic:COINCIDENŢĂ, COMPARATOR
1 0 0
1 1 1
8. Negarea implicaţiei directe
yxF
y*xF
yxF
8
8
8
+=
=
→=
(x nu imlică y)
Tabelul de adevăr
y x F8
0 0 0
0 1 1
1 0 0
1 1 0
Denumirea circuitului logic:INTERDICŢIE, INHIBARE
yxF
y*xF
xyF
9
9
9
+=
=
→=
9. Negaţia imlicaţiei inverse (y nu implică x)
10. Negarea echivalenţei
Tabelul de adevăr y x F9
0 0 0
0 1 0
1 0 1
1 1 0
Denumirea circuitului logic:INTERDICŢIE, INHIBARE
( ) ( )
yxF
yx*yxF
)xy(*)yx(F
y~xF
10
10
10
10
⊕=
++=
→→=
=
(x nu este echivalent cu y)
(suma modulo 2)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 10/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 11
11. Negarea disjuncţiei
Tabelul de adevăr
y X F10
Simbolulx
yF10
0 0 0
0 1 1 Denumirea circuitului logic:SAU EXCLUSIV, SUMA
MODULO DOI
1 0 1
1 1 0
y*xF
yxF11 +=(x sau
11 =y negat)
1
Tabelul de adevăr y x F11
0 0 1
0 1 01 0 0
Simbolx
y
F11
Denumirea circuitului logic:SAU-NU (NOR)1 1 0
12. Negarea conjuncţiei
yxF
y*xF
12
12
+=
(x şi y negat)=
Tabelul de adevăr
y x F12
Simbolx
y
F12
0 0 1
0 1 1Denumirea circuitului logic:
ŞI-NU (NAND)1 0 1
1 1 0
13. Identitate F13 x= (funcţia ce nu depinde de y)
Tabelul de adevăr y x F13
Simbol
x
F13
0 0 0
0 1 1
1 0 0Denumirea circuitului logic:
IDENTITATE1 1 1
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 11/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 12
14. Identitate (funcţia ce nu depinde de x)yF14 =
6. Funcţie unară F16=1 (circuit închis)
Materializarea funcţiilor definite mai sus conduce la circuite logice, unele cudenumiri consacrate.
Din tabelul funcţiilor de două variabile prezentat anterior, o importanţă deosebită o prezintă următoarele şase funcţii: INHIBAREA, SAU EXCLUSIV, SAU-NU (NICI),COINCIDENŢ , ŞI-NU şi IMPLICARE.
Algebra logicii se dezvoltă plecând de la o grupare de operaţii fundamentale princombinarea cărora se obţin alte operaţii logice. Până acum s-au considerat drept operaţiilogice fundame , Ş
Se pot alege ca opera ulte din operaţiilesimple prezentaExistă 6 posibilit e: opera şi ŞI; operaţiile
COINC
0.4.
e exprima o funcţie logică. Această
funcţie binaţiilor posibile
Tabelul de adevăr
y x F14 Simboly
F14
0 0 0
0 1 0
1 0 1 Denumirea circuitului logic:IDENTITATE 1 1 1
15. Funcţie nulară F15=0 (circuit deschis)
1
A
ntale operaţiile logice SAU I şi NU.
ţii logice fundamentale una sau mai mte anterior.ăţi şi anum ţiile SAU-EXCLUSIV
IDENŢĂ şi ŞI; operaţia SAU-NU; operaţia ŞI-NU; operaţia INHIBARE; operaţiaIMPLICARE.
Se observă că în cazul în care se aleg operaţiile SAU-NU, ŞI-NU, INHIBARE şiIMPLICARE, este necesar ă o singur ă operaţie logică elementar ă sau operaţie logică de
bază. Din acest motiv aceste operaţii se numesc operaţii universale. Datorită faptului că operaţiile SAU-NU (circuite ECL, MOS) şi ŞI-NU (circuite TTL) necesită, din punct devedere al realizării lor practice, mai puţine circuite decât operaţia de INHIBARE sauIMPLICARE, primele două sunt preferate ultimelor.
Alegerea operaţiilor de bază în algebra booleană nu este unică.În această alegere trebuie să se ţină în primul rând cont de posibilitatea de realizarea unor circuite electronice economice şi cu siguranţă mare în funcţionare. Circuitele ŞI,SAU, NU, SAU-NU, ŞI-NU, sunt frecvent folosite, deoarece pot fi uşor realizate fizic.
Formele canonice ale funcţiilor logice
O funcţie logică de n variabile va avea 2n valori de ieşire corespunzătoare celor 2n combinaţii posibile ale variabilelor de intrare. Acest lucru poate fi reprezentat, aşacum s-a ar ătat, cu ajutorul tabelului de adevăr. Se poate ar ăta insă că există o expresieanalitică unic determinată cu ajutorul căruia se poat
ce conţine cel mult 2n termeni, corespunzător tuturor com
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 12/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 13
pentru
lă logică, numim formă normală disjunctivă a ei o relaţie echivalentă, care este o sumă de produse
i z, acărui tabel de adevăr este TABELUL 0.6.
e la ac i
variabilele de intrare, poate avea două moduri de exprimare, conform principiului dualităţii. Acestea reprezintă formele canonice ale funcţiilor logice numiteforma normală disjunctivă (FND) şi respectiv, forma normală conjunctivă (FNC).
TABELUL 0.6. Fiind dată o relaţie funcţiona
elementare construite cu aceleaşi variabile ca şi relaţia dată iniţial,fiecare produs conţinând toate variabilele posibile (ele saucomplementarele lor) iar formă normală conjunctivă, o relaţieechivalentă care este un produs de sume elementare, construitedeasemenea cu aceleaşi variabile ca şi relaţia dată iniţial, fiecaresumă conţinând toate variabilele posibile (ele sau complementarelelor).Exemplu : consider ăm o funcţie logică de trei variabile : x, y ş
În tabel, valorile funcţiei f(x,y,z) sunt puse la întâmplare, deoarece exemplul serecare. În această situaţie putem scrie forma normală disjunctivă aref
funr ă ţie
o:
funcţie o
( ) z xy z y x ++ (0.14)
i reprezintă acele combinaţii ale variabilelor de intrare pentru carenu (pentru zero se scrie variabila negată iar pentru unu variabila
yz x y x x ,
e enii funcţiec valo ea u
t
z + z = y, f
unde t rmfun ţia ia ar
nenega ă: z y x repr j t se i num
fiecare
om scrie forma normală disjunctivă pentru
ezintă combinaţia 010 iar f(010)=1). Termenii formei normaleesc şi mintermi (o expresie minterm este o sumă de produse în caredis unc ive ma
produs conine toate variabilele în formă adevărată sau negată).Pentru a obţine forma normală conjunctivă a funcţiei, bazându-ne pe principiul
dualităţii v )( xyz f :
xyz z y x z y x z y x xyz f +++=)( (0.15)
sau aplicând teorema dublei negaţii se obţine:
xyz z y x z y x z y x z y xyz f +++== ),)( (0.16)
aplicând teorema De Morgan (relaţia 0.12) extinsă la n variabile, rezult
x f ,(
ă :
( )( )( )( ) z y x z y x z y x z y x xyz f ++++++++=)( (0.17)
Relaţia 0.17 reprezintă forma normală conjunctivă a funcţiei care se poateirect din tabelul de adevăr prin considerarea combinaţiilor variabilelor de intrare pentru
de sume, fiecare sumă conţinând variabilaă dacă aceasta are valoarea zero
binaţia respectivă. Termenii formei normală conjunctive se mai nume maxtermi (o expresie maxterm este o expresie produs de sume în care fiecare sum
onţine toate variabilele sub formă adevărată sau negată).
y z f(x,y,z)x
0 0 0 00 0 1 00 1 0 10 1 1 11 0 0 11 0 1 01 1 0 11 1 01
obţine
dcare funcţia ia valoarea zero, ca un produsegată dacă aceasta are valoarea unu sau valoarea nenegatn
în com sc şiă
c
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 13/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 14
Forma normală conjunctivă s-a obţinut din forma normală disjunctivă prin plicarea principiului dualităţii şi deci cele două forme de exprimare a funcţiilor logicesunt echivalente.
Se observă că, FND conţine toţi termenii pentru care funcţia ia valoarea logică 1 iar
zintă numărul variabilelor funcţiei.
:
(0.19)
nde indicii termenilor S exprimă echivalentul zecimal al combinaţiilor cifrelor binarecorespunzător variabilelor pentru care funcţia are valoarea logică zero iar indicele
rmenului f reprezintă numărul variabilelor funcţiei.
a
FNC conţine toţi termenii pentru care funcţia ia valoarea logică 0.Există şi forma prescurtată de scriere a funcţiilor logice, forme numite : formă canonică normală disjunctivă şi respectiv formă canonică normală conjunctivă.
Pentru exemplul prezentat mai sus forma canonică normală disjunctivă se scrie :
64323 PPPP f +++= (0.18)
unde indicii termenilor P exprimă echivalentul zecimal al combinaţiilor cifrelor binarecorespunzător variabilelor pentru care funcţia are valoarea logică unu iar indiceletermenului f repre
Pentru cea de-a doua formă de exprimare a unei funcţii logice, forma canonică normală conjunctivă, tot pentru exemplul de mai sus, se poate scrie
75103 SSSS f =
u
teDupă modul în care au fost definiţi termenii P, respectiv S, reiese clar că:
ii SP = şi ii
În continuare vor fi prezentate câteva din teoremele aplicate
PS = (0.20)
funcţiilor logice scrise b forma canonică P, respectiv S, teoreme utile în analiza şi sinteza dispozitivelor
numerice.
(0.21)
eorema 2. Suma logică a doi termeni S oarecare este întotdeauna egală cu unitatea, a
ji ≠=+ ,1 (0.22)
n alt termen prin existenţa a cel puţin a complementului unei variabile, şi cum
su
Teorema 1. Produsul logic a doi P oarecare este nul, adică:
ji pentruPP ≠=⋅ ,0 ji
T dică:
S ji pentruS
Se observă, f ăr ă dificultate, că fiecare termen P sau S din cei posibili ai unei funcţii logiceifer ă de ud
0=⋅ x x , respectiv 1=+ x x (existenţa complementului,irect cele două teoreme enunţate anterior.
axioma 6, relaţia 0.7), rezultă
. O funcţie logic n variabile poate fi reprezentată printr-o sumă logică unic
d
Teorema 3
aă de ă
termenilor P :
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 14/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 15
∑−
=
=12
0
n
i
iin Pa f (0.23)
Teorema 4. O funcţie logică de n variabile poate fi reprezentată printr-un produs logic unica termenilor S :
( )∏ +=−
=
iin Sa (0.24)
relaţii coeficienţii ai se numesc numere caracteristice ale unei funcţiigice şi reprezintă valoarea funcţiei logice respective pentru combinaţia i a variabilelor de
intrare. Pentru exemplul de mai sus, numerele caracteristice ale funcţiei logice sunt :a1 = 0, a2 = 1, a3 = 1, a4 = 1, a5 = 0, a6 = 1, a7 = 0.
ă a termenilor P :
12n
f 0i
n ultimile douăÎ
loa0 = 0,
Teorema 5. Complementul unei funcţii logice de n variabile poate fi reprezentat printr-osumă logică unic
(0.25)∑−
=
=12
0
n
i
iinPa f
Teorema 6 . Complementul unei funcţii logice de n variabile poate fi reprezentat printr-un produs logic unic a termenilor S :
( )∏
−
=
iin Sa (0.26)
e se face apel la teorema lui De Morgan extinsă lavariabile. De exemplu pentru a justifica relaţia 0.25 se scrie relaţia 0.24 sub forma
+=
12n
f 0i
entru a demonstra ultimile două teoremP
n :
( ) ∑∏−
== 00 ii
iin
−
=+=1212 nn
ii SaSa (0.27)
u, în baza relaţiei 0.20 :
f
sa
∑−
=
=12
0
n
i
iinPa f (0.28)
Teorema 7 . Suma logică a 2n termeni distincţi a unei funcţii logice de n variabile este egală u unu :c
112
0
=∑−
=
n
i
iP (0.29)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 15/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 16
Teorema 8. Produsul logic al 2n termeni distincţi a unei funcţii logice de n variabile esteegală cu zero :
=
−
0
12
∏0=
n
S
baza teoremelor 3 şi 5 se poate scrie :
ii (0.30)
În
(0.31)∑∑∑
−
=
−
=
−
=
=+=+=12
0
12
0
12
0
1nnn
i
i
i
ii
i
iinn PPaPa f f
deoarece 1=+i aa i . În acelaşi mod, conform teoremelor 4 şi 6, se poate scrie :
(0.32)( ) ( ) ∏∏∏−
=
−
=
−
=
=+⋅+=⋅=12
0
12
0
12
0
0nnn
i
i
i
ii
i
iinn SSaSa f f
eoarece 0=⋅ ii aa .d
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 16/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 17
CAPITOLUL 1
Analiza şi sinteza circuitelor logice combinaţionale
1.1. Introducere
Circuitele logice combinaţionale numite şi circuite de comutare combinaţionale,reprezintă circuitele logice cele mai simple, circuite logice de bază, denumite şi circuitelogice de ordinul zero care stau la baza tuturor celorlalte tipuri de ciruite logice.
Reprezentarea schematică a unui circuit logic combinaţional cu n+1 intr ări şi m+1 ieşiri este reprezentat în figura 1.1.
Un circuit logiccombinaţional secaracterizează prin aceea că starea ieşirilor, la un momentdat, depinde numai de stareaintr ărilor la acel moment detimp. Acest lucru este descrisde relaţiile 1.1 în care stareaieşirilor y0, y1, … ,ym
reprezintă m+1 funcţii de variabilele de intrare x0, x1, … , xn. Funcţiile care descriu astfelde circuite reprezintă funcţii binare conform celor prezentate in capitolul 1.
y0 = f 0(x0, x1, … , xn),
y1 = f 1(x0, x1, … , xn),…ym = f m(x0, x1, … , xn).
(1.1)
Circuitele logice combinaţionale pot fi construite cu relee sau cu elemente de
comutere asemănătoare releelor, respectiv cu elemente de comutare având comportareaunor por ţi logice similare celor prezentate in capitolul 2.
O situaţie particular ă importantă este reprezentată de către automatele programabile care permit modelarea prin program a circuitelor logice secvenţiale şicombinaţionale şi care reprezintă o soluţie convenabilă în cazul circuitelor numericedestinate automatizărilor complexe.
CIRCUIT LOGICCOMBINAŢIONAL
x0
x1 …xn
y0
y1 …ym
IN
TRĂ RI
IE
Ş IRI
Fig. 1.1. Schema bloc a unui circuit logic combinaţional
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 17/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 18
In cele ce urmează vor fi studiate numai circuitele logice combinaţionale realizatecu por ţi logice care primesc la intrare semnale numerice în logică pozitivă sau logică negativă şi furnizează la ieşire de asemenea semnale numerice într-un anumit tip de logică.
Semnalele numerice în logică pozitivă sunt semnalele numerice la care se asociază
un nivel ridicat de tensiune cifrei “1” (sau valorii de adevăr ADEVĂRAT) şi un nivelcobor ăt de tensiune cifrei “0” (sau valorii de adevăr FALS). În logica negativă, nivelele detensiune se inversează, se asociază un nivel coborât de tensiune – de obicei o tensiunenegativă cifrei “1” – (sau valorii de adevăr ADEVĂRAT) şi un nivel ridicat de tensiune – de obicei o valoare apropiată de zero volţi – cifrei “0” (sau valorii de adevăr FALS).
1.2. Elemente de analiză a circuitelor logice combinaţionale
Circuitele logice combinaţionale sunt, de regulă, reprezentate grafic, cu ajutorulschemelor logice combinaţionale cu por ţi logice similare cu cea prezentată în figura 1.2. Oastfel de schemă este utilă în analiza funcţionării circuitului dar, un astfel de circuit poate fireprezentat în scheme mai complexe cu ajutorul schemei bloc echivalente din figura 1.1,atunci când funcţionarea circuitului este cunoscută.
În general un circuit logic combinaţional are n+1 intr ări notate cu x0, x1, … , xn şi m+1 ieşiri y0, y1, … ,ym. Intr ările x0, x1, … , xn se aplică unor elemente logice ale căror ieşiri pot fi ieşiri ale reşelei sau intr ări pentru alte elemente logice din reţea.
În figura 1.2. se prezintă un circuit logic cu nouă intr ări şi trei ieşiri.
Fiecare element logic din reţea corespunde unei por ţi logice din circuitul decomutare modelat. În reţelele logice nu se admite legarea ieşirilor elementelor logice decât
prin intermediul altor elemente logice. Atunci când circuitul de comutare modelat conţine por ţi care au proprietatea funcţiilor logice cablate, se reprezintă simbolic în reţea elementullogic prin care sunt legate din punct de vedere funcţional ieşirile por ţilor respective.
Semnalele aplicate la intrarile unui circuit logic, parcurg, în general, mai multe por ţi până se obţin semnalele de ieşire. Acest lucru se reflectă în reţea prin numărulelementelor logice interpuse între intr ările şi ieşirile reţelei. Maximumul numarului deelemenete logice aflate între intr ările şi ieşirile unei reţele logice dă numărul de nivelurilogice al reţelei. Numerotarea nivelurilor se face, în mod convenţional, de la ieşire spre
intrare (figura 1.3). În reţelele de comutare combinaţionale sunt admise legături inverse,
X8
X4
X2
U3A
SN74S00/SO
1
23
Y1
U1A
SN74S00/SO
1
23
X3
U10A
SN74S86/SO
1
23
U6A
SN74S04
1 2
X0
U8A
SN74S04
1 2
U2A
SN74S00/SO
1
23
U4A
SN74S00/SO
1
23
U11A
SN74S86/SO
1
23
U7A
SN74S04
1 2
Y0X1
U9A
SN74S86/SO
1
23
X5
X7
X6
Y2
U5A
SN74S04
1 2
Fig. 1.2. Circuit realizat cu porţi logice
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 18/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 19
adică legarea ieşirii unui element logic la intr ările elementelor logice precedenteacestuia (fig. 1.4), cu condiţia să fie respectată definiţia 1.1. Trebuie menţionat însă că orice reţea cu elemente logice far ă legături inverse este combinaţională, în schimbnumai anumite reţele cu legături inverse satisfac această condiţie. Reţelele cu elemente
logice far ă legatur ă inversă se mai numesc grafuri booleene.Analiza unui circuit trebuie să înceapă cu stabilirea tipului acestuia. Aşa cum s-aar ătat mai sus, dacă circuitul nu are legături inverse atunci el este un circuit logiccombinaţional. În cazul în care circuitul are legături inverse (figura 1.4.), atunci, pentru a
putea spune că acesta este un circuit logic combinaţional, va trebui să analizăm dependenţasemnalelor de ieşire de cele de intrare şi să ar ătăm că ecuaţia 1.1. este respectată. Nuintotdeauna este foarte uşor să detectăm existenţa unei legături inverse într-un circuit maiales dacă acesta este complicat. Din acest motiv se va prezenta în continuare o regulă princare se poate determina existenţa legăturilor inverse la scheme oricât de complicate.
Existenţa unei legături inverse într-o reţea de comutare cu elemente logice se poate determina folosind următoarea regulă de numerotare a elementelor.
Regula 1.1.
a. Elementele reţelei ale căror intr ări fac toate parte din mulţimea intr ărilor reţelei,X={x1 x2,...,xn}, se numerotează, într-o ordine arbitrar ă, cu numerele 1 pina la k,
unde k este numărul elementelor ce îndeplinesc această condiţie.
b. Elementele reţelei ale căror intr ări sunt fie intr ări din mulţimea X, fie ieşiri aleelementelor numerotate, la punctul a respectiv b, se numerotează în continuarecu numerele k + 1 pâna la m, unde m - k este numărul elementelor ceîndeplinesc această condiţie.
c. Dacă procedând în acest fel s-au putut numerota toate elementele reţelei, adică m este numărul de elemente logice din reţea, rezultă că reţeaua nu are legăturiinverse. În caz contrar în reţea există cel puţin o legatur ă inversă.
Prin procedura de mai sus se face de fapt o ordonare par ţială a elementelor logice din reţea. Această ordonare nu este posibilă decât atunci când un anumit element
9
3
k
5
X3
10
1
X0
7
0
U3A
74LS02
2
31
1
8X4
U4A
74LS02
2
31
U12A
74LS04/SO
1 2
m
U8A
74LS08
1
23
U9A
74LS08
1
23
X1
4
U1A
74LS02
2
31
Y1
n
a
NIVELUL
6
U5A
74LS08
1
23
11
b
3
X2
U10A
74LS04/SO
1 2
12
e
c
f
U7A
74LS08
1
23
X6
d
Y0
U2A
74LS02
2
31
4
g
X5
U11A
74LS04/SO
1 2
U6A
74LS08
1
23
2
h
2
i
Figura 1.3. Reţea de comutare f ără legătură inversă
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 19/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 20
nu mai poate primi număr de ordine, deoarece unele din intr ările sale provin de laelemente nenumerotate care succed elementul dat, ceea ce înseamnă că există o legatur ă inversă.
Referindu-ne la schema din figura 1.3, regula de ordonare se aplică astfel :
por ţile 1 şi 2 se numerotează primele deoarece intr ările acestor por ţi fac parte dinmulţimea intr ărilor circuitului x1şi x2 respectiv x4 şi x5. Urmează apoi elementul care senumerotează cu 3 deoarece acesta are intrarea conectată la un element care a fost dejanumerotat (poarta numerotată cu 1), similar acestei situaţii este cea a elementului care afost numerotat cu 5, iar elementele numerotate cu 4, 6 şi 9 sunt conectate la elementedeja numerotate şi intr ări ale circuitului (poarta 1 şi intrarea x3, poarta 2 şi intrarea x6 şi,respectiv poarta 7 şi intrarea x0). Elementele numerotate cu 7 , 8, 10, 11 şi respectiv 12
pot şi ele numerotate succesiv, în această ordine, deoarece intr ările acestor elementesunt conectate la elemente deja numerotate.
Pentru acest exemplu m = 12, toate elementele circuitului au putut fi numerotateşi deci nu există nici o legătur ă inversă iar circuitul este combinaţional, adică starea
ieşirilor la un moment dat nu depinde decât de starea intr ărilor la acel moment (relaţia1.1).
Aplicind regula 1.1, definită mai sus, pentru reţeaua din figura 1.4 se constată că nu este posibilă o ordonare par ţială a tuturor elementelor reţelei şi prin urmare reţeauaare o legatur ă inversă.
Pentru reţelele la care se poate face o ordonare par ţială a elementelor, deci carenu au legaturi inverse, se poate scrie expresia ieşirii fiecarui element logic, în ordineanumerotării acestora, ca o funcţie de comutare de variabilele de intrare ale reţelei, deunde rezultă că şi în expresia ieşirii intr ă numai variabilele de intrare ale reţelei. Funcţiade comutare a unei asemenea reţele depinde deci numai de variabilele de intrare, prinurmare reţeaua este combinaţională. Pentru reţeaua logică din figura 1.3 se obtine :
21 x xa += (1.2)
54 x xb += (1.3)
21 x xac +== (1.4)
( ) 3213 x x x xad ⋅+=⋅= (1.5)
54 x xbe +== (1.6)
) 6216 x x x xc f ⋅+=⋅= (1.7)
( ) 54323154321 x x x x x x x x x x xed g ++⋅+⋅=++⋅+=+= (1.8)
54 x xeh +== (1.9)
54323100 x x x x x x x g xi ++⋅+⋅⋅=⋅= (1.10)
( ) ) 62154 x x x x x f hk ⋅+⋅+=⋅= (1.11)
( ) ( ) ( )11 054323100 +⋅++⋅+⋅=+⋅=+== x x x x x x x x g g i ym (1.12)
( ) ( ) 621545432311 x x x x x x x x x x xk g yn ⋅+⋅+⋅++⋅+⋅=⋅== (1.13)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 20/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 21
Din relaţia (1.12) rezultă că y0 iar din relaţia (1.13) rezultă că y1 depind numai devariabilele de intrare ale reţelei şi deci reteaua din figura 1.3 este o reţeacombinaţională.
La reţelele care au legături inverse, expresia ieşirii se poate scrie numai dacă se
introduc variabile de intrare secundare datorate legăturilor inverse.Pentru ca o astfel de reţea să fie combinaţională trebuie ca funcţiile de ieşire areţelei să depindă numai de variabilele de intrare principale adică să fie respectată ecuaţia 1.1. şi deci variabilele de intrare secundare sunt neesenţiale. Demonstrareaadestui lucru se poate face prin construirea tabelului de adevăr a funcţiei date, în care setrec toate combinaţiile posibile ale variabilelor de intrare principale cât şi a celor secundare. Dacă din acest tabel rezultă faptul că valorile funcţiei de ieşire a circuituluidepind numai de valorile variabilelor principale iar valoile variabilelor secundare nu aunici o influenţă asupra ieşirii, atunci funcţia analizată este combinaţională.
Din cele ar ătate rezultă că oricarei reţele de comutare combinaţională cu legaturiinverse îi corespunde cel puţin o reţea de comutare combinaţională far ă legătur ă inversă.
Să consider ăm circuitul din figura 1.4. Vom încerca să realizăm o ordonare par ţială a elementelor acestui circuit conform regulii 1.1. Se constată faptul că numerotarea tuturor elementelor circuitului eşuează şi deci există cel puţin o legătur ă inversă. În această situaţie, pentru a vedea dacă circuitul este combinaţional, seconstruiesc tabelele de adevăr a funcţiilor de ieşire.
Funcţia logică a ieşirii y0 este combinaţională pentru că toate elementele aferenteacestei ieşiri au putut fi numerotate. Funcţia de ieşire y0 rezultă imediat :
2100 x x x y ⋅⋅= (1.14)
Pentru ieşirea y1 se construieşte tabelul de adevăr 1.1. în care s-au introdus
variabilele principale x0, x1, x2 şi variabila secundar ă Xa. După realizarea tabelului, prininspectarea acestuia, ne putem da seama de modul în care o variabilă influenţează ieşirea. Pentru a putea observa mai uşor influenţa variabilei secundare Xa asupra ieşiriiy1, se aşază alăturat valorile de ieşire pentru situaţia când variabila Xa ia valoarea zeroşi valorile de ieşire pentru variabila secundar ă egală cu unu. Dacă variabila secundar ă nu influenţează ieşirea, atunci cele două coloane trebuie să fie identice.
2
U5D
74LS08/SO
12
1311
U3C
74LS08/SO
9
108
1
U6A
74LS260/SO
123
1213
5
4 Y0
U1A
74LS08/SO
1
23
3
C
?
B
Y1
A D
Xa
E
X1
X0
?
U4A
74LS08/SO
1
23
U2B
74LS08/SO
4
56
X2
Fig. 1.4. Circuit logic cu conexiune inversă
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 21/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 22
TABELUL 1.1.x2 x1 x0 Xa A=x0x1 B=x1x2 C=x0x2 D=x0x1x2 E=x1x2Xa y1
0 0 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0 10 1 1 0 1 0 0 0 0 01 0 0 0 0 0 0 0 0 11 0 1 0 0 0 0 0 0 11 1 0 0 0 1 1 0 0 01 1 1 0 1 1 1 1 0 0x2 x1 x0 Xa A=x0x1 B=x1x2 C=x0x2 D=x0x1x2 E=x1x2Xa y1
0 0 0 1 0 0 0 0 0 10 0 1 1 0 0 0 0 0 10 1 0 1 0 0 0 0 0 1
0 1 1 1 1 0 0 0 0 01 0 0 1 0 0 0 0 0 11 0 1 1 0 0 0 0 0 11 1 0 1 0 1 1 0 1 01 1 1 1 1 1 1 1 1 0
Se observă că în tabelul 1.1 coloana y1 r ămâne neschimbată atunci când variabila Xa ia valoarea zero sau valoarea unu şi deci această variabilă secundar ă este neesenţială.Putem să scriem acum şi funcţia combinaţională de ieşire y1:
( )
202110
20212102102021101 1
x x x x x x
x x x x x x x x x x x x x x x x y
++=
=+++=+++=
(1.15)
Având în vedere faptul că reţelele de comutare cu elemente logice, far ă legatur ă
inversă sunt reprezentative pentru reţelele combinaţionale cu elemente logice, în cele ceurmează se trateaza numai acestea.
Re ţ elele de comutare combina ţ ionale cu elemente logice cu o singur ă ie şire, la
care fiecare dintre intr ările re ţ elei se aplică la un singur element logic, iar ie şirea unuielement logic poate fi aplicat ă ca intrare la un singur element logic, se nume şte arboreboolean. Arborele boolean este un caz particular al grafului boolean. Un exemplu dearbore boolean este dat in figura 1.5
x1
x4
U1A
7408
1
23
bU2A
7432
1
23
c
a
y0
x2
U4A
7408
1
23
U3A
7432
1
23x0
x3
Figura 1.5. Reţea combinaţională sub formă de arbore boolean
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 22/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 23
Pentru analiza unui arbore boolean se poate folosi o metodă formală care constă în găsirea unei acoperiri a mulţimii n-uplelor funcţiei logice pentru care aceasta iavaloarea unu.
Se va exemplifica această metodă pe circuitul din figura 1.5. construindu-se
tabelul 1.2. Tabelul construit va conţine toate variabilele principale ale funcţiei (x0, x1,x2, x3, x4,), variabilele secundare (a, b, c) şi ieşirea circuitului (y0).
TABELUL 1.2.x4 x3 x2 x1 x0 a b c y0 Observaţii
1 12 1 1 y0 = a b
x 1 13
1 x 1a = x0 + x1
1 x 1 xx x 1 11 1 x x4x 1 x 1
b = x2 + c
x x 1 x 11 1 x x 1x x 1 1 x
5
1 1 x 1 x
c = x3 x4
Tabelul 1.2 se completează astfel: pe rândul unu se trece cifra unu pe coloana y0 simbolizându-se asfel faptul că se vor determina combinaţiile variabilelor de intrare
pentru care funcţia ia valoarea unu. Pe rândul doi se trec valorile variabilelor de pe
nivelul zero care determină valoarea unu la ieşire. Acestea vor fi: unu pentru variabilasecundar ă a şi unu pentru varibila secundar ă b. Deoarece numai această combinaţie avariabilelor a şi b conduc la valoarea unu a funcţiei de ieşire y0, se trece la rândul treiunde se vor determina combinaţiile variabilelor principale pentru care variabilasecundar ă a ia valoarea unu. Aşa cum se vede, sunt posibile 2 combinaţii pentruvariabilele principale x0 şi x1: variabila x0 ia valoarea unu şi atunci x1 poate avea oricevaloare (se notează cu x – indiferent) sau, cind x1 ia valoarea unu şi atunci x0 poate aveaorice valoare (x – indiferent). Se trece acum la rândul patru care determină combinaţilevariabilelor care duc la variabila b egala cu unu. Sunt doua posibilităţi: x2 egal cu unu şivariabila c poate avea în acest caz orice valoare sau c egal cu unu şi atunci x2 poate aveaorice valoare. Aceste două posibilităţi se aplică celor două combinaţii determinate la
rândul trei şi rezultă patru combinaţii posibile.La rândul cinci se explicitează variabila c pentru care nu există decât doua
posibilităţi: variabila c poate lua orice valoare şi atunci şi x3 şi x4 pot lua orice valoaresau variabila c ia valoarea unu li atunci x3 = x4 = 1.
În momentul in care au fost explicitate toate variabilele secundare, completareatabelului a fost terminată şi sa găsit o acoperire a funcţiei pentru care aceasta ia valoareaunu. Funcţia poate fi scrisă ca o sumă de produse a combinaţiilor găsite, din care seelimină variabilele principale notate cu x (care pot avea orice valoare) şi se notează cuvariabila directă variabila principală egală cu unu şi cu variabila negată cea egală cuzero în tabel. Pentru exemplul dat se obţine (forma normală disjunctivă):
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 23/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 24
13412034020 x x x x x x x x x x y +++= (1.16)
Printr-o metodă similar ă – căutându-se combinaţiile variabilelor principale
pentru care funcţia este egală cu zero – se poate determina funcţia de ieşire sub forma
unui produs de sume.Pentru a exemplifica acest lucru vom considera schema din figura 1.6. Vom
căuta de data aceasta o acoperire a n-uplelor funcţiei logice pentru care aceasta iavaloarea zero. Se construieşte tabelul 1.2 similar tabelului 1.1. în care se trec variabilele
principale şi cele secundare pe coloane iar pe rânduri combinaţiile acestora pentru carefuncţia ia valoarea zero.
TABELUL 1.3.x5 x4 x3 x2 x1 x0 a b c d y0 Observaţii
1 0
2 1 1 cd y =0 0 x 1
3x 0 1 54 x xc =
0 x 1 xx 0 1 x0 x x 1
4
x 0 x 1
bad +=
0 x x x 1x 0 x x 10 x 1 1 x
5
x 0 1 1 x
23 x xb =
0 x x x 1 1x 0 x x 1 10 x 1 1 x x
6
x 0 1 1 x x
10 x xa =
În rândul 6 completarea tabelului se încheie deoarece combinaţiile tuturor variabilelor principale au fost precizate. În acest moment putem scrie ecuaţia funcţiei deieşire ca un produs de sume în care variabilele de intrare care iau valoarea zero suntscrise direct iar cele care iau valoarea unu sunt scrise negat (ecuaţia 1.18, forma normală conjunctivă):
X1
U7A
14093
1
23
Y0
U5A
14081
1
23
X5
b
aU3A
14081
1
23
X4
X0
X2
U8A
14011
1
2
3
X3
dU6A
14071
1
23
c
Figura 1.6. Arbore boolean
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 24/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 25
( ) ( ) ( ) ( )2342350140150 x x x x x x x x x x x x y ++++++++= (1.18)
Verificarea corectitudinii rezultatului se poate face prin intermediul unui
program care să genereze toate combinaţiile posibile ale variabilelor principale, să calculeze valorile ecuaţiei (1.18) şi să le compare cu valorile obţinute pentru funcţia deieşire a circuitului din figura 1.6 a cărui ecuaţie poate fi scrisă imediat conform por ţilor logice şi conexiunilor ar ătate în figur ă:
( ) 5432100 x x x x x x y += (1.19)
În continuare se prezintă un program scris în limbaj de programare PASCAL
pentru compararea ecuaţiei (1.18) cu ecuaţia (1.19). S-a ales limbjul PASCAL datorită faptului că este foarte asemănător cu limbajul pseudocod şi programele pot fi foarte uşor înţelese chiar şi f ăr ă cunoaşterea limbajului.
PROGRAMUL 1.1.Program logic1;{se verifica daca ecuatia determinata pentru arbore boolean este corecta}
var y1,y2,x0,x1,x2,x3,x4,x5:boolean;
beginfor x5:= false to true dofor x4:= false to true dofor x3:= false to true do
for x2:= false to true dofor x1:= false to true dofor x0:= false to true do begin{ecuatia 1.19}
y1:=not (((x0 and x1) or (x2 and x3)) and ( not (x4 and x5)));{ecuatia 1.18}
y2:=(x5 or not x1 or not x0) and (x4 or not x1 or not x0) and (x5 or not x3 or not x2) and (x4 or notx3 or not x2);
if y1<>y2 then begin
writeln('Cele doua ecuatii nu sunt egale! Apasati ENTER');readln;
halt(1);end;end;writeln('Cele doua ecuatii sunt egale. Apasati ENTER');readln;end.
În cazul general al reţelelor sub formă de graf boolean se aplică aceeaşi procedur ă cu singura deosebire că intr ările, respectiv ieşirile elementelor logice care seaplică la mai multe elemente logice se consider ă de mai multe ori (notate cu indici saucu prim, secund, ter ţ ş.a.m.d.), iar apoi se impune condiţia ca valorile obţinute să fieegale, respectiv se elimină subcuburile corespunzătoare liniilor pentru care variabilele
cu acelaşi nume nu au aceeaşi valoare.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 25/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 26
Vom exemplifica acest lucru pentru graful boolean din figura 1.7. care va fianalizat în tabelul 1.4.
În tabelul 1.4, datorită faptului că variabila principală x2 se aplică la intrarea a
două elemente logice, vom considera suplimentar variabilele x2’ şi x2’’ şi, similar, pentru variabila secundar ă a care la rândul ei se aplică la intările altor două elementelogice, vom considera, de asemenea variabilele secundare a’ şi a” .
TABELUL 1.4.x3 x2 x'2 x"2 x1 x0 a a' a" b c y0 Observaţii
1 11 x
2x 1
y0 = b + c
x x x 13
1 1 1 xc = a” x2” x3
x x 1 1 x41 1 x x 1
b = x0 a’
x x 1 15
1 1 x 1a = a’ = a”
x x x 1 1x 1 x x 11 x 1 1 x
6
1 1 1 x x
a = x1 + x2’
x x 1 1x 1 x 1
1 1 1 x7
1 1 x x
x2 = x2’ =
x2”
Până la rândul cinci completarea tabelului se face în modul discutat deja mai sus.În rândul cinci trebuie alese valorile pentru care a = a’ = a”. Sunt două situaţii: când a’ =1 şi a” = x şi când a’ = x şi a” = 1 adică sunt posibile urmatoarele cazuri a’ = 1şi a” = 0sau a’ = 1 şi a” = 1, respectiv a’ = 0 şi a” = 1 şi a’ = 1 şi a” = 1 (deoarece simbolul x semnifică „orice valoare” adică zero sau unu). Evident, singura soluţie posibila este a =a’ = a” = 1. Acelaşi raţionament este f ăcut pe rândul şapte când pentru x2’ = x şi x2” = xrezultă x2 = x în celelalte situaţii, ca şi pe rândul cinci, soluţia este x2 = x2’ = x2” = 0.
Putem acum să scriem acum forma normală disjunctivă a funcţiei de ieşire:
U1A 2 3 1
a''x2''
a Y0
a'
U3A
1
2
3
X1
c
X2
X0
U2A2
3
1
X3
b
x2' U4A
1
2
13
12
Figura 1.7. Reţea de comutare sub formă de graf boolean
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 26/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 27
( )
230201
12302012312302010 1
x x x x x x
x x x x x x x x x x x x x x x x y
++=
=+++=+++= (1.20)
1.3. Sinteza circuitelor logice combinaţionaleProblema sintezei circuitelor logice combinaţionale constă în realizarea fizică a
unei funcţii logice combinaţionale dată sub forma unui tabel de adevăr sau a unei funcţiicanonice.
Datorită faptului că există mai multe expresii echivalente pentru o funcţie logică, problema sintezei circuitelor logice va avea şi ea mai multe soluţii. În practică interesează în general acea soluţie care corespunde circuitului realizabil cu cost cât maimic, dar pot exista şi alte criterii cum ar fi cele de protecţie a informaţiei, siguranţă înfuncţionare etc.
Din acest punct de vedere sunt importante procedeele de minimizare a funcţiilor
logice combinaţionale care duc la găsirea celei mai avantajoase expresii pentru funcţiacombinaţională dată.De multe ori poate interesa realizarea funcţiei logice
combinaţionale cu ajutorul unui singur tip de poartă logică. Aşacum se ştie, există operaţii universale cu ajutorul cărora pot fiscrise in totalitate funcţiile logice. În continuarea se va ar ătamodul de realizare al unei funcţii logice al cărui tabel de adevăr este dat în tabelul 1.5. cu ajutorul por ţii logice ŞI-NU (NAND) acărei funcţie este o operaţie universală.Pentru funcţia logică a cărei tabel de adevăr este dat în tabelul1.5. putem scrie forma canonică normală disjunctivă:
01201201201275323 x x x x x x x x x x x x P P P P f +++=+++= (1.21)
sau forma canonică formal conjunctivă:
( ) ( ) ( ) ( )012012012012
64103
x x x x x x x x x x x x
S S S S f
++++++++=
== (1.22)
Plecând de la forma normală disjunctivă realizarea fizică a circuitului este ceadin figura 1.8.Pentru a realiza funcţia a cărei ecuaţie este dată de relaţia (1.21) numai cu por ţi
ŞI-NU, facem apel la teorema lui De Morgan extinsă la n variabile şi ecuaţia (1.21)devine :
0120120120120 x x x x x x x x x x x x y ⋅⋅⋅= (1.23)
TABELUL 1.5.x2 x1 x0 y0
0 0 0 0 0
1 0 0 1 02 0 1 0 1
3 0 1 1 1
4 1 0 0 0
5 1 0 1 1
6 1 1 0 07 1 1 1 1
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 27/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 28
Ecuaţie, care, aşa cum se vede, poate fi realizată fizic numai cu por ţi ŞI-NU.Pentru ca întreaga realizare fizică să conţină numai por ţi logice ŞI-NU, inversoarelefolosite în figura 1.8. pentru obţinerea variabilelor de intrare negate, se vor înlocui cu
por ţi ŞI-NU cu intr ările scurtcircuitate. Conform tabelului de adevăr al acestei funcţii,dacă pe toate intr ările por ţii se aplică aceeaşi valoare atunci se obţine un circuitinversor.
Rezultatul acestor transformări este prezentat în figura 1.9.Aşa cum rezultă din figura 1.9. pentru implementarea fizică a unei funcţii logice
combinaţionale, pe baza funcţiilor canonice, este necesar un număr relativ ridicat deelemente logice. Din acest motiv este important să se găsească procedee de simplificarea ecuaţiilor ce descriu funcţiile de ieşire ale circuitelor logice combinaţionale în vedereareducerii numărului de por ţi logice.
x0
x0
x2
x1
x1
x2
P2
x0
128
9P3
x1
P5
1 2
P7
x2
f3 = y0
x0
x2
x1
128
9
1 2
x2
x1
23
45
1
128
9
x0
x1
x0
1 2
x2
x1128
9
x0
x2
Figura 1.8. Realizarea fizică a funcţiei (3.21) cu ajutorul porţilor logice.
12
1312
2
34
x2
x2
x1
12
1312
x0
x0
12
1312
x0
x0
x1x2
x2
x0
x1
x1
P2
12
45
6
x2
2
34
2
34
P3
x0
P5
x1
P712
1312
f3 = y0
x2
x2
x0
x1
x1
Figura 1.9. Funcţie logică combinaţională realizată numai cu porţi ŞI-NU
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 28/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 29
1.4. Minimizarea funcţiilor logice combinaţionale
Se vor prezenta în continuare principalele metode de minimizare a funcţiilor logicecombinaţionale care, pe baza formelor canonice normale disjunctive sau normale
conjunctive, permit obţinerea unor forme mai simple a funcţiei, realizabile la un cost maiscăzut (cu un număr mai mic de por ţi logice mai simple).
1.4.1. Metoda minimizarii pe baza axiomelor si teoremelor algebrei booleene
Folosind axiomele şi teoremele algebrei booleene (paragraful 1.2), o funcţie booleană dată sub forma canonică disjunctivă sau sub forma canonică conjunctivă poatefi scrisă în cazul general sub o altă formă cu număr mai mic de termeni, respectiv factorielementari căreia îi corespunde o reţea cu cost mai redus. Această metodă deminimizare a funcţiei de comutare necesită din partea proiectantului multă îndemânare,ingeniozitate şi experienţă, motiv pentru care nu poate fi aplicată cu succes decât după o
practică îndelungată în proiectarea circuitelor de comutare. Unul dintre principaleledezavantaje ale metodei îl constituie faptul că obţinându-se prin calcule o anumitaformă a funcţiei nu se poate stabili cu uşurinţă dacă este forma minimă sau se mai poatesimplifica.
Pentru exemplificare vom considera un exemplu foarte simplu:
( ) 01201210020 x x x x x x x x x x y +++= (1.24)
aplicând teorema absorbţiei se obţine:
012012020 x x x x x x x x y ++= (1.25) grupăm acum ultimii doi termeni:
( )1102020 x x x x x x y ++= (1.26)
şi aplicăm axioma existenţei complementului:
( ) 022002020 x x x x x x x x y =+=+= (1.27)
Acest exemplu simplu indică faptul că prelucrarea unei funcţii poate duce lasimplificarea considerabilă a acesteia. În activitatea de simplificare a funcţiei logice uniitermeni pot fi multiplicaţi, bazându-ne pe teorema idempotenţei, în scopul grupăriiconvenabile a acestora şi reducerea unor variabile.
1.4.2. Metoda diagramelor Karnaugh
Folosirea unei forme speciale a diagramelor Venn, în scopul simplificarii cuajutorul acestora a funcţiilor logice combinaţionale a fost sugerată pentru prima oar ă decătre E. W. Veitch. La scurt timp M. Karnaugh propune de asemenea o formă
modificată a diagramelor Venn cu acelaşi scop. Astfel au rezultat diagramele denumite
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 29/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 30
diagrame Karnaugh. Diagramele Karnaugh sunt folosite curent pentru reprezentareafuncţiilor booleene cu numar relativ mic de variabile.
Aceste diagrame sunt utile pentru minimizarea funcţiilor booleene deoarece permit evidenţierea cu uşurinţă a unor identităţi de forma:
x xy =+
x y x xy =+
y x y x x +=+
(1.28)
În general, o diagramă Karnaugh pentru o funcţie booleana de n variabile se
desenează sub forma unui pătrat sau dreptunghi, împăr ţit în 2n compartimente, fiecarecompartiment fiind rezervat unui termen canonic al funcţiei, respectiv unuia dintre cele2n n-uple ale funcţiei sau vârfuri ale cubului n-dimensional din reprezentarea geometrică a funcţiei.
În acest fel, o diagramă Karnaugh va fi reprezentată printr-un tabel cu m linii şi p coloane care îndeplinesc condiţia m x p = 2n iar m + p = n. Capetele de tabel vor conţine combinaţiile posibile pentru variabilele funcţiei scrise în cod Gray. Aşezareavariabilelor pe linii şi coloane poate fi f ăcută în mai multe feluri, singura condiţie decare trebuie să se ţină seama este completarea corectă a tabelului. De asemenea laminimizarea funcţiei va trebui să se ţină seama de faptul că o diagramă Karnaugh este osuprafaţă închisă şi deci marginea de sus şi marginea de jos a tabelului precum şimarginea din stânga şi marginea din dreapta ale acestuia sunt adiacente (sunt lipite).
În continuare vom exemplifica modul de realizare a diagramei Karnaugh pentruo funcţie de patru variabile.
Vom considera tabelul de adevăr al funcţiei tabelul 1.6 (în acest tabel valorile
funcţiei sunt alese la întâmplare).
TABELUL 1.6.x3 x2 x1 x0 y0 x3 x2 x1 x0 y0 x3 x2 x1 x0 y0 x3 x2 x1 x0 y0
0 0 0 0 0 f(0)=0 4 0 1 0 0 f(4)=1 8 1 0 0 0 f(8)=0 12 1 1 0 0 f(12)=11 0 0 0 1 f(1)=1 5 0 1 0 1 f(5)=0 9 1 0 0 1 f(9)=0 13 1 1 0 1 f(13)=02 0 0 1 0 f(2)=1 6 0 1 1 0 f(6)=1 10 1 0 1 0 f(10)=1 14 1 1 1 0 f(14)=13 0 0 1 1 f(3)=0 7 0 1 1 1 f(7)=0 11 1 0 1 1 f(11)=1 15 1 1 1 1 f(15)=0
Conform acestui, tabel forma normală disjunctivă a funcţiei este:f 4 = P1 + P2 + P4 + P6 + P10 + P11 + P12 + P14 (1.29)
Tabelele Karnaugh posibil de construit pentru funcţia (1.29) sunt prezentete în
figura 1.10.Este evident faptul că există şi alte posibilităţi de aşezare a variabilelor pe liniile
şi coloanele tabelului în afar ă de cele ar ătate în figura 1.10.Tabelul se completează cu valorile funcţiei (zero sau unu) corespunzătoare
combinatiei variabilelor de intrare de pe linia şi coloana respectivă (figura 1.10 d.).
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 30/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 31
Codul Gray (codul binar reflectat), cod ce poartă numele celui care l-a imaginat,
a fost construit pe principiul ca două secvenţe vecine să difere într-o singur ă poziţie binar ă. Secvenţele codului Gray pot fi deduse din cele ale codului binar pe bazaurmătoarelor relaţii:
g0 = b0 ⊕ b1,g1 = b1 ⊕ b2,g2 = b2 ⊕ b3,g3 = b3 ,
(1.30)
unde g0, g1, g2, g3, sunt poziţiile unei secvenţe Gray scrise de la dreapta spre stânga, iar
b0, b1, b2, b3, sunt poziţiile codului binar scrise în ordinea ponderilor.Pentru exemplificare să consider ăm cifra 6 scrisă în cod binar:
b3 b2 b1 b0 0 1 1 0
Figura 1.10. a. b. c. Posibilităţi de realizare a tabelului Karnaugh pentru ofuncţie de patru variabile.d. Tabelul Karnaugh pentru funcţia descrisă de ecuaţia (1.29).
x1x0
x3x2
00 01 11 10
00 f(0) f(1) f(3) f(2)
01 f(4) f(5) f(7) f(6)
11 f(12) f(13) f(15) f(14)
10 f(8) f(9) f(11) f(10)
a.
x3x2
x1x000 01 11 10
00 f(0) f(4) f(12) f(8)
01 f(1) f(5) f(13) f(9)11 f(3) f(7) f(15) f(11)
10 f(2) f(6) f(14) f(10)
b.
x0
x3x2x1
0 1
000 f(0) f(1)
001 f(2) f(3)
011 f(6) f(7)
010 f(4) f(5)
110 f(12) f(13)
111 f(14) f(15)
101 f(10) f(11)100 f(8) f(9)
c.
x1x0
x3x200 01 11 10
00 0 0 1 1 3 0 2 1
01 4 1 5 0 7 0 6 1
11 121 130 150 141
10 8 0 9 0 111 101
d.
x1
x2
x3
x0
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 31/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 32
Pe baza relaţiilor (1.30) vom deduce succesiv valorile cifrelor binare dinsecvenţa de cod Gray:
g0 = b0 ⊕ b1 = 0 ⊕ 1 = 1,
g1 = b1 ⊕ b2 = 1 ⊕ 1 = 0,g2 = b2 ⊕ b3 = 1 ⊕ 0 = 1,g3 = b3 = 0.
Prin urmare, secvenţa Gray corespunzătoare cifrei 6 va fi:
g3 g2 g1 g0 0 1 0 1
Putem deduce de asemenea şi relaţiile de transformare din cod Gray în cod binar. Acestea sunt:
b0 = g0 ⊕ g1 ⊕ g2 ⊕ g3,
b1 = g1 ⊕ g2 ⊕ g3,
b2 = g2 ⊕ g3, b3 = g3,
(1.31)
Valorile cifrelor binare sunt uşor de calculat dacă facem observaţia că 1 ⊕ 1 = 0.
Rezultă că este suficient să număr ăm cifrele binare de unu din relaţia de calcul. Dacă acestea sunt în număr par, atunci rezultatul este zero, iar daca sunt în număr impar rezultatul este unu.
Pentru exemplificare vom considera numărul în cod Gray corespunzător cifrei 6verificând dacă se obţine acelaşi rezultat:
g1 g2 g1 g0 0 1 0 1
Folosind relaţiile de mai sus se obţine:
b0 = g0 ⊕ g1 ⊕ g2 ⊕ g3 = 1 ⊕ 0 ⊕ 1 ⊕ 0 = 0,
b1 = g1 ⊕ g2 ⊕ g3 = 0 ⊕ 1 ⊕ 0 = 1,
b2 = g2 ⊕ g3 = 1 ⊕ 0 = 1,
b3 = g3 = 0.
Deci numărul binar obţinut este:
b3 b2 b1 b0 0 1 1 0
adică cifra 6 de la care am pornit.0 diagramă Karnaugh este astfel organizată încât două compartimente vecine, pe
o linie sau pe o coloana, corespund la doi termeni canonici care difer ă numai printr-osingur ă variabilă, care apare într-unul dintre ei negată, iar în celalălt directă, respectiv la
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 32/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 33
două n-uple adiacente. Se consider ă vecine şi compartimentele aflate la capetele opuseale unei linii, respectiv coloane (marginile diagramei).
Pentru a putea reprezenta uşor funcţii date în mod convenţional prin indiciitermenilor canonici, se poate nota fiecare compartiment cu indicele termenului canonic
corespondent, ţinând cont de o anumită ordine a variabilelor.De obicei, diagramele pentru mai mult de patru variabile se construiesc dindiagrame de patru variabile, considerate diagrame elementare. Se pot construi însă diagrame Karnaugh pentru numar mai mare de variabile şi considerând ca diagrameelementare diagramele de trei variabile. În cazul diagramelor pentru mai mult de patruvariabile, două compartimente se consider ă vecine şi atunci când ocupă aceeaşi poziţieîn două diagrame elementare vecine, adică în două diagrame elementare alăturate sauaflate la extremitaţi pe o aceeaşi linie sau coloană.
Diagramele Karnaugh pentru mai multe variabile se pot construi şi sub forma uneisingure diagrame elementare dacă se foloseşte pentru notarea rândurilor şi coloanelor codul Gray (figura 1.11). În acest fel se asigur ă că oricare două compartimente alăturate
sau aflate la extremităţile unei linii sau coloane să fie adiacente.
După ce tabelul a fost completat, prin scrierea valorii unu în celulelecorespunzătoare termenilor canonici ai funcţiei, dată sub forma normală disjunctivă, se poate trece la minimizarea funcţiei.
Doi termeni canonici care difer ă numai prin aceea că într-unul din aceştia una dinvariabile apare negată, iar în celălalt nenegată, apar în tabelul Karnaugh în celule vecine,deci se recunoaşte uşor că sunt adiacenţi. Aceşti doi termeni se pot înlocui cu un termennormal în care variabila, prin care cei doi termeni canonici difer ă, lipseşte.
Să consider ăm exemplul prezentat mai sus (figura 1.10 d). Dacă luăm termeniicanonici corespunzători celulelor numerotate cu 4 şi 12 (care sunt P4 şi P12), putem scrie:
( ) 0120123301230123 x x x x x x x x x x x x x x x x =+=+ (1.32)
Figura 1.11. Tabelele Karnaugh pentru a. funcţii cu 5 variabileb. funcţii cu 6 variabile.
x0x1x2
x3x4 000 001 011 010 110 111 101 100
00 f(0) f(4) f(6) f(2) f(3) f(7) f(5) f(1)
01 f(16) f(20) f(22) f(18) f(19) f(23) f(21) f(17)
11 f(24) f(28) f(30) f(26) f(27) f(31) f(29) f(25)
10 f(8) f(12) f(14) f(10) f(11) f(15) f(13) f(9)
a.
x0x1x2 x3x4x5
000 001 011 010 110 111 101 100
000 f(0) f(4) f(6) f(2) f(3) f(7) f(5) f(1)
001 f(32) f(36) f(38) f(34) f(35) f(39) f(37) f(33)011 f(48) f(52) f(54) f(50) f(51) f(55) f(53) f(49)
010 f(16) f(20) f(22) f(18) f(19) f(23) f(21) f(17)
110 f(24) f(28) f(30) f(26) f(27) f(31) f(29) f(25)
111 f(86) f(90) f(92) f(88) f(89) f(93) f(91) f(87)
101 f(40) f(44) f(46) f(42) f(43) f(47) f(45) f(41)
100 f(8) f(12) f(14) f(10) f(11) f(15) f(13) f(9)
b.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 33/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 34
În reprezentarea geometrică a unei funcţii booleene, doi termeni canonici careindeplinesc condiţia de mai sus corespund la două noduri adiacente, deci definesc o laturaa cubului n-dimensional. Din acest motiv se spune că două compartimente vecine sauadiacente pe diagrama Karnaugh reprezintă un subcub 1-dimensional. Un grup de patru
compartimente dintre care fiecare este vecin cu alte două compartimente din acelaşi grup,formează un subcub 2-dimensional. În acest caz cei patru termeni canonici corespunzătoriacestor compartimente au o parte comună formată din doua variabile. În baza axiomeiexistenţei elementului neutru, acesti patru termeni pot fi inlocuiţi cu partea lor comună. Deexemplu în figura 1.10. d. termenii canonici P2, P6, P14, şi P10 se grupează aşa cum se arată în ecuaţia următoare:
( )( ) ( )[ ] 0101223223
0123232323
0123012301230123
x x x x x x x x x x
x x x x x x x x x x
x x x x x x x x x x x x x x x x
=+++=
=+++=
=+++
(1.33)
În cazul general, termenii canonici care formează un subcub bidimensional se pot
înlocui cu un termen normal având cu doua variabile mai puţin decit termenii canonici. Peo diagramă de patru variabile se pot forma şi subcuburi tridimensionale care cuprind optcompartimente astfel grupate încât fiecare din ele este vecin cu alte trei din acelasi grup.
În figura 1.12. sunt date câteva exemple de formare a subcuburilor.
Figura 1.12. a.
Figura 1.12. b.
Figura 1.12. c.
1
1
x1
x2
x0
x31 1
x1
x2
x0
x3
1
1
x1
x2
x0
x3
1 1
x1
x2
x0
x3
1 11 1
x1
x2
x0
x3
1 1
1 1
x1
x2
x0
x3
1 1
1 1
x1
x2
x0
x3
1111
x1
x2
x0
x3
1 11 11 11 1
x1
x2
x0
x31 1 1 11 1 1 1
x1
x2
x0
x3
1 1 1 1
1 1 1 1
x1
x2
x0
x3
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 34/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 35
Figura 1.12. d.
Figura 1.12. Reprezentarea pe diagrame Karnaugh a subcuburilora. unidimensionaleb. bidimensionalec. tridimensionaled. eronate
Determinarea termenului echivalent unui subcub se poate face în felul următor:ne deplasăm de-a lungul suprafeţei subcubului şi observăm care sunt variabilele care-şischimbă valoarea în interiorul suprafeţei subcubului iar acele variabile se elimină dintermenul final. Termenul final, echivalent subcubului, va conţine toate variabilele carenu-şi schimbă valoarea în interiorul suprafeţei acelui subcub. Un subcub 1-dimensional
permite eliminarea unei variabile, un subcub 2-dimensional va permite eliminarea adouă variabile şi aşa mai departe. Pentru o funcţie cu n variabile subcubul dedimensiune maximă este (n-1)-dimensional, cu excepţia cazului când este vorba defuncţia unar ă (f ≡ 1) şi avem un subcub n-dimensional.
Pe o diagramă care reprezintă o anumită funcţie booleană se pot forma în modular ătat mai sus subcuburi de diverse dimensiuni. Un subcub care nu este inclus într-unsubcub de dimensiune mai mare se numeste implicant prim al funcţiei date. Formând
suma booleana a tuturor implicanţilor primi ai unei funcţii date se obţine o formă disjunctivă a acesteia, care în cazul general este mult mai simplă decât forma canonică disjunctivă a aceleiaşi funcţii. Pentru a găsi implicanţii primi ai unei funcţii reprezentată
pe diagrama Karnaugh, compartimentele marcate cu unu trebuie astfel grupate încât să se obţină subcuburi cu dimensiunea cea mai mare posibilă. Astfel, pe o diagramă de patru variabile se va căuta să se formeze în primul rând subcuburi tridimensionale, apoiîn ordine, subcuburi bidimensionale şi unidimensionale.
Pentru exemplificare vom considera funcţia dată de ecuaţia 1.29 pentru carediagrama Karnaugh este cea prezentată în figura 1.10. d. Subcuburile ce pot fi formate
pe această diagramă sunt ar ătate în figura 1.13.
1 1 11
x1
x2
x0
x3
11
11
x1
x2
x0
x3
11 11
x1
x2
x0
x3
1
11
1
x1
x2
x0
x3
x1x0
x3x200 01 11 10
00 0 1 0 1*
01 1* 0 0 1
11 1 0 0 1
10 0 0 1* 1
Figura 1.13. Diagrama Karnaugh pentru funcţia dată de ecuaţia 1.28
01 x x
0123 x x x x
012 x x x
123 x x x
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 35/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 36
Nu toţi implicanţii primi ai unei funcţii sunt necesari pentru definirea acesteia.Unii dintre implicanţii primi pot fi termeni redundanţi la care se poate renunţa, obţinândastfel o formă mai simplă a funcţiei. Prin urmare, se pune problema alegerii unui număr minim de implicanţi primi din mulţimea implicanţilor primi ai unei funcţii booleene
care să includă însă toţi termenii canonici ai funcţiei. Problema alegerii acestui set deimplicanţi este o problemă de acoperire cu cost minim. Expresia unei funcţii booleene încare intr ă un număr minim din implicanţii săi primi se numeşte forma minimă disjunctivă a funcţiei. Dacă un termen canonic al funcţiei este inclus într-un singur implicant prim, din mulţimea de implicanţi primi ai funcţiei, acela devine implicant
prim esenţial şi trebuie să apar ă obligatoriu în forma minimă disjunctiva a funcţiei.Pentru găsirea formei minime disjunctive trebuie deci determinant în primul rândimplicanţii primi esentiali. Pentru aceasta se marchează pe diagramă într-un modspecial, de exemplu cu asterisc, acele celule notate cu unu care sunt incluse într-unsingur implicant prim (figura 1.13). Trebuie menţionat însă faptul că în figura 1.13. nuau fost marcaţi toţi implicanţii primi ai funcţiei, dar pentru claritate s-a renunţat la
marcarea unei păr ţi ai acestora. Implicanţii primi care conţin compartimente marcate cuasterisc devin esenţiali. Compartimentele însemnate cu unu, r ămase neacoperite de cătreimplicanţii primi esenţiali, se cauta să se acopere folosind un număr cât mai mic dinimplicanţii funcţiei care au mai r ămas. Din cele prezentate mai sus rezultă că formaminimă disjunctivă a funcţiei dată de relaţia (1.29) este:
0123123012014 x x x x x x x x x x x x f +++= (1.34)
Pentru a vedea care din formele: normală disjunctivă sau normală conjunctivă
ofer ă forma de cost minim, trebuie să găsim şi forma minimizată normală conjunctivă.
0 metodă simplă de determinare a formei minime conjunctive este aceea acăutarii formei minime disjunctive pentru negata funcţiei date şi negarea acesteia.Pentru exemplificare se ia tot funcţia dată prin diagrama Karnaugh din figura 1.13. Negata acestei funcţii este dată prin compartimentele marcate cu zero. Aplicând metoda
de minimizare prezentată, pentru functia 4 f , unde 4 f este dată de relaţia (1.29), se
obţine pentru această formă, relaţia (1.35), determinată cu ajutorul diagramei din figura1.14.
020130130124 x x x x x x x x x x x f +++= (1.35)
112 x x x
013 x x x
02 x x
013 x x x
x1x0
x3x2 00 01 11 1000 *0 1 *0 1
01 1 *0 0 1
11 1 0 0 1
10 0 *0 1 1
Figura 1.14. Determinarea formei minime normal conjunctive
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 36/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 37
de unde rezultă forma normală conjunctivă a formei cu ecuaţia (1.29):
( ) ( ) ( ) ( )0201301301244 x x x x x x x x x x x f f +++++++== (1.36)
Concluzie. Folosind metoda diagrameolor Karnaugh se poate obţine forma
minimă disjunctivă sau conjunctivă astfel:
1) se construieşte diagrama ;2) se caută implicanţii primi ;3) se determină implicanţii primi esenţiali ;4) termenii canonici care nu sunt incluşi în implicanţii primi esenţiali se
acoper ă cu un număr cât mai mic de implicanţi primi ;5) forma minimă normală disjunctivă sau conjunctivă va conţine toţi
implicanţii primi esenţiali şi implicanţii primi neesenţiali ce conţin
termeni canonici ce nu sunt incluşi în implicanţii primi esenţiali.Aşa cum s-a ar ătat, metoda diagramelor Karnaugh, deşi este o metodă foarte
simplă şi eficientă de minimizare a funcţiilor logice, ea nu poate fi aplicată decâtfuncţiilor cu un număr redus de variabile (cel mult şapte-opt).
Pentru minimizarea funcţiilor cu un număr mai mare de variabile se recurge laalte metode, algebrice sau tabelare, una dintre acestea fiind descrisă în paragrafulurmător.
1.4.3. Metoda Quine-Mc Cluskey
Metoda Quine-Mc Cluskey este o metodă algebrică de minimizare a funcţiilor booleene cu un număr mare de variabile, pentru care metoda diagramelor Karnaugh suntgreu de utilizat.
Această metodă, care se bazează pe acelaşi principii ca şi metoda diagramelor Karnaugh, este mai uşor de aplicat funcţiilor cu număr mare de variabile deoarecemetoda presupune construcţia succesivă a unor tabele pâna la determinarea formeiminime a funcţiei. Algoritmul care stă la baza metodei Quine-Mc Cluskey poate fifoarte uşor programat ceea ce permite minimizarea automată a funcţiilor de maridimensiuni.
Metoda se aplică în doi paşi:
1. în primul pas se determină implicanţii primi ai funcţiei ;2. în pasul al doilea se determină implicanţii primi esenţiali care să dea o
acoperire de cost minim a funcţiei.
Prezentăm în continuare algoritmul de determinare a implicanţilor primi a uneifuncţii logice combinaţionale dată sub forma normală disjunctivă.
Algoritmul 1.1.
a) Se porneşte de la forma canonică disjunctivă a funcţiei în care termeniicanonici sunt daţi fie sub forma unui produs de variabile fie prin notaţia simbolică.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 37/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 38
Fiecare termen canonic este reprezentat apoi sub forma unui număr binar, prinn uplul de zerouri şi unităţi corespondente termenului respectiv.
b) Termenii canonici astfel înscrişi se împart în grupe, în funcţie de pondereaacestora, adică de numărul cifrelor unu cuprinse în upul respectiv.
c) Grupele de termeni canonici sunt aranjate pe o coloană, în ordinea crescătoarea ponderilor.d) Se compar ă fiecare termen al unei grupe cu toţi termenii grupei de pondere
mai mare cu o unitate. Dacă numerele binare respective sunt adiacente, cei doi termenise pot asocia formând un cub 1 dimensional, notat printr un număr binar care are pe
poziţia prin care cei doi termeni componenţi difer ă, un simbol « x », ceea ce semnfică faptul că variabila corespondentă acelei poziţii lipşeşte; cei doi termeni care au formatsubcubul rezultat se înscrie pe o nouă coloană. Toţi termenii normali (subcuburile 1 dimenionale) rezultaţi în urma compar ării a două grupe din coloana temenilor canoniciformează o grupă în coloana subcuburilor 1 dimensionale. Prin urmare, coloanacuburilor 1 dimensionale va conţine în cazul general cu o grupă mai puţin decât
coloana termenilor canonici (a cuburilor 0 dimensionale).e) Se ia n=1. Se compar ă fiecare termen a unei grupe din coloana sucuburilor 1
dimensionale cu toţi termenii grupei cu pondere mai mare cu o unitate. Pentru ca doiasemenea termeni să se poată asocia formând un subcub (n+1) dimensional trebuie caîn ambii termenii simbolurile « x » să fie pe aceleaşi poziţii. Doi termeni careîndeplinesc această condiţie şi sunt adiacenţi se asociază formând un subcub(n+1) dimensional care se notează cu un nuămăr binar în care apare încă un « x » pe
poziţia prin care cei doi termeni difer ă. Termenii care formează acest subcub se bifează,iar subcubul (n+1) dimensional se înscrie pe o nouă coloană, coloana subcuburilor (n+1) dimensional, care în cazul general are o grupă ai puţin decât cloana subcuburilor n dimensionale. Dacă se obţine de mai multe ori un anumit termen acesta se consider ă o singur ă dată.
f) Se măreşte n cu o unitate şi se repetă punctul e) până când subcuburile ultimeicoloane nu se mai pot asocia în scoul formării unui subcub de dimensiune superioar ă.
Termenii r ămaşi nebifaţi în coloanele rezultate formează grupul implicanţiilor primi ai funcţiei considerate.
Pentru exemplificare vom considera funcţia logică combinaţională a căreiecuaţie sub forma canonică normală disjunctivă este prezentată în (1.37) :
31302827262422191817
151311987642105
P P P P P P P P P P
P P P P P P P P P P P f
++++++++++
+++++++++++= (1.37)
Pentru claritatea exemplului s-a ales o funcţie de complexitate relativ redusă
care ar putea fi minimizată şi cu ajutorul giagramei Karnaugh.Se întocmeşte tabelul subcuburilor 0-dimensionale (tabelul 1.7) pe baza formei
normale disjunctive a funcţiei sau pe baza tabelului de adevăr a acesteia şi cel alsubcuburilor 1-dimensionale (tabelul 1.8) pe baza tabelului 1.7.
După cum se poate observa, în tabelul 1.7 toţi termenii sunt bifaţi, ceea ceînseamnă că fiecare termen a putut fi grupat cu cel puţin un alt termen şi deci nici untermen din acest tabel nu va apare în forma minimă a funcţiei.
Pe baza tebelului 1.8 se construieşte tabelul 1.9., tabelul subcuburilor 2-dimensionale, grupând termenii care au simbolul « x » pe aceeaşi poziţie şi care difer ă
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 38/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 39
numai printr-o cifr ă binar ă. În acest tabel s-au notat între paranteze termenii care serepetă.
După completareatabelului 1.9., algoritmulde căutare a implicanţilor
primi se incheie deoarecenici un termen din acesttabel nu mai poate figrupat.
Observaţie: doitermeni canonici dincoloana subcuburilor
zero dimensionali se potasocia dacă diferenţa între indicele termenului din grupa cu ponderea i 1 este un număr întreg, pozitiv şi egal cu putere a lui doi. Puterea lui 2 indică poziţia din numărul binar
pe care apare simbolul « x ».În cazul cloanelor subcuburilor de dimensiune mai mare ca zero, pentru ca două
subcubri f ăcând parte din grupa a căror pondere difer ă cu o unitate să se poată asocia,treabuie ca diferenţa între indicii termenilor canonici incluşi în subcubul din grupasuperioar ă şi indicii termenilor canonici corespondenţi ai subcuburilor din grupainferioar ă să fie o aceaşi putere a lui doi. De exemplu, pentru subcubul de pe primulrând din grupa a doua avem : 11 – 9 = 2 şi 15 – 13 = 2.
Expresia ce poate fi scrisă în acest moment pentru funcţia dată (ecuaţia 1.37), cu
ajutorul implicanţilor primi găsiţi, se obţine înlocuind, în termenii r ămaşi nebifaţi în
TABELUL 1.7Subcuburi 0-dimensionale
Grupa Indici x4x3x2x1x0
0 0 0 0 0 0 0
1
1248
0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0
2
69171824
0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0
3
7111319222628
0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 0 1 0
1 1 1 0 0
4152730
0 1 1 1 1 1 1 0 1 1 1 1 1 1 0
5 31 1 1 1 1 1
TABELUL 1.9 Subcuburi 2-dimensionale
Grupa Indici x4x3x2x1x0
0,18,9
0 x 0 0 x
0,24,6
0 0 x x 0
0,42,6
(0 0 x x 0)
0
0,81,9
(0 x 0 0 x)
2,618,22
x 0 x 1 0
1 2,186,22
(x 0 x 1 0)
9,1113,15
0 1 x x 1
9,1311,15
(0 1 x x 1)
18,2226,30
1 x x 1 0
18,2619,27
1 x 0 1 x
24,2628,30
1 1 x x 0
2
24,2826,30 (1 1 x x 0)
11,1527,31
x 1 x 1 1
11,2715,31
(x 1 x 1 1)
26,2730,31
1 1 x 1 x
26,3027,31
(1 1 x 1 x)
3
28,2730,31
1 1 1 x x
TABELUL 1.8 Subcuburi 1-dimensionale
Grupa Indici x4x3x2x1x0
0
0,10,20,40,8
0 0 0 0 x 0 0 0 x 0 0 0 x 0 0 0 x 0 0 0
1
1,91,172,62,184,68,9
8,24
0 x 0 0 1 x 0 0 0 10 0 x 1 0 x 0 0 1 0 0 0 1 x 0 0 1 0 0 x
x 1 0 0 0
2
6,76,229,119,1317,1918,1918,2218,2624,2624,28
0 0 1 1 xx 0 1 1 0 0 1 0 x 1 0 1 x 0 1 1 0 0 x 11 0 0 1 x 1 0 x 1 0 1 x 0 1 0 1 1 0 x 0 1 1 x 0 0
3
7,1511,15
11,2713,1519,2722,3026,2726,3028,2728,30
0 x 1 1 10 1 x 1 1
x 1 0 1 1 0 1 1 x 1 1 x 0 1 1 1 x 1 1 0 1 1 0 1 x 1 1 x 1 0 1 1 1 0 x 1 1 1 x 0
415,3127,3130,31
x 1 1 1 1 1 1 x 1 1 1 1 1 1 x
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 39/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 40
tabel, zerourile cu variabila corespunzătoare poziţiei respective negată, unităţile cuvariabila corespunzătoare poziţiei respective nenegată şi omiţând variabilelecorespunzătoare poziţiilor pe care se află simbolul « x » (ecuaţia 1.38).
234134013034
124014034013034124
012402341234012301235
x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x f
+++
+++++++
+++++=
(1.38)
Pentru a găsi forma minimă disjunctivă a unei funcţii trebuie aleşi numai acei
împlicanţii primi care includ toţi termenii canonici ai funcţiei şi conduc la o formă afuncţiei realizată cu cost minim. Implicanţii primi care respectă această condiţieformează acoperirea cu cost minim. Pentru găsirea acoperirii cu cost minim trebuiecăutate toate acoperirile posibile pentru funcţia dată din care se alege acoperirea careîndeplineşte condiţia de cost minim faţă de un anumit criteriu de cost.
De obicei, acoperirea minimală, adică acoperirea cu număr minim de elemente,satisface condiţia de cost.
Algoritmul de obţinere a acopperiri cu cost minim, plecând de la mulţimeaimplicanţilor primi, obţinuţi în etapa anterioar ă, este următorul:
Algoritmul 1.2.
a) Se construieşte un tabel al implicanţilor primi, având drept cap de linieimplicanţii primi ai funcţiei şi cap de coloană termenii canonici ai funcţiei. Laintersecţia unei linii cu coloană se pune un semn, de exemplu asterisc, dacă implicantul
prim de pe linia respectivă include termenul canonic de pe coloana respectivă. Pentruexemplul considerat mai sus (ecuaţia 1.37) se obţine tabelul 1.10. b) Se inspectează tabelul construit la punctul a). Dacă pe o anumită coloană
există un singur semn, ceea ce înseamnă că termenul canonic de pe acea coloană esteinclus într un singur implicant prim, atunci implicantul prim de pe linia însemnată devine implicant prim esenţial şi intr ă obligatoriu în forma minimă a funcţiei. Seconstruieşte un nou tabel, al implicanţilor primi neesenţiali care rezultă eliminând dintabelul implicanţilor primi liniile cu implicanţi primi esenţiali şi coloanele cu termeniicanonici incluşi în aceştia. Pentru a găsi mai uşor aceste coloane se încercuiesc toatesemnele de pe linia unui implicant prim esenţial şi se elimină apoi toate coloanele cusemne încercuite. De asemenea, se elimină liniile pe care nu au mai r ămas semne şi
coloanele care au semne pe acelaşi rânduri ca şi o altă coloană din tabelul implicanţilor primi neesenţiali, adică, dacă mai mulţi termeni canonici sunt incluşi în exact aceeaşiimplicanţi primi neesenţiali, se reţine un singur reprezentant al acestora, deoarece oriceimplicant care îl include pe acesta va include automat şi pe cei omişi (tabelul 1.11.)
c) Se inspecteză tabelul implicanţiilor primi neesenţiali în scopul găsirii uneiacoperiri cu cost minim, pentru toţi termenii canonici r ămaşi în acest tabel. În unelecazuri se pot găsi mai multe acoperiri care satisfac această condiţie, fiecare avândacelaşi cost. În astfel de situaţii funcţia are mai multe forme minime disjunctive.
d)Făcând suma booleană a implicanţilor primi esenţiali găsiţi la punctul b) şi acelor neesenţiali găsiţi la punctul c) se obţine forma minimă disjunctivă a funcţiei date.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 40/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 41
TABELUL 1.10.Termeni canoniciImplicanţi
primix4x3x2x1x0
Indici0 1 2 4 6 7 8 9 11 13 151718 19 22242627283031
Observaţii
x 0 0 0 1 1,17 * *
x 1 0 0 0 8,24 * *0 0 1 1 x 6,7 * *1 0 0 x 1 17,19 * *0 x 1 1 1 7,15 * *0 x 0 0 x 0,1,8,9 * * * *0 0 x x 0 0,2,4,6 * * * * Ex 0 x 1 0 2,6,18,22 * * * *0 1 x x 1 9,11,13,15 * * * * E1 x x 1 0 18,22,26,30 * * * *1 x 0 1 x 18,26,19,27 * * * *1 1 x x 0 24,26,28,30 * * * *x 1 x 1 1 11,15,27,31 * * * *
1 1 x 1 x 26,27,30,31 * * * *1 1 1 x x 28,27,30,31 * * * *
Conform tabelului 1.10., pentru funcţia a cărei ecuaţie este dată relaţia (1.27)există doi implicanţi primi esenţiali. Aceşti termeni vor trebui să apar ă obligatoriu înexpresia minimă normală disjunctivă a funcţiei.
Căutăm acum o acoperire minimă a celorlalţi termeni canonici ai funcţiei şiconstruim tabelul 1.11. conform regulii prezentate la punctul b al algoritmului 1.2.
TABELUL 1.11.Termeni canonici ObservaţiiImplicanţi
primix4x3x2x1x0 Indici 1 7 8 1718 1922242627283031
x 0 0 0 1 1,17 * * Ax 1 0 0 0 8,24 * * A0 0 1 1 x 6,7 * A1 0 0 x 1 17,19 * *0 x 1 1 1 7,15 *0 x 0 0 x 0,1,8,9 * *x 0 x 1 0 2,6,18,22 * * A1 x x 1 0 18,22,26,30 * * * *1 x 0 1 x 18,26,19,27 * * * * A1 1 x x 0 24,26,28,30 * * * *x 1 x 1 1 11,15,27,31 * *1 1 x 1 x 26,27,30,31 * * * *1 1 1 x x 28,27,30,31 * * * * A
Dacă din tabelul 1.11. se iau implicanţii primi de pe rândurile notate cu A seobţine o acoperire a funcţiei. Aceasă acoperire nu este singura, existând posibilitatea dea selecta alţi implicanţi primi pentru a obţine o acoperire a funcţiei. Se va alege aceaacoperire a funcţiei, care, în funcţie de criteriul ales, dă acoperirea de cost minim.
Pentru exemplu considerat, consider ănd acoperirea din tabelul 1.11., rezultă :
234124013
1234012301230340345
x x x x x x x x x
x x x x x x x x x x x x x x x x x x f
+++
+++++= (1.39)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 41/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 42
1.4.4. Minimizarea funcţiilor logice combinaţionale incomplet definite
Se consider ă că o funcţie logică combinaţională este incomplet definită dacă pentru anumite combinaţii a variabilelor de intrare valoarea funcţiei poate fi oricare (nu
interesează dacă pentru anumite combinaţii ale variabilelor de intrare, valoarea funcţieieste zero sau unu). Aceste valori se notează în tabelul de adevăr a funcţiei respective cuun anumit simbol (de exemplu litera „u”).
Prezentăm în continuare un astfel de exemplu a unei funcţii logicecombinaţionale de patru variabile (tabelul 1.12).
TABELUL 1.12nr.crt.
x3 x2 x1 x0 y0nr.crt.
x3 x2 x1 x0 y0nr.crt.
x3 x2 x1 x0 y0nr.crt.
x3 x2 x1 x0 y0
0 0 0 0 0 1 4 0 1 0 0 1 8 1 0 0 0 u 12 1 1 0 0 11 0 0 0 1 1 5 0 1 0 1 u 9 1 0 0 1 u 13 1 1 0 1 0
2 0 0 1 0 1 6 0 1 1 0 1 10 1 0 1 0 1 14 1 1 1 0 13 0 0 1 1 u 7 0 1 1 1 u 11 1 0 1 1 1 15 1 1 1 1 0
Această funcţie este descrisă de relaţiile (1.40).
0123012301230123
012301230123012301234
x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x f
++++
+++++= (1.40a)
u x x x x x x x x x x x x x x x x x x x x ===== 01230123012301230123 (1.40b)
unde relaţia (1.40a) reprezintă forma normală disjunctivă a păr ţii definite din funcţie, iar relaţia (1.40b) precizează că restul combinaţiilor de valori ale variabulelor de intrare,corespunzătoare păr ţii nedefinite din funcţie, nu apar în funcţionare, prin urmare pot ficonsiderate combinaţii indiferente.
Pentru minimizarea acestei funcţii se întocmeşte tabelul din figura 1.15.
Forma normală disjunctivă minimă a funcţiei incomplet definite (1.40) este dată în ecuaţia (1.41).
23
01
0134
x x x x x x x f +++= (1.41)
x1x0
x3x200 01 11 10
00 1 1 u 1
01 1 u u 1
11 1 0 0 110 u u 1 1
Figura 1.15. Diagrama Karnaugh pentru funcţia (1.40).
3 x
01 x x
23 x x
01 x x
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 42/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 43
Având în vedere faptul că funcţia este incomplet definită se poate găsi şi o altă acoperire a funcţiei (figura 1.16).
Funcţia obţinută, în acest caz, este (ecuaţia 1.42):
12301213014 x x x x x x x x x x f +++= (1.42)
Este important de reţinut faptul că pentru combinaţiile notate cu « u » nu trbuie
asicurată o acoperire deoarece aceste valori sunt indiferente (pot fi zero sau unu). Dinacest motiv se pot găsi mai multe acoperiri ale funcţiei. Se va considera expresiaminimizată a funcţiei, acea expresie care va corespunde unui anumit criteriu adoptat.
În cazul când minimizarea funcţiei combinaţionale par ţial definită se facefolosind metoda Quine-Mc Cluskey, trebuie să consider ăm unele modificări şi anume seadaugă subcuburilor 0-dimensionale şi termenii canonici corespunzători combinaţiilor indiferente. Nu se vor considera însă subcuburile 1-dimensionale care ar rezulta princombinarea între ei a termenilor indiferenţi ci numai cele care rezultă prin combinareaacestora cu alte subcuburi 0-dimensionale. De asemenea nu se va ţine cont de aceştitermeni canonici în tabelul implicanţilor primi, deoarece nu trebuie acoperiţi.
1.4.5. Minimizarea sistemelor de funcţii booleene
Circuitele logice combinaţionale cu n intr ări (x0, x1, … , xn) şi m ieşiri (y0, y1, …,ym) pot fi sintetizate considerând fiecare ieşire separat, ca o funcţie independentă de n variabile (graf boolean). Pe baza formei canonice, sau a tabelului de adevăr, aplicînd una
dintre metodele de sinteză, se obţine câte o realizarea fizică pentru fiecare ieşire, în finalacestea fiind puse împreună. Acest lucru se face de obicei atunci când metoda de sinteză nu impune minimizarea funcţiilor. Astfel de metode vor fi discutate aici în capitoleleurmătoare.
În cazul în care sinteza se face cu ajutorul por ţilor logice, este necesar să se obţină forma minimă a unui sistem de funcţii booleene de forma (1.1).
Formele minime pentru un sistem de funcţii booleene sunt acele expresii booleene disjunctive sau conjuctive în care apar un numar minim de termeni, respectivfactori normali diferiţi, având un numar minim de literale (variabile de intrare). Pentruobţinerea formelor minime ale unui sistem de funcţii booleene dat, se procedează laminimizarea corelată a funcţiilor acestuia, adică la determinarea setului minim de
implicanţi primi care acoper ă toţi termenii canonici ai tuturor funcţiilor sistemului.
x1x0
x3x200 01 11 10
00 1 1 u 1
01 1 u u 111 1 0 0 1
10 u u 1 1
Figura 1.16. Diagrama Karnaugh pentru funcţia (1.40).
01 x x
123 x x x
13 x x
012 x x x
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 43/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 44
Una dintre metodele de minimizare corelată a mai multor funcţii booleene, f 1, f 2,… f n se bazează pe determinarea implicanţilor primi ai funcţiilor f 1, f 2, … f n şi aifuncţiilor produs f 1f 2, f 1f 3, …, f n-1f n, f 1f 2f 3, f 1f 3f 4, f n-2f n-1f n, …, f 1f 2f 3·…· f n. Având acestset de implicanţi primi, se calculează acoperirile posibile pentru fiecare dintre funcţii iar
apoi se alege cea mai avantajoasă combinaţie de acoperiri din punct de vedere alcostului, care reprezintă acoperirea minimala a sistemului.Pentru obţinerea acoperirii minimale după această metodă se parcurg
urmatoarele etape:
Regula 1.2.
a) Se calculează funcţiile produs. De exemplu, se cere minimizarea sistemului defuncţii:
( )
( )
( )∑∑∑
=
=
=
7,6,5,2,0
6,5,4,1
7,6,5,1
23
13
03
f
f
f
(1.43)
unde sub semnul sumei booleene s-au dat indicii termenilor canonici prezenţi înforma canonică disjunctivă a funcţiei.În prima etapă se calculează funcţiile produs:
Functiile (1.44) conţin termenii canonici comuni pentru cele două, respectiv treifuncţii inmulţite logic.
( )
( )
( )( )∑
∑
∑∑
=⋅⋅=⋅
=⋅
=⋅
6,56,5
7,6,5
6,5,1
23
13
03
2
3
1
3
23
03
13
03
f f f
f f
f f
f f
(1.44)
x1x0
x2 00 01 1110
0 0 1 0 01 0 1 1 1
03 f
x1x0
x2 00011110
0 0 1 0 01 1 1 0 1
13 f
x1x0
x2 0001 1110
0 1 0 0 11 0 1 1 1
23 f
x1x0
x2 00 01 1110
0 0 1 0 01 0 1 0 1
13
03 f f ⋅
x1x0
x2 00011110
0 0 0 0 01 0 1 1 1
2
30
3 f f ⋅
x1x0
x2 0001 1110
0 0 0 0 01 0 1 0 1
23
13
03
23
13
f f f
f f
⋅⋅=
=⋅
Figura 1.17. Minimizarea sistemelor de func ii booleene
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 44/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 45
b) Se determină implicanţii primi ai fiecăreia dintre funcţiile boleene (1.43) şi(1.44).
În cazul exemplului considerat, pentru determinarea implicanţilor primi ai
acestor funcţii se folosesc diagramele Karnaugh din figura 1.17. Din această figur ă se obţin, pentru funcţiile considerate, implicanţii primi din tabelul 1.13. Înacest tabel sunt trecute funcţiile booleene şi produsele dintre acestea, acoperireaobţinută prin selectarea acelor subcuburi care conţin termenii formei normaldisjunctive şi care nu mai sunt conţinuţi în alte subcuburi şi termenii r ămaşinegrupaţi. De asemenea în tabel se trec indicii termenilor canonici ce formează fiecare subcub, expresia termenului nou obţinut şi notaţia adoptată pentru aceştitermeni (vezi punctul c.).
TABELUL 1.13. Implicanţi primi Implicanţi primi
Funcţia Indici Expresie Notaţie Funcţia Indici Expresie Notaţie1 2 3 4 1 2 3 4
1,5 01 x x - 1,5 01 x x e
5,7 02 x x -
13
03 f f ⋅
6 012 x x x -0
3 f
7,6 12 x x - 5,7 02 x x d
1,5 01 x x i2
30
3 f f ⋅ 7,6 12 x x c
13 f
4,6 02 x x h 5 012 x x x b
5,7 02 x x -
2,6 01 x x g23 f 0,2 02 x x f
231303
23
13
f f f
f f
⋅⋅
=⋅
6 012 x x x a
c) Se notează simbolic implicanţii primi ai sistemului, pe coloana 4 a tabelului1.13, începând cu ultimul implicant prim al ultimei funcţii produs. Implicanţii
primi care apar de mai multe ori se notează o singur ă dată.
d) Se intocmeşte un tabel al acoperirilor funcţiilor sistemului, în care se înscriu pelinii toţi implicanţii primi găsiţi la punctul b), iar pe coloane termenii canonici aifiecareia dintre funcţiile sistemului, luate în ordine. Tabelul 1.14 reprezintă tabelul
acoperirilor sistemului de funcţii (1.43).
e) Se completează tabelul acoperirilor, marcând, de exemplu cu un asterisc,coloana termenilor canonici ai funcţiilor sistemului, în dreptul linieiimplicantului prim în care aceştia sunt incluşi. Trebuie menţionat că acest lucrueste posibil numai dacă implicantul prim respectiv este implicant prim al funcţieiconsiderate sau al unei funcţii produs al acesteia. Pentru a respecta această condiţie s-a prevazut in tabelul 1.14 o coloană în care se specifică funcţiile înacoperirile cărora poate intra fiecare implicant prim.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 45/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 46
TABELUL 1.14. Implicanţi primi Termeni canonici
Funcţia 13 f Funcţia 23 f Funcţia 33 f Notaţie Indici Funcţii1 5 6 7 1 4 5 6 0 2 5 6 7
a 6 23
13
03 ,, f f f * * *
b 5 23
13
03 ,, f f f * * *
c 7,6 23
03 , f f * * * *
d 5,7 23
03 , f f * * * *
e 1,5 13
03 , f f * * * *
f 0,2 23 f * *
g 2,6 23 f * *
h 4,6 13 f * *
i 1,5 13 f * *
f) Pe baza tabelului 1.14 se determină acoperirile fiecărei funcţii, conform celor aratate în paragraful 1.4.3. Pentru exemplul considerat, acoperirea functiei 1
3 f
notata )13 f A , este :
) 21
0
3A Aedaec f A +=+=
(1.45) De asemenea:
211
3 B Behhi f A +=+= (1.46)
iar:
) 43212
3 C C C C abcf adf cbf dfg f A +++=+++= (1.47)
Prin urmare, pentru funcţia0
3 f s-au găsit două acoperiri, pentru1
3 f de asemeneadouă acoperiri, iar pentru 2
3 f patru acoperiri. Pentru a forma o acoperire a
sistemului se ia câte una din acoperirile fiecarei funcţii. Pentru a găsi acoperireaminimală a sistemului se continuă cu punctul urmator.
g) Se scriu toate acoperirile posibile ale sistemului de funcţii şi se alege dintreacestea acoperirea cu număr minim de elemente. Numarul acoperirilor posibileeste dat de produsul numerelor acoperirilor fiecăreia dintre funcţii.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 46/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 47
TABELUL 1.15.
Nr. crt. AcoperireElementeleacoperirii
Numărulelementelor
Variabile deintrare
1
23456789101112
13141516
A1B1C1
A1B1C2A1B1C3
A1B1C4
A1B2C1
A1B2C2
A1B2C3
A1B2C4
A2B1C1
A2B1C2
A2B1C3
A2B1C4
A2B2C1
A2B2C2
A2B2C3
A2B2C4
echidfg
echicbf echiadf echiabcf echdfgechcbf echadf echabf edahifgedahicbf edahif
edahibcf
edahfgedahcbf edahf
edahbcf
7
77866667868
6757
14
1515181213131415181318
13161116
Pentru exemplul luat există 2x2x4 = 16 acoperiri (enumerate in tabelul 1.15). Numărul elementelor unei acoperiri a sistemului este egal cu numarul implicanţilor primi distincţi care intr ă în acoperirile tuturor funcţiilor din sistem. Din tabelul 1.15rezultă că pentru sistemul de funcţii considerat, poate fi luată ca acoperire minimală
poziţia a cincisprezecea, cu cinci elemente, ce conţin unsprezece variabile de intrare. Numărul de variabile de intrare a termenilor conţinuţi de forma normal disjunctivă aunei funcţii indică numărul de intr ări ai por ţii logice ce implementează termenulrespectiv. Pe baza acoperirii minimale gasită la punctul g) se scriu expresiile minime alesistemului de funcţii.
Pentru exemplul tratat, corespunzator acoperirii se obtin expresiile (1.48).
012020222
3
020111
3
012020100
3
x x x x x x x y f
x x x x y f
x x x x x x x y f
++==
+==
++==
(1.48)
Realizarea fizică a sistemului de ecuaţii (1.48) este prezentată în figura 1.18.Verificarea soluţiei obţinute poate fi f ăcută cu ajutorul unui program în limbaj
PASCAL în care se compar ă valorile funcţiilor canonice cu cele minimizate. Dacă pentru fiecare combinaţie posibilă a variabilelor de intrare cele două veloricorespunzătoare aceleiaşi funcţii în forma canonică şi în forma inimizată sunt egale,atunci putem spune că s-a obţinut o soluţie corectă. Acest mod de verificare reprezintă de fapt construirea automată a tabelelor de adevăr ale funcţiilor date şi comparareaacestora.
PROGRAMUL 1.2. Program logic2;
{se verifica daca forma minima a
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 47/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 48
unui sistem de ecuatii de functii logice este corect}
var y0_c,y1_c,y2_c,y0_m,y1_m,y2_m,x0,x1,x2:boolean;
beginfor x2:= false to true do
for x1:= false to true dofor x0:= false to true do begin{se compara forma canonica a functiei cu cea minimizata}{forma canonica - ecuatiile (1.43)}
y0_c := ((not x2) and (not x1) and x0) or (x2 and (not x1) and x0) or (x2 and x1 and (not x0)) or (x2 and x1 and x0);y1_c := ((not x2) and (not x1) and x0) or (x2 and (not x1) and (not x0)) or (x2 and (not x1) and x0) or (x2 and x1 and (not x0));y2_c := ((not x2) and (not x1) and (not x0)) or ((not x2) and x1 and (not x0)) or (x2 and (not x1) and x0) or (x2 and x1 and (not x0)) or (x2 and x1 and x0);
{forma minima - ecuatiile (1.48)}y0_m := ((not x1) and x0) or (x2 and x0) or (x2 and x1 and (not x0));y1_m := ((not x1) and x0) or (x2 and (not x0));y2_m := (x2 and x0) or ((not x2) and (not x0)) or (x2 and x1 and (not x0));
if (y0_c<>y0_m) or (y1_c<>y1_m) or (y2_c<>y2_m) then begin
writeln('Ecuatiile nu sunt egale! Apasati ENTER');readln;halt(1);
end;end;writeln('Ecuatiile sunt egale. Apasati ENTER');readln;end.
Y2
U3A
7408
1
23e
U16A
7432
1
23
h
U11A
7432
1
23
X0
U6A
7404
1 2
U12A
7408
1
23
U4A
7411
1122
13
U13A
7404
1 2
f
Y1
Y0
X1
U14A
7432
1
23
a
X2
d
U5A
7404
1 2
U2A
7408
1
23
U10A
7408
1
23
U17A
7432
1
23
Figura 1.18. Realizarea fizică a sistemului de ecuaţii (1.24).
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 48/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 49
O altă posibilitate de verificare a soluţiei obţinute este cea de compararea aformelor de undă obţinute la ieşirea circuitului logic combinaţional atunci când laintrarea acestuia combinaţiile posibile ale variabilelor de intrare se scced cu o anumită frecvenţă. Aşa cum se observă, citind un tabel de adevăr pe verticală, variabila de rang
minim (x0 – variabila cu rangul zero) îşi schimbă valoarea cu frecvenţa cea mai mare.Vom nota această frecvenţă cu f 0. În acest caz variabila de rang maxim îşi schimbă valoarea cu frecvenţa f n = f 0 / 2n, unde n este rangul variabilei.
Pentru exemplificare vom considera tabelul de adevăr a sistemului funcţiilor logice combinaţionale (tabelul 1.16) dat de ecuaţiile (1.43).
Dacă stabilim o anumită durată de timpΔt în care semnalul corespunzător intr ării derang minim x0 se schimbă (ia succesiv valoareazero şi valoarea unu – perioada semnalului),atunci duratele se vor dubla la fiecare trecerespre o variabilă de rang superior; de exemplu:
pentru x1 vom avea 2Δt, pentru x2 vom avea4Δt, ş.a.m.d. Astfel, dacă notăm cu f 0 frecvenţasemnalului x0, atunci frecvenţa semnalului x1 va fi f 1=f 0/2, frecvenţa semnalului x2 va fif 2=f 1/2=f 0/4 etc.
Aplicănd un astfel de set de semnale laintrare se vor obţine la ieşire semnalecorespunzătoare evoluţiei în timp a funcţieilogice combinaţionale. Asfel de semnale sunt
mult utilizate în analiza circuitelor cu dispozitive digitale şi din acest motiv această
tehnică va fi prezentată în capitolele următoare.În figura 1.19 sunt prezentate semnalele de intrare x0, x1 şi x2 şi semnalele deieşire y0, y1 şi y2 ale sistemului de funcţii (1.43). Datorită timpului finit de propagare asemnalelor prin por ţile logice, modificarea ieşirii se face cu o anumită întârziere faţă demodificarea semnalelor de intrare în funcţie de caracteristicile definite pentru por ţilelogice utilizate. Mai întâi vom considera o variaţie lentă a semnalelor pentru caîntârzierile să nu se manifeste şi circuitul să se comporte ca unul ideal (figura 1.19).
Comparativ cu figura 1.19, în figura 1.20 se observă că la frecvenţe mari, cu
ordinul de mărime al perioadei comparativ cu timpul de întârziere al por ţilor logice,apariţia unei deplasări spre dreapta (o întârziere) cu t pHL pe axa timpului a semnalului deieşire. De asemenea trebuie semnalat faptul că la ieşire pot apărea comutări ce nu sunt întabelul de adevăr al funcţiei (zona notată cu A – apariţia unei valori zero a funcţiei y1 – în figura 1.20). Acest fenomen numit hazard nu poate fi detectat decât la analiza
TABELUL 1.16. Variabile
deintrare
Funcţii deieşireNr.crt.
x2x1x0 y2 y1 y0
0 0 0 0 0 0 11 0 0 1 1 1 0
2 0 1 0 0 0 1
3 0 1 1 0 0 0
4 1 0 0 0 1 0
5 1 0 1 1 1 1
6 1 1 0 1 1 1
7 1 1 1 1 0 1
Figura 1.19. Semnalele circuitului descris de ecuaţiile (1.43) la frecvenţă scăzută.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 49/150
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 50/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 51
În figura 1.23. se poate vedea faptul că formele de undă de ieşire y0C, y1C respectiv y2C corespunzătoare ecuaţiilor canonice (1.43) sunt identice cu formele deundă y0M, y1M respectiv y2M corespunzătoare ecuaţiilor minimizate. Acest lucrudemonstrează faptul că minimizarea sistemului de funcţii logice (1.43) a fost f ăcută corect.Din analiza în domeniul timp a circuitului obţinut s-a constatat apariţia hazardului lafrecvenţe ridicate pe ieşirea y1. Evitarea apariţiei hazardului va fi discutată în capitolulurmător.
1.5. Apariţia hazardului
Fenomenul apariţiei unor comutări neaşteptate la ieşirea unui circuit logiccombinaţional, datorate modificării stării uneia sau mai multor intr ări ale circuitului, senumeşte hazard.
Hazardul se datorează în general timpului de propagare şi timpului de comutaţieal por ţilor logice reale.
Studiul circuitelor logice se face în regim staţionar când astfel de fenomene nu
pot fi detectate sau în regim tranzitoriu când se pune în evidenţă apariţia hazardului.
1
1
U2F
7404
13 12
0
0
U3D
7432
12
13
11
Y1M
1
0
0
U4D
7408
12
13
11
d
U2E
7404
11 10
U4C
7408
9
10
8
U3C
7432
9
10
8
U3A
7432
1
2
3
1
0
f
a
1
0
CLK
A1OFFTIME = 1.25s
ONTIME = 1.25s
DELAY = 0
STARTVAL = 0
OPPVAL = 1
CLK
B1OFFTIME = 2.5s
ONTIME = 2.5s
DELAY = 0
STARTVAL = 0
OPPVAL = 1
h
V
U3B
7432
4
5
6
U2C
7404
5 6
0
1
U4B
7408
4
5
6e
U1A
7411
1
122
13
CLK
C1OFFTIME = 5s
ONTIME = 5s
DELAY = 0
STARTVAL = 0
OPPVAL = 1
1
U2A
7404
1 2
1
0
1
U2B
7404
3 4
V
V
X2
0
U4A
7408
1
2
3
Y2M
X1
0
U2D
7404
9 8
V
0
V
V
0
1
Y0M
X0
0
Figura 1.22. Circuitul realizat cu porţi logice a sistemului funţiilor logicedisjunctive minimizate (1.24)
Figura 1.23. Rezultatul simulării circuitelor din figura 1.21. şi 1.22.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 51/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 52
Rezultă imediat că o soluţie de combatere a hazardului este sincronizarea circuituluicombinaţional cu ajutorul unui semnal de tact care să permită modificarea ieşiriicircuitului numai după ce ieşirea acestuia s-a stabilizat (componenta tranzitorie asemnalului de ieşire a dispărut).
Analiza în regim staţionar se face de regulă în scopul verificării circuitului din punct de vedere logic, iar analiza în regim tranzitoriu se face în scopul studieriicomportării în timp a circuitului.
La circuitele logice combinaţionale putem întâlni două tipuri de hazard :
a. hazardul static caracterizat prin apariţia unui singur impuls la ieşireacircuitului logic combinaţional ca rezultat al schimbării stării uneiintr ări. Hazardul static este de două feluri:
a.1. hazardul static-1 la care ieşirea circuitului logiccombinaţional trebuie să fie unu dar apare o tranziţie scurtă înzero ca rezultat al schimbării stării unei intr ări; acest tip de hazard
apare în cazul circuitelor construite cu por ţi AND şi OR pe bazafuncţiilor canonice disjunctive;a.2. hazardul static-0 la care ieşirea circuitului logiccombinaţional trebuie să fie zero dar apare o tranziţie scurtă înunu ca rezultat al schimbării stării unei intr ări; acest tip de hazardapare în cazul circuitelor construite cu por ţi OR şi AND pe bazafuncţiilor canonice conjuctive;
b. hazardul dinamic la care ieşirea circuitului comută de mai multe ori laschimbarea stării unei singure intr ări. Acest tip de hazard nu este
posibil în cazul circuitelor construite numai cu por ţi AND şi OR .
Hazardul static poate fi detectat şi eliminat cu ajutorul diagramelor Karnaugh. Pentru exemplificare vom considera circuitul din figura 1.24. Inversoarele U5A,
U6A şi U7A nu fac parte din circuit, ele sunt folosite la simulare împreună generatoarele de semnal digital x0,x1 şi x2 în aşa fel încât semnalul aplicat circuitului să înceapă cu starea zero.
Acest circuit construit cu por ţi AND şi OR , care evident are la bază o ecuaţiecanonică de tip disjunctiv, prezintă un hazard static 1 atunci când x2=1, x0=1 şi x1 comută din unu în zero.
Să presupunem că toate por ţile logice ale circuitului din figura 1.24 au acelaşitimp de propagare Δt. În această situaţie putem desena un detaliu al diagramei de timp(figura 1.25) a circuitului din figura 1.24.
U4A
7432
1
23
0
0
0
V
0
1
V
CLK
X2
V1
1
U5A
7404
1 2
U1A
7408
1
23
0
1
Y0CLK
X1
CLK
X0 0U7A
7404
1 2
VU2A
7408
1
23
U6A
7404
1 2
U8A
7404
1 2
Figura 1.24. Circuitul pentru explicarea fenomenului de hazard.
12 x x
01 x x
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 52/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 53
Comutarea semnalului de intrare x1 din unu în zero duce la comutarea din zero
în unu a semnalului 1 x după timpul Δt datorită întârzierii prin poarta U8A. Semnalul x1 se aplică împreună cu semnalul x0 por ţii U2A care comută în zero după Δt (timpul
necesar trecerii semnalului prin această poartă). Luând ca referinţă momentul comutăriisemnalului x1 din unu în zero, comutarea por ţii U2A din unu în zero se face după Δt.
Similar, poarta U1A care era în zero datorită semnalului 1 x va comuta în unu după untimp egal cu Δt (timpul de întârziere a por ţiiU1A). Dacă ne raportăm la aceeaşi referinţă,momentul comutării semnalului x1 din unu înzero, comutarea por ţii U1A se va face după 2Δt. Reamintim că semnalele x0 şi x2 auvaloarea unu. Datorită diferentei de timp egală cu Δt a comutării celor două por ţi apare un
impuls la ieşire cu valoarea zero cu durata Δt,impuls ce nu ar trebui să apar ă dacă por ţile ar fi ideale.
În figura 1.26 se prezintă rezultatulsimulării circuitului din figura 1.24.
1.5.1. Eliminarea hazardului cu ajutorul diagramelor Karnaugh
Hazardul static-1Hazardul static-1 apare atunci când o variabilă de intrare directă şi
complementul acesteia sunt conectate la două por ţi AND diferite.Atunci cînd folosim o diagramă Karnaugh, identificarea hazardului se poate face
prin identificarea subcuburilor adiacente ce cuprind termeni canonici diferiţi ai funcţiei.
Pentru exemplificare scriem ecuaţia canonică disjunctivă pentru circuitul dinfigura 1.24.
01120 x x x x y += (1.49)
Tabelul Karnaugh corespunzător acestei ecuaţiieste cel din figura 1.27.a. Din tabelul Karnaugh se
observă că tranziţia de la suprafaţa 12 x x la
suprafaţa 01 x x se face prin tranziţia variabilei x1.
Pentru eliminarea hazardului static-1 se adaugă unsubcub suplimentar (implicant prim) care să
Figura 1.25. Diagrama de timpexplicativă pentru apari ia hazardului
Figura 1.26. Rezultatul simulării circuitului din figura 1.24.
hazard static-0
hazard static-1
x1x0 x2
00 01 11 10
0 0 0 1 01 1 1 1 0
Figura 1.27.a. Tabelul Karnaugh
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 53/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 54
conecteze cele două suprafeţe, asa cum este ar ătat în figura 1.27.b.
Ecuaţia normală disjunctivă pentru cu hazardul
eliminat este:
0201120 x x x x x x y ++= (1.50)
Circuitul obţinut, corespunzător ecuaţiei (1.27.b) este cel din figura 1.28 iar
rezultatele simulării în figura 1.29.
Aşa cum se observă din figura 1.29 hazardul static-1 din semnalul de ieşire y0 este eliminat..
O altă posibilitate de eliminare a hazardului este cea de modificare a întârzierilor în circuit prin adăugarea sau eliminarea de por ţi. De exemplu în figura 1.28. se poate
renunţa la inversorul U8A semnalul 1 x putând fi cules direct de la intrarea por ţii U6A.În acest caz se poate renunţa la poarta U3A. Din acest exemplu rezultă importanţa
deosebită a simulării funcţionării circuitelor logice, activitate ce poate scurtaconsiderabil timpul de proiectare şi punere la punct a unui circuit.
Hazardul static-0 Hazardul static-0 apare la circuitele compuse din por ţi logice OR-AND, descrise
de ecuaţii normale conjunctive, atunci când o variabilă de intrare directă şicomplementul acesteia sunt conectate la două por ţi OR diferite.
Eliminarea hazardului-0 se face printr-o metodă duală celei de eliminare ahazardului static-1 cu ajutorul diagramelor Karnaugh. Hazardul static-0 poate fiidentificat acolo unde, în diagrama Karnaugh, apar suprafeţe adiacente, formate dinzerouri, care acoper ă sume de termeni diferiţi. Eliminarea hazardului se va face prin
x1x0 x2
00 01 11 10
0 0 0 1 01 1 1 1 0Figura 1.27.b. Tabelul Karnaugh
Figura 1.29. Rezultatele simulării circuitului din figura 3.51.
U5A
7404
1 2CLK
X2
1
1
0
U9A
7404
1 2
0
U1A
7408
1
230
0
0
0U7A
7404
1 21
0
CLK
X00
U6A
7404
1 2
U2A
7408
1
23
Y0
U4A
7427
12
1312
U8A
7404
1 2
CLK
X1
1
U3A
7408
1
23
Figura 1.28. Eliminarea hazardului.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 54/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 55
inserarea unui subcub suplimentar (implicant prim) care reprezintă o sumă de termeni aifuncţiei şi care acoper ă tranziţia variabilei care produce hazardul.
De asemenea se poate utiliza metoda modificării corespunzătoare a întărzierilor prin adăugarea şi eliminarea de por ţi şi simularea circuitului.
1.6. Analiza circuitelor logice combinaţionale cu ajutorul pachetului deprograme OrCAD
Acest capitol nu este destinat învăţării lucrului cu mediul OrCAD. Vor fi date doar indicaţii succinte privind analiza unui circuit digital începând de la proiectarea schemei şiîncheind cu simularea acesteia. Din acest motiv, pentru învăţarea lucrului în OrCAD vor trebui consultate manualele dedicate acestui scop.
Produsul OrCAD reprezintă o colecţie de aplicaţii construite conform fluxuluide proiectare ingineresc. OrCAD CIS (Component Information System) reprezintă ocomponentă opţională a sistemului OrCAD ce este folosită împreună cu OrCADCapture. OrCAD CIS permite managementul proprietăţilor componentelor electronice,necesare fiecărei etape, pe durata proiectării schemei electrice, până la realizareacablajului imprimat. Cu ajutorul acestui sistem proiectele realizate şi cele viitoare suntactualizate cu informaţiile existente la producătorii componentelor electronice şi în
bazele de date prin intermediul reţelei Internet.Principalele componentele ale sistemului OrCAD cu ajutorul cărora se
realizează proiectarea unui circuit electric, începând cu proiectarea schemei electrice şiterminând cu simularea acesteia şi proiectarea cablajului imprimat sunt:
o OrCAD Capture sau OrCAD Capture CIS – destinat proiectării
schemelor electrice,o OrCAD Express sau OrCAD Express CIS – destinat proiectării
dispozitivelor logice digitale şi a dispozitivelor logice programabile,o OrCAD Layout – destinat proiectării cablajelor imprimate,o OrCAD Pspice – destinat simulării circuitelor electrice analogice,o OrCAD PSpice A/D – destinat simulării circuitelor electrice
analogice, digitale şi mixte analogice şi digitale.
Pentru simularea unui circuit logic combinaţional realizat cu por ţi logice estenecesar ă mai întâi realizarea circuitului electric cu ajutorul componentei OrCADCapture. Se va explica în continuare
modul de realizare şi de simulare aschemei din figura 1.24 cu ajutorul pachetului de programe OrCAD ver. 9.1.
1.6.1. Proiectarea schemei electronicecu ajutorul programului OrCADCAPTURE
1.6.1.1.Începerea unui proiect nou
Pentru începerea unui proiect nou,se porneşte programul OrCAD Capture şi
se selectează din meniul principal File,Figura 1.30. Definirea unui proiect nou.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 55/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 56
apoi New după care se selectează opţiunea Project. Se deschide o fereastr ă pentrucrearea unui proiect nou, ca în figura 1.30.
În această fereastr ă trebuie scris numele proiectului (aici a fost ales numele „test1”), se
alege tipul de proiect „Analog or Mixed SignalCircuit Wizard” prin selectarea acestei opţiunişi apoi directorul unde se va găsi noul proiect(aici „E:\Proiecte”) după care se apasă pe
butonul Ok .Apare o nouă fereastr ă ca cea din figura
1.31 în care se cere includerea bibliotecilor Pspice care se vor folosi în acest proiect.Încluderea bibliotecilor suplimentare se poate
face şi pe parcursul elabor ării schemei electrice deci în această fază putem să selectăm
doar o parte din bibliotecile de componente folosite. Bibliotecile de componente Pspice(cu extensia .olb) conţin, pe lângă simbolulcomponentei folosite şi modelul aesteia (definitconform regulilor programului SPICE) folosit lasimulare.
Vom selecta biblioteca 7400.olb după care seapasă butonul Add>> pentru a adăuga această
bibliotecă iar în final se apasă butonul Finish.Terminarea definirii proiectului nou determină
apariţia mai multor ferestre în spaţiul programuluiOrCAD Capture: fereastra pentru gestiunea
proiectului care are numele proiectului, fereastra pentru desenarea schemei cu numele / -
Figura 1.31. Selectarea bibliotecilorproiectului.
Figura 1.32. Deschiderea unui proiect în OrCAD Capture.
Fereastra pentrudesenarea schemei
Fereastrapentru
gestionareaproiectului
Fereastra de mesaje
Meniul principal
Figura 1.33. Fereastra pentrugestiune a proiectului
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 56/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 57
(SCHEMATIC : PAGE1) şi fereastra de mesaje cu numele Session Log (figura 1.32).
1.6.1.2.Plasarea componentelor în schema electronică
Pentru plasarea componentelor în schema electrică se selectează fereastra pentrudesenarea schemei (/ - (SCHEMATIC : PAGE1)). Dacă această fereastr ă nu esteafişată se face dublu clic pe pictograma acesteia din fereastra de gestiune a proiectuluiar ătată în figura 1.33. (pentru desf ăşurarea structurii proiectului se va face clic pesimbolul „+”). În continuare, atunci când nu se specifică altfel, prin expresia „se face(dublu) clic” se înţelege acţionarea butonului din stânga a mausului.
Plasarea componentelor în schema electrică se poate face selectând opţiuneaPlace din meniul principal după carese selectează opţiunea Part din meniul desf ăşurat
sau se selectează pictograma din bara de unelte (figura 1.34).
La selectarea acestei opţiuni este afişată fereastra din figura 1.35. În această fereastr ă este posibil să adăugăm biblioteci noi – cu opţiunea Add Library… (dacă aceastea n-au fost adăugate la definirea proiectului – figura 1.31), să eliminăm o
bibliotecă de componente – cu opţiunea Remove Library, dacă aceasta nu mai estenecesar ă, sau să căutăm o componentă în biblioteci cu ajutorul opţiunii Part Search… ce permite o căutare complexă.
Reamintim aici faptul că simularea unei scheme electrice necesită existenţamodelelor SPICE ale componentelor respective. Din acest motiv o schemă destinată
simulării se va realiza exclusiv cu ajutorul componentelor aflate în bibliotecile cuextensia „.olb”.
Pentru realizarea schemei electrice a circuitului din figura 1.24 se vor plasa pedesen por ţile logice. Din acest motiv se va selecta biblioteca „7400” în fereastra
bibliotecilor folosite în proiectul respectiv iar din fereastra componentelor se vor selectasuccesiv componentele: „7404”, „7408” şi respectiv „7432”.
După selectarea unei componente se apasă butonul OK al ferestrei de selecţiei acomponentei şi simbolul grafic al acesteia apare solidar cu cursorul mausului. Pentru
plasarea componentei se face clic pe butonul din stânga al mausului. Pentru încheierea
operaţiei de plasare a unui tip de componentă se face clic pe butonul din dreapta al
Figura 1.34. Bara de unelte.
Figura 1.35. Fereastra de selecţie a componentei ce va fi plasată în schema electrică
Fereastra bibliotecilor folosite înproiectul respectiv
Fereastra componentelor aflate în bibliotecile selectate
Simbolul grafic alcomponentei selectate
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 57/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 58
mausului iar în meniul desf ăşurat se selectează End Mode. Tot în acest meniu suntopţiuni pentru rotirea componentei, aşezarea în oglindă etc. necesare editării schemei.
Pentru plasarea unei noi componente se selectează din nou opţiunea de plasare aunei componente iar operaţiunea se repetă.
După aşezarea tuturor por ţilor logice conform desenului 1.24 se vor plasa laintrarea circuitului generatoarele de semnal. Pentru acesta, în fereastra de selec ţie acomponentei, în fereastra de selecţie a bibliotecii, se va selecta bibliotecaSOURCE.OLB. Din această bibliotecă se va selecta componenta DigClock .
Componenta DigClock este o sursă de semnal digital care este folosit de obiceica semnal de ceas reprezentat de un semnal dreptunghiular periodic. După plasareacomponentei în schema electrică, dacă se face dublu clic pe imaginea acesteia sedeschide fereastra editorului proprietăţilor componentei (Property Editor) în care se
pot preciza: timpul după care apare prima tranziţie a ceasului (parametrul DELAY),timpul cât durează nivelul ridicat (high), în fiecare perioadă a semnalului de ceas(parametrul ONTIME), timpul cât durează nivelul scăzut (low), în fiecare perioadă a
semnalului de ceas (parametrul OFFTIME), starea nivelului scăzut a semnalului deceas - Low state, implicit aceasta este zero – (parametrul STARTVAL) şi stareanivelului ridicat a semnalului de ceas - High state, implicit aceasta este unu – (parametrul OPPVAL), aşa cum este ar ătat în figura 1.36.
Cele trei semnale de ceas aplicate la intrarea circuitului trebuie să aibă frecvenţele în următoarea relaţie:
210 42 x x x f f f == (1.51)
în aşa fel încât la intrarea circuitului să fiegenerate toate combinaţiile posibile alevariabilelor de intrare conform celor
prezentate în paragraful 1.4.5.Pentru aceasta se vor face modificările
prezentate în tabelul 1.17, în fereastra editorului proprietăţilor componentelor.
Pentru modificarea textului asociat uneicomponente se face dublu clic pe acesta, fapt cedetermină deschiderea ferestrei de afişare a
proprietăţilor (fereastra Display Properties – figura 1.37) sau se face clic dreapta şi din
mesajul afişat se selectează opţiunea Edit
Figura 1.36. Fereastra editorului proprietăţilor.
TABEL 1.17.Semnal OFFTIME ONTIME
x0 .125uS .125uS
x1 .25uS .25uS
x2 .5uS .5uS
Figura 1.37. Fereastra de afişare aproprietăţilor textului
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 58/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 59
Properties… . În această fereastr ă se fac modificările textului, a dimensiunilor acestuiaetc. Pentru exemplul nostru se va modifica textul în: x0, x1 şi respectiv x2 şi se vor şterge celelalte linii de text. Textul se poate şterge prin selectarea acestuia (clic pe text)şi apăsarea tastei Del.
Datorită faptului că semnalul de ceas porneşte cu starea unu a semnalului, înschemă s-au prevăzut inversoarele U5A, U6A şi U6A (figura 1.24) pentru aducereasemnalului într-o formă convenabilă în corespondenţă cu tabelul de adevăr. Acest lucruse putea realiza şi direct din editorul proprietăţilor componentei însă, având în vederefaptul că, în general, într-un circuit logic combinaţional sunt necesare atât semnalele deintrare directe cât şi cele negate, s-a preferat această soluţie.
În sfâr şit, schemei i se mai adaugă un conector de ieşire. Pentru aceasta seselectează din meniul principal Place opţiunea Hierarchical Port sau se selectează
pictograma din bara de unelte. În fereastracare se deschide (figura 1.38) se selectează
biblioteca CAPSYM si din această bibliotecă alegem conectorul PORTLEFT-L. După plasarea conectorului se face dublu clic pe textulasociat acestuia care se schimbă în Y0. După
plasarea conectorului, activitatea de plasare acomponentelor conform figurii 1.24 se încheie.În continuare componentele trebuie conectateîntre ele prin intermediul legăturilor electrice.
1.6.1.3.Conectarea componentelor schemei electronice
Pentru conectarea componentelor unei scheme electrice în OrCAD CAPTUREexistă mai multe posibilităţi. Opţiunile disponibile în meniul Place sunt: Wire pentru
plasarea unui traseu electric, cu pictograma în bara de unelte,Bus pentru plasareaunei magistrale în schema electronică, pentru care pictograma în bara de unelte este
, Junction pentru conectarea între ele două trasee electrice (Wire) sau magistrale
(Bus), cu pictograma şi în sfâr şit, Bus entry pentru conectarea magistralei la
componente cu pictograma .În exemplul nostru nu vom avea nevoie decât de trasee electrice (Wire).
Conform schemei prezentate în figura 1.24, pentru a realiza o conexiune electrică seselectează opţiunea Wire din meniul Place sau se selectează pictogramacorespunzătoare din bara de unelte. Se plasează indicatorul mausului în primul punct alconexiunii şi se face clic. Se deplasează indicatorul mausului în punctul următor alconexiunii şi se face din nou clic. În acest fel s-a realizat o conexiune între două puncteşi se poate trece la conexiunea următoare. Pentru a realiza o conexiune corectă aceastatrebuie să fie f ăcută în vârful punctului de conectare f ăr ă suprapuneri cu terminalulcomponentei conectate. Pentru încheierea activităţii de conectare a componentelor, seface clic dreapta şi se selectează End Wire din meniul desf ăşurat.
Pentru plasarea unor etichete traseelor electrice se selectează opţiunea Place din
meniul principal după care se selectează Net Alias… sau se selectează pictograma
Figura 1.38. Fereastra pentruselectarea conectorului
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 59/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 60
din bara de unelte. Ca rezultat al acestei acţiuni se afişează o fereastr ă de editare aetichetei pentru unul din traseele electrice. După apăsarea butonului OK , plasareaetichetei se face poziţionând cursorul cu eticheta pe unul din traseele electrice şi f ăcândclic pe acesta.
Utilizarea etichetelor poate fi folositoare, spre exemplu, pentru identificareasemnalelor care circulă între anumite puncte ale schemei electrice. Aceste etichete vor apărea şi pe graficele de semnal construite de simulatorul OrCAD PSPICE.
După conectarea tuturor componentelor se poate face o primă verificare acorectitudinii realizării schemei electrice.
1.6.1.4.Verificarea corectitudinii realizării schemei electrice
Pentru verificarea corectitudinii realizării unei scheme electrice se va selecta înfereastra de gestionare a proiectului (figura 1.33) schema electronică aflată în desenul
PAGE1. După acesta, în meniul Tools apărut în meniul principal se selectează opţiunea
Design Rules Check… care determină apariţia ferestrei de stabilire a regulilor deverificare a schemei electrice. În această fereastr ă opţiunile implicite sunt suficiente şi
pentru lansarea verificării se va apăsa butonul OK . În fereastra Session Log vor fiafişate următoarele mesaje:
********************************************************************************** Design Rules Check *********************************************************************************
Checking Pins and Pin Connections
--------------------------------------------------Checking Schematic: SCHEMATIC1--------------------------------------------------Checking Electrical Rules
Checking for Unconnected Nets
Checking for Invalid References
Checking for Duplicate References
Aceste mesaje indică faptul că schema electrică este corectă. În situaţia în careapare o eroare la desenarea schemei, această eroare este semnalată printr-un mesaj şi seafişează coordonatele punctului în care apare eroarea.
După ce desenarea schemei circuitului electronic a fost încheiată, se poate trecela simularea funcţionării circuitului în vederea analizei comportării acestuia şi, apoi, la
proiectarea cablajului imprimat.Pentru simulare se foloseşte componenta pachetului de programe OrCAD
PSPICE. Pregatirea simulării circuitului electronic presupune stabilirea punctelor de testşi stabilirea profilului simulării.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 60/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 61
1.6.1.5. Plasarea punctelor de test pe schema electronică
Punctele de test sunt punctele din schema electrică unde utilizatorul doreşte să vizualizeze anumiţi parametri.
Din programul OrCAD CAPTURE se selectează din meniul principal opţiuneaPSpice iar din meniul desf ăşurat, opţiunea Markers.Opţiunea Markers permite alegerea punctelor de test de tip Voltage Level
(nivel de tensiune), Voltage Differential (diferenţă de tensiune), Current Into Pin (curentul printr-un terminal) şi Advanced care permite o serie de măsur ători complexe.De asemenea, opţiunea Markers permite afişarea tuturor punctelor de măsur ă peschemă (Show All), ascunderea acestora (Hide All), ştergerea (Delete All) şi listareaacestora (List …). Deoarece în urma simulării dorim să urmărim forma tensiunii(nivelele logice) în anumite puncte se va selecta Voltage Level. Simbolul sondei demăsur ă care apare solidar cu indicatorul mausului se plasează la capătul terminalelor unde se doreşte afişarea, în simulatorul PSpice, a formelor de undă ale tensiunii.
Conform figurii 1.24, punctele de măsur ă se vor plasa la terminalele componentelor:U5A:2, U6A:2, U7A:2 şi U4A:3.
1.6.1.6.Stabilirea profilului de simulare
Pentru realizarea unei simulări trebuie stabilitacum un profil de simulare. Pentru aceasta se selectează din meniul principal PSpice după care se selectează dinmeniul desf ăşurat New Simulation Profile. Aparefereastra din figura 1.39 prin intermediul căreia ni sesolicită numele profilului de simulare. Vom scrie încaseta text Name:, spre exemplu, numele „test1” şi seapasă butonul Create. În fereastra profilului de simulare„test1” afisată pe ecran se pot stabili caracteristicile unei
simulări conform opţiunilor afişate de fereastr ă (figura 1.40): General , Analysis ,
Include Files , Libraries , Stimulus , Options , Data Collection şi Probe Window. Pentruexemplul nostru sunt suficiente opţiunile implicite. Totuşi se va verifica dacă înfereastra afişată pentru opţiunea Analysis sunt stabilite setările afişate în figura 1.40.
Durata simulării se stabileste înfuncţie de perioada semnalelor de intrarestabilite la configurarea componentei
DigClock (paragraful 1.6.1.2). Semnalulde intrare cu frecvenţa cea mai scăzută (perioada cea mai mare) este semnalul x2 care, conform tabelului 1.17, are o
perioadă de 2 x 0,5 μs = 1 μs. Pentru aavea graficul unei perioade complete aacestui semnal stabilim timpul desimulare ( Run to time) egal cu perioadaacestuia.
Pentru o singur ă schemă electrică se pot stabili mai multe profile de
Figura 1.39. Fereastrapentru stabilirea numelui
profilului de simulare
Figura 1.40. Fereastra profilului de simulare“test1”
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 61/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 62
simulare diferite în funcţie de necesităţile utilizatorului stabilind nume diferite pentruaceste profile.
1.6.1.7. Simularea circuitului
Se poate trece acum la simularea circuitului logic combinaţional. Pentru aceastase selectează opţiunea PSpice din meniul principal, după care se selectează comandaRun. După selectarea acestei comenzi, programul OrCAD PSPICE este lansat înexecuţie şi sunt afişate pe ecran graficele corespunzătoare variaţiilor de tensiune în
punctele de test (figura 1.50).În urma simulării circuitelor logice combinaţionale se pot realiza observaţii
asupra comportării circuitului în domeniul timp, corespondenţa între formele de undă,apariţia hazardului, comportarea statică şi dinamică a circuitului, analiza dispersiei parametrilor componentelor, influenţa temperaturii şi multe altele.Dacă în urma simulării circuitului rezultatele sunt bune se poate trece la realizarea fizică
a acestuia.
1.7. Analiza circuitelor logice combinaţionale cu ajutorul limbajelorpentru descrierea structurii hardware (HDL)
1.7.1. Introducere
Realizarea circuitelor digitale simple presupune parcurgerea mai multor etape,dintre care cele mai importante sunt:
o
descrierea informală a funcţionării circuitului;o transpunerea descrierii circuitului în ecuaţii logice;o aplicarea metodelor de simplificare şi optimizare a funcţiilor logice;o sinteza schemei electrice a circuitului cu ajutorul por ţilor logice şi a
bistabililor;o simularea funcţionării circuitului şi corectarea eventualelor erori;o realizarea fizică a circuitului.
Dacă circuitul digital este de complexitate mai mare, o metodă de realizare desutilizată presupune descompunerea circuitului în blocuri funcţionale, testarea separată aacestora şi apoi, după stabilirea relaţiilor ierarhice între acestea, testarea ansamblului
compus din blocuri funcţionale. De regulă o astfel de metodă poate fi aplicată lacircuitele compuse din până la aproximativ şase sute de por ţi.Creşterea complexităţii sistemelor numerice odată cu dezvoltarea tehnologiei
digitale a dus la imposibilitatea folosirii metodelor clasice de proiectare şi realizare aacestora.
Sistemele numerice actuale sunt extrem de complexe. La nivelul celor mai micidetalii, ele constau în sute de miloane de elemente de tipul tranzistoarelor sau al por ţilor.De aceea, pentru sistemele numerice mari, proiectarea la nivelul por ţilor este practicimposibilă. Schema devine un paienjenis de conexiuni, care nu mai aratafunctionalitatea proiectului.
Incepand cu 1970, inginerii de calculatoare si inginerii electronisti au apelat la
HDL (Hardware Description Language) care reprezintă, aşa cum arată şi numele
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 62/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 63
acestora, limbaje de programare destinate descrierii formale a circuitelor electronice.Aceste limbaje pot descrie funcţionarea, structura, permit simularea, iar în final creareastructurii fizice a circuitelor electronice.
Structura fizică obţinută se refer ă la tehnologia de realizare a circuitului integrat
deoarece un astfel de circuit nu mai poate fi realizat cu componente discrete.Un limbaj care indică modul de conectare a elementelor componente ale unuicircuit electronic şi relaţiile ierarhice care există între diversele blocuri ale circuituluisunt considerate ca limbaje pentru descrierea reţelelor (netlist). Spre deosebire deacestea, limbajele destinate descrierii formale a structurilor fizice electronice(hardware), trebuie să conţină atât expresii pentru redarea comportării în domeniul timpcât şi expresii destinate redării simultaneităţilor, caracteristici ce reprezintă principaleleatribute ale unei structuri fizice de acest tip.
HDL sunt folosite pentru descrierea diferitelor componente fizice ale unui circuitelectronic cu ajutorul anumitor secvenţe de program. Aceste secvenţe de program pot fiutilizate prin intermediul unui simulator pentru analiza comportării în timp a circuitului
electronic înainte de realizarea fizică a acestuia. Simulatoarele pot fi utilizate pentrucircuite digitale (circuite la care semnalele au o evoluţie discretă în timp), pentrucircuite analogice (cu evoluţie continuă în timp) sau circuite mixte analogice şi digitale,
pentru fiecare dintre aceste tipuri de circuit existând limbaje descriptive adecvate.Scrierea secvenţei de program corespunzătoare unui anumit circuit electronic nu
înseamnă că, pe baza acestui cod, se poate genera automat, cu ajutorul unui software desinteză, structura fizică a circuitului. Un program de sinteză poate doar realizaconvertirea codului corespunzător descrierii structurii fizice şi efectuarea unor optimizări locale dar nu poate realiza implementări eficiente pe baza unor descrieridefectuase sau incomplete. Făr ă o înţelegere profundă a modului de funcţionarecorespunzător circuitului proiectat limbajele pentru descrierea structurilor fizice potconduce la realizări nejustificat de complexe şi, de multe ori, la imposibilitateaimplementării circuitului.
În general, limbajele de programare de uz general precum C, PASCAL, JAVAetc, nu sunt potrivite utilizării ca HDL datorită faptului că nu există facilităţi pentrudescrierea comportării în timp şi a simultaneităţilor, programarea în astfel de limbaje
presupunând un effort suplimentar din pertea programatorului. Din acest motiv s-audezvoltat limbaje specializate, adecvate acestui scop, care permit o descriere simplă astructurii hardware.
Limbajele destinate descrierii structurilor fizice digitale au apărut din necesitatea proiectării sistemelor extrem de complexe. Complexitatea sistemelor digitale impune
utilizarea mai mutor tipuri de informaţii în procesul de realizare a circuitului integrat.Acelaşi sistem digital este descris în diferite moduri şi este examinat din mai multe perspective. HDL reprezintă un sistem din trei puncte de vedere:
o din punct de vedere comportamental;o din punct de vedere structural;o din punct de vedere fizic.
Descrierea comportamental ă consider ă sistemul ca o cutie neagr ă la care seignor ă modul de realizare a structurii interne. În acest caz descrierea se concentrează asupra relaţiilor între semnalele de intrare şi ieşire, indicându-se r ăspunsul de ieşire
pentru un anumit set de semnale aplicate la intrare. Există mai mute căi pentru
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 63/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 64
descrierea relaţiilor dintre semnalele de intrare şi ieşire şi din acest motiv arareoridescrierea comportamentală este unică.
Descrierea structural ă se refer ă la modul de realizare a structurii interne a
sistemului. Descrierea se face prin specificarea componentelor utilizate şi modul în careacestea sunt conectate. Această descriere reprezintă mai mult sau mai putin schemasistemului care furnizează informaţii asupra conexiunilor (netlist).
Descrierea fizică se refer ă la caracteristicile fizice ale sistemului şi adaugă informaţii suplimentare la descrierea structurală. Sunt specificate dimensiunilecomponentelor, poziţia acestora pe cablajul imprimat sau în structura de siliciu acircuitului integrat şi poziţia traseelor electrice destinate conexiunilor.
Pe un circuit integrat putem avea sute de milioane de tranzistoare interconectateîntre ele în vederea obţinerii sistemului digital. Este imposibil pentru un operator umanşi chiar unui calculator să prelucreze un volul de date atât de mare. Din acest motiv, în
scopul gestionării corecte a volumului foarte mare de date descrierea sistemului derealizat se face pe mai multe nivle de abstractizare. O abstractizare semnifică în acestcaz un model simplificat a sistemului. Cele mai multe detalii se întâlnesc laabstractizările de pe nivelul de jos care sunt cele mai apropiate de structura fizică reală iar cele mai puţine detalii pe nivelul cel mai înalt.
La sistemele digitale se folosesc următoarele patru nivele de abstractizare:
o nivelul tranzistor;o nivelul poartă logică;o nivelul registrului de transfer (Register-transfer-level sau RT-level);o nivelul procesor.
Împăr ţirea pe aceste nivele se bazează în primul rând pe elementele bloc de bază utilizate la realizarea circuitelor numerice: tranzistorul, por ţile logice, modulelefuncţionale şi respectiv procesorul.
Abstractizarea la nivel de tranzistor reprezintă abstractizarea pe nivelul cel maiscăzut. La acest nivel, elementele de bază sunt tranzistoarele, rezistenţele electrice,capacitâţile şi aşa mai departe. Descrierea comportării se face în mod obişnuit cuajutorul unui set de ecuaţii diferenţiale sau cu ajutorul unor diagrame curent-tensiune. În
această situaţie pot fi folosite programe de simulare a sistemelor analogice pentru aobţine caracteristicile de intrare-ieşire.La acest nivel, descrierea fizică reprezintă schema detaliată ce conţine
componentele şi conexiunile între acestea.
Abstractizarea la nivel de poartă reprezintă următorul nivel de abstractizare. Laacest nivel elementele constructive ale schemei sunt reprezentate de către circuitecombinaţionale (por ţi logice elementare, multiplexoare etc) şi circuite secvenţiale(circuite de memorare – latch – şi bistabili).
La acest nivel se iau în considerare numai două valori a semnalelor,corespunzătoare celor două valori logice logice „unu” şi „zero”. Întâlnim deci, pe acest
nivel, o primă abstractizare importantă şi anume conversia unui sistem analogic într-un
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 64/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 65
sistem digital. Trebuie reţinut însă faptul că, în realitate, semnalele şi circuitele sunt încontinuare continui. Cu ajutorul acestei abstractizări, descrierea comportării intrare-ieşire se poate face cu prin intermediul ecuaţiilor algebrei logice (ecuaţii booleene)renunţându-se la ecuaţiile diferenţiale care sunt cu mult mai complexe şi mai dificil de
folosit. De asemenea informaţiile în domeniul timp sunt simplificate. Se foloseşte osingur ă informaţie şi anume timpul de propagare (paragraful 2.3.3.) sau timpul deîntârziere (delay time – propagation delay) pentru specificarea caracteristicilor îndomeniul timp a por ţii.
Abstractizarea la nivelul registrului de transfer (RTL) se bazează pe modulefuncţionale construite din elemente logice simple. Aceste module funcţionale suntreprezentate de către sumatoare, comparatoare registre, multiplexoare etc. Acest nivelde abstractizare poate fi considerat un nivel de abstractizare la nivel de modul.
Pentru descrierea comportamentală la acest nivel se folosec expresii generale
pentru precizarea modului de funcţionare şi a fluxului de date. Pentru descrierea unuisistem proiectat cu ajutorul metodologiei RT se foloseşte maşina cu stări finite extinsă (extended finite state machine – FSM).
O caracteristică importantă a descrierii la nivelul registrului de transfer oreprezintă folosirea unui semnal de ceas comun la componentele de memorare. Datorită existenţei acestui semnal, se realizează sincronizarea semnalelor şi timpul de întârziereeste înlocuit cu un număr de perioade de ceas.
Abstractizarea la nivel de procesor este reprezentată de blocuri funcţionale ceconţin procesoare, memorie, magistrale şi alte elemente asemănătoare. Descriereafuncţională a sistemului este similar ă cu un program scris într-un limbaj de programarede nivel înalt.
Utilizarea limbajelor descriptive a structurilor fizice (HDL) simplifică număruletapelor necesare elabor ării unui circuit digital:
o descrierea informală a funcţionării circuitului;o specificaţii în HDL;o simularea funcţionării circuitului şi corectarea eventualelor erori;o realizarea fizică a circuitului.
Limbajele descriptive a structurii fizice sunt folosite în principal la dispozitive
logice programabile (Programmable Logic Devices – PLDs) de diferite complexităţi dela PLD simple la cele mai complexe (CPLD) şi arii programabile de por ţi logice FieldProgrammable Gate Arrays (FPGAs).
Descrierea dispozitivelor simple poate fi f ăcută cu limbaje precum Abel, Palasmşi Cupl iar a celor complexe cu Verilog (numit şi Verilog HDL) şi VHDL (VHSICHardware Description Language), unde VHSIC reprezintă acronimul de la Very-High-S peed Integrated Circuit.
Verilog a fost lansat în 1985 de către Gateway System Corporation, care a fost preluată de către Cadence Design Systems, Inc.’s Systems Division. Pâna în 1990, când aluat fiinţă Open Verilog International (OVI), Verilog HDL a fost proprietatea companieiCadence. Ulterior, Cadence a plasat Verilog în Domeniul Public, cu speranţa deschiderii
unei pieţe de produse software legate de Verilog HDL, în condiţiile în care acesta se va
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 65/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 66
bucura de o largă r ăspândire.Verilog HDL permite proiectantului de hardware să descrie proiectele, atât la un
înalt nivel de abstractizare, cum ar fi cel al arhitecturii sau comportamental, cât şi laniveluri mai joase de implementare (nivelurile por ţii şi comutatorului), conducând la
măştile/şabloanele pentru circuitele integrate pe scar ă foarte largă (Very Large ScaleIntegration) şi la fabricarea circuitului.Standardul IEEE, pentru VHDL, a apărut în 1987, în timp ce standardul IEEE,
pentru Verilog, a fost elaborat în 1995. VHDL este asemănător cu limbajul Ada iar Verilog este asemănător limbajului C, care este foarte r ăspândit în rândurile inginerilor electronişti şi de calculatoare.
VHDL a fost solicitat iniţial companiilor furnizoare, de către DepartamentulApăr ării al Statelor Unite (US Department of Defense), pentru documentarea circuitelor integrate destinate aplicaţiilor specifice (ASIC - application-specific integrated circuit). Cualte cuvinte, VHDL a fost elaborat ca o alternativă la voluminoasele documentaţiiînsoţitoare ce conţineau detalii specifice de implementare. Până la ideea de simulare a
acestor « documentatii » nu a fost decât un pas şi au fost create simulatoare care să poată citi fişierele VHDL. Următorul pas a fost cel al dezvoltării sintetizatoarelor logice care pe
baza fişierelor VHDL puteau furniza la ieşire specificaţiile pentru realizarea fizică acircuitului.
Simularea unui circuit electronic reprezintă o etapă în procesul de elaborare aacestuia în scopul verificării şi optimizării circuitului înainte de realizarea fizică.Prin intermediul procesului de simulare se verifică, la orice nivel de abstractizare,caracteristicile funcţionale ale modelului. În acest scop se folosesc simulatoare cum suntde exemplu: OrCAD Simulate, ModelSim, VCS, Verilog-XL, Veriwell, Finsim,iVerilog, VeriDOS etc.
Simulatorul testează dacă sunt îndeplinite, de către codul RTL, cerinţelefuncţionale din specificaţie, verificându-se dacă toate blocurile RTL sunt corecte din
punct de vedere funcţional. Pentru aceasta trebuie scris un fişier de test (testbench) caregenerează semnalul de tact (clk), semnalul de reset şi vectorii de test necesari. Cele maimulte simulatoare afişează formele de undă de ieşire ale circuitului testat în aşa fel încâtsă ne putem da seama dacă circuitul funcţionează corect. Dacă circuitul este foartecomplex atunci fişierul de test va vonţine şi semnalele de ieşire aşteptate astfel încâtverificarea să se facă automat.
În figura 1.41. este prezentat modul de testare a unui circuit digital.
1 2 3Comparator
logic
Circuit digital
reset
clock
s e m n a l e d e
t e s t
n s e mn a l e d e
i e ş i r e
m
Figura 1.41. Testarea cu ajutorul simulatorului
Fişier de test(testbench)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 66/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 67
Simularea în domeniul timp (timing simulation) se face după sinteză, după realizarea traseelor electrice şi plasarea componentelor. La această simulare sunt luate înconsiderare întâzierile introduse de por ţile logice şi de către traseele electrice şi se verifică funcţionarea la frecvenţa semnalului de ceas (SDF Simulation – Standard Delay Format
Simulation, Gate Simulation).
1.7.2. Limbajul Verilog HDL
În acest paragraf nu se face o descriere completă a limbajului Verilog. Vor fidescrise doar acele elemente ale limbajului care vor permite descrierea unui circuit realizatcu por ţi logice, în vederea simulării. Aceste aspecte acoper ă doar o parte a limbajului.Pentru o descriere completă a limbajului Verilog HDL se pot examina lucr ările date la
bibliografie, cât şi standardul IEEE.În acest paragraf se vor prezenta gradat noţiunile de bază ale limbajului şi modul de
pregătire a unei simulări în aşa fel încât să se poată înţelege principiile care stau la baza
simulării circuitelor logice combinaţionale cu ajutorul limbajulul Verilog HDL.
1.7.2.1. Structura unui program Verilog HDL
Elementul de bază al limbajului Verilog este modulul . Un sistem numeric poatefi descris cu ajutorul unui singur modul sau cu ajutorul a mai multor module în func ţiede strategia aleasă de către proiectant.
Modulele reprezintă păr ţi hardware, ce pot descrie o gamă largă de structurifizice, începând cu por ţi logice simple şi tranzistoare şi terminând cu sisteme complexecum ar fi, de exemplu, microprocesoarele.
Fiecare modul este compus dintr-o interfaţă, corpul modulului şi elementesuplimentare adăugate opţional.
Structura unui modul este următoarea:
module <nume_modul> (<lista de porturi>);delimitator modul (început modul)
------------------------------------------------------------------------------------<declararea porturilor> interfa ţ a <declararea parametrilor>
------------------------------------------------------------------------------------<directive include> elemente externe suplimentare
------------------------------------------------------------------------------------<declararea variabilelor> corpul modulului <atribuiri><instanţe ale module de nivel scăzut><blocuri initial şi always><sarcini şi funcţii>
-------------------------------------------------------------------------------------endmodule
delimitator modul (sfâr şit modul)
Cuvintele rezervate module şi endmodule delimitează modulul.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 67/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 68
După cuvântul rezervat module urmează <nume_modul> ce reprezintă un
identificator care, în mod unic, denumeşte modulul.Identificatorii Verilog (inclusiv numele modulelor) trebuie să respecte
următoarele reguli:
o identificatorul poate fi compus numai din litere, cifre, simboul dollar “ $“, şi liniuţa de subliniere (underscore) “ _ ";
o identificatorul trebuie să înceapă cu o liter ă sau cu liniuţa de subliniere;o nu sunt permise spaţiile în numele unui identificator;o Verilog face distincţie între caracterele mari şi mici, deci acelaşi nume
scris cu litere mari şi litere mici reprezintă identificatori diferiţi;o cuvintele rezervate nu pot fi folosite ca identificatori.
După numele modulului urmează lista de porturi, scrisă între paranteze rotunde.
Această listă este în strânsă legătur ă cu descrierea porturilor în interfaţa modulului. Înacestă listă sunt enumerate porturile modulului, care sunt folosite pentru conectarea cualte module, separate prin virgulă. În interfaţa modulului se face declararea acestor
porturi prin specificarea direcţiei acestora : porturi de intrare (input), ieşire (output) sauintrare/ieşire (inout),
Sectiunea <declararea parametrilor> din interfaţă, specifică obiectele de tip dateca registre (reg), memorii si fire (wire), cât şi construcţiile procedurale ca function şitask care vor fi explicate mai târziu.Elementele externe suplimentare sunt declarate cu ajutorul directivelor include.
Un exemplu genearal al unui modul în care sunt precizate interfaţa şi elementeleexterne suplimentare este prezentat în continuare.
module ModulOarecare (…);input …;output …;inout …;‘include “…”…endmodule
La scrierea unui program, de mare importanţă este adăugarea comentariilor, care
să explice codul scris şi care să nu fie luate în considerare de către compilator. LimbajulVerilog permite introducerea comentariilor astfel: folosind două simboluri slash (//) se poate scrie comentariul pe o linie, sf ăr şitul comentariului fiind marcat de sfâr şitul linieişi comentariul pe bloc, care poate fi scris pe mai multe linii şi care este delimitat laînceput cu /* iar la sfâr şit cu */. Regulile de folosire a comentariilor sunt aceleaşi ca şi
pentru limbajele de nivel înalt.Pentru a exemplifica modul de realizare al interfeţei unui modul, vom considera
unitatea logică şi aritmetică din figura 1.42.Conform porturilor sistemului reprezentat de unitatea logică şi aritmetică,
interfaţa modulului corespunzător acesteia este ar ătat în exemplul 1.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 68/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 69
EXEMPLUL1
module ALU (Result, Cout, Equal, In1, In2,OpSel, Cin, Mode) ;output [3:0] Result; // rezultatul operaţieioutput Cout; // ieşire depăşire (Carry out)output Equal; // când este 1, In1 = In2input [3:0] In1; // primul operandinput [3:0] In2; // al doilea operandinput [3:0] OpSel; // selectarea operaţieiinput Cin; // intrare depăşire (Carry in)
input Mode; // modul aritmetic/logic, aritmetic când este 0/* Urmează corpul modulului care va fi descris mai târziu;acestă parte a modulului poate conţine toate cele cincielemente ale corpului modulului sau numai o parte dintreacestea */. . .endmodule
Corpul modulului conţine descrierea structurii fizice la care se refer ă modulul.Cele cinci elemente ale corpului modulului pot fi scrise în orice ordine cu o singur ă restricţie: nici un articol nu poate fi folosit înainte de a fi definit. Există trei moduridiferite prin care un sistem poate fi descris cu ajutorul modulelor : descriereacomportamentală, descrierea structurală sau cea a fluxului de date.
Descrierea structurală exprimă comportarea unui sistem numeric (modul) ca o conectareierarhică de submodule. La baza ierarhiei componentele trebuie să fie primitive saumodule specificate anterior. Primitivele Verilog sunt por ţi logice elementare şitranzistoare de trecere (comutatoare).
Descrierea prin fluxul de date reprezintă o listă de expresii care arată modul de prelucrare a semnalelor de ieşire în aşa fel încăt să se obţină la ieşire valorile dorite,similar cu descrierea cu ajutorul ecua
ţiilor logice. Expresiile se pot baza pe o gam
ălarg
ă
UNITATE LOGICĂ ŞI ARITMETICĂ (ULA)
In1 In2 OpSel Mode
Result Equal
COut CIn
Figura 1.42. Semnalele de intrare şi de ieşire a unei unităţi logice şi aritmetice
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 69/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 70
de operatori cum sunt : operatori logici, prelucr ări la nivel de bit, operatori aritmetici,operatori condiţionali etc.
Descriere comportamentală defineşte comportarea unui sistem numeric (modul)
folosind descrierea algoritmică cu ajutorul construcţiilor similare limbajelor de programare tradiţionale.Pentru exemplificarea celor trei moduri de descriere ale unui sistem vom consideraschema din figura 1.43.
Circuitul din figura 1.43 reprezintă un multiplexor cu patruintr ări (In0, In1, In2 şi In3), o ieşire (Out) şi două intr ări decomandă (Sel0 şi Sel1). Funcţionarea acestui circut estesimilar ă cu cea a unui comutator comandat: în funcţie devaloarea binar ă aplicată pe intr ările de comandă (Sel0 şi Sel1)una din intr ările de semnal (In0, In1, In2 sau In3) este conectată la ieşire (Out). Tabelul de adevăr al multiplexorului cu patru
intr ări este tabelul 1.18.În continuare, se prezintă pe rând, posibilitatea de scriere în limbajul Verilog, a
modulului corespunzător circuitului din figura 1.43 în cele trei stilulri posibile:structural, a fluxului de date şi respectiv comportamental.
Descrierea structurală
EXEMPLUL 2
module mux_4_to_1 (Out, In0, In1, In2, In3, Sel1, Sel0);
output Out;input In0, In1, In2, In3, Sel0, Sel1;
wire NotSel0, NotSel1;wire Y0, Y1, Y2, Y3;
not (NotSel0, Sel0);not (NotSel1, Sel1);
nand (Y0, In0, NotSel1, NotSel0);
TABELUL 1.18.
Sel1 Sel0 Out
0 0 In0
0 1 In1
1 0 In2
1 1 In3
Out
In2U5A
7410
1122
13
Y1In1
Sel1
Y2
U7A
7420
6
12
45
Y3
NotSel0
Sel0
U1A
7404
1 2
U2A
7404
1 2
U4A
7410
1122
13
In0
In3
U6A
7410
1122
13
U3A
7410
1122
13
Y0
NotSel1
Figura 1.43. Circuitul multiplexor cu patru intrări
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 70/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 71
nand (Y1, In1, NotSel1, Sel0);nand (Y2, In2, Sel1, NotSel0);nand (Y3, In3, Sel1, Sel0);nand (Out, Y0, Y1, Y2, Y3);
endmodule
Descrierea prin fluxul de date
Analizând fluxul datelor circuitului din figura 1.43 putem construi diagrama desemnal din figura 1.44. Acestă diagramă indică modul în care sunt prelucrate, din punct devedere logic, semnalele de intrare în scopul obţinerii semnalului de ieşire.
EXEMPLUL 3
module mux_4_to_1 (Out, In0, In1, In2, In3, Sel1, Sel0);
output Out;input In0, In1, In2, In3, Sel0, Sel1;
assign Out = ~[~(~Sel1 & ~Sel0 & In0) & ~(~Sel1 & Sel0 & In1) &
~(Sel1 & ~Sel0 & In2) & ~(Sel1 & Sel0 In3)];
endmodule
Notaţiile operanzilor din linia assign sunt cele corespunzătoare limbajului C.
Descrierea comportamentală
Conform descrierii modului de funcţionare a circuitului f ăcută mai sus, putemconstrui o schemă echivalentă a acestuia ca cea prezentată în figura 1.45. Circuitul esteechivalent cu un comutator cu patru poziţii comandat de semnalele Sel1 şi Sel2.
Out
In3
In0
Sel1
Sel0
In2
In1
“NU”logic
“NU”logic
“SI-NU”
logic
“SI-NU”logic
“SI-NU”logic
“SI-NU”logic
“SI-NU”logic
Figura 1.44. Fluxul datelor pentru circuitul din figura 1.43.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 71/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 72
Stilul comportamental descrie circuitul în funcţie de comportarea acestuia,
descriind acţiunile pe care circuitul le execută în timpul funcţionării. Acţiunile suntspecificate în cadrul blocurilor comportamentale initial şi always care sunt compusedin instrucţiuni secvenţiale şi concurente. De multe ori este suficient să se trenscriedescrierea comportamentală a circuitului într-un limbaj de nivel înalt în limbajulspecific Verilog respectând regulile de sintaxă ale acestuia.
Forma comportamentală a modulului corespunzător circuitului din figura 1.43este dată în exemplul 4.
EXEMPLUL 4
module mux_4_to_1 (Out, In0, In1, In2, In3, Sel1, Sel0);
output Out;input In0, In1, In2, In3, Sel0, Sel1;reg Out;
always @ (Sel1 or Sel0 or In0 or In1 or In2 or In3)begin
case ((Sel1, Sel0))’b00 : Out = In0;’b01 : Out = In1;’b10 : Out = In2;
’b11 : Out = In3;efault : Out = 1’bx;
endcaseend
endmodule
Semantica construcţiei unui module în Verilog este diferită de cea asubrutinelor, procedurilor şi a funcţiilor din alte limbaje. Un modul nu este chematniciodat ă. Un modul are o instanţă la începutul unui program şi este prezent pe întreagadurată a programului. O instanţă a unui modul Verilog este utilizată ca model al unui
In1
In2
In3
In4
Sel1, Sel2
Out
Figura 1.45. Principiul de funcţionare al multiplexorului
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 72/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 73
circuit hardware la care se presupune că nu se efectuează modificări de cablaj. Lafiecare instanţă a modulului, acesteia i se da un nume.
De exemplu NAND1 şi NAND2 sunt nume de instanţe ale por ţii NAND, înexemplul de mai jos (exemolul 5). În acest exemplu este dată o specificare din punct de
vedere a fluxului de date a unui modul NAND. Ieşirea out este negaţia produsului andal intr ărilor in1 şi in2.
EXEMPLUL 5
// Modelul corespuzator fluxului de date al portii NAND.module NAND (out, in1, in2);output out;input in1, in2;// instructiune de atribuire continuaassign out = ~(in1 & in2);
endmodule
Porturile in1, in2 şi out sunt etichetele pe fire. Atribuirea continuă assignurmăreşte în permanenţă eventualele modificări ale variabilelor din membrul drept,
pentru reevaluarea expresiei şi pentru propagarea rezultatului în membrul stâng (out).Instrucţiunea de atribuire continuă este utilizată pentru a modela circuitele
combinationale la care ieşirile se modifică ca urmare a modificărilor intr ărilor.Specificarea structurală a unui modul AND (exemplul 6), obţinut ca urmare a
conectării ieşirii unei por ţi NAND la cele două intr ări ale altei por ţi NAND (cea de-adoua poartă folosită ca inversor – vezi şi paragraful 1.3).
EXEMPLUL 6
module AND (out, in1, in2);// Modelul structural al unei porti AND formata din doua porti NANDoutput out;input in1, in2;wire w1;// doua instante ale modulului NAND
NAND NAND1(in1, in2, w1); NAND NAND2(w1, w1, out);
endmoduleAcest modul are două instanţe ale lui NAND, numite NAND1 şi NAND2,
conectate printr-un fir intern w1. Forma generală pentru invocarea unei instanţe este următoarea:
<nume_modul > <lista de parametri > <numele instantei> (<lista de porturi>);
unde <lista de parametri> are valorile parametrilor, care sunt transferate către instanţă.Un exemplu de parametru transferat ar fi intârzierea pe o poartă.
Urmatorul modul (exemplul 7) reprezintă un modul de nivel înalt, care stabileşte
anumite seturi de date şi care asigur ă monitorizarea variabilelor.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 73/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 74
EXEMPLUL 7
module test_AND;// Modul de nivel inalt pentru testarea altor doua module.
reg a, b;wire out1, out2;initial begin // Datele de test
a = 0; b = 0;#1 a = 1;#1 b = 1;#1 a = 0;
endinitial begin // Activarea monitorizarii
$monitor("Time=%0d a=%b b=%b out1=%b out2=%b",$time, a, b, out1, out2);
end// Instantele modulelor AND si NANDAND gate1(a, b, out2);
NAND gate2(a, b, out1);endmodule
De notat că valorile a şi b trebuie menţinute pe toată durata oper ării. De aceeaeste necesar ă utilizarea unor registre de câte un bit. Variabilele de tip reg stochează ultima valoare care le-a fost atribuită procedural. Firul, wire, nu are capacitatea dememorare. El poate fi comandat în mod continuu, de exemplu, prin instrucţiunea deatribuire continuă sau prin ieşirea unui modul.
Dacă firele de intrare nu sunt conectate, ele vor lua valoarea x – necunoscută.Atribuirile continue folosesc cuvantul cheie assign în timp ce atribuirile
procedurale au forma :<variabila reg > = <expresie> ;
unde <variabila reg> trebuie să fie un registru sau o memorie. Atribuirile procedurale pot apărea numai în construcţiile initial şi always.
Instrucţiunile din blocul primei construcţii initial vor fi executate secvenţial,dintre care unele vor fi întârziate de #1 cu o unitate de timp simulat. Construcţia always
se comportă în acelaşi mod ca şi construcţia initial cu excepţia că ea ciclează la infinit(pană la terminarea simulării).Construcţiile initial şi always sunt utilizate pentru modelarea logicii secventiale
(automate cu stări finite).Verilog face o importantă distincţie între atribuirile procedurale şi atribuirea
continuă assign.Atribuirile procedurale modifică starea unui registru, adică a logicii secventiale,
în timp ce atribuirea continuă este utilizată pentru a modela logica combinaţională.Atribuirile continue comandă variabile de tip wire şi sunt evaluate şi actualizate atuncicând un operand de intrare işi modifică valoarea. Este important de înţeles şi dememorat aceste diferenţe.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 74/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 75
Toate cele trei module vor fi plasate într-un fişier, care va fi executat de cătresimulator pentru a produce urmatoarea ieşire:
Time=0 a=0 b=0 out1=1 out2=0Time=1 a=1 b=0 out1=1 out2=0
Time=2 a=1 b=1 out1=0 out2=1Time=3 a=0 b=1 out1=1 out2=0Întrucât simulatorul iese din cadrul evenimentelor, nu a mai fost necesar ă oprirea
explicită a simulării.În Verilog semnalele pot avea patru valori distincte: 1 – corespunzător valorii
logice “adevărat”, 0 – corespunzător valorii logice “fals”, x – corespuzător unei valorilogice oarecare (necunoscute) şi z – corespunzător stării de înaltă impedanţă. Acestesemnale nu pot apar ţine decât uneia din cele două clase: reţea sau registru.
Reţeaua reprezintă conexiunile între elementele fizice, nu are nici un fel decapacitate de stocare iar valoarea semnalului de pe reţea depinde numai de valoareasemnalului de sursă. O reţea are starea de înaltă impedanţă dacă nu este conectată la nici o
sursă de semnal.Pe de altă parte, registrele pot stoca semnalul de o anumită valoare chiar şi atunci
când sunt deconectate. O valoare atribuită unui registru este păstrată de acesta până când îieste atribuită o nouă valoare. Ca urmare, un registru joacă acelaşi rol ca şi o variabilă dintr-un limbaj de programare. Trebuie reţinut faptul că registrul Verilog difer ă de un registrunumeric deoarece registrul Verilog nu are nici o legătur ă cu semnalul de ceas.
Cele mai multe semnale dintr-un sistem sunt de tip reţea deoarece reprezintă semnale trimise de ieşirile unor dispozitive către intr ările altor dispozitive. Numele(cuvintele rezervate) folosite în limbajul Verilog pentru semnalele de tip reţea vor fidescrise pe scurt în continuare.
Prima categorie este reprezentată de semnalele, cel mai frecvent utilizate, de tipwire şi tri. Semnalele de tip wire sunt folosite în reţelele cu o singur ă sursă iar semnalelede tip tri sunt folosite în reţelele cu surse multiple. Cele două nume desemnează practicacelaşi tip de reţea şi sunt folosite numai în scopul clarităţii programului sursă.
Numele de wand/triand şi wor/trior repezintă cea de-a doua categorie desemnale de tip reţea care sunt folosite pentru a desemna reţele ale căror trasee realizează funcţii logice cablate (capitolul 2.5). Cuvântul rezervat wand/triand este desemnat pentruspecificarea funcţiei „şi – and” cablată (figura 1.46) iar wor/trior specifică funcţia „sau – or” cablată (figura 1.47). Şi în acest caz prefixul w- respectiv tri- sunt folosite doar în scop
pur funcţional, pentru creşterea clarităţii.Cea de-a treia categorie de semnale de tip reţea sunt reprezentate de numele
+V
R
…
K1
K2
Kn
Out
Figura 1.46. Funcţia logică „şi”
cablată
+V
R
…
K1
K2
KnOut
Figura 1.47. Funcţia logică „sau”
cablată
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 75/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 76
rezervate supply0, supply1, tri0, tri1, trireg care facilitează descrierea elementelor speciale ale reţelelor specificaţiilor de nivel scăzut cum sunt tranzistoarele sau por ţilerealizate în diverse tehnologii. Această categorie de semnale nu interesează aici deoareceele nu fac parte din obiectivul propus şi anume acela de simulare a circuitelor logice
combinaţionale.Ca şi celelalte elemente ale limbajului verilog şi semnalele trebuie declarate înaintede a fi folosite. Sintaxa declar ării unui semnal este foarte simplă:
<tipul semnalului> <nume semnal> ;unde <tipul semnalului> poate fi unul din cuvintele rezervate precizate mai sus: wire,wand etc. iar <nume semnal> este un nume ales de programator, nume ce trebuie să respecte regulile de scriere ale identificatorilor Verilog precizate la începutul acestuicapitol (descrierea structurii modulului). Linia declar ării semnalului se termină, ca şicelelalte linii, cu punct şi virgulă (;).
Într-un sistem descris cu ajutorul programului semnalele de tip reţea pot fi semnalescalare corespunzătoare unei singure conexiuni sau semnale vectoriale corespunzătoare
magistralelor formate din mai multe conexiuni electrice. Cel mai adesea semnalelevectoriale se întâlnesc în sistemele complexe similare cu cel descris în figura 1.42.
Aşa cum se vede în exemplul 1, un sistem poate avea semnale scalare: Cout, Equal , Cin şi Mode şi semnale vectoriale: Result, In1, In2 şi OpSel .
Declararea semnalului vectorial se face în felul următor:wire [MSB : LSB] <numele_vectorului>;
unde MSB (Most Significant Bit – cel mai semnificativ bit) este indicele bitului de rangmaxim al vectorului iar LSB (Least Significant Bit – cel mai puţin semnificativ bit) esteindicele bitului de rang minim al vectorului. În limbajul Verilog indicii sunt nume întregi
pozitive sau negative iar valoarea MSB poate fi mai mică decât LSB ceea ce este puţincontradictoriu dacă ne gândim la modul de definire al acestor biţi la reprezentareainformaţiei. Calculul dimensiunii vectorului se face cu relaţia următoare:
dimensiune = | MSB – LSB|dimensiunea reprezentând numărul de biţi sau numărul de circuite ale vectorului(magistralei).
Numele vectorului respectă aceleaşi reguli cu ceilalţi identificatori Verilog.De asemenea semnalele pot fi interne sau externe unui modul. Semnalele externe
permit modulului să comunice cu celelalte module iar semnalele interne asigur ă funcţionarea modulului. Diferenţa între semnalele interne şi cele externe constă în modulîn care acestea sunt declarate. Semnalele interne sunt declarate cu ajutorul identificatorilor semnalelor iar semnalele externe sunt declarate prin intermediul porturilor modulului.
Specificarea porturilor unui modul se face prin intermediul a două elemente:o numele portului aflat în lista porturilor ce urmează numelui modulului
din delimitatorul modulului. Lista numelor porturilor se pune între paranteze rotunde, numele porturilor fiind separate prin virgulă. Lista sefoloseşte atunci când o instanţă a modulului se găseşte într-ospecificaţie ierarhică cum ar fi de exemplu atunci când modulul estefolosit pentru o componentă aflată la nuvelul de bază (vezi exemplul 5şi exemplul 6);
o declararea portului prin care se specifică direcţia, dimensiunea (lăţimeavectorului) şi numele portului. Aceste declaraţii se află în interfaţa
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 76/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 77
modulului (partea de început a acestuia) iar declararea porturilor estesimilar ă cu cea a semnalelor interne:
<cuvânt_rezervat> [dimensiunea vectorului] <identificator> ;Diferenţa de esenţă între semnalele externe şi cele interne constă în
cuvântul_rezervat din declaraţia de mai sus: pentru porturi cuvântul rezervat semnifică sensul semnalului iar pentru semnale interne cuvântul rezervat semnifică tipul semnalului.
În Verilog porturile sunt în mod implicit considerate drept reţele de tip wire. Acestlucru este convenabil în cazul circuitelor combinaţionale, dar în cazul circuitelor secvenţiale vor fi necesare anumite completări care vor fi discutate atunci când vom studiaacest tip de circuite.
Pentru descrierea circuitelor combinaţionale, cel mai potrivit tip de descriere estecel structural deoarece acest tip de descriere este cel mai apropiat de structura fizică acircuitului (schema electrică a circuitului). Deoarece limbajul Verilog conţine un set de
por ţi logice predefinite (numite primitive) este posibil ca orice circuit logic combinaţionalsă fie descris cu ajutorul acestor primitive. Primitivele limbajului Verilog sunt în număr de
paisprezece şi ele pot fi folosite în descrierea structurală a circuitului. Cele paisprezece primitive se împart în patru categorii:
o por ţi logice cu mai multe intr ări (ce conţin şase primitive pentru por ţile logice: and – şi, nand – şi negat, nor – sau negat, or – sau, xnor – sau exclusiv negat şi xor – sau exclusiv; aceste
por ţi logice pot avea orice număr de intr ări şi numai o singur ă ieşire);
o por ţi logice cu mai multe ieşiri (ce conţin două primitive buf – circuitul de amplificare şi not - inversorul; oricare din aceste
por ţi are o singur ă intrare şi un număr nelimitat de ieşiri;o por ţi logice cu trei stări (reprezintă circuite tampon – buffer – ce
pot fi activate cu una din valorile logice „zero” sau respectiv„unu”: bufif0 şi respectiv bufif1 sau circuite inversoare cu treistări ce pot fi activate cu una din valorile logice „zero” saurespectiv „unu”: notif0 şi respectiv notif1;
o por ţi logice cu etajul final în gol (pull gates).
Pentru a exemplifica modul de scriere a unui modul folosind descrierea structurală cu ajutorul primitivelor, consider ăm sumatorul complet de un bit din figura 1.48.
A
U7A
7404
1 2
U2A
74136
1
23
U1A
74136
1
23
U3A
7408
1
23
BandCin
U6A
7427
12
1312
NCout
U5A
7408
1
23
Cout
AandCin
AxorB
Sum
AandB
B
Cin
U4A
7408
1
23
Figura 1.48. Sumatorul complet de un bit.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 77/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 78
Pentru acest circuit se poate scrie modulul:
EXEMPLUL 8
module FullAdd_1Bit (Sum, Count, A, B, Cin);output Sum, Count;input A, B, Cin;wire AxorB, AandB, AandCin, BandCin, NCout;
xor #5 HalfSum (AxorB, A, B);and #4 (AandB, A, B);xor FullSum (Sum, AxorB, Cin);and #4 And_2 (AandCin, A, Cin);and #4 And_3 (AandCin, B, Cin);nor (NCout, AandB, AandCin, BandCin);
not (Cout, NCout);
endmodule
În exemplul 8 utilizarea unei primitive se face prin specificarea numelui acesteia – de exemplu « xor », timpul de propagare (eventual) – de exemplu « #5 », un nume pentru
poartă (eventual) – de exemplu « HalfSum » şi lista semnalelor de la ieşire şi de intrare(lista conexiunilor la poarta respectivă) – de exemplu « (AxorB, A, B) », linia încheiindu-se cu punct şi virgulă.
Ordinea în care sunt scrise instanţele primitivelor în interiorul modulului nu arenici o importanţă, scrierea în ordine fiind necesar ă doar din punct de vedera a clarităţii.
În cazul în care se foloseşte descrierea prin transformările fluxului de date trebuiesă discutăm, pentru început, despre expresiile din Verilog.
Cu excepţia câtorva sisteme f ăr ă împortanţă, semnalul de intrare sufer ă anumitetransformări în scopul gener ării semnalului de ieşire dorit. Acest procces poare fi descrisastfel:
ieşirea prelucrarea (intr ării)
Prelucrarea semnalelor de intrare este realizată cu ajutorul expresiilor care sunt(conform descrierii din manualul de referinţă al limbajului Verilog) construcţii ce combină
operanzii cu operatorii pentru a produce rezultate ce sunt funcţii de valorile operanzilor şi asemnificaţiei semantice a operatorilor. În Verilog, un operator poate avea unul, doi sau treioperanzi în funcţie de specificaţiile sale. Nu există expresie f ăr ă operanzi. În plus, anumiţioperatori pot lucra numai cu anumiţi operanzi.
Operanzii, despre care s-a discutat deja, sunt cei reprezentaţi de elementelereţelelor sau registrelor, referite prin numele acestora.
O altă categorie de operanzi este reprezentată de constante. Verilog permitefolosirea constantelor de diferite tipuri care pot fi specificate în diferite formate pe care levom discuta în continuare.
De asemenea, drept operand poate fi specificat un singur bit sau o succesiune de biţi ai unui vector dintr-o reţea sau al unui registru.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 78/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 79
În sfâr şit, apelul unei funcţii (call) sau un sistem definit de utilizator, pot fifolosiţi ca operanzi, dacă aceştia returnează o valoare compatibilă cu operatorul.
Constante de tip întreg
Numerele întregi scrise într-un program constituie operanzi de tip întreg(constante) şi se considr ă, în mod implicit, că aceste numere sunt în baza zece, dacă nuse specifică altceva. Numerele precedate de semnul minus sunt constante de tip întreg,negative. Limbajul Verilog permite specificarea constantelor de tip întreg şi în alte bazede numeraţie în afar ă de baza zece. Astfel, constantele de tip intreg mai pot fi scrise în
binar, octal şi hexazecimal. Numerele scrise într-o altă bază decât baza zece sunt precedate de simbolul apostrof (‘) urmat de o liter ă care desemnează baza în care estescris numărul: b sau B – pentru numere binare (în baza doi), o sau O – pentru numereoctale (în baza opt) sau h sau H – pentru numere hexazecimale (în baza şaisprezece).
Numerele specificate în acest fel sunt tratate ca numere întregi f ăr ă semn.Dimensiunea constantei de tip întreg este determinată de către compilator dar ea
trebuie să fie de cel puţin 32 de biţi. De multe ori această dimensiune este prea mare şidin acest motiv se folosesc adesea constantele dimensionate. Constantele dimensionatesunt precedate de o valoare întreagă pozitivă care desemnează numărul de biţi alconstantei de tip întreg. Specificarea dimensiunii la constantele în baza zece impunefolosirea literei d sau D înaintea constantei de tip întreg.
EXEMPLUL 9
// constante la care nu este specificată dimensiunea35 // număr zecimal (implicit)‘h2a // număr hexazecimal‘b1010 // număr binar
// constante la care se specifică dimensiunea4’d7 //numărul zecimal 4 scris pe 4 biţi în loc de 328’b11001111 // valoare binar ă pe 8 biţi8’b1 // va fi reprezentat ca 000000018’h1 // va fi reprezentat ca 00000001
// numere negative-10 // număr reprezentat intern în cod complement faţă de doi pe
// 32 biţi-8’d10 // echivalent cu – (8’d10)
// folosirea caracterului “?”8’h1? // echivalent cu 0001zzzz2’b1? // echivalent cu 1z
// folosirea caracterelor “x”4’b01xx // ultimii doi biţi ai numărului sunt necunoscuţi‘hx // număr pe 32 de biţi necunoscut
// folosirea caracterului “_”
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 79/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 80
16’b1100_0101_1111_1000121_523_191
Operanzi de selecţie pentru un bit sau pentru o succesiune de biţi
Putem folosi ca operand un singur bit sau o succesiune de bi ţi ai unui vector dereţea sau de registru.Sintaxa operandului de selecţie a unui bit constă în folosirea numelui vectorului
a cărui bit este selectat, urmat de indexul bitului închis între paranteze dreptunghiulare.De exemplu:
DataBus[5]
ceea ce semnifică faptul că s-a selectat bitul cinci al vectorului DataBus.Dacă dacă dorim să specificăm un anumit număr de biţi succesivi ai unui vector,
atunci precizarea acestora trebuie să se facă relativ la vectorul vizat. Precizarea
succesiunii de biţi folosiţi se face în mod similar cu declararea unui vector: [MSB:LSB].În această declaraţie LSB nu poate fi mai mare ca MSB, MSB nu poate fi mai maredecăt rangul maxim al vectorului iar LSB nu poate fi mai mic ca zero.
Dacă se foloseşte un index care depăşeşte dimensiunile vectorului sau pentruindex se folosesc valorile „x” sau „z” atunci întregul operand va avea valoarea „x” – necunoscut.
De exemplu, declararea unei por ţiuni din vectorul AddresBus[8:0], poate fi:
AddressBus[6:4]
care reprezintă un operand compus din trei biţi – biţii de pe poziţiile şase, cinci şi patruale vectorului AddressBus.
Operatorii aritmetici în număr de patru: “+” pentru adunare, “-“ pentru scădere,“*” pentru înmulţire şi “/” pentru împăr ţire se folosesc cu căte doi operanzi. Operatorii“+” şi “-“ pot fi folosiţi şi cu un singur operand pentru determinarea semnului acestuia.În afar ă de aceşti operatori mai există şi operatorul modulo, notat cu “%”, carereturnează restul împăr ţirii întregi a doi operanzi.
Operatorii aritmetici tratează în mod diferit operanzii de tip întreg şi operanzii detip registru. Operanzii de tip întreg sunt trataţi ca operanzi cu semn pe când operanzii detip registru sunt trataţi ca operanzi f ăr ă semn. Din acest motiv rezultatul operaţiilor
aritmetice poate fi diferit în funcţie de tipul operanzilor. În acelaşi timp, trebuie ţinutcont de faptul că numerele negative sunt stocate sub formă de complement faţă de doi pe un anumit număr de biţi.
EXEMPLUL 10
1. Codul Verilog:
integer intA;intA = -4’d12 //variabilă de tip întreg
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 80/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 81
dacă se efectuează operaţia de împăr ţire: intA / 3 se obţine rezultatul: -4 deoarece intAeste o variabilă de tip întreg care este tratată ca un număr cu semn. Dacă rezultatul esteatribuit unei variabile de tip registru, acesta va fi stocat sub forma 65532, număr cereprezintă complementul faţă de doi a lui minus patru.
2. Codul Verilog:
reg[15:0] intA;intA = -4’d12 //variabilă de tip registru
dacă se efectuează operaţia de împăr ţire: intA / 3 se obţine rezultatul: 21841 deoareceintA este o variabilă de tip registru care stochează numărul –12 sub formacomplementului faţă de doi: 65524. Acest număr împăr ţit la trei dă valoarea 21841.
3. Dacă operandul este o constantă nedimensionată notată ca –12 atunci operaţia –
12 / 3 va da rezultatul: –4 deoarece constanta nedimensionată este reprezentată intern ca o constantă de tip întreg. Dacă rezultatul este atribuit unei variabile detip registru, acesta va fi stocat sub forma 65532, număr ce reprezintă complementul faţă de doi a lui minus patru.
4. Dacă operandul este o constantă dimensionată: –4’d12, atunci rezultatuloperaţiei –4’d12 / 3 va fi egal cu: 1431655761. Acest lucru se întâmplă deoarece
pe durata simulării constanta –12 este reprezentată în complement faţă de doiîntr-un registru de 32 de biţi (4294967283). Această valoare se împarte la 3:4294967283 / 3 = 1431655761.
Operatorii relaţionali sunt destinaţi compar ării operanzilor. În Verilog suntdafiniţi patru operatori relaţionali: “<” operatorul ”mai mic”, “>” operatorul “maimare”, “<=” operatorul “mai mic sau egal” şi “>=” operatorul “mai mare sau egal”.Rezultatul unei expresii ce conţine unul din cei patru operatori relaţionali poate fi zero“0” dacă rezultatul obţinut este “fals”, sau unu “1” dacă rezultatul abţinut este“adevărat”. Dacă în expresia relaţională există cel puţin un bit în înaltă impedanţă “z”sau necunoscut “x” atunci rezultatul va fi necunoscut “x”.
În Verilog operatorii relaţionali au o prioritate mai scăzută decât operatoriiaritmetici.
Operatorii de egalitate sunt tot în numar de patru. Datorită faptului că în cazuloperatorilor relaţionali rezultatul este necunoscut dacă măcar unul din operanzi are un bit în înaltă impedanţă « z » sau necunoscut « x », a fost necear un mod nuanţat destabilire a egalităţii între doi operanzi. Egalitatea respectiv neegalitatea după tip senotează cu „===” respectiv „!==” iar egalitatea respectiv neegalitatea logică se notează cu „==” spectiv „!=”. Egalitatea (neegalitatea) după tip furnizează rezultatul „1” dacă cei doi operanzi sunt egali (neegali) sau rezultatul „0” dacă cei doi operanzi sunt neegali(egali).
EXEMPLUL 11
1. 1010 === 1010 furnizează rezultatul 1.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 81/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 82
2. 1010 !== 1010 furnizează rezultatul 0.3. 1100 === 11 furnizează rezultatul 0.4. 1100 !== 11 furnizează rezultatul 1.5. 0110 === 0xx0 furnizează rezultatul 0.
6. 1z1z !== 1z1z furnizează rezultatul 0.
Dacă cei doi operanzi nu sunt egali ca numar de simboluri, atunci operandul cuun număr mai mic de simboluri este completat cu zerouri spre stânga. În exemplul 3 sauexemplul 4, al doilea operand „11” este transformat în „0011” pentru a avea acelaşinumăr de simboluri cu primul operand „1100”.
În cazul egalităţii (neegalităţii) logice, dacă unul din operanzi conţine cel puţinun bit în starea de înaltă impedanţă „z” sau starea bitului este necunoscută „x” atuncirezultatul operaţiei este necunoscut.
EXEMPLUL 12
1. 1010 == 1010 furnizează rezultatul 1.2. 1010 != 1010 furnizează rezultatul 0.3. 1z1z != 1z1z furnizează rezultatul x.4. 1z1z == 1z1z furnizează rezultatul x
Operatorii logici sunt de două tipuri: operatori logici pe bit şi operatori logicicare acţionează asupra întregului operand.
Operatorii logici pe bit realizează operaţia logică separat pe fiecare bit aioperanzilor şi furnizează o valoare corespunzătoare operaţiei logice efectuate.
Dacă operatorii logici pe bit au un singur operand atunci ei se numesc operatorilogici de reducere iar operaţia logică se realizează între toţi biţii operanduluifurnizânduse un rezultat cu dimensiunea de un bit.
Operatorii logici care acţionează asupra întregului operand realizează operaţialogică între valoarile logice de adevăr asociate operanzilor: „adevărat” dacă operanduleste diferit de zero sau „fals” dacă operandul este egal cu zero.
Operatorii logici pe bit (dacă se folosesc doi operanzi) sau de reducere (dacă sefoloseşte un singur operand) sunt: „~” (NOT), ”&” (AND), “|” (OR), “^” (XOR), şi“~^” sau “^~” (XNOR).
Operatorii logici pe întregul operand sunt: „!” (NOT), “&&” (AND) şi „||” (OR).
EXEMPLUL 13 1. // efectuarea operatiei logice bit cu bit
module and2 (a,b,c);input [1:0] a, b;output [1:0] c;assign c=a & b
endmodule
/* La execuţia modulului and2 se realizeaza operaţiile:
c(0) = a(0) and b(0)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 82/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 83
c(1) = a(1) and b(1) */
2. // efectuarea operatiei logice pe intregul operandwire[7:0] x,y,z ; // x,y si z sunt variabile multibit
reg a ;…if ((x==y)&&(z)) a=1 // a=1 daca x este egal cu y si z este diferit
// de zeroelse a= !x // a=0 daca x este diferit de zero
3. //operator logic de reduceremodule chk_zero (a,z);
input [2:0] a;output z;assign z = ~| a; // functia logica de reducere NOR
endmodule
/* La executia modulului chk_zero se realizeaza operatia:z = a(0) NOR a(1) NOR a(2)
Operatorii de deplasare realizează deplasarea primului operand cu un număr de biţi specificat de către cel de-al doilea operand. Poziţiile r ămase libere în urmadeplasării sunt completate cu valoarea zero. Operatorii de deplasare sunt : „ << “ – deplasare stânga şi „ >> “ – deplasare dreapta.
EXEMPLUL 14
assign c = a >> 2; // variabila c este egala cu// variabila a deplasata la// dreapta cu doua pozitii
Operatorul de concatenare combină doi sau mai mulţi operanzi într-un vector.Operatorul de concatenare se notează cu paranteze acoladă: “ { } “.
EXEMPLUL 15
wire [1:0] a,b; wire [2:0] x; wire [3:0] y,Z;assign x = {1’b0,a}; //x[2] = 0, x[1] = a[1], x[0] = a[0]assign y = {a, b} ; //y[3] = a[1], y[2] = a[0], y[1] = b[1],
//y[0] = b[0]
Operatorul de replicare face mai multe copii al unui operand. Operatorul dereplicare se notează: {n{operand}} unde n indică numărul de replicări ale operandului.
EXEMPLUL 16
wire [1:0] a, b; wire [4:0] x;
assign x = {2{1’b0},a}; // este echivalent cu: x = {0,0,a}
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 83/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 84
assign y = {2{a}, 3{b}}; // este echivlent cu y = {a,a,b,b}
Operatorul condiţional “?” are aceeaşi semnificaţie ca şi în limbajul C/C++ (înfuncţie de rezultatul unei condiţii se alege una din două expresii):
(conditie) ? (expresie în cazul când condiţia este adevarata) :(expresie în cazul când condiţia este falsă)
EXEMPLUL 17
assign a=(c) ? x:y;
/* in functie de condita c se obtin rezultatele: a=x daca c este adevarat sau a=y daca c este fals, implementare ce reproduce functionarea unui multiplexor la care x si y suntintrari de semnal, a este iesirea de semnal iar c este intrarea de comanda */
Atribuirea continuă se foloseşte pentru stabilirea unei valori la o conexiune(wire) dintr-un modul. Atribuirea se poate face la un semnal de ieşire pentru carezultatul unei expresii sau operaţii să fie accesibil la ieşirea modulului. Există două tipuri de atribuiri: atribuitri continui şi atribuiri procedurale.
Atribuirea continuă este folosită în modelarea fluxului de date fiind cel maiîntâlnit tip de atribuire.
Instrucţiunea de atribuire continuă este compusă din următoarele elemente:
o cuvântul rezervat assign;o declararea întârzierii (opţional);o partea stângă a instrucţiunii care este destinaţia atribuirii şi care poate
fi o reţea (scalar ă sau vectorială) sau mai multe reţele concatenate.Folosirea registrelor nu este permisă în partea stângă a expresiei;
o simbolul de atribuire (semnul egal „=”);o partea dreaptă a instrucţiunii care este o expresie a cărei operanzi pot
fi de orice tip permis (constante, reţele, registre, apeluri de funcţiietc.).
A
B
C
D
X
Z
Y
Fig. 1.49. Modul pentru explicarea atribuirii implicite şi
Atribuirile implicite continue reprezintă atribuirile f ăcute o dată cu declarareareţelelor. Pentru exemplificare consider ăm un modul oarecare a cărui schemă bloc estereprezentată în figura 1.49.
EXEMPLUL 18
1. Atribuirea continuă implicită.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 84/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 85
module SomeMod (Z, A, B, C, D);output Z;input A, B, C, D;
wire X= … ; //expresie ce contine operanzii A si Bwire Y= … ; //expresie ce contine operanzii C si D
assign Z= … ; // expresie ce contine operanzii X si Y
endmodule
2. Atribuirea continuă explicită
module SomeMod (Z, A, B, C, D);
output Z;input A, B, C, D;
wire X;wire Y;
assign X= … ; //expresie ce contine operanzii A si Bassign Y= … ; //expresie ce contine operanzii C si Dassign Z= … ; // expresie ce contine operanzii X si Y
endmodule
Atribuirea condiţională este exemplificată la prezentarea operatoruluicondiţional (exemplul 17).
Atribuirea continuă este evaluată permanent, aşa cum arată şi numele acesteia şiorice modificare a unui operand în membrul drept se va reflecta imediat in membrulstâng al atribuirii. În cazul în care există mai multe atribuiri acestea vor fi evaluate înmod concurent astfel încât funcţionarea programului să reflecte în mod fidelcomportarea structurii fizice.
Întârzierile reflectă comportarea sistemelor fizice reale. Întârzierile sunt
specificate în unităţi de timp care sunt definite în directiva compilator ‘timescale.În cazul descrierii comportamentale a circuitelor complexe sau a sistemelor, cuajutorul algoritmilor, trebuie folosite noţiuni similare limbajelor de programare de nivelînalt. Adevarata valoare a unui limbaj de nivel înalt cum este Verilog constă în faptul că
permite descierea comportamentală (funcţională) a sistemelor. Datorită faptului că aceste cunoştiinţe nu sunt absolut necesare pentru simularea circuitelor logicecombinaţionale, ele nu vor fi prezentate deocamdată.
Directivele compilatorului
Directivele compilatorului sunt comenzi speciale care încep cu caracterul ( ` -atenţie acest simbol nu este apoatrof: ‘ ) şi care influenţează funcţionarea simulatoruluiVerilog. Prezentăm în continuare câteva din directivele compilatorului.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 85/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 86
Directiva `timescale specifică unitatea de timp şi precizia unităţii de timp. Spreexemplu, dacă unitatea de timp este stabilită la 10ns atunci o întârziere notată cu #3.5reprezintă 35ns. Precizia unităţii de timp indică modul în care este f ăcută rotunjireavalorii întârzierii pe timpul simulării.
Unităţile de timp valide sunt: s, ms, μs, ns, ps, fs. Pentru specificarea unităţii detimp sau a preciziei nu pot fi folosite decât cifrele: 1, 10 sau 100.
Sintaxa directivei `timescale este :
`timescale time_unit/time_precision;
Directiva pentru definirea macroinstrucţiunilor este `define. Macroinstrucţiunilesunt apelate cu numele macroinstrucţiunii precedat de apostrf, ca în exemplul de mai
jos.
EXEMOLUL 19
`define add_lsb a[7:0] + b[7:0]assign line=’add_lsb; //se atribuie line = a[7:0] + b[7:0]
Directiva `include permite inserarea unui fişier text în punctul în care se găseştedirectiva. Directiva este similar ă celei din limbajul C/C++.
Sarcinile (task) şi funcţiile (function) sistem
Sarcinile şi funcţiile sistem sunt folosite pentru generarea intr ărilor şi a ieşirilor pe durata simulării. Numele acestora este precedat de semnul dollar ($) şi se pot găsi înorice loc pe parcursul programului. Sarcinile sistem care extrag datele, cum este spreexemplu $monitor trebuie să se găsească într-un bloc initial sau always. Vom prezentaîn continuare câteva dintre sarcinile sau funcţiile sistem mai des folosite.
Comenzile $display, $strobe, $monitor au aceeaşi sintaxă şi ele afişează valorile sub formă de text pe durata simulării. Comenzile $display şi $strobe determină o afişare ori de câte ori sunt executate pe când $monitor afişează ori de câte ori se
produce o schimbare a parametrilor. Şirul format este asemănător cu cel din C/C++ putând conţine caractere de formatare: %d (zecimal), %h (hexazecimal), %b (binar),%c (caracter), %s (şir) şi %t (timp).
Adăugarea literelor b, h sau o la numele taskului schimbă afişarea din formatul
implicit în binar, hexazecimal sau octal.
EXEMPLUL 20
initial begin$displayh (al,ah ); // al si ah sunt afisate in hexazecimal$monitor (“at time=%t, d=%h, $time, a);
end
Comenzile $time, $stime şi $realtime furnizează durata simulării sub formaunui întreg de 64 de biţi, respectiv 32 de biţi sau sub forma unui număr real.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 86/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 87
EXEMPLUL 21
time ts;ts = $time;
Comenzile $reset, $stop şi $finish au următoarele efecte: $reset iniţializează simulatorul la momentul zero, $stop opreşte simulatorul şi-l pune în modul interactivaşteptând comenzi de la utilizator iar $finish produce ieşirea din simulator şireîntoarcerea în sistemul de operare.
Comanda $deposit setează o reţea la o valoare particular ă. Sintaxa comenziieste:
$deposit (nume_reţea, valoare);
1.7.2.2.Testarea programelor Verilog HDL
Există mai multe modalităţi de testare a proiectelor realizate în limbajul Verilog,însă cea mai folosită metodă este cea cu ajutorul fişierului de testare (Test Benches).
Fişierul de test este compus din mai multe elemente:
o interfaţa cu proiectul de testat (numit şi unitate de testat – UUT – Unit Under Test), care poate reprezenta unul sau mai multe moduleVerilog;
o semnalele de test – stimulii;o sistemul de monitorizare a r ăspunsului unităţii de testat la stimulii
aplicaţi
şi reprezintă o specificaţie hibridă alcătuită din instrucţiuni de tip structural şiinstrucţiuni de tip comportamental. Această specificaţie Verilog este simulată cuajutorul unui simulator Verilog.
Stimulii pentru modulul/modulele testat/testate sunt precizaţi direct în interiorulfişierului de test sau pot fi furnizaţi de către un modul extern.
Pe de altă parte, semnalele de ieşire ale modulului/modulelor de testat pot fiobservate prin intermediul ieşirilor simulatorului (de exemplu formele de undă afişate
pe ecran), prin intermediul mesajelor de simulare sau pot fi scrise într-un fişier.Fişierul de test reprezintă deci o specificaţie Verilog care are modulul său
propriu. Acest modul se deosebeşte de celelalte module prin câteva caracteristici aparte:o modulul nu are porturi;o stimulii care pot fi specificaţi în acest modul sau într-un modul extern
separat;o monitorizarea ieşirilor realizată cu ajutorul sarcinilor sistem scrise într-
un bloc separat pentru creşterea lizibilităţii.
Structura generală a fişierului Test Bench este prezentată în continuare înexemplul 22.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 87/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 88
EXEMPLUL 22
module TestBench;-------------------------------------------------------------------------------
reg … ; declararea semnalelor de stimularewire … ;
-------------------------------------------------------------------------------initial…
always declararea stimulilor begin
#… … = … ;#… … = … ;
end
initial#… $finish
---------------------------------------------------------------------------------modname UUT (…); instanţierea modulului UUT
---------------------------------------------------------------------------------initial monitorizarea rezultatelor
$monitor (…);---------------------------------------------------------------------------------endmodule
După realizarea proiectului în limbaj Verilog trebuie realizată verificareaacestuia cu ajutorul fişierului de testare. Proiectul realizat se foloseşte în fişierul detestare f ăr ă a fi necesar ă nici un fel de modificare, folosindu-se în fişierul de testare oinstanţiere a modulului de test. Din acest motiv putem spune că fişierul de test poate fiaplicat oricăreispecificaţii Verilog.
Pentru instanţierea modulului de testat (UUT) în interiorul fişierului de test, sescrie numele modulului UUT urmat de lista de asociere a porturilor prin nume sau prinordinea în care acestea sunt scrise. Porturile instanţierii UUT sunt asociate cu semnalelede stimulare. Deoarece procesele sunt concurente, ordinea de definire a stimulilor şiinstanţierea modulului de testat nu are nici o imporanţă.
În exemplul 23 se arată felul cum se defineşte un modul şi fişierul de test asociatacestuia.
// modulul de testat
module combi (Y, A, B, C);output Y;input A, B, C;…endmodule
// fisierul de test
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 88/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 89
module TestBench;…combi UUT (.Y(…), .A(…), .B(…), C(…));
…endmodule
Semnalele de simulare sunt declarate, aşa cum s-a ar ătat, în interiorul modululuide testare sau într-un modul extern. Aceste semnale sunt asociate cu intr ările modululuiUUT prin intermediul semnalelor declarate în modulul de test. Evoluţia în timp asemnalelor de stimul se specifică într-o manier ă secvenţială, de obicei în interiorul unor
blocuri de tip initial şi always.Folosirea blocului initial cu comanda sistem $finish permite ca simularea să se
termine înr-o durată de timp determinată. Folosirea blocului always permite realizarea buclelor infinite.
Corespondenţa între stimuli şi modulul de testat se realizează prin specificaţia porturilor din instanţierea UUT.
În exemplul 24 se prezintă un modul corespunzător unui multiplexor cu două intr ări şi specificarea semnalelor de stimul pentru fişierul de test.
Schema electrică a multiplexorului este prezentată in figura 1.50.
U4A
7404
1 2
U1A
7408
1
2
3
COMANDA
U2A
7408
1
2
3
INTRARE
Sel
A
IESIRE
Y
U3A
7432
1
2
3
B
INTRARE
Fig. 1.50. Multiplexorul cu două intrări şi o ieşire
EXEMPLUL 24
// modulul multiplexorului cu 2 intrari si o iesire
module mux2to1 (Y, A, B, Sel);output Y;input A, B, Sel;
assign Y = Sel ? A : B ;
endmodule
// fisierul de test – definirea stimulilor module TestBench;
reg Sel, A, B;
wire Y;
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 89/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 90
mux2to1 UUT (Y, A, B, Sel);initial
begin
Sel = 1’bx; A = 1’b0; B = 1’b1;end
always
begin #40 Sel = 1’b0; // schimbare la 40#20 A = 1’b01 ; // schimbare la 60#20 Sel = 1’b1 ; // schimbare la 80#20 B = 1’b0 ; // schimbare la 100#20 Sel = 1’b0 ; // schimbare la 120#20 A = 1’b1 ; // schimbare la 140#20 Sel = 1’b1 ; // schimbare la 160
#20 B = 1’b1 ; // schimbare la 180end
initial#200 $finish ;
…endmodule
În exemplul 25 se prezintă două forme de analiză a rezultatelor simulării: prezentarea rezultatelor pe display (exemplul 25.a) folosind comanda sistem $monitor sau salvarea datelor în fişier (exemplul 25.b) folosind comanda sistem $fmonitor.
EXEMPLUL 25
a.// fisierul de test cu afisarea rezultatelor pe ecran
module TestBench;reg Sel, A, B;wire Y;
mux2to1 UUT (Y, A, B, Sel);initial
begin Sel = 1’bx; A = 1’b0; B = 1’b1;end
alwaysbegin
// stimuliend
initial#200 $finish ;
initial
begin
$display(“ TIME A B Sel Y”);
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 90/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 91
$monitor($time,” %b %b %b %b, A, B, Sel, Y);end
endmodule
b.// fisierul de test cu salvarea rezultatelor in fisier
module TestBench;reg Sel, A, B;wire Y;integer Res;
mux2to1 UUT (Y, A, B, Sel);initial
begin Sel = 1’bx; A = 1’b0; B = 1’b1;
end always
begin // stimuli
end initial
#200 $finish ;initial
beginRes = $fopen(“simlog.txt”);$fdisplay(“ TIME A B Sel Y”);$fmonitor($time,” %b %b %b %b, A, B, Sel, Y);
end
endmodule
Rezultatul simulării obţinut în fişierul „simulog.txt” este:
TIME A B Sel Y0 0 1 x x
40 0 1 0 060 0 1 0 1
80 0 1 1 1100 0 1 1 0120 0 1 0 1140 1 1 0 1160 1 1 1 0180 1 0 1 0
Vom prezenta în continuare modul în care se face simularea unui circuit logiccombinaţional cu ajutorul programului Silos, versiunea demonstrativă (2002.100), pusla dispoziţia utilizatorilor în mod gratuit, de către firma Simucad Inc.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 91/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 92
După lansarea în execuţie a programului Silos, se va deschide un proiect nou
prin selectarea opţiunii Project din meniul principal, iar din meniul desf ăşurat seselectează opţiunea New… (figura 1.51).
Figura 1.51. Fereastra principala a programului Silos
Figura 1.52. Fereastra pentru
creerea proiectului nou.
Se deschide o fereastr ă nouă prin intermediul căreiase solicită numele noului proiect. Se va crea undirector nou „Silos TEST” în directorul r ădăcină pediscul în care lucr ăm şi în acest director se creează
proiectul „mux2to1” extensia proiectului fiindimplicită: „.spj”. După introducerea numelui
proiectului fereastra se extinde şi se solicită fişierele care vor fi incluse în proiect: fişiere sursă
scrise în limbaj Verilog, biblioteci, directoare ceconţin informaţia de inclus în proiect etc.Deocamdata proiectul nu conţine nici un fişier şideci se apasă butonul OK şi se r ăspunde YES laavertismentul apărut (figura 1.52). Dacă fişierul
Figura 1.53. Fişierul modulului mux2to1.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 92/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 93
sursă ce conţine modulul cu multiplexorul cu două intr ări şi o ieşire există, atunci acelfişier va fi inclus în proiect.
Pentru a crea acest fişier se poate utiliza orice editor de text sau un editor specializat pentru scrierea programelor în limbajul Verilog. Se poate utiliza, în acest
caz, editorul programului Silos. Multiplexorul cu două intr ări şi o ieşire are schemaelectrică prezentată în figura 1.50. În exemplul 24 a fost descris acest circuit în modulul„mux2to1” cu ajutorul descrierii comportamentale. Fiind vorba de un circuit logic
combinaţional vom folosi acum descriereastructurală cu ajutorul por ţilor logice. Seselectează din meniul principal File după care seselectează New moment în care se deschidefereastra fişierului sursă numită genericSource1. Se introduce textul corespunzător modulului mux2to1 conform celor prezentate înexemplul 26 după care se salvează acest fişier
cu numele mux2to1_module.v aşa cum estear ătat în figura 1.53.
După salvarea fişieruluimux2to1_module.v se selectează Project dinmeniul principal, apoi Files şi se adaugă la
proiect acest fişier (figura 1.54). În acestmoment fişierul sursă poate fi verificat şi seselectează din meniul principal opţiunea Debug,apoi Go sau se apasă tasta. Dacă in fereastra de
ieşire a simulatorului nu sunt semnalate erori atunci fişierul sursa este corect din punctde vedere sintactic. Dacă apar erori de sintaxă, acestea se corectează după care se refacecompilarea fişierului (acţiunea Debug -> Go).
Figura 1.54. Adaugarea fişierului
mux2to1_module.v la proiect.
EXEMPLUL 26
module mux2to1 (Y,A,B,Sel);
// intrarile si iesirile modululuioutput Y;input A,B,Sel;
// conexiunile interne ale circuituluiwire U4A, U1A, U2A;
not (U4A,Sel);and (U1A,A,Sel);and (U2A,U4A,B);or (Y,U1A,U2A);
endmodule
Urmează acum scrierea fişierului TestBench pentru simularea modulului
mux2to1. Pentru aceasta se deschide un fişier nou cu ajutorul comenzii File urmată de
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 93/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 94
New sau se apasă combinaţia de taste Ctrl + N. În acest fişier se crează modulul de testmux2to1_TB prezentat în exemplul 27.
EXEMPLUL 27
// TestBench pentru modulul mux2to1
`timescale 1ns / 100ps
module mux2to1_TB;
reg Sel, A, B;wire Y;
// instantierea modululoi de testat
mux2to1 UUT (Y, A, B, Sel);
// definirea stimulilor de intrarealways
begin#40 Sel = 0; // schimbare la 40#20 A = 1; // schimbare la 60#20 Sel = 1; // schimbare la 80#20 B = 0; // schimbare la 100#20 Sel = 0; // schimbare la 120#20 A = 1; // schimbare la 140#20 Sel = 1; // schimbare la 160#20 B = 1; // schimbare la 180
//simulare completa$finish;
end
Figura 1.55. Fereastra principală a programului Silos cu rezultatele simulării.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 94/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 95
initial begin
//valori initialeSel = 1;
A = 0;B = 1;end
endmodule
La sfâr şit salvăm fişierul cu ajutorul comenzii File, Save As… folosind numelemux2to1_TB.v pentru acesta. Includem apoi acest fişier în proiect cu succesiunea decomenzi Project urmată de Files… iar în fereastra apărută, similar ă cu cea prezentată înfigura 1.54 se face dublu clic pe fişierul mux2to1_TB.v sau, se selectează acest fişier,apoi se apasă butonul Add, în final selectându-se butonul OK .
Pentru testare lansăm în execuţie proiectul cu ajutorul comenzii Debug din
meniul principal, urmată de Go, sau se apasă pe butonul din bara principală deunelte (Main Toolbar). În urma acestei acţiuni se face compilarea fişierelor şi simulareaacestora. Dacă în fereastra de ieşire nu sunt semnalate erori putem acum să vizualizămsemnalele circuitului. Pentru aceasta selectăm fereastra Data Analizer prin selectarea
pictogramei sau apăsarea tastei F6 sau selectarea opţiunii Window, din meniul principal, urmată de Open New Data Analizer. Se deschide de asemenea fereastra
Explorer prin selectarea pictogramei sau Window, din meniul principal, urmată deOpen Explorer. În această fereastr ă sunt afişate modulele din proiect, într-o structur ă ierarhică, în partea stângă şi porturile aferente acestora, în partea dreaptă. Semnalele pe
care dorim să le afişăm trebuie să apar ă aici. Prin tehnica “drag and drop” acestesemnale sunt “trase” din partea dreaptă a ferestrei Explorer şi puse în partea stângă aferestrei Data Analizer. Semnalele din fereastra Data Analizer de care nu mai avemnevoie le putem şterge prin selectarea acestora şi apăsarea tastei Delete. În final, pentrua vizualiza semnalele pe toată durata simulării apăsăm în mod repetat pictograma
.Fereastra principală a programulul Silos cu rezultatele simulării este prezentată înfigura 1.55.
Rezultatele simulării sunt prezentate în figura 1.56.
Figura 1.56. Rezltatul simulării multiplexorului cu două intrări şi o ieşire
prezentat în figura 1.50.
Din această figur ă se observă faptul că semnalul de ieşire copiază semnalele deintrare A sau B în funcţie de semnalul Sel : dacă Sel este egal cu unu se copiază semnalul A iar dacă Sel este egal cu zero se copiază semnalul B.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 95/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 96
O altă posibilitate de simulare a circuitelor logice combinaţionle este oferită de programul ModelSim. Acest program este realizat de către firma Model Technology™care apar ţine companiei Mentor Graphics Corporation. Folosim Modelsim SE versiunea2.7f.
Figura 1.57. Fereastra principală a programului ModelSim.
Spaţiul de lucru (workspace) –pentru fiecare set de date estecreată câte o etichetă a structurii
Se selectează File, apoi New, după care Project…
Programul Modelsim permite managementul proiectelor realizate în limbajVerilog sau VHDL cât şi în alte limbaje, editarea surselor pentru aceste limbaje desimulare, compilarea si execuţia programelor scrise. De asemenea programul dispune deinstrumente puternice de afişare şi prelucrare a semnalelor şi a formelor de undă rezultate în urma simulării.
Anumite variante ale programului ModelSim permite simularea proiectelor combinate realizate atât în limbaj Verilog cât şi în limbaj VHDL.Datorită numeroaselor facilităţi ale programlui, simularea şi depanarea proiectelor poate
fi realizată într-un timp scurt chiar şi în cazul proiectelor complexe.
Figura 1.58. Fereastra pentru
crearea unui proiect nou.
Pentru exemplificare se va simula în programul ModelSim acelaşi circuit şi anumemultiplexorul cu două intr ări şi o ieşire prezentatîn figura 1.50. De asemenea, vom folosi fişiereledeja scrise mux2to1_module.v şimux2to1_TB.v în cazul simulării cu ajutorul
programului Silos, prezentată anterior.Se deschide programul Modelsim şi este
afişată fereastra din figura 1.57 (după ce se
închide, eventual, fereastra de întâmpinare –
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 96/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 97
Welcome Menu).Pentru a crea un proiect nou, din meniul principal se selectează File, din meniul
desf ăşurat se alege New, după care se selectează Project… Se deschide fereastraCreate Project (figura 1.58), unde la Project Name se completează : test, la Project
Location se introduce locaţia proiectului, de exemplu :E:\Modelsim teste\proiect1,
iar la Default Library Name r ămâne valoarea implicită : work .
Figura 1.59. Fereastra de
adăugare a elementelor noi la un
proiect.
Figura 1.60. Adăugarea unui fişier la proiect
După completarea acestor opţiuni se apasă butonul OK . După aceasta, sedeschide fereastra de adăugare a elementelor la proiect (figura 1.59). Astfel se poatecrea un fişier nou, se poate adăuga un fişier existent, se poate crea un director sau se
poate realiza o simulare.
Figura 1.61. Spaţiul de lucru după adăugarea fişierelor.
În această fază se vor adăuga la proiect cele două fişiere deja create :
mux2to1_module.v şi mux2to1_TB.v carese vor copia în directorul proiectului.Copierea fişierelor se poate face din opţiuneaAdd Existing File sau de sub sistemul deoperare Windows în directorul noului
proiect ; în exemplul nostru: E:\Modelsimteste\proiect1,
Figura 1.62. Fereastra de editare a
fişierului mux2to1_TB.v
Este evident faptul că fişierele pot ficreate în această fază prin selectarea opţiuniiCreate New File.
Dacă se selectează opţiunea Add
Existing File, este afişată fereastra Add file to Project (figura 1.60). În această
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 97/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 98
fereastr ă se completează numele fişierului şi se bifează opţiunea de copiere a fişieruluiîn directorul proiectului (Copy to project directory) dacă este necesar acest lucru. Lasfâr şit, după copierea celor două fişiere, se apasă butonul Close al ferestrei Add items
to the Project.
După adăugarea celor două fişiere: mux2to1_module.v şi mux2to1_TB.v acestea apar în spaţiul de lucru ca în figura 1.61. Se selectează fişierul mux2to1_TB şise face dublu clic pe acesta pentru a se deschide fereastra de editare (figura 1.62). Înaceastă fereastr ă se modifică funcţia sistem $finish în $stop ca în figur ă. După acestaînchidem fereastra şi salvăm fişierul.
Figura 1.63. Biblioteca work cu fişierele compilate.
Figura 1.64. Crearea unei sesiuni de simulare.
Din meniul View seselectează fereastraSignals şi fereastra Wave
Ne întoarcem în spaţiul de lucru şi pe unul din fişiere selectat se face clicdreapta. În meniul desf ăşurat se alege Compile şi apoi Compile All (acelaşi lucru seobţine dacă se selectează Compile din meniul principal şi apoi Compile All).Compilarea trebuie să decurgă f ăr ă să se semnaleze erori. În caz contrar, fişierul cu erori
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 98/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 99
se editează pentru corecţia acestora. Rezultatele compilării modulelor sunt stocate în biblioteca proiectului pentru care s-a stabilit, la crearea acestuia, numele work .
În acest moment se poate trece la simularea modulului ce descrie multiplexorulcu două intr ări şi o ieşire.
Pentru aceasta, în spaţiul de lucru, în partea de jos, se selectează etichetaLibrary. În spaţiul de lucru se afişează lista bibliotecilor care cuprinde şi bibliotecawork a proiectului nostru. Se expandează această bibliotecă prin clic pe semnul plus dindreptul libr ăriei work şi se face dublu clic pe modulul mux2to1_TB pentru a deschideo sesiune de simulare (figura 1.63).
Pentru vizualizarea semnalelor, din meniul principal se selectează opţiunea Viewiar din aceasta fereastra Signals şi fereastra Wave (figura 1.64). În fereastra Signals seselectează semnalele a căror formă de undă dorim să o vizualizăm iar prin tehnica Dragand Drop acestea sunt duse în fereastra Wave (figura 1.65).
Pentru selectarea tuturor
semnalelor, în fereastra Signals se alege din meniul principalEdit şi de aici Select All. După ce semnalele alese au fost duseîn fereastra Wave se trece lasimulare prin selectareaopţiunii Simulate din fereastra
principală a programuluiModelSim şi de aici Run şiapoi, din meniul desf ăşuratRun All. Programul esteexecutat până la întâlnireafuncţiei $stop şi formele deundă a semnalelor sunt afişateîn fereastra Wave (figura 1.66).Dacă se analizează aceste
forme de undă se constată că semnalul de ieşire /mux2to1_TB/Y copiază semnalul deintrare /mux2to1_TB/A sau /mux2to1_TB/B după cum semnalul de selecţie
/mux2to1_TB/Sel arevaloarea unu logic, respectivzero logic. Aceste forme de
undă sunt similare cu cele prezentate în figura 1.50obţinute cu ajutorul
programului Silos. Trebuieremarcat faptul că simulărilef ăcute s-au bazat pe por ţilogice ideale la care nu apar întârzieri datorate tranziţieisemnalului prin poarta reală.Aşa cum s-a ar ătat, acesteîntârzieri pot fi introduse în
program sau pot fi folosite module oferite de către producători.
Figura 1.65. Transferarea semnalelor din fereastra
Signals în fereastra Wave
Figura 1.66. Formele de undă obţinute la simularea
multiplexorului cu două intrări şi o ieşire.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 99/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 100
1.7.3 Limbajul VHDL
Limbajul VHDL este cel de-al doilea limbaj folosit pentru descrierea structurilor fizice (hardware) pe care-l vom folosi la simularea circuitelor logice combinaţionale.Acest limbaj realizează o descriere a comportării structurii fizice, ascunzând detaliile deimplementare şi acoperind astfel o gamă largă de aplicaţii, permiţând simulareacircuitelor digitale din cele mai diverse.
Limbajul VHDL este folosit în procesul de proiectare a circuitelor digitaleîncepând de la nivelul de sistem şi până la nivelul por ţii logice. De asemenea, datorită caracterului său descriptiv, limbajul VHDL poate constitui de multe ori documentaţia defuncţionare a unei structuri fizice.
Etapele proiectării unui circuit logic digital cu ajutorul limbajului VHDL sunt:1. descrierea detaliată a sistemului – se stabilesc cerinţele ce trebuie să
le îndeplinească sistemul ce urmează să fie proiectat;2. proiectarea sistemului – se face modelarea comportării sistemului în
limbaj VHDL;3. validare – verificarea modelului prin furnizarea stimulilor şi
verificarea r ăspunsului aşteptat;4. proiectarea logică – modelarea structurii la nivel RTL (Register-
transfer-level sau RT-level) cu ajutorul programelor de sinteză.Rezultatul este reprezentat o listă de conexiuni a circuitului (netlist)sau un model la nivel de poartă logică;
5. validare – verificarea rezultatului prin furnizarea stimulilor şiverificarea r ăspunsului aşteptat;
6. proiectarea circuitului – conversia automată a descrierii structurale;7. validare – verificarea rezultatului prin furnizarea stimulilor şi
verificarea r ăspunsului aşteptat;8. obţinerea planului general a circuitului – se obţin datele necesare
implementării fizice a circuitului pe baza listei de conexiuni (netlist);9. validare – verificarea finală a rezultatului obţinut, cu ajutorul datelor
furnizate de fabricantul circuitelor, prin furnizarea stimulilor şiverificarea r ăspunsului aşteptat.
1.7.3.1. Structura unui program VHDL
În limbajul VHDL se consider ă că un sistem este alcătuit din trei păr ţi esenţiale:interfaţa (entity) sistemului cu mediul, corpul (architecture) sistemului cu ajutorulcăruia sunt prelucrate semnalele furnizate de interfaţă şi care trimite prin interfaţă semnale spre exterior şi elementele suplimentare (package) adăugate corpuluisistemului pentru adăugarea unor funcţii noi. Aceste componente constituie elemente de
proiectare independente ale limbajului ce vor fi prezentate succint în continuare.Elementul de bază a limbajului, care descrie interfaţa sistemului cu mediul
extern, este entitatea (entity). Nu poate fi conceput un program în limbaj VHDL f ăr ă nici o entitate. De asemenea, proiectarea unui sistem va începe cu declararea uneientităţi.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 100/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 101
Entitatea furnizează specificaţii ale interfeţei sistemului prin două elemente: parametrii sistemului care sunt văzuţi din exterior şi conexiunile prin care se transfer ă informaţia din şi către sistem (intr ările şi ieşirile sistemului).
Parametrii sistemului reprezintă declaraţii generice care sunt transferate corpului
sistemului folosindu-se cuvântul rezervat generic. Conexiunile sistemului desemnează porturile de intrare, de ieşire sau de intrare/ieşire a acestuia cu ajutorul cuvântuluirezervat port.
Declararea unei entităţi, în general, este dată în exemplul 28.
EXEMPLUL 28
-- Un exemplu de definire a unei entitatientity <nume> is<paramerii> -- parametrii vizibili ai entitatii<conexiuni> -- intrarile si iesirile entitatii
end entity <nume>;
În exemplul 29 se prezintă un exemplu pentru definirea unei entităţicorespunzătoare unei por ţi logice SAU (or gate).
EXEMPLUL 29
-- or gateentity org is
-----------------------------------------------------------generic (tpd_hl : time := 1 ns; -- parametrii
tpd_lh : time := 1 ns);-----------------------------------------------------------
port (in1, in2 : std_logic; -- conexiuniout1 : out std_logic);
-----------------------------------------------------------end org;
Comentariile în limbajul VHDL se marchează, pe fiecare linie, cu două liniuţe „--" în faţa comentariului iar instrucţiunile se termină întotdeauna cu caracterul punct şivirgulă „ ; ".
După definirea entităţii trebuie definit modul în care sistemul prelucrează informaţia, adică ceea ce s-a numit corpul sistemului. Corpul sistemului este definit prinintermediul arhitecturii (architecture) acestuia (architecture of entity) care poate fi dedouă feluri: descriere structurală şi descriere comportamentală.
Descrierea structurală se refer ă la elementele componente ale sistemului şimodul de interconectare a acestora pentru a obţine comportarea dorită a sistemului.Sinteza pe baza descrierii structurale este mai simplu de f ăcut deoarece acest tip dedescriere se refer ă la modulele componente concrete ale sistemului.
Descrierea comportamentală (funcţională) se refer ă la modul de prelucrare asemnalelor de către sistem fiind vorba în general de specificarea semnalelor de ieşire înfuncţie de semnalele de intrare. Sinteza pe baza acestui tip de descriere este mai dificil
de f ăcut deoarece există mai multe posibilităţi de realizare fizică.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 101/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 102
Programele de sinteză a circuitelor digitale folosesc, în general, atât descriereastructurală cât şi cea comportamentală a sistemului.
Deoarece variante diferite de arhitecturi ale sistemelor digitale pot implementaaceeaşi funcţie, pentru o entitate (un sistem) pot exista mai multe arhitecturi diferite
(reciproca nu este adevărată deoarece unei arhitecturi nu-i pot corespunde mai multeinterfeţe – entităţi – diferite).În exemplul 30 este prezentată descrierea comportamentală (algoritmică) a por ţii
logice SAU a cărei entitate este definită în exemplul 29.
EXEMPLUL 30
architecture only of org is begin
p1: process(in1, in2)variable val : std_logic;
beginval := in1 or in2;case val is
when '0' =>out1 <= '0' after tpd_hl;
when '1' =>out1 <= '1' after tpd_lh;
when others =>out1 <= val;
end case;end process;
end only;
Blocul este un element de bază într-o descriere VHDL. Un bloc este o zonă detext, mărginită, care conţine o secţiune de declaraţii şi o secţiune executabilă. Un corparhitectural este un bloc cu deosebirea că, în interiorul unui corp arhitectural pot fiformate alte blocuri. În exemplul 31 este prezentat corpul arhitecturalBLOCK_STRUCTURED. În blocul exterior al corpului arhitectural sunt incluse
blocurile A şi B. Blocurile A şi B pot fi formate de asemenea din sub-blocuri. Numărulnivelelor de includere este, în general, nelimitat.
EXEMPLUL 31
Architecture BLOCK_STRUCTURED of SYSTEM is
-- secţiunea declaraţiilor blocului exterior begin
-- instrucţiuni executabile ale blocului exterior A: block -- secţiunea de declaraţii pentru blocul interior Abegin
-- instrucţiuni executabile pentru blocul interior Aend block A;
B: block
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 102/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 103
-- secţiunea de declaraţii pentru blocul interior Bbegin
-- instrucţiuni executabile pentru blocul interior Bend block B;
end BLOCK_STRUCTURED;
Atunci când anumite elemente sunt mai frecvent întâlnite în programele VHDLsau în situaţia în care dorim să utilizăm elemente predefinite în biblioteci se folosesc pachetele (package) care încapsulează elemente ce pot fi folosite simultan în mai multeunităţi de proiectare (date globale).
În programele VHDL se folosesc două clauze pentru apelarea unui pachet:library şi use. Aceste clauze trebuie folosite înainte de utilizarea pachetului, de obiceiînaintea entităţii care foloseşte un element declarat în pachet.
În exemplul 32 se arată regula de definire a unui pachet.
EXEMPLUL 32
package <identificator> is-- partea declarativă a pachetuluiend [package] [identificator];
Identificatorul furnizează un nume pentru pachet, nume care se poate folosioriunde într-un model pentru a face referire la pachetul respectiv. În interioruldeclaraţiei de pachet se scriu declaraţii care includ tipuri, subtipuri, constante, semnaleşi subprograme.
Limbajul VHDL are câteva pachete predefinite, folosite în mod frecvent, dintrecare cele mai importante sunt: pachetul STANDARD, pachetul TEXTIO şi pachetulSTD_LOGIC_1164. Pachetul STANDARD este încărcat în mod implicit de cătrecompilatorul VHDL şi conţine declararea tuturor tipurilor standard, a operatorilor şiobiectelor limbajului.
Pachetul TEXTIO conţine declaraţii de tip şi obiecte referitoare la citirea şiscrierea textelor. Pentru utilizarea acestui pachet, înaintea descrierii entităţii, trebuiescrise următoarele declaraţii:
library Std;use Std.TextIO.all;
Pachetul STD_LOGIC_1164 conţine extensii ale limbajului VHDL standard.Pentru utilizare se folosesc declaraţiile:
library IEEEuse IEEE.Std_Logic_1164.all;
1.7.3.2. Testarea programelor VHDL
Testarea unei modelări realizate în limbajul VHDL se face, similar cu cea înlimbajul Verilog, cu ajutorul unei entităţi de nivel înalt numită test bench. Există şi alte
posibilităţi dar această metodă este cea mai folosită.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 103/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 104
VHDL test bench este de asemenea o specificaţie care are propria ei entitate şiarhitectur ă dar este o specificaţie de tip special cu elemente caracteristice unei astfel destructuri.
Principalele elemente ale unei specificaţii test bench sunt:
- entitatea test bench caracterizată prin faptul că nu are porturi;- instanţierea componentei UUT (Unit Under Test) – relaţia
dintre test bench şi UUT este specificată prin instanţiereacomponentei şi specificaţiile de tip structural;
- stimulii ce reprezintă un set de semnale declarate intern înarhitectura test bench şi atribuite porturilor din instanţiereaUUT. Stimulii sunt definiţi prin forma de undă prin una saumai multe procese comportamentale.
În exemplul 33 este prezentată structura generală a test bench.
EXEMPLUL 33
entity TB is -- entitatea testbench
end entity TB;
architecture TBArch of TB is signal A, B, … :bit; -- declararea stimulilor signal …;begin
UUT: entity work.MyProcessor(Beh) -- instanţiere UUTport map (…);stimuli: process
beginA <= …;B <= …;…wait for …;…wait for …;…
wait;end process stimuli;end architecture TBArch;
Există două tipuri de semnale permise de specificaţiile VHDL: bit (pentru unsingur semnal, echivalent wire) şi bit_vector (în cazul magistralelor, echivalent bus,situaţie în care trebuie specificată şi dimensiunea vectorului). Ordinea biţilor unui vector este de asemenea importantă şi ea trebuie precizată la specificarea dimensiuniivectorului. De exemplu, pentru un vector de opt biţi la care bitul şapte este cel maisemnificativ bit (MSB), se scrie: bit_vector (7 downto 0) iar când bitul zero este celmai semnificativ bit: bit_vector (0 to 7).
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 104/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 105
Pentru a exemplifica modul de analiză a circuitelor logice combinaţionale cuajutorul limbajului VHDL vom exemplifica modul de simulare a unei por ţi NAND şi aunui multiplexor cu două intr ări în mediul ModelSim SE versiunea 2.7f.
Simularea circuitelor logice a fost explicată în paragraful 1.7.2.2. unde este
prezentată schema multiplexorului (figura 1.50.) şi modul de folosire a programuluiModelsim. Modul de lucru este identic numai că de data aceasta fişierele se vor scrie înlimbajul VHDL.
Primul exemplu, cel de simulare a por ţii logice NAND va conţine două fişiere:un fişier în care este modelată poarta logică NAND numit gate.vhd şi un fişier pentrusimularea acesteia numit test_gate.vhd .
Conform celor ar ătate în paragraful 1.7.2.2. se creează un proiect nou cu celedouă fişiere. Conţinutul fişierelor este dat în exemplul 34.
EXEMPLUL 34
-- continutul fisierului gate.vhdentity gate is
port(a:in bit;
b:in bit;q:out bit
);end gate;
architecture dataflow of gate issignal q_prim: bit;
beginq_prim <= a and b after 5 ns;q <= not q_prim;
end dataflow;
-- continutul fisierului test_gate.vhdentity test is end test;
architecture testNand of test iscomponent gate
port (a: in bit;
b: in bit;q: out bit);
end component;signal a,b,q: bit;signal c: bit_vector (1 downto 0);
beginc1: gate port map (a, b, q);a <= c(1);
b <= c(0);c <= "00",
"01" after 10 ns,"11" after 20 ns,"10" after 30 ns,"00" after 40 ns;
end testNand;
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 105/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 106
Aceste fişiere se compilează şi se elimină eventualele erori după care sedeschide biblioteca work asa cum s-a ar ătat în paragraful 1.7.2.2. şi se trece lasimularea circuitului. Rezultatele simulării sunt ar ătate în figura 1.67.
1.67. Rezultatele simulării porţii logice NAND.
Se propune ca exerciţiu explicarea formelor de undă obţinute.Cel de-al doilea exemplu se refer ă la multiplexorul cu două intr ări prezentat în
figura 1.50.În acelaşi fel, ca cel ar ătat mai sus, se deschide un proiect nou şi aici se
realizează cele două fişiere: mux2to1.vhd cu modelarea multiplexorului şi test_mux2to1.vhd pentru simularea acestuia. În exemplul 35 este prezentat conţinutul
acestor fişiere.
EXEMPLUL 35
-- continutul fisierului mux2to1.vhdlibrary IEEE;use IEEE.std_logic_1164.all;
entity mux2to1 is port ( IN0, IN1, SEL : IN std_logic;
MUX_OUT : OUT std_logic);end mux2to1;
architecture Behave of mux2to1 is begin
MUX_OUT <= IN1 when (SEL = '1') else IN0;end Behave;
-- continutul fisierului test_mux2to1.vhdentity TB isend;
library IEEE;use IEEE.std_logic_1164.all;
architecture TBArch of TB is
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 106/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 107
component mux2to1
port ( IN0, IN1, SEL : IN std_logic;MUX_OUT : OUT std_logic);
end component;
signal IN0, IN1, SEL, MUX_OUT : std_logic;
beginuut: mux2to1
port map (IN0, IN1, SEL, MUX_OUT);
stimuli: process begin
SEL <= 'X'; IN0 <= '0'; IN1 <= '1'; wait for 0 ns;SEL <= '0'; wait for 40 ns;IN0 <= '1'; wait for 20 ns;IN1 <= '0'; wait for 20 ns;
SEL <= '1'; wait for 40 ns;IN1 <= '1'; wait for 20 ns;wait;
end process;
end TBArch;
Rezultatul simulării multiplexorului cu două intr ări este prezentat în figura 1.68.
Fig. 1.68. Rezultatul simulării multiplexorului cu două intrări.
Aşa cum rezultă şi din cele prezentate, utilizarea limbajelor pentru descriereastructurii fizice, degrevează proiectantul de activitatea privind amănuntele realizăriifizice a dispozitivului numeric, atenţia fiind îndreptată în primul rând spre funcţiile şi
performanţele sistemului.Modul de implementare fizică a structurii proiectate reprezintă tehnologii proprii
ale firmelor producătoare de dispozitive numerice de tip ASIC (Application-SpecificIntegrated Circuit) sau FPGA (Field-Programmable Gate Array) şi sunt supusecontinuu îmbunatăţirilor şi perfecţionărilor.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 107/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 108
CAPITOLUL 2
Analiza şi sinteza circuitelor logice secvenţiale
2.1. Introducere
Circuitele logice secvenţiale (CLS) sunt circuite logice la care starea ieşirilor laun moment dat depinde de starea intr ărilor la acel moment de timp şi de stărileanterioare ale circuitului. Din acest motiv se spune că circuitele logice secvenţiale suntcircuite cu memorie.
Schema bloc a unui circuit logic secvenţial este prezentată în figura 2.1.
Circuitul logic secvenţial (CLS) se obţine dintr-un dircuit logic combinaţional
entat în figura 2.1 are n+1 intr ări principale sau
primare
Circuit
logic
combina-
ţional
x0
x1
.
.
.
xn
Δ1
Δ2
Δk
y0
y1
.
.
.
yk
y'0
y’1
.
.
.
y’k
z0
z1
.
.
.
zm
I n t r ă r i
pr i n c i p al e
I n t r ă r i
s e c un d ar e
I e ş i r i
pr i n c i p al e
I e ş i r i
s e c un d a
r e
Circuit logic secvenţial
Figura 2.1. Reprezentarea schematică a unui circuit logic secvenţial
(CLC) la care se adaugă o serie de elemente de circuit secundare (memorie), carereprezintă conexiuni de reacţie inversă.
Circuitul logic secvenţial reprez
, notate cu x0, x1, …, xn, accesibile din exterior şi m+1 ieşiri principale sau primare,
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 108/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 109
notate cu z0, z1, …, zm, de asemenea accesibile din exterior.Memoria circuitului secvenţial este realizată de către elementele de circuit
secunda
prezentă şi starea următoare poate fiexprima
primate în general ca funcţii booleen
)
(2.1)
entru a descrie complet comportarea unui circuit secvenţial trebuie să se specifice
pe lâng
cele ce urmează că circuitul are o comportare deterministă, adică
pentru
)
(2.2)
cuaţiile (2.2) poartă denumirea de ecuaţiile stării următoare. Circuitul secvenţial
se află
iar ecuaţiile stăriiurmătoa
are stările ieşirilor nu depind de stările intr ărilor
re, ale căror ieşiri y’0, y’1, …, y’k , sunt aduse prin legături inverse la intrareacircuitului, formând intr ările secundare ale circuitului secvenţial, y0, y1, …, yk . Starea
ieşirilor y’0, y’1, …, y’k , formează starea (internă ) următoare a circuitului, iar stareaintr ărilor y0, y1, …, yk , formează starea (internă ) prezent ă a circuitului secvenţial. Stareaurmătoare devine stare prezentă după un timp determinat de întârzierile cauzate de cătreelementele de întârziere special introduse în buclele de reacţie sau de întârzierile de
propagare a semnalelor, inerente circuitelor fizice.Relaţia ce există între intare, ieşire, stareată fie prin tabele de stare, fie prin diagrame de stare.leşirile unui circuit de comutare secvenţial pot fi exe de intr ările şi starea internă a acestuia :
(
( )
( )k nmm
k n
k n
y y y x x x z z
y y y x x x z z
y y y x x x z z
,,,,,,,
,,,,,,,
,,,,,,,
1010
101011
101000
KK
M
KK
KK
=
=
=
Pă ecuaţiile ieşirilor (2.1) şi comportarea sa internă, adică să se indice corespondenţa
între starea intr ărilor principale şi secundare, denumită şi starea totală a circuitului, şi stareaurmătoare a circuitului.
Se presupune în
o anumită stare a intr ărilor (un set de semnale x0, x1, …, xn) şi o anumită stareinternă (un set de valori pentru y0, y1, …, yk ) există o singur ă tranziţie posibilă, într-o starey’0, y’1, …, y’k . În acest caz, o variabilă de stare y’k poate fi exprimată ca o funcţie
booleană de intr ările circuitului şi starea sa internă :
(
( )
( )k nk k
k n
k n
y y y x x x y y
y y y x x x y y
y y y x x x y y
,,,,,,,
,,,,,,,
,,,,,,,
1010''
1010'1
'1
1010'0
'0
KK
M
KK
KK
=
=
=
Eîntr-o stare stabilă atunci când pentru o anumită stare a intr ărilor, starea sa (internă)
prezentă este identică cu starea (internă) următoare, adică yi = y'i, pentru i = 0, 1, . . ., k.Dacă pentru o anumită stare a intr ărilor, starea prezentă a circuitului difer ă de starea saurmătoare, adică yi ≠ y'i cel puţin pentru un anumit i ∈ {0, 1, . . ., k), circuitul se află într-ostare instabilă. Pentru ca un circuit secvenţial să se comporte determinist, trebuie ca pentrufiecare stare posibilă a intr ărilor să existe cel puţin o stare internă stabilă.
Circuitele secvenţiale la care ecuaţiile ieşirii sunt de forma (2.1)re sunt de forma (2.2) se numesc circuite secvenţiale de tipul Mealy, iar modelul
lor matematic, automat de tipul Mealy.
Exista circuite secvenţiale la c
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 109/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 110
principa
)
(2.3)
ircuitele secvenţiale la care ecuaţiile ieşirii sunt de forma (2.3) iar ecuaţiile stării
urmatoa
ţial este finit, circuituleste den
fiecare dintrevariabil
emnalelor este foarte importantă în circuitele secvenţiale. În acestsens, ci
o circuite secvenţiale asincrone;
În circuitele secvenţiale asincrone starea curentă (intr ările secundare provenite pe cale
venţiale sincrone sunt circuite la care schimbarea stării şi a ieşiriiare loc
le, ci numai de stările intr ărilor secundare, adică de starea internă a circuitului. Înacest caz, ecuaţiile ieşirii (2.1) se transformă în ecuaţiile:
(
( )
( )k mm
k
k
y y y z z
y y y z z
y y y z z
,,,
,,,
,,,
10
1011
1000
K
M
K
K
=
=
=
Cre de forma (2.2) se numesc circuite secvenţiale de tipul Moore, iar inodelul lor
matematic, automat de tipul Moore.Atunci când numărul de stări interne ale unui circuit secvenumit circuit secvential finit iar modelul sau matematic, automat finit.În continuare se vor trata numai circuitele secvenţiale binare, la careele de intrare, de ieşire, respectiv de stare pot avea numai două valori, zero şi unu,
cu număr finit de stări.Temporizarea srcuitele logice secvenţiale sunt clasificate în două categorii:
o circuite secvenţiale sincrone.
a de reacţie) poate fi modificată în orice moment ca efect al schimbării
variabilelor aplicate la intrarea primar ă. Elementul de memorie de pe calea de reacţieeste în mod obişnuit un dispozitiv de întârziere; întârzierea este realizată prin propagarea semnalului printr-un şir de por ţi logice. Întârzierea prin por ţile logice nu poate fi controlată şi de aceea circuitele secvenţiale asincrone pot deveni instabile.Proiectarea circuitelor secvenţiale asincrone este complicată, de aceea majoritateacircuitelor secvenţiale utilizate sunt de tip sincron. La circuitele logice secvenţialesincrone spre deosebire de cele asincrone, apare o intrare suplimentar ă, intrareasemnalului de ceas.
Circuitele secla momente de timp bine definite. Aceste momente sunt asociate cu frontul
crescător sau cu frontul căzător al unui semnal de temporizare cunoscut ca semnal de
amplitudine
timp
durata
perioada
front
crescătorfront
descrescător
palier unu
(HIGH)
Figura 2.2. Elementele semnalului de ceas.
palier zero
LOW
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 110/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 111
ceas (clock, tact). În mod obişnuit semnalul de ceas (clock) este un semnaldreptunghiular ale cărui elemente sunt redate în figura 2.2.
Când semnalul de ceas face o tranziţie de la zero la unu, avem un front
crescător ; când semnalul de ceas face o tranziţie de la unu la zero, avem un front
că z ător (sau descrescător).Din diagrama de timp a semnalului se poate observa că perioada semnalului declock este intervalul de timp dintre două tranziţii succesive în acelaşi sens (între două fronturi crescătoare sau între două fronturi căzătoare).
Tranziţiile în circuitele secvenţiale sincrone au loc doar în momentele cândsemnalul de clock are fie un front crescător, fie un front căzător. La ieşirea unui circuitsincron nu are loc nici o schimbare între două fronturi succesive, indiferent de valoareavariabilelor aplicate la intrare.
Frecven ţ a semnalului de ceas este inversul periadei semnalului de ceas. Lăţ imea semnalului de ceas este definită ca fiind intervalul de timp în care
semanlul are valoarea unu. Raportul dintre lăţimea semnalului şi perioada acestuia este
numit factor de umplere.Un semnal de clock este activ pe front crescător dacă starea circuitului sincron seschimbă pe frontul crescător al semnalului de clock. Dacă starea circuitului sincron seschimbă pe frontul căzător, semnalul de clock este activ pe front că z ător .
2.2. Tabelul tranziţiilor şi al ieşirilor
Comportarea unui circuit secvenţial poate fi descrisă prin tabelul tranziţiilor şitabelul ieşirilor, care reprezintă o modalitate de reprezentare a funcţiilor (2.2) respectiv(2.1). În tabelul tranziţiilor există atâtea coloane câte stări diferite ale celor n+1 intr ări xi
(i = 0, 1, ..., n) există, adică 2
n+1
coloane şi atâtea rânduri câte stări interne distincteexistă, adică 2k+1 rânduri, unde k+1 este numărul variabilelor secundare yi. Un elemental tabloului tranziţiilor, aflat la intersecţia unei coloane cu o anumită linie, reprezintă starea urmatoare a circuitului, corespunzătoare stării interne de pe linia respectivă şistării intr ărilor de pe coloana respectivă. Pentru automatele de tipal Mealy, tabelulieşirilor are aceleaşi linii şi coloane ca şi tabelul tranziţiilor. Un element al tabeluluiieşirilor, aflat la intersecţia unei anumite coloane cu o anumită linie reprezintă stareaieşirilor corespunzatoare stării intr ărilor de pe coloana respectivă şi stării interne de perândul respectiv. Pentru automatul de tipul Moore tabelul ieşirilor are o singur ă coloană.
În tebelul tranziţiilor şi al ieşirilor, stările, respectiv ieşirile, sunt notate simbolic,de obicei prin numere zecimale sau prin numere binare. În cel de-al doilea caz, codul
binar al stării urmatoare, respectiv al ieşirii reprezintă valorile sistemului de funcţii(2.1), respectiv (2.2) sau (2.3) pentru starea prezentă de pe rândul respectiv şi pentrustarea intr ărilor de pe coloana respeetivă. Aceste tabele pot fi completate dacă secunoaşte structura circuitului, determinând, în modul ar ătat la circuitele combinaţionale,valoarea fiecăreia dintre: funcţiile z0, z1, …, zm, y'0, y'1, …, y'k pentru toate valorile
posibile ale variabilelor de intrare principale şi secundare.Pentru exemplificare se consider ă circuitul secvenţial a cărui reţea de comutare
este dată în figura 2.3.a.Pentru a ţine cont de întârzierile introduse de firele de legătur ă şi de
întârzierea proprie a circuitului logic, se consider ă toate aceste întârzieri concentrate înelementele de întârziere notate în figura 2.3.b. cu Δ0 şi Δ1. Această ipoteză
simplificatoare permite analizarea corectă a comportării circuitului, deoarece nu
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 111/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 112
X0
Z1
U1A
7402
2 3 1
Z0
X1
U2A
7402
2 3 1
Fig 2.3.a.
U2A
7402
2
3
1
X1
U1A
7402
2
3
1Z0
Z1
X0
Δ0
Δ1
Y1
Y0 Y’2
Y’1
Fig 2.3.b.
Fig. 2.3. Analiza unui circuit secvenţial asincron
influenţează asupra modului de funcţionare. Variabilele x0 şi x1 din figura 2.3.b.reprezintă intr ările principale ale circuitului, fiecare din ele putând avea două valori: 0 şi1 care corespund unor semnale de tensiune, corespondenţa stabilindu-se în funcţie delogica adoptată (negativă sau pozitivă). Variabilele y
0 şi y
1reprezintă intr ările secundare
ale circuitului sau starea lui internă prezentă, iar variabilele y'0 şi y'1 starea internă următoare. Atât y0 şi y1 cât şi y'0 şi y'1 pot avea valoarea logică 0 sau 1. Între y0 şi y'0 respectiv y1 şi y'1 există relaţiile (2.4).
TABELUL 2.1. a.
x0x1
y0y1
00 01 11 10
b.
y0y1 ( ) ( )
( ) ( )1
0
1'1
0'0
Δ+=
Δ+=
t yt y
t yt y (2.4)00 00
01 01
Din relaţiile (2.4) rezultă că după un interval de timp egal cu Δ0valoarea variabilei secundare y0 devine egală cu valoarea variabileisecundare y'0, respectiv după uninterval de timp Δ1 valoarea
variabilei secundare y1 devine egală cu valoarea variabilei secundare y'1, în momentulconsiderat. Luând pentru simplificare Δ0=Δ1 = Δ, rezultă că după un interval de timpegal cu Δ starea următoare devine starea prezentă.
00 11 10 00 01 11 1101 01 00 00 01 10 10
11 00 00 00 00 z0z110 10 10 00 00
y'0y'1
Circuitele secvenţiale la care starea următoare devine stare prezentă după untimp determinat de întârzierile inerente circuitului se numesc circuite secvenţialeasincrone sau circuite funcţionând în modul fundamental. Pentru ca un astfel de circuit
să funcţioneze determinist, se impune ca pe fiecare coloană din tabelul tranziţiilor, adică pentru fiecare stare a intr ărilor, să existe cel puţin o stare stabila.Circuitele secvenţiale la care starea urmatoare devine starea prezentă numai
la anumite momente de timp bine determinate, marcate prin impulsuri de tact date de cătreun generator de impulsuri numit ,,orologiu", se numesc circuite secvenţiale sincrone.Elementele de memorie ale circuitelor secvenţiale sincrone sunt circuite basculante
bistabile. La circuitele secvenţiale sincrone legăturile inverse, adică intr ările la circuitele basculante bistabile, sunt întreruptc în lipsa impulsurilor de tact fiind stabilite numai în prezenţa tactului (fig. 2.4). Durata impulsului de tact se ia suficient de scurtă, astfel încâtlegăturile inverse să fie întrerupte înainte ca ieşirile secundare ale circuitului sa-şi modificestarea în conformitate cu starea intr ărilor şi starea în care a trecut circuitul în timpul
impulsului de tact considerat. În acest fel toate stările circuitului secvenţial sincron sunt
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 112/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 113
stabile.
CB1
S
R
Q
CIRCUIT LOGICCOMBINAŢIONAL
…
x0
x1
xn
…
z0
z1
zm
CBk
S
R
Q
CB0
S
R
Q
y'0
y'1
y'k
…
y0
y1
yk
… …
…
SINCRONIZARE
Fig. 2.4. Modelul unui circuit logic secvenţial sincron.
Circuitul din fig. 2.3b are ieşirile z0, z1 identice cu intr ările secundare y0,respectiv y1. Ieşirea depinde numai de starea internă, deci circuitul secvenţial este de
tipul Moore. Deoarece există două variabile de stare, două intr ări şi două ieşiri, circuitulare patru stări interne, patru stări diferite ale intr ărilor şi patru stări diferite ale ieşirilor şianume: 00, 01, 11 şi 10. Pentru a putea completa tabelul tranziţiilor se caută expresiilefuncţiilor y'0 şi y'1 realizate de circuit. În acest scop se foloseşte tabelul 2.2 întocmit înmodul ar ătat în paragraful 1.2 (tabelul 1.2).
TABELUL 2.2.
Cunoscând funcţiile y'0(x0 x1, y0, y1) şi y'1(x0 x1, y0, y1) se completează tabelul tranziţiilor şi al ieşirilor (tabelul 2.1.a şi b.). Analizândtabelul 2.1.a observăm că, spre exemplu,
pentru x0=0, x1=0 şi y0=0, y1=0 (intersecţia primei linii cu prima coloană) se obţinevaloarea y'0=1, y'1=1. Această valoare devine
valoarea lui y0y1 după o întărziere Δ (starea următoare devine stare prezentă) şi atuncine ducem în tabel la situaţia x0=0, x1=0 şi y0=1, y1=1. Pentru aceasta y'0=0, y'1=0 şi neîntoarcem la prima stare. Rezultă deci, că circuitul oscilează între aceste două stări, faptsemnalat în tabel cu săgetile cu linie punctată. Dacă vom considera acum că la intr ărilecircuitului avem situaţia x0=0, x1=0 şi y0=0, y1=1, observam din tabel că stareaurmătoare este y'0=0, y'1=1 ceea ce conduce la concluzia că circuitul r ămâne în această stare şi deci avem o stare stabilă. Săgeţile cu linie plină indică evoluţia circuitului cătrestările stabile. În tabelul tranziţiilor (tabelul 2.1.a) s-au încercuit stările stabile. După
cum se vede, circuitu1 are trei stări stabile. În practică se găsesc însă numai două dintre
x0 x1 y0 y1 y'0 y'1 Observaţii
1 10'0 y x y +=
0 x x 0
1 01
'
1 y x y +=x 0 0 x
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 113/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 114
acestea : starea 10, numită starea 1 şi starea 01, denumită starea 0. Aceasta se datoreştefaptului că la un circuit real nu poate fi controlată tranziţia din starea 00, decât în cazulcând se modifică numai una dintre variabilele de intrare. De exemplu, dacă circuitul seaflă în starea stabila 00, ceea ce corespunde la x0=l şi x1=l şi se modifică starea intr ării
x0 din 1 în 0, se trece din starea stabilă 00 în starea instabilă 10 din care se trece apoi înstarea stabila 10 (tabelul tranziţiilor, coloana a doua). Dacă însă circuitul se află înstarea stabila 00 şi se modifică intrarea x1 din 1 în 0, se trece prin starea instabilă. 01 înstarea stabila 01 (tabelul tranziţiilor, coloana a patra). Atunci când circuitul se află înstarea stabilă 00 şi se modifică ambele intr ări, adică starea intr ărilor devine x0=0 şix1=0, circuitul ar trebui sa intre teoretic în oscilaţie, adică să facă tot timpul tranziţia dinstarea instabilă 11 în starea instabilă 00 (prima coloană din tabelul tranziţiilor). Această situaţe nu poate să apar ă în practică deoarece, chiar dacă s-ar putea modifica simultanambele intr ări, nu se pot modifica simultan, din cauza întârzierilor diferite pe cele două căi de legatur ă inversă, stările interne ale circuitului astlel încât aceasta se stabileştedupă cum se modifică mai repede y0 sau y1, fie în starea 10 fie în starea 01. Pentru ca
circuitul să poată funcţiona determinist se impune deci condiţia ca intr ările sa nu fieniciodată simultan în starea 1. Aceasta condiţie se poate formula prin expresia logică :
010 =⋅ x x (2.5)
impunând circuitului studiat anterior coudiţia (2.5), acesta devine un circuit cu două
stări stabile, denumit circuit basculant bistabil RS ( Q zQ z R xS x ==== 1010 ,,, , figura
2.5).
QS
RQ
a.
SR
Q 00 01 11 101 1 0 - 10 0 0 - 1
Q⎢
b.
Fig.2.5. Circuit basculant bistabil RS construit cu porţi SAU-NU.
Timpul cât intrarea S respectiv intrarea R trebuie să stea în starea unu pentru cacircuitul să fie adus, indiferent în ce stare s-ar afla, în starea unu, respectiv zero, estelimitat numai inferior şi anume acest timp trebuie să fie cel puţin egal cu sumaîntârzierilor Δ0 şi Δ1. Deoarece există numai două stări stabile se foloseşte o singur ă variabilă de stare, notata în figura 2.5 cu Q, care joacă şi rolul de variabilă de ieşire
(pentru convenţia facută privind işirile, Q zQ z == 10 , ). Tabelul tranziţiilor pentru
circuitul basculant bistabil RS este redat în figura 2.5b. Conform celor discutate, acesttabel se construieşte astfel: prma coloană, din stânga tabelului, va conţine cele două stăristabile ale circuitului pentru situaţia în care S=0 şi R=0; coloana a doua este coloanacomenzii RESET (S=0, R=1) în care circuitul trece din starea instabilă zero (când Q=1)în starea stabilă zero; coloana a treia nu este definită pentru că se exlude situaţia în care
S=1, R=1 iar coloana a patra este coloana comenzii de SET când circuitul trece din
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 114/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 115
starea instabilă unu (când Q=0) în starea stabila unu. Trebuie menţionat că în timpultranziţiilor cele două ieşiri, respectiv intr ări secundare nu sunt întotdeaunacomplementare după cum se poate vedea din tabelul tranziţiilor 2.1 a. Din tabelultranziţiilor rezultat în urma consideraţiilor f ăcute mai sus (fig. 2.5b), se obţine ecuaţia
stării următoare, Q' ca funcţie de variabilele de intrare Q, R şi S sub forma :
RQ RS Q +=| (2.6)
determinată prin gruparea termenilor din tabelul prezentat în figura 2.5. Dacă ţinem contşi de faptul că S şi R nu pot fi simultan unu, adică:
0=SR (2.7) rezultă ecuaţia bistabilului RS:
( ) RQS RQ R RS SR RQ RS Q +=++=++=| (2.8)
TABELUL 2.3.
În modasemănător se poaterealiza un circuit
basculant bistabil detipul RS cu elementelogice SI-NU, (fig.2.6.) căruia îi
corespunde tabelultranziţiilor 2.3.
Trebuie notat faptul că nu s-au mai reprezentat întârzierile dar se ţine cont de ele. Acesttabel se obţine procedând la fel ca şi în cazul circuitelor basculante bistabile de tipul RS cuelemente logice SAU-NU. Se obţine tabelul 2.4. care reprezintă tabelul tranziţiilor circuitului basculant bistabil RS realizat cu circuite ŞI-NU. Se vede imediat că ecuaţia caredescrie acest circuit este ecuaţia (2.8).
x0x1
y0y100 01 11 10
00 11 11 11 1101 11 11 01 0111 11 10 00 0110 11 10 10 11
y'0y'1
TABELUL 2.4.
RS Q
00 01 11 10
1 - 1 1 00 - 1 0 0
Q|
Circuitele basculante bistabile RS sunt circuite secvenţialeelementare care pot juca rolul deelement de memorie în cadrul unor circuite secvenţiale mai complexe.Ca exemplu, se va analiza circuitul secvenţial din figura 2.7.
Q
R
S
U2A
74LS00
1 2
3
U1A
74LS00
1 2
3
Q
Fig. 2.6. Bistabil RS cu
porţi NAND
(x0)
(x1)(y0)
(y1)
(y|0)
(y|1)
U2A
7400
1
2
3
Y'
U1
R
S
Q
Q
U3A
7400
1
2
3
Z0
X0
X1
Z1
Fig. 2.7. Circuit secvenţial cu bistabil RS.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 115/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 116
Starea intenă a acestui circuit este determinată de starea bistabilului RS din buclade reacţie şi se modifică în conformitate cu ecuaţia de stare a acestuia, deci stareaurmătoare a circuitului va fi dată de relaţia :
Y RS Y +=| (2.9)
Scriind expresiile funcţiilor S şi R realizate de partea combinaţională a circuitului(partea încadrată cu linie întreruptă din figura 2.7), rezultă:
Y xS Y xS Y xY x R 1100 ,, ==+== (2.10)
înlocuind în ecuaţia (2.9) se obţine:
( )Y xY xY Y xY xY
1001
| +=++= (2.11)
TABELUL 2.5.
Acestei ecuaţii îi corespunde tabelul tranziţiilor 2.5. Dinacest tabel rezultă că circuitul analizat se comportă, atâtatimp cât se aplică semnal de comandă numai la una dinintr ări, ca un circuit basculant bistabil RS, iar atunci cândse comandă ambele intr ări circuitul „basculeaza” (işischimbă starea). În cazul circuitului analizat aplicarea unui
semnal de comandă la una din intrariînseamnă aducerea intr ării respective
în starea 1. Circuitul cu o asemeneacomportare poartă denumirea decircuit basculant bistabil JK, la carese noteaza cu J intrarea de aducere instarea 1 (J=x1,) iar cu K intrarea deaducere în starea 0 (K=x0). După cumse vede din tabelul tranziţiilor 2.5, pecoloana corespunzătoare stăriiintr ărilor 11 nu există stare stabilă,deci acest circuit nu poate funcţionaasincron. Ecuaţia de stare acircuitului basculant bistabil JK asincron se poate obţine din ecuaţia(2.11) realizând modificărilemenţionate mai sus. Se obţine ecuaţia(2.12):
x0x1
Y00 01 11 10
0 0 1 1 01 1 1 0 0
Y|
U3A
74LS32
1
2 3x
U1A
74LS32
1
2 3 2 3
U2A
74LS08
1
23
1 z
a.
2
z
U3A
74LS32 U4
DELAY
U1A
74LS32
3
x
U2A
74LS08
U5
DELAY
1
b.
Figura 2.8. Circuit secvenţial asincron.
Δ1
Δ0
y1
y0
y|1
y|0
Q J Q K Q +=| (2.12)
În practică se folosesc însă frecvent circuite basculante bistabile JK sincronizate.Un circuit basculant de tip T se poate obţine dintr-un circuit basculant bistabil de
tip JK prin conectarea intr ării J la intrarea K printr-un inversor. În acest fel, pe intr ările
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 116/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 117
J şi K ale bistabilului nu se pot aplica decât combinaţiile: 01 şi 10. Rezultă că ecuaţia destare a bistabilului de tip T este:
QT QT Q +=| (2.13)
În exemplele considerate anterior, ieşirile circuitelor secvenţiale depindeau
numai de variabilele de stare ale circuitului (automate de tip Moore). De multe ori însă,ieşirile circuitului secvenţial sunt funcţii, nu numai de starea circuitului, ci şi de intr ărilesale (automate de tip Mealy). Ca exemplu, se consider ă circuitul secvenţial din figura2.8.a. Pentru a analiza comportarea circuitului, se consider ă întârzierile pe liniile delegătur ă şi întârzierile elementelor logice concentrate la ieşirile elementelor logice cunumerele 1 şi 3 de la care, prin legături inverse se obţin intr ările secundare alecircuitului (fig. 2.8.b). Pentru simplificare se ia Δ0=Δ1=Δ. În aceste condiţii, ecuaţiilestării următoare sunt date de relaţiile :
10|1
1|0
y xy y
y x y
+=
+= (2.14)
Unde y|
i(t) = yi(t+Δ), pentru i=0 şi 1, iar ecuaţia ieşirii, z , este dată de relaţia :
21 y xy z += (2.15)
TABELUL 2.6.
x
y1y2 0 100 00 1001 11 1111 11 1110 00 11
y|0y
|1
x
y1y2 0 100 0 001 1 111 1 110 0 1
z
TABELUL 2.7.
x
y1y2 0 100 00/0 10/001 11/1 11/111 11/1 11/110 00/0 11/1
y|0y
|1/z
Comportarea circuitului este redată în tabelul tranziţiilor şi al ieşirilor 2.6.Adeseori, pentru circuitele secvenţiale de acest tip, tabelul tranziţiilor şi al ieşirilor seunifică într-un singur tabel, sub forma tabelului 2.7.
Pentru simplificarea scrierii, stările, intr ările şi ieşirile din tabelul tranziţiilor suntnotate adeseori prin litere sau cifre zecimale. Folosind astfel de notaţii se obţine tabelultranziţiilor şi al ieşirilor.
De exemplu, dacă în tabelul tranziţiilor 2.7 se folosesc notaţiile:
starea 00 ↔ q0, intrarea 0 ↔ i0,starea 01 ↔ q1, intrarea 1 ↔ i1,starea 11 ↔ q2, ieşirea 0 ↔ w0,starea 10 ↔ q3, ieşirea 1 ↔ w1,
(2.16)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 117/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 118
se obţine tabelul 2.8 sau folosind numai indicii stărilor, ieşirilor şi intr ărilor din relaţiile(2.16), se obţine tabelul stărilor 2.9.
TABELUL 2.8
Intrare
stare
prezentă i0 i1
q0 q0/w0 q3/w0
q1 q2/w1 q2/w1
q2 q2/w1 q2/w1
q3 q0/w0 q2/w1
starea următoare/ieşire
TABELUL 2.9
Intrare
stare
prezentă 0 1
0 0/0 3/01 2/1 2/12 2/1 2/13 0/0 2/1
starea următoare/ieşire
2.3. Graful tranziţiilor
Comportarea unui circuit secvenţial poate fi redată pe lângă tabelul tranziţiilor,respectiv tabelul stărilor şi prin graful tranziţiilor, respectiv diagrama stărilor. În grafultranziţiilor (diagrama stărilor) fiecare stare a circuituhii se reprezintă printr-un nod, iar fiecare tranziţie printr-un arc.
Circuitele secvenţiale de tipul Moore au înscrise în noduri stările, simbolic saucodificate binar, şi ieşirile corespondente separate prin slash (simbolul de împăr ţire „/”),iar pe arce au notate intr ările care provoacă tranziţia respectivă (fig. 2.9).
Circuitele secvenţiale de tipul Mealy au înscrise pe arce intr ările care cauzează tranziţia, şi ieşirile obţinute în timpul tranziţiei respective, iar în noduri sunt înscrise stărilecircuitului (fig. 2.10).
În graful de tranziţie, starea iniţială poate fi reprezentată printr-un cerc realizatcu o linie dublă.
.4. Alte modele ale circuitelor secvenţiale
În paragrafele anterioare s-au prezentat câteva modele ale circuitelor secvenţialefie pen
00∨10
0/1∨1/1
1/0 1/10/0
2
tru descrierea lor structurală, reţeaua de comutare sau schema logică, fie pentrudescrierea comportării lor, tabelul tranziţiilor, tabelul stărilor, graful tranziţiilor şi
diagrama stărilor. De asemenea se dă o definiţie formală a celor două tipuri de circuite
0/0 1/1
11
11
00∨01
Fig. 2.9. Graful tranziţiilor
pentru circuitul secvenţial din
figura 2.7.
00 1011
0/0
Fig. 2.10. Graful tranziţiilor
pentru circuitul secvenţial din
figura 2.8.
0/1
01
1/1
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 118/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 119
secvenţiale prezentate şi se prezintă alte două modele pentru descrierea comportăriiacestora.
Modelul matematic al unui circuit secvenţial de tipul Mealy, denumit automat finitMealy,
atoarele :
1. o mulţime finită Q de stari interne;
aţia tranziţiilor lui A) a unei submulţimi Dτ
5. lui A) a unei submulţimi Dτ a
Automatul finit A este dat prin urmare prin 5-uplul ordonat A =(Q, I, W, τ, ω).De exe
se defineşte în modul descris în continuare.
Un automat finit Mealy, A, constă din urm
2. o mulţime finită I de intr ări;3. o mulţime finită W de ieşiri;4. o aplicaţie T (denumită aplic
a mulţimii QxI pe o submulţime a lui Q;o aplicaţie ω (denumită aplicaţia ieşiriimulţimii QxI pe mulţimea W.
mplu, se consider ă automatul finit A1 dat prin :
{ }
{ }
{ }
( )( )( )( )
( )( )( )( )⎪
⎪
⎩
⎪⎪
⎨
⎧
=
=
=
=
⎪⎪
⎩
⎪⎪
⎨
⎧
=
=
=
=
=
=
=
.,
,,
,,
,,
,,
,,
,,
,,
.,
,,
,,,
102
001
010
100
112
002
201
100
10
10
210
wiq
wiq
wiq
wiq
qiq
qiq
qiq
qiq
wwW
ii I
qqqQ
ω
ω
ω
ω
τ
τ
τ
τ
(2.17)
Acest automat poate fi reprezentat prin diagrama stărilor din figura 2.11.
r dacă
Dτ=Q
ore, A*, poate fi definit prin:
1. o mulţime finita Q* de stări interne ;
i a mulţimi Q* x I* pe o submulţime a
5. ω* a unei submulţimi a mulţimii Q* în multimea W*.
Definiţia automatului Moore difer ă de definiţia automatului Mealy numai prin punctu
⎨=
=
02*
10*
wq
wq
ω
ω
(2.18)
Un automat A este incomplet definit din punct de vedere al tranziţiilo
x I, şi complet definit dacă Dτ = Dω = Q x I. Atunci când un automat nu estecomplet definit, el se numeşte automat incomplet sau automat incomplet definit.Automatul A1 reprezentat prin diagrama stărilor din figura 2.11 este un exemplu deautomat incomplet definit.
Un automat finit Mo
2. o mulţime finita I* de intr ări;3. o mulţime finită W* de ieşiri;4. o aplicaţie τ* a unei submulţim *
τ D
lui Q* ;o aplicaţie *ω
D
l 5. Prin urmare, dacă în exemplul precedent se înlocuieşte aplicaţia ω din relaţia(2.17) cu ω*, dată de relaţia (2.18), se obţine un automat A1, reprezentat prin diagramastărilor din figura 2.12.
( )
( )⎪⎩
⎪⎧
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 119/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 120
i1/w0
Fig. 2.11 Diagrama stărilor
pentru un automat Mealy.
q0 q1
i0/w1
i0/w0
i1/-q2
i0/w1
Fig. 2.12. Diagrama stărilor
pentru un automat Moore.
q0/w1 q1/-
i0
i0
i1q2/w0
i0
În afar ă de tabelul stărilor şi diagrama stărilor, un automat finit A poate fi
reprezentat şi printr-o matrice a conexiunilor CA=(Cij), având un număr de linii şi decoloane egal cu numărul de stări interne. Elementul cij în această matrice este reuniunea
perechilor intrare/ieşire, aflate în diagrama stărilor pe arcele care conduc de la starea qi
la starea q j pentru automatul Mealy, respectiv reuniunea intr ărilor care conduc de la qi la q j pentru automatul Moore.
i0/w0∨i1/w1q0 q1
i1/w1
i0/w0
i0/-q2
i0/w0⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−
∨
=
0//
/0/
0//0
0100
011
1100
2
1
0
210
2
wiwi
iwi
wiwi
q
q
q
C
qqq
A
Pentru automatul Moore se mai dă în plus un vector coloană al ieşirilor W0, cu
număr de elemente egal cu numărul de stări, fiecare element wi reprezentând ieşireacorespunzătoare stării qi. În figura 2.13. se reprezintă un automat Mealy A2, dat prindiagrama stărilor şi matricea conexiunilor corespondentă, iar în figura 2.14 un automatMoore A2, dat prin diagrama stărilor, respectiv matricea conexiunilor şi vectorulieşirilor corespondent.
i0
Fig. 2.14. Diagrama stărilor şi matricea de conexiuni pentru
un automat Moore.
q0/w0 q1/-
i0
i1
i0∨i1q2/w1
i1⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
∨
=
1
0
10
10
10
2
1
0
*
210
00
0
0
2
w
w
W
ii
ii
ii
q
q
q
C
qqq
A
Fig. 2.13. Diagrama stărilor şi matricea de conexiuni pentru
un automat Mealy.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 120/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 121
2.5. Analiza circuitelor logice secvenţiale
Analiza circuitelor secvenţiale se defineşte astfel: cunoscând structura circuituluisecvenţial se cere evoluţia semnalelor de ieşire pentru anumite evoluţii (secvenţe) ale
semnalelor de intrare.O condiţie necesar ă pentru rezolvarea problemei de analiză a circuitelor secvenţiale
o constituie cunoaşterea stării iniţiale a circuitului analizat.Atât pentru circuitele sincrone cât şi pentru cele asincrone, analiza presupune
parcurgerea următoarelor etape:1. pornind de la structura circuitului se determină păr ţile combinaţionale
şi cele de memorie şi se defmesc semnalele de intrare, de iesire şisemnalele secundare (de stare);
2. se stabilesc expresiile funcţiilor booleene ale ieşirilor din parteacombinaţională. Funcţiile stabilite se pun în forma canonică;
3. corespunzator combinaţiilor variabilelor de stare se realizează codificarea stărilor şi se definesc stările circuitului;
4. se construieşte tabelul stărilor şi/sau graful de tranziţie a circuitului;5. pentru evoluţia semnalelor de intrare şi starea iniţială impusă,
folosindu-se graful sau tabelul de tranziţie, se stabileşte evoluţiasemnalelor la ieşire.
Etapa neobligatorie dar de multe ori utilă din punct devedere practic presupuneobţinerea unui circuitechivalent cu primul dar mai
economic decât primul.Vom explica modul deanaliză a circuitelor logicesecvenţiale printr-un exemplu.
Consider ăm circuitul dinfigura 2.15 compus din două
păr ţi, o parte combinaţională notată pe figur ă cu CLC şi o
parte secvenţială, de memorie,realizată cu două circuite
basculante de tip D.
Circuitul are o singur ă intrare notată cu x şi o singur ă ieşire notată cu z .
Z
Memorie
U9A
74LS04
1 2
D1
X
U6A
74LS00
1
2
3
Q1
U11
DQ
U5A
74LS00
1
2
3
U10A
74LS04
1 2 U8A
74LS32
1
2
3
U3A
74LS08
1
2
3
U4A
74LS08
1
2
3
CLC
U2A
74LS08
1
2
3
U7A
74LS32
1
2
3
U12
DQ
Q0 D0
Fig. 2.15. Circuit logic secvenţial.
Ecuaţia de stare a circuitului basculant D asincron este foarte simplă, circuitulrepetă la ieşirea Q ceea ce se aplică pe intrarea D:
DQ =| (2.19)
Expresiile funcţiilor de ieşire a păr ţii combinaţionale a circuitului din figura 2.15,sunt:
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 121/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 122
(2.20)
011001101
100
0
QQ xQ xQQQ xQ xQ D
Q x xQ D
xQ z
++=+=
+=
=
se dezvoltă formele canonice ale acestor funcţii:
(2.21)
10101010
10101001101
101010100
1010
QQ xQQ xQQ xQQ x
QQ xQQ xQ xQQQ xQ xQ D
QQ xQQ xQ xQQ xQ D
Q xQQ xQ z
++++
+++=+=
+++=
+=
Înlocuind relaţiile (2.21) în (2.19) se poate construi acum tabelul tranziţiilor şi al ieşirii(tabelul 2.10).
TABELUL 2.10. Q0Q1
x00 01 11 10
Q0Q1
x00 01 11 10
0 01 11 11 00 0 0 0 0 01 01 01 10 11 1 0 0 1 1
Q|0Q
|1 z
Circuitul studiat are două variabile de stare. Ca urmare cele 4 combinaţii posibileale valorilor acestora definesc stările circuitului. Putem scrie următoarea codificare:
y0 y1 sk
0 0 -> s0
0 1 -> s1
1 0 -> s2
1 1 -> sk
(2.22)
TABELUL 2.11.
Având în vedere codificarea realizată se poate construi acum tabelul stărilor (tabelul 2.11). Tabelul corespunde unuiautomat de tip Mealy. Pe baza acestuitabel se poate stabili imediat graful detranziţie al circuitului care este dat înfigura 2.16. Starea iniţială estereprezentată printr-un cerc cu linie
dublă.
s0 s1
xsk 0 1
s0 s1/0 s1/0s1 s3/0 s1/0
0/0 ∨ 1/0
1/0
0/01/10/0
s2 s0/0 s3/1s3 s3/0 s2/1
starea
următoare/ieşire
s3s2
0/01/1
Fig. 2.16. Graful de
tranziţie
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 122/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 123
2.6. Sinteza circuitelor logice secvenţiale
Problema de sinteză a circuitelor logice combinaţionale se defineşte în modulurmător: cunoscând modul de funcţionare a circuitului secvenţial exprimat prin evoluţia
semnalelor de intrare respectiv a celor de ieşire (secvenţele de intrare respectiv cele deieşire), se cere să se stabilească structura circuitului.
Ţinând cont de această formulare rezultă că rezolvarea problemei de sinteză presupune parcurgerea etapelor:
1. se construieşte tabelul tranziţiilor şi ieşirilor din specificaţia dată subformă de descriere;
2. se minimizează numărul stărilor;3. se realizează codificarea stărilor;4. se substituie combinaţia variabilelor de stare în tabelul stărilor şi ieşirilor
pentru a crea tabelul tranziţiilor şi stărilor;5. se alege tipul de celule de memorie folosite (tip R-S, J-K, D, T);6. se construieşte tabelul de excitaţie care indică valorile excitaţiilor
necesare pentru a obţine starea urmatoare dorită pentru fiecarecombinaţie stare actuală-intrare;
7. se obţin expresiile funcţiilor de excitaţie;8. se obţin expresiile funcţiilor de ieşire;9. se trasează schema logică a circuitului care materializează funcţiile de
excitaţie şi cele de ieşire la care se adaugă şi celulele de memoriecorespunzătoare.
Dintre etapele prezentate mai sus, prima este cea mai dificilă şi afectată de erori.Parcurgerea ei cu succes depinde foarte mult de experienţa şi abilităţile proiectantului.Fiecare din celelalte etape pot fi parcurse în mod sistematic manual sau folosind
programe pe calculator special realizate.În ceea ce priveşte prima etapă, se recomandă construirea unui label de tranziţii
primar unde să fie o singur ă stare stabilă pe fiecare linie a tabelului. Fiind doar o singur ă stare stabilă pe fiecare linie a tabelului, ieşirea poate fi considerată ca depinzând numai destarea curentă. În acest fel este posibil să se introducă stări suplimentare care însă pot fieliminate mai târziu în etapa de minimizare a stărilor.
În continuare vom exemplifica acest procedeu de sinteză a circuitelor logicecombinaţionale.
2.7. Circuite basculante bistabile folosite ca elemente de memorie
pentru circuitele secvenţiale
2.7.1. Introducere
Circuitele basculante bistabile sunt circuite secvenţial elementare cu numai două stări stabile, folosite ca elemente de memorie pentru circuitele secvenţiale mai complexe,în scopul memor ării stării interne a acestora. Circuitele basculante bistabile pot ficonstruite pentru a funcţiona fie numai în regim asincron, fie numai în regim sincron, fieatât în regim asincron cât şi în regim sincron, funcţie de tipul circuitelor secvenţiale în caresunt folosite. De obicei, pentru circuitele secvenţiale sincrone se folosesc ca elemente de
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 123/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 124
memorie circuite basculante care pot funcţiona atât în regim sincron cât şi asincron,intr ările asincrone fiind utilizate pentru aducerea circuitului în starea iniţială, independentde impulsul de tact.
2.7.2. Tabelele caracteristice, tabelele excitaţiilor şi ecuaţiile intrărilor
Comportarea circuitului basculant bistabil poate fi descrisă prin tabelul caracteristical bistabilului, în care se dă starea următoare a ieşirii în funcţie de comabinaţiile de valori
prezente ale intr ărilor şi ale stării prezente sau prin ecuaţia de stare a bistabilului, careexprimă starea următoare a acestuia în funcţie de intr ări şi starea prezentă. În continuare se prezintă tabelele caracteristice, tabelele excitaţiilor şi ecuaţiile de stare pentru câteva tipuride circuite basculante bistabile, folosite mai frecvent.
TABELUL 2.12.
R
U1A
74LS00
1
2
3
U4A
74LS00
1
2
3
H
U2A
74LS00
1
2
3
Q
U3A
74LS00
1
2
3
/RH/Q
/SH
S
Fig. 2.17. Bistabil RS sincron.
Circuitul basculant
bistabil de tipul RS. Circuilul basculant bistabil de tipul RS,realizat cu module SI-NU,respectiv SAU-NU, analizat în
paragraful 2.2 reprezintă cel mai
S R Q(t+1)0 0 Q(t)0 1 01 0 11 1 ?
simplu circuit basculant bistabil.Tabelul caracteristie al acestuia (tabelul 2.12) se foloseşte îndeosebi pentru a
caracteriza funcţionarea circuitului bistabil RS sincron, înţelegând prin Q (t) starea sa latactul t, iar prin Q (t+1) starea sa la tactul t+1, dar ramâne valabil şi pentru circuital bistabilRS asincron, daca Q(t) se interpretează ca starea circuitului la timpul t, iar Q (t+1) starea sala timpul t+Δt, unde Δt este timpul de r ăspuns al circuitului la semnale de intrare. Pentru aobţine un circuit bistabil RS sincron, având un circuit asincron, proiectat, de exemplu, cucircuite logice SI-NU, se pune condiţia ca intr ările sale sincrone, R H şi SH (fig. 2.17) să fieactive numai în prezenţa unui impuls de tact H, adică:
H R R
H S S
H
H
⋅=
⋅= (2.23)
Ţinând cont de relaţiile (2.23) rezultă schema circuitului basculant bistabil din
figura 2.17.Ecuaţia caracteristică a acestui bistabil, dedusă în paragraful 2.2, denumită şi
ecuaţie de stare, este următoarea:
Q RS Q +=| (2.24)
unde prin Q| s-a notat starea la momentul t+1, iar prin Q starea la momentul t .
În cadrul unui circuit secvenţial, circuitul basculant bistabil are rolul de a memorastarea unei anumite variabile de stare. Din acest motiv, starea sa trebuie să se modificefuncţie de variabilele de intrare ale circuitului, în conformitate cu expresia care descriestarea următoare a variabilei de stare considerate, denumită în acest caz ecuaţia de aplicarea bistabilului. În general, starea următoare a unei variabile de stare Qk notată Q|
k este o
funcţie de variabilele de intrare Xi, pentru i = l, ... , n şi de celalalte variabile de stare Q j,
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 124/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 125
pentru j = 1, ..., k, ..., p unde n şi p sunt numărul de variabile de intrare, respectiv de stare pentru circnitul considerat (relaţia 2.25).
( ) pnk QQQ x x x f Q ,...,,,,...,, 2121| = (2.25)
Dacă pentru memorarea stării acestei variabile se foloseşte un bistabil, notat tot cu
Qk , expresia (2.25) devine ecuaţia de aplicare pentru acest bistabil. Pentru ca bistabilul să memoreze starea următoare a variabilei de stare, trebuie ca la intr ărite sale să se apliceastfel de comenzi încât starea sa următoare să corespundă ecuaţiei de aplicare. Pe bazaacestei condiţii se stabilesc expresiile booleene care descriu comenzile ce trebuie aplicatela intr ările bistabilului, denumite ecuaţiile intr ărilor bistabilului. Problema determinăriiecuaţiilor de intrare pentru un anumit bistabil, în cazul considerat aici pentru bistabilul RS,se reduce la rezolvarea sistemului de ecuaţii booleene (2.26), format din ecuaţia de aplicareşi ecuaţia de stare a bistabilului:
( )
k k
pnk
Q RS Q
QQQ x x x f Q
+=
=
|
2121| ,...,,,,...,,
(2.26)
adică la obţinerea expresiilor:
).,...,,,,...,,(
),,...,,,,...,,(
2121
2121
pn
pn
QQQ x x x f R
QQQ x x x f S
=
= (2.27)
Există mai multe metode practice pentru rezolvarea acestei probleme. Una din
metodele frecvent folosite se bazează pe tabelul de excitaţie al bistabilului. Tabelul deexcitaţie al unui anumit tip de bistabil arată care trebuie să fie valorile intr ărilor pentru ca
bistabilul aflat într-o anumită stare sa treacă într-o stare următoare bine precizată.
TABELUL 2.13.
În tabelul excitaţiilor pentru bistabilul RS (tabelul 2.13) seînscrie pe coloana intr ării S, respectiv R, valoarea 0 şi 1, atuncicând una dintre aceste valori este obligatorie pentru tranziţiarespectivă sau se scrie un x, atunci când valoarea uneia sau aambelor intr ări este indiferentă. De exemplu, atunci când starea
prezentă a bistabitului este 0, iar starea sa următoare trebuie sa fietot 0, este obligatoriu ca intrarea S să fie în starea 0, dar intrarea R poate să fie în starea 0sau în starea 1, adică se poate scrie x, după cum se vede în primul rând al tabelului 2.13.Acest tabel se foloseşte pentru deducerea ecuaţiilor intr ărilor bistabilului RS, aplicat într-un caz concret, în felul urmator :
Q(t) Q(t+1) S R 0 0 0 x0 1 1 01 0 0 11 1 x 0
1. se scrie ecuaţia de aplicare a bistabilutui sub formă de tabel de corespondenţe, penultima coloană fiind starea prezentă a bistabilului, iar ultima stareaurmătoare;
2. se adaugă două coloane corespunzătoare intr ărilor S şi R;3. se completează coloanele S şi R pe baza tabelului excitaţiilor pentru bistabilul
RS;
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 125/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 126
4. se scriu expresiile minime pentru ecuaţiile S şi R, considerând pentru poziţiilemarcate cu x valorile cele mai convenabile (condiţii „nu ţine cont”) – S şi R sunt funcţii de variabilele din ecuaţia de aplicare.
Exemplu. Se dă ecuaţia de aplicare a bistabilului A, de tipul RS, expresia 2.28 şi secer ecuaţiile intr ărilor R şi S.
11| X B X A A += (2.28)
TABELUL 2.14. Se întocmeşte tabelul 2.14 pe baza relaţiei 2.28 şi a
tabelului 2.13. Tabelul se realizează, aşa cum s-a ar ătat mai sus, pe baza variabilelor funcţiei de aplicare (X1, B, A) cu ajutorulecuaţiei 2.28. La acest tabel se mai adaugă coloanele S şi R carese completează conform tabelului 2.13, ţinând cont de faptul că A reprezintă starea prezentă iar A| starea următoare.
X1 B A A| S R 0 0 0 0 0 x0 0 1 0 0 10 1 0 1 1 0
0 1 1 1 x 01 0 0 1 1 01 0 1 0 0 11 1 0 1 1 01 1 1 0 0 1
Din tabelul 2.14 rezultă ecuaţiile intr ărilor S şi R, înfuncţie de variabilele X1, B şi A, relaţia (2.29), obţnute în urmaminimizării funcţiilor S=f(X1, B, A) şi R=f(X1, B, A) cu ajutoruldiagramelor Karnaugh din figura 2.18.
Figura 2.18. Minimizarea funcţiilor S şi R.
AB
X1
00 01 11 10AB
X1
00 01 11 10
0 0 1 x 0
Ecuaţiile intr ărilor S şi R sunt:
( )
( )11
11
X B A AX B A R
X B A X A B AS
+=+=
+=+= (2.29)
În general, ecuaţia de aplicare a unui bistabil Q se poate scrie, folosind teorema
dezvoltării, sub forma:
QQ hQQg Q +=| (2.30)
unde gQ şi hQ sunt funcţii boleene având ca variabile toate variabilele din ecuaţia deaplicare a bistabilului Q cu excepţia variabilei Q.
Procedând la determinarea expresiilor intr ărilor S şi R ale unui bistabil, plecând dela ecuaţia de aplicare scrisă sub forma (2.30) se obţin, prin intermediul tabelului 2.15, înmodul ar ătat mai sus, funcţiile S=f(gQ, hQ, Q) şi R =f(gQ, hQ, Q), care minimizate cuajutorul diagramelor Karnaugh din figura 2.19, au forma :
1 1 1 0 0Funcţia S
0 x 0 0 11 0 0 1 1
Funcţia R
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 126/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 127
QQ g Q RhQS == ; (2.31)
Figura 2.19. Determinarea funcţiilor S şi R.
QhQ
gQ
00 01 11 10
0 0 1 0 01 0 1 x x
Funcţia S
QhQ gQ
00 01 11 10
0 x 0 1 11 x 0 0 0
Funcţia R
TABELUL 2.15.
Din cele prezentate mai sus rezultă că ecuaţiileintr ărilor se pot obţine uşor folosind funcţile
auxiliare gQ şi hQ (din ecuaţia 2.31) care încazul reprezentării funcţiei Q' pe diagramaKarnaugh sunt date, fiecare din ele, de câte o
jumătate a acestei diagrame (conform ecuaţiei2.30) şi anume: funcţia gQ pe jumatateacorespunzătoare zonei Q, iar funcţia hQ pe
jumătatea corespunzătoare zonei Q (figura
2.20.a). Din figura 2.20.a, pentru ecuaţia intr ării S se caută forma minimă a funcţiei hQ,
adică se iau unităţile din zona Q a diagramei iar pentru ecuaţia intr ării R se caută forma
minimă a funcţiei Q g , adică se iau zerourile din zona Q a diagramei. Astfel, pentru
exemplul considerat anterior, rezultă pentru A|, conform tabelului 2.14, diagrama
Karnaugh din figura 2.20.a. Pe baza acestei diagrame se obţin pentru funcţiile Aq şi ,
expresiile: Ah
gQ hQ Q RQS
hQQg Q QQ
+=
=+=|
S R
0 0 0 0 0 x0 0 1 0 0 10 1 0 1 1 00 1 1 0 0 11 0 0 0 0 x1 0 1 1 x 01 1 0 1 1 01 1 1 1 x 0
11; X Bh X B g A A+=+= (2.32)
Ţinând cont de expresiile (2.31) şi (2.32) se obţin pentru S şi R aceleaşi expresii ca
şi în cazul precedent, relaţia (2.29).
Figura 2.20. Determinarea ecuaţiilo
bistab
X1
00 01 11 10
r de intrare pe baza ecuaţiei de aplicare a
ilului.
AB
0 0 1 1 01 1 1 0 0
Funcţia A|
Fig. 2.20.a.
Zona AZona A AB
X1 00 01 11 100 0 1 1 0
hA gA
1 1 1 0 0
Funcţia A|
Fig. 2.20.b.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 127/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 128
Având în vedere faptul că atunci când bistabilul RS se află în starea unu logic se poate da comanda de aducere în starea unu logic far ă să se modifice nimic, rezultă că
pentru ecuaţia intr ării S se pot considera pe lângă unităţile din zona A şi cele din zona A,adică toate unităţile din diagrama Karnaugh pe care se reprezintă ecuaţia de aplicare. Din
aceleaşi motive, pentru scrierea ecuaţiei intr ării R se pot considera toate zerourile dindiagramă. Prin urmare, unităţile din zona A reprezintă condiţii ,,nu ţine cont" pentru
scrierea expresiei lui S, iar zerourile din zona A reprezintă condiţii ,,nu ţine cont" pentruscrierea expresiei lui R. În diagrama din figura 2.20.b căsuţele corespunzătoare acestor condiţii sunt marcate prin trasarea diagonalelor. Urmărind această diagramă se constată că nu se pot obţine pentru S şi R expresii mai simple decât cele deduse anterior. De fapt înaceste completări, diagrama din figura 2.20.b corespunde în întregime cu diagramele dinfigura 2.18.Circuitul basculant bistabil de tipul JK . Spre deosebire de circuital basculant bistabil RS,circuitul basculant bistabil JK admite comenzi simultane la ambele intr ări, circuitul fiind
astfel conceput incât atunci când apare un asemenea caz să-şi modifice starea. Tabelulcaracteristic şi tabelul excitaţiilor pentru un circuit basculant bistabil de tipul JK sunt dateîn tabelul 2.16, respectiv 2.17.
Ecuaţia de stare a circuitului basculant bistabil JK este dată de relaţia:
J Q K QQ +=| (2.33)
Circuitul basculant bistabil de tipul JK se poate construi folosind un circuit bistabil
RS sincron. Se consider ă în acest scop ecuaţia de stare a bistabihilui JK drept ecuaţia deaplicare pentru bistabilul RS şi se determină plecând de aici ecuaţiile intr ărilor S şi R.Ecuaţia de stare a bistabilului JK este reprezentată pe diagrama din figura 2.21. Din această diagramă rezultă, folosind metoda prezentată mai sus pentru bistabilul RS, ecuaţiileintrarilor S si R:
K Q R J QS == ; (2.34)
TABELUL 2.16.
J K Q(t+1)0 0 Q(t)0 1 01 0 1
1 1 )(t Q
TABELUL 2.17.
Q(t) Q(t+1) J K 0 0 0 X0 1 1 X1 0 X 11 1 X 0
QK J
00 01 11 10
0 0 0 0 11 1 1 0 1
Figura 2.21. Sinteza unui bistabil JK.
hQ
gQ
T
U7A
U2A
7408
1
2
3
J
/Q
K
U6A
7400
1
2
3
Q
U1A
7408
1
2
3
U4A
7400
1
2
3
U5A
7400
1
2
3
U3A
7410
1
122
13
7400
1
2
3
a.
T
J
U9A
7400
1
/Q
2
3
U8A
7410
1
122
13
U10A
7400
1
2
3
Q
K
b.
Figura 2.22. Circuit bistabil JK
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 128/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 129
Considerând circuitul bistabil RS realizat sub forma din figura 2.17 şi avândecuaţiile intr ărilor (2.34), rezultă pentru circuitul bistabil JK schema din figura 2.22.a.Facând uz de proprietatea de asociativitate a funcţiei SI, această schemă se poate realiza cumai puţine elemente în forma echivalentă dată în figura 2.22.b. După cum s-a văzul în
analiza f ăcuta asupra circuitelor sincrone, un asemenea circuit poate funcţiona corectnumai atunci când durata impulsului de sincronizare T nu depăşeşte timpul de reacţie alcircuitului.
Deducerea ecuaţiilor intr ărilor bistabilului JK folosit ca element de memorareîntr-un circuit secvenţial sincron se poate face în acelaşi mod ca şi în cazul circuitului
bistabil RS, folosind în acest scop tabelul excitaţiilor. În acest caz însă, expresiile intr ărilor rezultă mai simplu, prin identificarea lor cu funcţiile hQ şi gQ din ecuaţia de aplicare,relaţiile (2.35) şi (2.36). Astfel din :
⎪⎩
⎪⎨⎧
+=
+=
J Q K QQ
hQQg Q QQ
|
|
(2.35)
rezultă:
Q g K = şi Qh J = (2.36)
Din cele ar ătate mai sus rezultă o regulă practică pentru obţinerea expresiilor intr ărilor,având funcţia de aplicare reprezentată pe diagrama Karnaugh şi anume, pentru obţinerea
expresiilor intr ării J se minimizează funcţia din zona Q a diagramei, iar pentru obţinerea
expresiei intr ării K se minimizează negata funcţiei din zona Q a diagramei, considerând înacest scop zerourile din această zonă.Pentru exemplul considerat anterior, din diagrama Karnaugh pentru ecuaţia de aplicare A| (fig. 2.20.a) rezultă :
(2.37)11; X B K X B J +=+=
Circuitul basculant bistabil de tipul T. Acest circuit basculant bistabil are o singur ă intrare,notată cu T, care atunci când trece din starea zero logic în starea unu logic cauzează schimbarea stării interne a bistabilului.
Tabelul caracteristic al circuitului basculant bistabil de tipul T şi tabelul excitaţiilor
sunt date în tabelul 2.18, respectiv 2.19.Ecuaţia de stare a bistabilului T, rezultată din tabelul 2.18, este :
(2.38)T QT QQ +=|
TABELUL 2.18 TABELUL 2.19
T Q(t+1) Q(t) Q(t+1) T0 Q(t) 0 0 0
1 )(t Q 0 1 1
1 0 11 1 0
QT
0 1
0 0 11 1 0
hQ gQ
Figura 2.23.
Sinteza unui
circuit bistabil T
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 129/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 130
Se pot concepe bistabile de tipul T care să funcţioneze sincron sau bistabile de tipulT care să funcţioneze asincron. Pentru a obţine un circuit basculant bistabil de tipul Tsincron, se poate pleca de la faptul că circuitul basculant bistabil de tipul JK işi modifică starea atunci când intr ările J şi K sunt comandate simultan, de unde rezultă că legând
impreună intr ările JK ale unui circuit basculant JK se obţine schema unui circuit basculant bistabil de tipul T. Acesta va funcţiona corect cu aceeaşi observaţie privind durataimpulsului de sincronizare ca şi la circuitul bistabil JK. La acelaşi rezultat se ajunge şi dacă se porneşte de la ecuaţia de stare a bistabilului T, care se impune să fie ecuaţie de aplicare
pentru un bistabil JK, relaţia (2.38), reprezentată pe diagrama Karnaugh din figura 2.23.Din diagrama Karnaugh din figura 2.23 rezultă, ţinând cont de cele ar ătate mai sus,relaţiile:
T g K T h J A A ==== ; (2.39)
La aceeaşi schemă se ajunge şi dacă se face sinteza folosind ca element dememorie un circuit bistabil RS.Ecuaţiie intr ărilor unui circuit bistabil T folosit ca element de memorie într-un
circuit secvenţial se obţin plecând de la ecuaţia de aplicare a bistabilului, scrisă pe bazateoremei dezvoltării, în acelaşi mod ca şi la bistabilul RS (tabelul 2.20).
Din diagrama Karnaugh a funcţiei T (figura 2.24) rezultă forma sa minimă:
QQ g QhQT += (2.40)
TABELUL 2.20.
Ecuaţia intr ării T de mai sus (2.40) arată că pentru obţinerea sa se consider ă funcţiahQ şi negata funcţiei gQ din ecuaţia de aplicare a bistabilului. Având în vedere acest fapt se
poate deduce o regulă practică de obţinere a expresiei minime a intr ării, atunci când ecuaţiade aplicare este reprezentată pe diagrama Karnaugh şi anume: se consider ă pentru scrierea
expresiei intr ării T, unităţile din zona Q şi zerourile din zona Q a diagramei.Folosind această regulă pentru ecuaţia de aplicare dată în diagrama Karnaugh din
figura 2.20.a, a exemplului prezentat anterior, rezultă pentru intrarea T a bistabilului Aexpresia:
Q
|
= Q Q g + QhQ = TgQ hQ Q
B A B A X T ++= 1 (2.41)
= QT +Q T
Figura 2.24. Determinarea ecuaţiei intrării pentru
bistabilul T
QhQ
gQ
00 01 11 100 0 0 0 00 0 1 0 1 0 0 1 1 10 1 0 1 10 1 1 0 11 0 0 0 01 0 1 1 01 1 0 1 11 1 1 1 0
1 0 1 0 0Funcţia T
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 130/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 131
IntrareT
0 1Ieşire
ZQ1Q2
T00 01 11 10
TABELUL 2.21.
Pentru a concepe o schemă de circuit bistabil T asincron, se începe cu tabelul primar al stărilor, completat ţinând cont de comportarea
bistabilului (figura 2.25.a). Deoarece se
urmăreşte obţinerea unui circuit de tipul Moore,se vede, urmărind coloana ieşirii Z, că numărulde stări din tabelul primar al stărilor nu poate firedus. Pentru codificarea acestor patru stări sunt
necesare două variabile de stare Ql şi Q2, cărora li se atribuie coduri binare pe bazadiagramei tranziţiilor din figura 2.25.b. Cu această codificare rezultă tabelul tranziţiilor (tabelul 2.21). Din acest tabel se obţin expresiile stărilor următoare ale variabilelor de stare,Ql şi Q2, care se minimizează cu ajutorul diagramelor Karnaugh din figura 2.25.c şi 2.25.d,rezultând :
T QQQT QQ
T QQQT QQ
2211|2
2211
|
1
++=
++= (2.42)
Factorizând expresiile (2.42) se obţine:
( ) T QQT QQ 221|1 ++= (2.43.a)
( ) T QQT QQ 221|2 ++= (2.43.b)
Pe baza expresiilor (2.43) se obţine schema logică din figura 2.26. În vederea
reducerii numărului de elemente logice se înlocuieşte variabila2
Q de la intrarea
elementului 1 cu expresia obţinuta prin negarea expresiei (2.43.b):
( )T QQT QQ +⋅= 2122 (2.44)
adică cu conjuncţia ieşirilor elementelor logice 3 şi 5, care se poate realiza aplicând acesteieşiri la intr ările elementului logic 1, pe baza legii asociativităţii funcţiei logice SI. Învederea înlocuirii elementului de negare 8, care realizează complementul ieşirii Q|
1, se
scrie pe baza diagramei Karnaugh din figura 2.25.d, expresia minimă a lui|
1Q :
Starea următoare Q|1Q
|2
pentru intrarea TStarea
prezentă Q1Q2 0 1
Z
01 01 11 0
11 10 11 110 10 00 100 01 00 0
1 2 03 2 13 4 11 4 0
1 2
34
01 11
00 10
Q1Q2
T00 01 11 10
0 0 0 1 11 0 1 1 0
Funcţia Q
|1
0 1 1 0 01 0 1 1 0
Funcţia Q
|2
a. b. c. d.
Figura 2.25. Sinteza unui circuit bistabil asincron de tipul T.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 131/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 132
( ) T QQT QT QQQT QQ 2212211
|
1 ++=++= (2.45)
/Q2 Q2
/Q1
6
T
U4A
1
2
3
8
U1A
1
23
U2A
1
23
4
U6A
1
23
2
U7A
1
23
Q1' (Z)
5
/Q1
Q2'
1 3
U8A
1
23
7
U5A
1
23
U3A
1
23
Q1
a.
3
U3A
1
23
Q2'
U1A
1122
13
U6A
1
23
2
1
/Q2
Q1' (Z)
/T
5/Q1
/Q2
U2A
1
2
3
6
U5A
1
23
U4A
1
234
b.
Figura 2.26. Schema logică a unui circuit bistabil de tipul T, asincron.
După cum rezultă din această relaţie, funcţia|
1Q se poate obţine cu elementele
logice existente în schemă şi anume ea rezultă la ieşirea elementului logic 2, de unde poatefi aplicată la intrarea elementului 5. În urma acestor modificări se obţine schema logică dinfigura 2.26.b) cu numai şase elemente logice SI-NU. Ieşirea acestui circuit, Z, este identică cu . Circuitelor din figura 2.26 li se pot adăuga intr ări de tipul R şi S la elementelelogice 2, respectiv 4.
|1Q
Circuitul bistabil de tipul T, asincron, din figura 2.26.b, poate sta la baza proiectăriiunui circuit bistabil de tipul T, sincron, care să funcţioneze independent de durataimpulsului de sincronizzare. În acest scop se prevede la intrare un element logic SI-NU,
care realizează funcţia T H T = , unde H este impulsul de sincronizare.Circuital basculant bistabil de tipul D. Acest circuit basculant bistabil are o intrare notată cu D, iar starea bistabilului este determinată de starea acestei intr ări şi anume stareaurmătoare este aceeaşi cu a intr ării D, independent de starea prezentă a bistabilului. Deobicei intrarerea D este sincronizată, iar circuitul este prevăzut cu intr ări asincrone pentruaducerea în starea 0, respectiv 1. Tabelul caracteristic şi tabelul excitaţiilor pentru bistabilulD sunt prezentate în tabelul 2.22, respectiv 2.23.
Din tabelul caracteristic rezultă ecuaţia de stare a bistabilului D :
DQ =| (2.46)
După cum se vede din relaţia (2.46),
ecuaţia de aplicare a bistabilului se identifiecă cu ecuaţia intr ării, prin urmare ecuaţia intr ăriise obţine minimizând ecuaţia de aplicare.Pentru realizarea unui bistabil de tip D, sincron,se poate folosi fie un bistabil RS, fie un bistabilJK. Pentru determinarea expresiilor intr ărilor
acestora, se intocmesc tabelele 2.24, respectiv 2.25.
TABELUL 2.22. TABELUL 2.23.
D Q(t+1) Q(t) Q(t+1) D0 1 0 0 01 1 0 1 1
1 0 01 1 1
Din tabelul 2.24 rezultă că forma minimă pentru intr ările R şi S este :
D R = şi DS = (2.47)
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 132/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 133
iar din tabelul 2.25 rezultă că forma minimă pentru intr ările J şi K este :
DK = şi D J = (2.48)
Pe baza expresiilor (2.47) şi (2.48) se obţineschema bistabilului D dată înfigura 2.27.a, respectiv 2.27b,în care bistabilele RS, respectivJK sunt reprezentate simbolic
printr-un dreptunghi cuintr ările şi ieşirile corespunzătoare.
TABELUL 2.4. TABELUL 2.5.D Q(t) Q(t+1) R S D Q(t) Q(t+1) J K 0 0 0 X 0 0 0 0 0 X0 1 0 1 0 0 1 0 X 11 0 1 0 1 1 0 1 1 X1 1 1 0 X 1 1 1 X 0
D
U2A
1 2
T T
QU3
KTJ
Q
/Q
/Q
U2A
1 2
/Q
D
QU1
RTS
Q
/Q
a. b.
Figura 2.27. Sinteza circuitului bistabil de tipul D.
Circuitele basculante bistabile de tipul ,,stăpân-sclav" (master-slave). În principiu un bistabil de tipul ,,stă pân-sclav", este format din două circuite basculante bistabile dintrecare primul, denumit ,,stă pân" memoreaza în momentul apariţiei impulsului desincronizare starea următoare a bistabilului, iar cel de-al doilea denumit ,,sclav"memorează pe toată durata impulsului de sincronizare starea prezentă, urmând ca abia
după dispariţia impulsului de sincronizare să treacă în starea în care se gaseşte bistabilul,;stă pân" care îl comandă. În acest fel se asigur ă o funcţionare corectă a bistabiluluiindependent de viteza de reacţie a bistabilului, respectiv de durata impulsului desincronizare. Această proprietate este importantă mai ales pentru bistabilele de tipul JK şiT, dar şi pentru bistabilele RS în cazul folosirii acestora în registre de deplasare cu unsingur tact.
2.8. Exemplificarea sintezei unui circuit logic secvenţial
Pentru exemplificarea sintezei unui circuit logic secvenţial vom parcurge paşii
descrişi în paragraful 2.6.Vom considera următoarea problemă: să se realizeze un circuit logic secvenţial cudouă intr ări x0 şi x1 şi o ieşire z0. Comportarea circuitului este următoarea: starea iniţială acircuitului (starea iniţială a ieşirii) este zero logic. Dacă la intrare apare secvenţa 10 -> 11 -> 01 atunci ieşirea va că păta valoarea unu logic. Următoarea modificare a intr ării duce latrecerea ieşirii în zero logic. Nici o altă secvenţă a semnalelor de intrare nu mai producestarea unu logic la ieşire.
Pasul 1 (conform paragrafului 2.6).Se realizează tabelul de tranziţii primar. Acesta are următorul cap de tabel:
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 133/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 134
Intr ăriSemnificaţia stării Numele stării
00 01 11 10Ieşire
Tabelul de tranziţii primar se completează linie cu linie pe baza descrierii
funcţionării circuitului.Funcţionarea circuitului începe cu starea iniţială care este de obicei starea în care se
află sistemul după ce a fost cuplat la sursa de alimentare. Această stare o vom numi stareainiţială şi o vom nota cu Sinit. Pentru starea initială ieşirea va fi zero logic.
Apoi, pentru fiecare combinaţie a variabilelor de intrare, vom analiza evoluţiacircuilului. Confonn descrierii funcţionării circuitului, o singur ă secvenţă a semnalelor deintrare poate duce la activarea ieşirii şi prima combinaţie din această secvenţă este 10.Rezultă că pentru combinaţiile 00, 01 si 11 circuitul va r ămâne în starea în care se afla iar
pentru combinaţia 10 el va trece într-o stare nouă. Aceasta este starea în care s-a detectat prima combinaţie din secvenţă aşa încât o vom numi Detectl.
Intr ăriSemnificaţia stării Numele stării00 01 11 10
Ieşire
Starea iniţială SInit SInit SInit SInit Detect1 0 Noua stare Detect1 se adaugă tabelului primar prin adăugarea unei linii
suplimentare şi procesul de mai sus se reia.
Intr ăriSemnificaţia stării
Numelestării 00 01 11 10
Ieşire
Starea iniţială SInit SInit SInit SInit Detect1 0S-a detectat începutul
secvenţei Detect1Următoarea combinaţie din secvenţă, aplicată la intrare, care va duce la activarea
ieşirii (trecerea în starea unu logic a ieşirii) z0, dacă se completează secvenţa cerută laintrare 10 -> 11 -> 01, este 11. Asta înseamnă că dacă, aflându-ne în starea Detect1, laintrare se aplică combinaţiile 00 sau 01, secvenţa rezultată la intrare, pâna în acest moment,va fi una din următoarele: (10, 00) sau, respectiv (10, 01) care conform specificaţiilor nuvor putea duce la activarea ieşirii z0. Ca urmare, în aceste două cazuri circuitul va trebui să se întoarcă în starea iniţială pentru a relua procesul de detecţie a secvenţei corecte. În cazulîn care combinaţia la intrare este 10, rezultă ca aceasta a r ămas neschimbată aşa încâtcircuitul va r ămâne în continuare în starea Detectl aşteptând modificarea secvenţei deintrare. Circuitul va trece într-o stare nouă doar dacă la intrare se aplică combinaţia 11.Această nouă stare corespunde detecţiei celei de-a doua combinaţii din secvenţa careactivează ieşirea z0 aşa încât o vom numi Detect2. leşirea circuitului ramâne în continuareîn starea zero logic. Tabelul primar va ar ăta astfel:
Intr ăriSemnificaţia stării
Numelestării 00 01 11 10
Ieşire
Starea iniţială SInit SInit SInit SInit Detect1 0S-a detectat începutul
secvenţeiDetect1 SInit SInit Detect2 Detect1 0
S-a detectat a doua
combinaţie din secvenţă Detect2
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 134/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 135
Raţionând în mod similar rezultă că pentru combinaţiile 00 şi 10 circuitul revine înstarea iniţială, pentru combinaţia 11 circuitul r ămâne în starea Detect2 iar pentrucombinaţia 01 circuitul trece într-o stare nouă. Aceasta este starea în care a fost detectată şicea de-a treia combinaţie din secvenţa de activare a ieşirii z0 şi ca urmare aceasta va fi
activată. Noua stare o vom numi Detect3. Din această stare circuitul revine în starea iniţială la oricare din combinaţiile diferite de ultima combinaţie recepţionată, adică 0l.Cum în această ultimă etapă nu au apărut stări noi, rezultă că procesul determinării
tabelului de tranziţie primar, s-a încheiat. Forma finală a tabelului de tranziţie primar este:
Intr ăriSemnificaţia stării
Numelestării 00 01 11 10
Ieşire
Starea iniţială SInit SInit SInit SInit Detect1 0S-a detectat începutul
secvenţeiDetect1 SInit SInit Detect2 Detect1 0
S-a detectat a douacombinaţie din secvenţă Detect2 SInit Detect3 Detect2 SInit 0S-a detectat a treia
combinaţie din secvenţă (ultima)
Detect3 SInit Detect3 SInit SInit 1
Din tabelul de tranziţie primar se obţine imediat tabelul de tranziţie al circuitului:
Intr ări (x0x1) Numele stării00 01 11 10
Ieşirez0
SInit SInit SInit SInit Detect1 0
Detect1 SInit SInit Detect2 Detect1 0Detect2 SInit Detect3 Detect2 SInit 0Detect3 SInit Detect3 SInit SInit 1
Pasul 2.În această etapă se urmăreşte eliminarea stărilor suplimentare introduse în procesul
de determinare a tabelului de tranziţie a circuitului.Problema realizării unui circuit secvenţial cu o anumită comportare nu are o soluţie
unică. Se pot construi circuite secvenţiale cu aceeaşi comportare, dar de complexităţidiferite, respectiv cu preţ de cost diferit. De obicei, dintre circuitele secvenţiale cu aceeaşi
comportare, acela este mai simplu şi realizabil cu o cheltuială mai redusă care are număr mai mic de stări. Din acest motiv este important să se reducă la minimum numărul stărilor din diagramă, respectiv tabelul stărilor care descrie comportarea circuitului secvenţial.
Pentru reducerea numărului de stări ale unui circuit secvenţial se caută acele stăricare realizează aceeaşi funcţie, adică nu se poate face distincţie între ieşirile rezultate înurma aplicării la intr ările circuitului aflat în oricare din aceste stări a aceleiaşi secvenţe deintr ări. Aceste stări se numesc echivalente şi pot fi înlocuite printr-o singur ă stare.Echivalenţa a două stări se poate defini în felul următor: două stări qi şi q j ale aceluiaşicircuit secvenţial A1, complet definit sau f ăcând parte din două circuite secvenţiale completdefinite A1 şi A2 se numesc echivalente, notat qi = q j, dacă pentru orice secvenţă de intr ăride lungime arbitrar ă aplicată circuitului A1 aflat în starea qi se obţine aceeaşi secvenţă de
ieşiri ca şi la aplicarea aceleiaşi secvenţe circuitului A1, respectiv A2 aflate in starea q j.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 135/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 136
Echivalenţa stărilor unui singur circuit secvenţial complet definit este o relaţie deechivalenţă; prin urmare este reflexivă, simetrică şi tranzitivă şi împarte mulţimea stărilor circuilului în clase de echivalenţă disjuncte.
Două circuite secvenţiale Al şi A2 sunt echivalente, notat Al = A2, dacă pentru
fiecare stare q j din A2 există o stare echivalentă qi în A1 şi invers, pentru fiecare stare qi dinAl există o stare echivalentă q j în A2.
Pasul 3.Stările automatului sunt realizate prin inermediul variabilelor de stare. Cum aceste
variabile pot lua doar două valori, rezultă că pentru n stări vom avea nevoie de cel puţin m variabile binare, unde 2m ≥ n. În cazul nostru n = 4 aşa încât vom utiliza 2 variabile de stare
pe care le vom nota cu y0 si y1.Vom alege următoarea codificare a stărilor:
SInit -> y0=0 y1=0Detectl -> y0=0 y1=l
Detect2 -> y0=1 y1=lDetect3 -> y0=1 y1=0
În general există n! posibilităţi de codificare a celor n stări.
Pasul 4.Înlocuind codurile de mai sus în tabelul de tranziţie, obţinem:
x0x1
y0y100 01 11 10 z0
00 00 00 00 01 0
01 00 00 11 01 011 00 10 11 00 010 00 10 00 00 1
Din acest tabel putem obţine diagramele Karnaugh pentru funcţiile de stare Y0, Y1 şi a ieşirii z0, corespunzăoare variabilelor de stare y0 şi y1. Pe baza acestor diagramerealizăm minimizarea funcţiilor.
Funcţia Y0 Funcţia Y1 Funcţia z0
x0x1
y0y100 01 11 10
x0x1
y0y100 01 11 10
x0x1
y0y100 01 11 10
00 0 0 0 0 00 0 0 0 1 00 0 0 0 001 0 0 1 0 01 0 0 1 1 01 0 0 0 011 0 1 1 0 11 0 0 1 0 11 0 0 0 010 0 1 0 0 10 0 0 0 0 10 1 1 1 1
Expresia funcţiilor obţinute este:
100
1100101
1100100
y y z
y x x y x xY
y x x y x xY
=
+=
+=
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 136/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 137
Pasul 5.În această etapă se alege tipul de celule de memorie folosite (tip RS, JK, D,T).
Pasul 6.
Pentru tipul de memorie aleasă se construieşte tabelul de excitaţie care indică valorile excitaţiilor ce trebuiesc aplicate intr ărilor memoriilor pentru a obţine stareaurmătoare dorită pentru fiecare combinaţie stare actuală-intrare. Aplicand regulile din
paragraful 2.7.2 se obţin următoarele tabele de excitaţii:
Celule de memorie tipul D
D0 D1
x0x1
Q0Q100 01 11 10
x0x1
Q0Q100 01 11 10
00 0 0 0 0 00 0 0 0 101 0 0 1 0 01 0 0 1 111 0 1 1 0 11 0 0 1 010 0 1 0 0 10 0 0 0 0
Celule de memorie de tipul RS
R 0 S0 R 1 S1
x0x1
Q0Q100 01 11 10
x0x1
Q0Q100 01 11 10
x0x1
Q0Q100 01 11 10
x0x1
Q0Q100 01 11 10
00 X X X X 00 0 0 0 0 00 X X X 0 00 0 0 0 101 X X 0 X 01 0 0 1 0 01 1 1 0 0 01 0 0 X X11 1 0 0 1 11 0 X X 0 11 1 1 0 1 11 0 0 X 0
10 1 0 1 1 10 0 X 0 0 10 X X X X 10 0 0 0 0 Celule de memorie de tipul JK
J0 K 0 J1 K 1x0x1
Q0Q100 01
1110
x0x1
Q0Q100 01 11 10
x0x1
Q0Q100 01 11 10
x0x1
Q0Q100 01 11 10
00 0 0 0 0 00 X X X X 00 0 0 0 1 00 X X X X01 0 0 1 0 01 X X X X 01 X X X X 01 1 1 0 011 X X X X 11 1 0 0 1 11 X X X X 11 1 1 0 110 X X X X 10 1 0 1 1 10 0 0 0 0 10 X X X X
Celule de memorie de tipul T
T0 T1
x0x1
Q0Q100 01 11 10
x0x1
Q0Q100 01 11 10
00 0 0 0 0 00 0 0 0 101 0 0 1 0 01 1 1 0 011 1 0 0 1 11 1 1 0 110 1 0 1 1 10 0 0 0 0
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 137/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 138
Pasul 7.Pe baza diagramei Karnaugh şi a tabelelor de excitaţie ale celulelor de memorie
folosite, se obţin expresiile funcţiilor de excitaţie.
Celule de memorie de tipul D
1100101
1100100
Q x xQ x x D
Q x xQ x x D
+=
+=
Celule de memorie de tipul RS
0101
0101
1100
1010
Q x xS
Q x x R
Q x xS
Q x x R
=
+=
=
+=
Celule de memorie de tipul JK
01101
0101
10010
1100
Q x x xK
Q x x J
Q xQ xK
Q x x J
+=
=
+=
=
Celule de memorie de tipul T
1010101101
1110100010
QQ x xQQ xQ xT
QQ x xQQ xQ xT
++=
++=
Pasul 8.Pe baza tabelului de tranziţie se obţine expresia
funcţiei de ieşire. Pentru toate cazurile, funcţia de ieşire
depinde numai de starea circuitului şi conform diagrameiKarnaugh alăturate, va avea expresia:
Funcţia z0
x0x1
Q0Q1 00 01 11 1000 0 0 0 001 0 0 0 011 0 0 0 010 1 1 1 1
100 QQ z =
Pasul 9.
Pe baza ecuaţiilor determinate la paşii 8 şi 9 se trasează schema logică a circuituluicare materializează funcţiile de excitaţie şi cele de ieşire la care se adaugă şi celulele dememorie corespunzătoare. Schemele logice sunt date mai jos pentru fiecare tip de celulă de
memorie.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 138/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 139
Celule de tip D
Celule de tip RS
Celule de tip JK
Z0
1
23
1 2
1
23
1 2
R1
X0
1122
13
S0
R
S
Q
/Q
1
23
1
23
X1
1
23
S0
1122
13
R0R
S
Q
/Q
1
23
D1
D Q
/Q
1 2
1
23
X1
X0
1
12213
1122
13
1
23
D0
1122
13D Q
/Q
Z0
1 2
1
23
1
23
1
23
J1
K1
Z0
J
K
Q
/Q
J
K
Q
/Q
1
23
1 2K0
1
23
1122
13
1
23
1 2
J0
1
23
X0
X1
1122
13
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 139/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 140
Celule de tipul T
1122
13
7408
1
23
T Q
/Q
1
23
1 2
T0
T1
Z0
T Q
/Q
X1
X0
1122
13
1
2
3
1 2
2.9. Analiza circuitelor logice secvenţiale asistată de calculator
Vom prezenta succint, în continuare, analiza circuitelor logice secvenţiale cuajutorul pachetului de programe OrCAD bazându-ne pe cele ar ătate în paragraful 1.6, cuajutorul limbajului Verilog, bazându-ne pe cele ar ătate în paragraful 1.7.2 şi cu ajutorullimbajului VHDL bazându-ne pe cele ar ătate în paragraful 1.7.3.
2.9.1. Simularea circuitelor logice secvenţiale cu ajutorul aplicaţiei OrCAD
Pentru simularea unui circuit basculant bistabil construit cu circuite logiceSAU-NU vom construi în aplicaţia OrCAD Capture schema electrică din figura 2.28. Seva face verificarea circuitului cu ajutorul opţiunii Design Rules Check (din meniul Tools)şi după realizarea profilului de simulare similar cu cel prezentat în figura 2.29, se trece lasimularea circuitului.
CLK
ROFFTIME = .5uSONTIME = .5uSDELAY = 0STARTVAL = 0OPPVAL = 1
/Q
Q
V
U1A
74LS02
2
31
V
U2A
74LS02
2
31
V
V
CLK
SOFFTIME = 1uSONTIME = 1uSDELAY = 0STARTVAL = 0OPPVAL = 1
Figura 2.28. Circuitul pentru simulareaunui circuit basculant bistabil realizat cu
porţi SAU-NU.
Figura 2.29. Profilul de simulare.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 140/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 141
Rezultatul simulării este prezentat în figura 2.30.
Figura 2.30. Rezultatul simulării bistabilului RS realizat cu porţi SAU-NU.
Se propune ca temă explicarea formelor de undă din figura din figura 2.30.Următorul exemplu se refer ă la circuitul basculant bistabil realizat cu por ţi ŞI-NU.
Se realizează în aplicaţia OrCAD Capture schema electrică din figura 2.31.
U1A
7400
1
23
Se vor compara formele de undă din figura 2.30 cu cele din figura 2.32.Simularea funcţionării unui circuit basculant bistabil sincron de tipul JK se va face
cu ajutorul circuitului din figura 2.33 iar rezultatul simulării este ar ătat în figura 2.34.
În cazul simulării circuitelor electronice care conţin circuite
basculante bistabile, cu ajutorulaplicaţiei Orcad PSpice AD, seefectuează aceeaşi paşi ce cei descrişiîn paragraful 1.6. În plus, se poatestabili starea iniţială (la începutulsimulării) a circuitelor basculante
bistabile. Această stare iniţială sestabileşte în profilul de simulare, aşacum este ar ătat în figura 2.35.
Pentru aceasta, se selectează dinmeniul PSpice aflat în bara principală aaplicaţiei OrCAD Capture, opţiunea de
creare a unui profil de simulare: New
Q
/Q
V
CLK
/SOFFTIME = .5uSONTIME = .5uSDELAY = 0STARTVAL = 0OPPVAL = 1
U3A
7404
1 2
VV
CLK
/ROFFTIME = 1uSONTIME = 1uSDELAY = 0STARTVAL = 0OPPVAL = 1
U2A
7400
1
23U4A
7404
1 2 Figura 2.32. Rezultatul simulării circuitului din
figura 2.31.V
Figura 2.31. Bistabil RS cu porţi ŞI-NU
CLK
JOFFTIME = 10mSONTIME = 10mSDELAY = 0STARTVAL = 0OPPVAL = 1
V
U4A
74LS73A
14
1
3
2
12
13
J
CLK
K
C L R
Q
Q
HI
/Q
CLK
TOFFTIME = 5msSONTIME = 5msSDELAY = 0STARTVAL = 0OPPVAL = 1
CLK
KOFFTIME = 20msSONTIME = 20msSDELAY = 0STARTVAL = 0OPPVAL = 1
V
V
V
V
Q
Figura 2.33. Schema de simulare a unui
circuit basculant bistabil de tipul JK.
Figura 2.34. Rezultatul simulării bistabilului de tip
JK
Figura 2.35. Stabilirea stării iniţiale a bistabililor.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 141/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 142
Simulation Profile sau opţiunea de editare a unui profil de simulare existent: EditSimulation Profile, după caz. În fereastra apărută, selectăm Options, de aici Gate-level
Simulation şi apoi pentru Initialize all flip-flops to selectăm valoarea zero aşa cum searată în figura 2.35. Starea iniţială a bistabilelor poate fi zero, unu sau oarecare
(simbolozată cu X).
2.9.2. Simularea circuitelor logice secvenţiale cu ajutorul Verilog HDL
Pentru simularea circuitelor logice secvenţiale cuajutorul limbajului Verilog vom folosi aplicaţia Silos descrisă în paragraful 1.7.2.2. Se va simula un latch de tip D(figura 2.36) care memorează datele prezentate la intrarea D la comanda semnalului de tact Ck.
Programul Latch D_module.v în limbaj Verilog cedescrie funcţionarea circuitului latch D sincron, este prezentat în exemplul 36.
Q
U1
D
CK
Q
QN /Q
D
CK
Figura 2.36. Latch D
sincron.
EXEMPLUL 36.
// Modul latch D
module D (Ck, D, Q, QN);input Ck;input D;output Q;output QN;
assign Q = Ck ? D : Q;assign QN = Ck ? ~D : QN;
endmodule
Structura fişierului de test Test Bench, numit Latch D_TB.v este prezentată înexemplul 37.
EXEMPLUL 37.
//TestBench pentru modulul latch D
`timescale 1 ns/1ns
module Test ();
reg D;wire Q, QN;reg Ck;
D DUT(.Ck(Ck), .D(D), .Q(Q), .QN(QN));
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 142/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 143
initial begin
Ck = 0;D = 0;
#5 D = 1;#30 D = 0;#2 D = 1;#8 D = 0;$finish;
endalways #10 Ck <= ~Ck;endmodule
Rezultatul simulării este prezentat în figura 2.37.
Figura 2.37. Rezultatul simulării latch-ului D sincron.
2.9.3. Simularea circuitelor logice secvenţiale cu ajutorul VHDL
Pentru simularea circuitelor logice secvenţiale cu ajutorul VHDL vom folosi programul ModselSim (varianta SE PLUS 5.7f) descrisă în paragraful 1.7.2.2.
Se construiesc fişierele pentru modelarea latch-ului D, Latch_D.vhd conformexemplului 37 şi pentru testarea latch-ului, test_Latch_D.vhd, conform exemplului 38.
EXEMPLUL 37.
-- EntitateaLIBRARY IEEE;USE IEEE.std_logic_1164.ALL;
ENTITY D_latch ISPORT(Ck, D: IN std_logic;
Q, QN: OUT std_logic);END D_latch;
-- ArhitecturaARCHITECTURE Comportament OF D_latch ISBEGINLatch: PROCESS(Ck, D)
BEGIN
IF (Ck='1') THEN
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 143/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 144
Q <= D;QN <= Not D;
END IF;END PROCESS;
END Comportament;
EXEMPLUL 38.
-- Entitatea de testLIBRARY IEEE;USE IEEE.std_logic_1164.ALL;
ENTITY Test ISEND Test;
-- Arhitectura asociat'a entit'a'tii de testARCHITECTURE Test OF Test IS
SIGNAL D, Q, Qn: std_logic;SIGNAL Ck: std_logic := '0';
COMPONENT DcompPORT(Ck, D: IN std_logic;
Q, QN: OUT std_logic);END COMPONENT;
FOR ALL: Dcomp USE ENTITY WORK.D_latch(Comportament);
BEGIN
DUT: Dcomp PORT MAP(Ck, D, Q, QN);
Ck <= Not Ck AFTER 10 ns;D <= '0', '1' AFTER 5 ns, '0' AFTER 35 ns, '1' AFTER 37 ns, '0' AFTER 45 ns;
END Test;
Rezultatul simulării este prezentat în figura 2.38.
Figura 2.38. Rezultatul simulării latch-ului D.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 144/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 145
Seminar
Seminar 1
1.1. Cu ajutorul tabelelor de adevăr se vor verifica teorema absorbţiei (relaţia 0.11 din
curs) şi teorema de Morgan (relaţia 0.12 din curs).
1.2. Se consider ă forma canonică normal disjunctivă a unei funcţii:
f 3 = P1 + P3 + P5 + P7 (s.1) să se construiască tabelul de adevăr al acestei funcţii şi forma canonică normalconjunctivă.
1.3. Se consider ă funcţia:
f 4 = x3x1 + x2x0 (s.2) Să se construiască tabelul de adevăr al funcţiei şi să se scrie forma normal disjunctivă.
1.4. Să se arate că pentru forma canonică disjunctivă a unei funcţii oarecare:
Pi ⋅ P j = 0 pentru i ≠ j (s.3) [teorema1, relaţia (0.21), pagina 14 din curs].
1.5. Să se arate că pentru forma canonică disjunctivă a unei funcţii oarecare:
Si + S j = 1 pentru i ≠ j (s.3) [teorema2, relaţia (0.22), pagina 14 din curs].
1.6. Să se demonstreze cu ajutorul axomelor si teoremele algebrei binare că relaţia:
y x x xy ⋅= (s.4)
este adevărată.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 145/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 146
Rezolvare
( ) xy xy x x y x x y x x =+=+⋅=⋅
1.7. Se consider ă circuitul logic din figura s.1. Să se analizeze dacă acest circuit estecombinaţional.
U2A
7408
1
23
x0
U3A
7427
12
1312
x2 y0
x1
U1A
7408
1
23
x3
Figura s.1.
Rezolvare Se constată uşor că numerotarea reţeleiconform regulii 1.1 din curs (pagina 19) nueste posibilă deci vom studia dacă această reţea este combinaţională. Pentru aceasta seintroduce variabila secundar ă xa şi sestudiază influenţa acestei variabile, cuajutorul tabelului de adevăr, asupra ieşirii y0.În orma construirii tabelului de adevăr seconstată că ieşirea y0 depinde de variabila xa
şi deci circuitul nu este combinaţional.
U2A
7408
1
23
x0
U3A
7427
12
1312
x2 y0
x1
U1A
7408
1
23
x3
Figura s.2.
A
Bxa
1.8. Să se construiască folosind numai por ţi ŞI-NU (NAND) circuitul logic secvenţial acărui ecuaţie logică a ieşirii este:
12030 x x x x y +=
Rezolvare
Folosind teorema De Morgan, obţinem:
12030 x x x x y ⋅=
inversorul se va construi cu ajutorul unei por ţi ŞI-NU cu toate intr ările legate între ele (seva studia şi exemplul de la pagina 28, figura 1.9 din curs).
1.9. Circuitul obţinut la problema 1.8 reprezintă un arbore boolean? Dacă r ăspunsul esteafirmativ atunci se va face analiza acestui circuit conform metodei descrise în curs la
pagina 23 din curs.
1.10. Se va întocmi un program în limbajul C++ conform modelului de la pagina 25 din
curs pentru verificarea ecuaţiei obţinute la problema 1.9.
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 146/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 147
Seminar 2
2.1. Se dă circuitul din figura s.3.
x2y0
1
23
1
23
1
23
1
23
1
23
1
23
x3
x0
1
23
x1
1
23
1
23
Figura s.3.
Să se analizeze dacă circuitul este combinaţional şi dacă r ăspunsul este afirmativ să se scrieecuaţia funcţiei de ieşire y0 şi să se realizeze un program pentru verificarea funcţieiobţinute.
Rezolvare
Circuitul nu poate fi numerotat conform regulii 1.1 din curs. Se trece la analiza circuitului.
Se introduce variabila xa şi se studiază dacă ieşirea depinde de aceasta. Pentru aceasta se
realizează tabelul de adevăr ca în figura s.5.Acest tabel poate fi realizat, pentru a simplifica munca, în Microsoft Excel din pachetul de programe Microsoft Office. În primele coloane: A, B, C, D, E se introducvariabilele: xa, x3, x2, x1 şi x0. În coloanele F pâna la N inclusiv, rândul doi, se introducformulele:
- coloana F: =IF(NOT(D2 * E2);"1";"0")- coloana G: =IF(NOT(B2 * C2);"1";"0")- coloana H: =IF(NOT(E2 * G2);"1";"0")- coloana I: =IF(G2 * B2;"1";"0")- coloana J: =IF(NOT(F2 * H2);"1";"0")- coloana K: =IF(H2+A2;"1";"0")
- coloana L: =IF(I2 * K2;"1";"0")
x2 y0
1
2
3
1 2 3
1 3
1 2 3
1
23
1 2
3
x0
x3 1
23
x1
1
23 1
2 3
Figura s.4.
a
b
c
d
e
f xa
h
g
1
2
3
4
5
?
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 147/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 148
- coloana M: =IF(NOT(J2 * L2);"1";"0")- coloana N: =IF(NOT(L2*M2);"1";"0")
Apoi formulele se extind şi pe celelalte coloane prin tehnica copy-paste.
Figura s.5.
Se observă din tabel că funcţia de ieşire y0 nu depinde de variabila xa şi deci circuitul estecombinaţional.
Pentru a scrie ecuaţia de ieşire se poate determină succesiv:
01 x xa =
23 x xb =
0230 x x xbxc ==
3233 x x xbxd ==
02301 x x x x xace ==
aa x x x x xc f +=+= 023
a x x x x x x xdf g +== 023323
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 148/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 149
( ) 02301023323 x x x x x x x x x x x xgeh a+==
( ) ( ) 023010233230233230 x x x x x x x x x x x x x x x x x x xgh y aa ++==
Pentru ca funcţia de ieşire nu depinde de variabila xa putem scrie:
023010233230233230 x x x x x x x x x x x x x x x x x y =
2.2. Se dau funcţiile:1) f4 = P0 + P2 + P3 + P4 + P5 + P6 + P7 + P8 + P9 + P13;2) f4 = P0 + P1 + P2 + P3 + P5 + P7 + P9 + P11 + P12 + P13.
Să se obţină forma minima a acestor funcţii prin metoda tabelelor Karnaugh şi prin metodaQuine Mc Kluskey. Formele minime vor fi verificate cu ajutorul programului următor:
program vizualizare_clc_4_variabile;
label01,02;
typetstr=string[8];
var termeni:array[0..15] of tstr;y,a,b,c,d,n,m,u:byte;mes:tstr;
procedure eval_term(a,b,c,d:byte;termeni:tstr;var u:byte);var n,m:byte;
beginu:=0;
if termeni='' then exit;
m:=pos('a',termeni);if m<>0 then begin
if m<>1 then begin
if termeni[m-1]='/' then begin
if not a = 254 then exit;endelseif a=0 then exit;
end
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 149/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 150
elseif a=0 then exit;
end;m:=pos('b',termeni);
if m<>0 then beginif m<>1 then
beginif termeni[m-1]='/' then
beginif not b = 254 then exit;
endelseif b=0 then exit;
end
elseif b=0 then exit;
end;m:=pos('c',termeni);if m<>0 then
beginif m<>1 then
beginif termeni[m-1]='/' then
beginif not c = 254 then exit;
endelseif c=0 then exit;
endelseif c=0 then exit;
end;m:=pos('d',termeni);if m<>0 then
begin
if m<>1 then beginif termeni[m-1]='/' then
beginif not d = 254 then exit;
endelseif d=0 then exit;
endelseif d=0 then exit;
end;
7/12/2019 Curs Analiza Si Sinteza Dispozitivelor Numerice
http://slidepdf.com/reader/full/curs-analiza-si-sinteza-dispozitivelor-numerice 150/150
ANALIZA ŞI SINTEZA DISPOZITIVELOR NUMERICE 151
u:=1;end;
begin
02:for a:=0 to 15 dotermeni[a]:='';writeln('Introduceti termenii functiei:');for a:=0 to 15 do
beginreadln(mes);if mes='' then goto 01;termeni[a]:=mes;end;01:
n:=0;for d:=0 to 1 dofor c:=0 to 1 dofor b:=0 to 1 dofor a:=0 to 1 do
beginy:=0;for m:=0 to 15 do
begineval_term(a,b,c,d,termeni[m],u);y:=y or u;end;