Sunteți pe pagina 1din 150

MINISTERUL EDUCAIEI I CERCETRII UNIVERSITATEA DIN BACU FACULTATEA DE INGINERIE

ANALIZA i
10111011010101000100100101110110110 11111000111010101001110101 10100100011110000000110101011 10101001110001010010101 010010001010000101000101010001001010010 101101001001010001001010010001010 10010010101001010001 10001001010010101000101001010

SINTEZA

DISPOZITIVELOR NUMERICE
EDITURA ALMA MATER

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

CUPRINS
pagina

CAPITOLUL 0 (zero) Elemente de algebr binar (algebr logic)


0.1. 0.2. 0.3. 0.4. Introducere Axiomele i teoremele algebrei binare Funcii binare Formele canonice ale funciilor logice 5 6 8 12

CAPITOLUL 1 Analiza i sinteza circuitelor logice combinaionale


1.1. 1.2. 1.3. 1.4. 1.4.1. 1.4.2. 1.4.3. 1.4.4. 1.4.5. 1.5. 1.5.1. 1.6. 1.6.1. 1.6.1.1. 1.6.1.2. 1.6.1.3. 1.6.1.4. 1.6.1.5. 1.6.1.6. 1.6.1.7. 1.7. 1.7.1. 1.7.2. 1.7.2.1. 1.7.2.2. 1.7.3. 1.7.3.1. 1.7.3.2. Introducere Elemente de analiz a circuitelor logice combinaionale Sinteza circuitelor logice combinaionale Minimizarea funciilor logice combinaionale Metoda minimizarii pe baza axiomelor si teoremelor algebrei booleene Metoda diagramelor Karnaugh Metoda Quine-Mc Cluskey Minimizarea funciilor logice combinaionale incomplet definite Minimizarea sistemelor de funcii booleene Apariia hazardului Eliminarea hazardului cu ajutorul diagramelor Karnaugh Analiza circuitelor logice combinaionale cu ajutorul pachetului de programe OrCAD Proiectarea schemei electronice cu ajutorul programului OrCAD CAPTURE nceperea unui proiect nou Plasarea componentelor n schema electronic Conectarea componentelor schemei electronice Verificarea corectitudinii realizrii schemei electrice Plasarea punctelor de test pe schema electronic Stabilirea profilului de simulare Simularea circuitului Analiza circuitelor logice combinaionale cu ajutorul limbajelor pentru descrierea structurii hardware (HDL) Introducere Limbajul Verilog HDL Structura unui program Verilog HDL Testarea programelor Verilog HDL Limbajul VHDL Structura unui program VHDL Testarea programelor VHDL 17 18 27 29 29 29 37 42 43 51 53 55 55 55 57 59 60 61 61 62 62 62 67 67 87 100 100 103

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

CAPITOLUL 2 Analiza i sinteza circuitelor logice secveniale


2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.7.1. 2.7.2. 2.8. 2.9. 2.9.1. 2.9.2. 2.9.3. Introducere Tabelul tranziiilor i al ieirilor Graful tranziiilor Alte modele ale circuitelor secveniale Analiza circuitelor logice secveniale Sinteza circuitelor logice secveniale Circuite basculante bistabile folosite ca elemente de memorie pentru circuitele secveniale Introducere Tabelele caracteristice, tabelele excitaiilor i ecuaiile intrrilor Exemplificarea sintezei unui circuit logic secvenial Analiza circuitelor logice secveniale asistat de calculator Simularea circuitelor logice secveniale cu ajutorul aplicaiei OrCAD Simularea circuitelor logice secveniale cu ajutorul Verilog HDL Simularea circuitelor logice secveniale cu ajutorul VHDL 108 111 117 118 121 123 123 123 124 133 140 140 142 143

Seminar
Seminar 1 Seminar 2 Seminar 3 Seminar 4 Seminar 5 Seminar 6 Seminar 7 145 147

Laborator
Laborator 1 Laborator 2 Laborator 3 Laborator 4 Laborator 5 Laborator 6 Laborator 7 Laborator 8 Laborator 9 Laborator 10 Laborator 11 Laborator 12 Laborator 13 Laborator 14

Bibliografie

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

CAPITOLUL 0 (zero)
Elemente de algebr binar (algebr logic)
0.1. Introducere

Primul capitol al acestui curs este capitolul zero i nu capitolul unu aa cum se obinuiete. Numrul zero a fost folosit din mai multe motive: n primul rnd pentru ca informaia din acest capitol reprezint o recapitulare a cunotiinelor dobndite la alte cursuri i el reamintete doar noiuni ce vor fi folosite i aici. Cele cteva elemente ale algebrei binare prezentate, au doar scopul s limpezeasc noiunile ce apar n capitolele urmtoare. n al doilea rnd, folosirea cifrei zero pentru numerotarea capitolului este justificat i de faptul c aceast cifr reprezint primul simbol din orice baza de numeraie. Ultimul motiv, i cel mai important, este determinat de faptul c n tehnica numeric primul indice are valoarea zero i deci este momentul s ne obinuim cu numerotarea: 0, 1, 2, . Algebra logic numit i calcul propoziional, opereaz cu propoziii, despre care are sens s afirmm c sunt adevrate sau false. Din nsi definirea propoziiilor rezult c o propoziie poate fi adevrat sau fals. Propoziiile pot fi simple sau copmuse. Cele compuse se obin ca rezultat al legturii propoziiilor simple, prin intermediul unor conective logice. Adevrul sau falsitatea unei propoziii compuse este n funcie de valoarea propoziiilor simple din care se compune i de tipul legturii logice. n logica simbolic se poate face abstracie de sensul propoziiilor, opernd cu relaiile de valoare. Convenim ca unei propoziii adevrate s-i atribuim valoarea binar unu (1), iar falsitatea acesteia s o notm cu valoarea binar zero (0). Propoziia compus a crei valoare depinde de valorile propoziiilor simple, putnd avea dou valori, se numete funcie logic sau binar. Funcia compus este complet definit cu ajutorul unui tabel finit n care se trec valorile funciei n coresponden cu valorile propoziiilor simple considerate independente. O astfel de exprimare a funciei compuse este cunoscut sub numele de tabel de adevr. Calculul propoziiilor poate fi extrapolat n tehnic la sistemele automate care utilizeaz elemente de comutaie cu dou stri. Acestora le putem atribui relaii de valoare (1 sau 0) binar corespunztoare adevrului (1) sau falsitii (0) propoziiilor. Algebra Boole opereaz pe mulimea binar:

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE


B = {x / x = 0,1}

6 (0.1)

Pe aceast mulime sunt definite trei legi de compoziie: o complementarea (negaia), variabila negat x o vom nota cu x ; o disjuncia, pe care o vom nota cu +; o conjuncia, pe care o vom nota cu *; Tabelele de adevr pentru aceste trei legi de compoziie sunt (TABELUL 0.1): x 0 1

x 1 0

Complementarea (negaia)

y 0 0 1 1

x 0 1 0 1 Disjuncia

x+y 0 1 1 1

y 0 0 1 1

x x+y 0 0 1 0 0 0 1 1 Conjuncia

Din tabelele de adevr prezentate mai sus se constat c operaia de disjuncie este similar operaiei de adunare iar cea de conjuncie cu cea de nmulire. O alt observaie care trebuie fcut este faptul c toate relaiile definite pe mulimea B sunt duale n sensul c se obin relaii echivalente dac schimbm operaia de disjuncie cu cea de conjuncie i 1 n 0 (variabilele directe cu cele negate iar cele negate cu variabilele directe).

0.2.

Axiomele i teoremele algebrei binare

n algebra binar sunt valabile 6 axiome i 5 teoreme de baz. Datorit proprietii de dualitate, att axiomele ct i teoremele au dou forme de exprimare aa cum se va arta mai departe. Axiome: 1. Mulimea B este nchis n raport cu operatorii + i *. daca x B, y B atunci x * y B, x + y B (0.2) 2. Asociativitatea. daca x B, y B, z B (0.3) atunci x * ( y * z) = ( x * y) * z, x + ( y + z) = ( x + y) + z

3. Comutativitatea. daca x B, y B atunci x * y = y * x, x + y = y + x 4. Distributivitatea. daca x B, y B, z B atunci x * ( y + z) = x * y + x * z, x + y * z = ( x + y) * ( x + z) 5. Existena elementului neutru. daca x B atunci x *1 = 1* x = x, x + 0 = 0 + x = x 6. Existena complementului. daca x B atunci x * x = 0, x + x = 1 Teoreme: 1. Idempotena sau tautologia. daca x B atunci x * x = x , x + x = x

(0.4)

(0.5) (0.6) (0.7)

(0.8)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

2. Legile lui unu i zero. daca x B atunci x * 0 = 0, x + 1 = 1 (0.9) 3. Dubla negaie sau involuia. (0.10) daca x B atunci x = 0 4. Absorbia. daca x B, y B atunci x * ( x + y) = x, x + x * y = x (0.11) 5. Teorema De Morgan. (0.12) daca x B, y B atunci x * y = x + y, x + y = x * y Verificarea afirmaiilor fcute poate fi realizat prin utilizarea tabelelor de adevr. De exemplu vom arta n continuare faptul c cele dou relaii (0.5) sunt echivalente. Pentru aceasta vom construi un tabel n care se trec toate valorile posibile pentru variabilele funciei, eventual termenii intermediari care s permit determinarea mai uoar a rezultatului final i funcia de determinat. Tabelul de adevr pentru funcia x(y+z) (TABELUL 0.2): z y x (y+z) x*(y+z) 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 1 Tabelul de adevr pentru funcia x*y+x*z (TABELUL 0.3): z y x x*y x*z x*y+x*z 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 Din studiul tabelelor 0.2 i 0.3 se constat echivalena celor dou funcii ceea ce justific prima egalitate din ecuaia (0.5). Tabelul de adevr pentru funcia x+y*z (TABELUL 0.4): z y X y*z x+y*z 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

Tabelul de adevr pentru funcia (x+y)*(x+z) (TABELUL 0.5): z y x (x+y) (x+z) (x+y)*(x+z) 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 Din studiul tabelelor 0.4 i 0.5 se constat echivalena celor dou funcii ceea ce justific a doua egalitate din ecuaia (0.5). De asemenea, dac ntr-unul din tabelele 0.2 sau 0.3 se nlocuiete valoarea 0 cu 1 i valoarea 1 cu 0 se obine aceeai funcie cu cea reprezentat n tabelele 0.4 i 0.5, i reciproc ceea ce arat proprietatea de dualitate enunat mai sus. O mulime B dotat cu legile de compoziie "*", respectiv "+" care satisface axiomele 1-6, se numete latice distributiv. Laticea distributiv care admite teoremele 1-5 se numete algebr boolean.

0.3.

Funcii binare

Aa cum s-a artat n paragraful anterior, variabilele independente pot avea numai dou valori: 0 i 1. O funcie binar poate avea un singur termen, mai muli termeni aparinnd mulimii termenilor ce se pot obine cu n variabile sau nici un termen. Cu n variabile se obin 2n=m termeni, de exemplu pentru n=2 se obin 22=4 termeni: 00, 01, 10, 11. n general numrul de funcii NF n cazul a m termeni se calculeaz astfel: m n m! N F = C 0 + C1 + ... + C m = = 2m = 22 m m m (0.13) ! j= 0 j ( m j)! n lipsa variabilei independente (n=0) se obin dou funcii: F=1 i F=0 funciile constante. Pentru n=1 se obin 4 funcii : F=1, F=0, F=x i F= x , unde x este variabila independent iar pentru n=2 se obin 16 funcii. Prezentm n continuare funciile logice combinaionale cu dou variabile i acolo unde este cazul, porile logice care le implementeaz. 1. Conjuncia F1 = x*y (x i y, produs logic)
Simbolul
x F1 y

Tabelul de adevr y x F1 0 0 0 0 1 0 1 0 0 1 1 1

Denumirea circuitului logic: I (AND)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

2. Disjuncia

F2 = x+y (x sau y, suma logic)


Simbolul
x y F2

Tabelul de adevr y x F2 0 0 0 0 1 1 1 0 1 1 1 1

Denumirea circuitului logic: SAU (OR)

3. i 4. Negaia

F3 = x (non x ) F4 = y (non y )
Simbolul
F3 x

Tabelul de adevr x F3 y F4 0 1 0 1 1 0 1 0

Denumirea circuitului logic: INVERSOR (INVERTER)

5. Implicaia direct F5 = x y = x + y (x implic y)


Tabelul de adevr y x F5 0 0 1 0 1 0 1 0 1 1 1 1

Circuitul logic nu are o denumire consacrat

6. Implicaia invers F6 = y x = x + y (y implic x)


Tabelul de adevr y x F6 0 0 1 0 1 1 1 0 0 1 1 1
F7 = x ~ y

Circuitul logic nu are o denumire consacrat

7. Echivalena

F7 = ( x y) * ( y x ) F7 = (x + y )* (x + y ) F7 = x y

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

10

Tabelul de adevr y x F7 0 0 1 0 1 0 1 0 0 1 1 1

Simbolul
x y F7

Denumirea circuitului logic: COINCIDEN, COMPARATOR

F8 = x y

8. Negarea implicaiei directe

F8 = x * y F8 = x + y

(x nu imlic y)

Tabelul de adevr y x F8 0 0 0 0 1 1 1 0 0 1 1 0

Denumirea circuitului logic: INTERDICIE, INHIBARE

F9 = y x 9. Negaia imlicaiei inverse F9 = x * y F9 = x + y


Tabelul de adevr y x F9 0 0 0 0 1 0 1 0 1 1 1 0

(y nu implic x)

Denumirea circuitului logic: INTERDICIE, INHIBARE

F10 = x ~ y 10. Negarea echivalenei F10 = ( x y) * ( y x ) F10 = (x + y )* (x + y )


(x nu este echivalent cu y)

F10 = x y (suma modulo 2)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

11

Tabelul de adevr y X F10 0 0 0 0 1 1 1 0 1 1 1 0

Simbolul
x y F10

Denumirea circuitului logic: SAU EXCLUSIV, SUMA MODULO DOI


F11 = x + y F11 = x * y

11. Negarea disjunciei

(x sau y negat)

Tabelul de adevr y x F11 0 0 1 0 1 0 1 0 0 1 1 0 1

Simbol
x y F11

Denumirea circuitului logic: SAU-NU (NOR)

12. Negarea conjunciei

F12 = x * y F12 = x + y

(x i y negat)

Tabelul de adevr y x F12 0 0 1 0 1 1 1 0 1 1 1 0

Simbol
F12 x y

Denumirea circuitului logic: I-NU (NAND)

13. Identitate
Tabelul de adevr y x F13 0 0 0 0 1 1 1 0 0 1 1 1

F13 = x (funcia ce nu depinde de y)


Simbol
F13 x

Denumirea circuitului logic: IDENTITATE

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

12

14. Identitate

F14 = y (funcia ce nu depinde de x)

Tabelul de adevr y x F14 0 0 0 0 1 0 1 0 1 1 1 1

Simbol
F14 y

Denumirea circuitului logic: IDENTITATE

15. Funcie nular 16. Funcie unar

F15=0 (circuit deschis) F16=1 (circuit nchis)

Materializarea funciilor definite mai sus conduce la circuite logice, unele cu denumiri consacrate. Din tabelul funciilor de dou variabile prezentat anterior, o importan deosebit o prezint urmtoarele ase funcii: INHIBAREA, SAU EXCLUSIV, SAU-NU (NICI), COINCIDENA, I-NU i IMPLICARE. Algebra logicii se dezvolt plecnd de la o grupare de operaii fundamentale prin combinarea crora se obin alte operaii logice. Pn acum s-au considerat drept operaii logice fundamentale operaiile logice SAU, I i NU. Se pot alege ca operaii logice fundamentale una sau mai multe din operaiile simple prezentate anterior. Exist 6 posibiliti i anume: operaiile SAU-EXCLUSIV i I; operaiile COINCIDEN i I; operaia SAU-NU; operaia I-NU; operaia INHIBARE; operaia IMPLICARE. Se observ c n cazul n care se aleg operaiile SAU-NU, I-NU, INHIBARE i IMPLICARE, este necesar o singur operaie logic elementar sau operaie logic de baz. Din acest motiv aceste operaii se numesc operaii universale. Datorit faptului c operaiile SAU-NU (circuite ECL, MOS) i I-NU (circuite TTL) necesit, din punct de vedere al realizrii lor practice, mai puine circuite dect operaia de INHIBARE sau IMPLICARE, primele dou sunt preferate ultimelor. Alegerea operaiilor de baz n algebra boolean nu este unic. n aceast alegere trebuie s se in n primul rnd cont de posibilitatea de realizare a unor circuite electronice economice i cu siguran mare n funcionare. Circuitele I, SAU, NU, SAU-NU, I-NU, sunt frecvent folosite, deoarece pot fi uor realizate fizic.

0.4.
n

Formele canonice ale funciilor logice

O funcie logic de n variabile va avea 2n valori de ieire corespunztoare celor 2 combinaii posibile ale variabilelor de intrare. Acest lucru poate fi reprezentat, aa cum s-a artat, cu ajutorul tabelului de adevr. Se poate arta ins c exist o expresie analitic unic determinat cu ajutorul cruia se poate exprima o funcie logic. Aceast funcie ce conine cel mult 2n termeni, corespunztor tuturor combinaiilor posibile

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

13

pentru variabilele de intrare, poate avea dou moduri de exprimare, conform principiului dualitii. Acestea reprezint formele canonice ale funciilor logice numite forma normal disjunctiv (FND) i respectiv, forma normal conjunctiv (FNC).
TABELUL 0.6.

Fiind dat o relaie funcional logic, numim form normal x y z f(x,y,z) disjunctiv a ei o relaie echivalent, care este o sum de produse elementare construite cu aceleai variabile ca i relaia dat iniial, 0 0 0 0 fiecare produs coninnd toate variabilele posibile (ele sau 0 0 1 0 complementarele lor) iar form normal conjunctiv, o relaie 0 1 0 1 echivalent care este un produs de sume elementare, construite 0 1 1 1 deasemenea cu aceleai variabile ca i relaia dat iniial, fiecare 1 0 0 1 sum coninnd toate variabilele posibile (ele sau complementarele 1 0 1 0 lor). 1 1 0 1 Exemplu : considerm o funcie logic de trei variabile : x, y i z, a 1 1 1 0 crui tabel de adevr este TABELUL 0.6. n tabel, valorile funciei f(x,y,z) sunt puse la ntmplare, deoarece exemplul se refer la o funcie oarecare. n aceast situaie putem scrie forma normal disjunctiv a funciei :

f ( x, y, z ) = x y z + x yz + x y z + xy z

(0.14)

unde termenii funciei reprezint acele combinaii ale variabilelor de intrare pentru care funcia ia valoarea unu (pentru zero se scrie variabila negat iar pentru unu variabila nenegat: x y z reprezint combinaia 010 iar f(010)=1). Termenii formei normale disjunctive se mai numesc i mintermi (o expresie minterm este o sum de produse n care fiecare produs conine toate variabilele n form adevrat sau negat). Pentru a obine forma normal conjunctiv a funciei, bazndu-ne pe principiul dualitii vom scrie forma normal disjunctiv pentru f ( xyz ) :

f ( xyz ) = x y z + x yz + x yz + xyz
sau aplicnd teorema dublei negaii se obine:

(0.15)

f ( xyz ) = f ( x, y, z ) = x y z + x yz + x yz + xyz
aplicnd teorema De Morgan (relaia 0.12) extins la n variabile, rezult :

(0.16)

f ( xyz ) = x + y + z x + y + z x + y + z x + y + z

)(

)(

)(

(0.17)

Relaia 0.17 reprezint forma normal conjunctiv a funciei care se poate obine direct din tabelul de adevr prin considerarea combinaiilor variabilelor de intrare pentru care funcia ia valoarea zero, ca un produs de sume, fiecare sum coninnd variabila negat dac aceasta are valoarea unu sau valoarea nenegat dac aceasta are valoarea zero n combinaia respectiv. Termenii formei normal conjunctive se mai numesc i maxtermi (o expresie maxterm este o expresie produs de sume n care fiecare sum conine toate variabilele sub form adevrat sau negat).

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

14

Forma normal conjunctiv s-a obinut din forma normal disjunctiv prin aplicarea principiului dualitii i deci cele dou forme de exprimare a funciilor logice sunt echivalente. Se observ c, FND conine toi termenii pentru care funcia ia valoarea logic 1 iar FNC conine toi termenii pentru care funcia ia valoarea logic 0. Exist i forma prescurtat de scriere a funciilor logice, forme numite : form canonic normal disjunctiv i respectiv form canonic normal conjunctiv. Pentru exemplul prezentat mai sus forma canonic normal disjunctiv se scrie :

f 3 = P2 + P3 + P4 + P6

(0.18)

unde indicii termenilor P exprim echivalentul zecimal al combinaiilor cifrelor binare corespunztor variabilelor pentru care funcia are valoarea logic unu iar indicele termenului f reprezint numrul variabilelor funciei. Pentru cea de-a doua form de exprimare a unei funcii logice, forma canonic normal conjunctiv, tot pentru exemplul de mai sus, se poate scrie:

f 3 = S0 S1S5 S 7

(0.19)

unde indicii termenilor S exprim echivalentul zecimal al combinaiilor cifrelor binare corespunztor variabilelor pentru care funcia are valoarea logic zero iar indicele termenului f reprezint numrul variabilelor funciei. Dup modul n care au fost definii termenii P, respectiv S, reiese clar c:
Pi = Si i Si = Pi

(0.20)

n continuare vor fi prezentate cteva din teoremele aplicate funciilor logice scrise sub forma canonic P, respectiv S, teoreme utile n analiza i sinteza dispozitivelor numerice.
Teorema 1. Produsul logic a doi P oarecare este nul, adic:

Pi Pj = 0,

pentru i j

(0.21)

Teorema 2. Suma logic a doi termeni S oarecare este ntotdeauna egal cu unitatea, adic:

Si + S j = 1,

pentru i j

(0.22)

Se observ, fr dificultate, c fiecare termen P sau S din cei posibili ai unei funcii logice difer de un alt termen prin existena a cel puin a complementului unei variabile, i cum x x = 0 , respectiv x + x = 1 (existena complementului, axioma 6, relaia 0.7), rezult direct cele dou teoreme enunate anterior.
Teorema 3. O funcie logic de n variabile poate fi reprezentat printr-o sum logic unic a termenilor P :

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

15

fn =

2 n 1

a P
i =0 i i

(0.23)

Teorema 4. O funcie logic de n variabile poate fi reprezentat printr-un produs logic unic a termenilor S :

f n = (ai + Si )
i =0

2 n 1

(0.24)

n ultimile dou relaii coeficienii ai se numesc numere caracteristice ale unei funcii logice i reprezint valoarea funciei logice respective pentru combinaia i a variabilelor de intrare. Pentru exemplul de mai sus, numerele caracteristice ale funciei logice sunt : a0 = 0, a1 = 0, a2 = 1, a3 = 1, a4 = 1, a5 = 0, a6 = 1, a7 = 0.
Teorema 5. Complementul unei funcii logice de n variabile poate fi reprezentat printr-o sum logic unic a termenilor P :

fn=

2 n 1

a P
i =0 i i

(0.25)

Teorema 6. Complementul unei funcii logice de n variabile poate fi reprezentat printr-un produs logic unic a termenilor S :

f n = a i + Si
i =0

2 n 1

(0.26)

Pentru a demonstra ultimile dou teoreme se face apel la teorema lui De Morgan extins la n variabile. De exemplu pentru a justifica relaia 0.25 se scrie relaia 0.24 sub forma :
f n = (ai + Si ) =
i =0
2 n 1 2 n 1

a S
i i =0

(0.27)

sau, n baza relaiei 0.20 :

fn=

2 n 1

a P
i =0 i i

(0.28)

Teorema 7. Suma logic a 2n termeni distinci a unei funcii logice de n variabile este egal cu unu :
2 n 1

P =1
i =0 i

(0.29)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

16

Teorema 8. Produsul logic al 2n termeni distinci a unei funcii logice de n variabile este egal cu zero :

S
i =0

2 n 1

=0

(0.30)

n baza teoremelor 3 i 5 se poate scrie : 1 = fn + fn =


2 n 1

a P + a P = P
i =0 i i i =0 i i i =0 i

2 n 1

2 n 1

(0.31)

deoarece ai + ai = 1 . n acelai mod, conform teoremelor 4 i 6, se poate scrie : 0 = f n f n = (ai + Si ) a i + Si = Si


i =0 i =0 i =0
2 n 1 2 n 1

2 n 1

(0.32)

deoarece ai a i = 0 .

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

17

CAPITOLUL 1
Analiza i sinteza circuitelor logice combinaionale
1.1. Introducere

Circuitele logice combinaionale numite i circuite de comutare combinaionale, reprezint circuitele logice cele mai simple, circuite logice de baz, denumite i circuite logice de ordinul zero care stau la baza tuturor celorlalte tipuri de ciruite logice. Reprezentarea schematic a unui circuit logic combinaional cu n+1 intrri i m+1 ieiri este reprezentat n figura 1.1. Un circuit logic I combinaional se I N x0 y0 E caracterizeaz prin aceea c T x1 y1 CIRCUIT LOGIC R starea ieirilor, la un moment I COMBINAIONAL R dat, depinde numai de starea ym I R xn intrrilor la acel moment de I timp. Acest lucru este descris Fig. 1.1. Schema bloc a unui circuit logic combinaional de relaiile 1.1 n care starea ieirilor y0, y1, ,ym reprezint m+1 funcii de variabilele de intrare x0, x1, , xn. Funciile care descriu astfel de circuite reprezint funcii binare conform celor prezentate in capitolul 1. y0 = f0(x0, x1, , xn), y1 = f1(x0, x1, , xn), ym = fm(x0, x1, , xn).

(1.1)

Circuitele logice combinaionale pot fi construite cu relee sau cu elemente de comutere asemntoare releelor, respectiv cu elemente de comutare avnd comportarea unor pori logice similare celor prezentate in capitolul 2. O situaie particular important este reprezentat de ctre automatele programabile care permit modelarea prin program a circuitelor logice secveniale i combinaionale i care reprezint o soluie convenabil n cazul circuitelor numerice destinate automatizrilor complexe.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

18

In cele ce urmeaz vor fi studiate numai circuitele logice combinaionale realizate cu pori logice care primesc la intrare semnale numerice n logic pozitiv sau logic negativ i furnizeaz la ieire 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 adevr ADEVRAT) i un nivel cobort de tensiune cifrei 0 (sau valorii de adevr FALS). n logica negativ, nivelele de tensiune se inverseaz, se asociaz un nivel cobort de tensiune de obicei o tensiune negativ cifrei 1 (sau valorii de adevr ADEVRAT) i un nivel ridicat de tensiune de obicei o valoare apropiat de zero voli cifrei 0 (sau valorii de adevr FALS).

1.2.

Elemente de analiz a circuitelor logice combinaionale

Circuitele logice combinaionale sunt, de regul, reprezentate grafic, cu ajutorul schemelor logice combinaionale cu pori logice similare cu cea prezentat n figura 1.2. O astfel de schem este util n analiza funcionrii circuitului dar, un astfel de circuit poate fi reprezentat n scheme mai complexe cu ajutorul schemei bloc echivalente din figura 1.1, atunci cnd funcionarea circuitului este cunoscut. n general un circuit logic combinaional are n+1 intrri notate cu x0, x1, , xn i m+1 ieiri y0, y1, ,ym. Intrrile x0, x1, , xn se aplic unor elemente logice ale cror ieiri pot fi ieiri ale reelei sau intrri pentru alte elemente logice din reea. n figura 1.2. se prezint un circuit logic cu nou intrri i trei ieiri.
X0 U5A X1 1 2 1 3 2 2 SN74S00/SO SN74S04 X2 U6A 1 1 U10A X3 X4 X5 1 3 2 U7A SN74S86/SO 1 2 SN74S00/SO SN74S04 U4A X6 X7 1 3 2 2 SN74S00/SO SN74S86/SO X8 1 3 U11A 2 SN74S04 1 3 Y2 U3A SN74S86/SO 2 2 3 Y1 U9A SN74S00/SO SN74S04 1 3 1 2 Y0 U1A U2A U8A

Fig. 1.2. Circuit realizat cu pori logice

Fiecare element logic din reea corespunde unei pori logice din circuitul de comutare modelat. n reelele logice nu se admite legarea ieirilor elementelor logice dect prin intermediul altor elemente logice. Atunci cnd circuitul de comutare modelat conine pori care au proprietatea funciilor logice cablate, se reprezint simbolic n reea elementul logic prin care sunt legate din punct de vedere funcional ieirile porilor respective. Semnalele aplicate la intrarile unui circuit logic, parcurg, n general, mai multe pori pn se obin semnalele de ieire. Acest lucru se reflect n reea prin numrul elementelor logice interpuse ntre intrrile i ieirile reelei. Maximumul numarului de elemenete logice aflate ntre intrrile i ieirile unei reele logice d numrul de niveluri logice al reelei. Numerotarea nivelurilor se face, n mod convenional, de la ieire spre intrare (figura 1.3). n reelele de comutare combinaionale sunt admise legturi inverse,

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

19

adic legarea ieirii unui element logic la intrrile elementelor logice precedente acestuia (fig. 1.4), cu condiia s fie respectat definiia 1.1. Trebuie menionat ns c orice reea cu elemente logice far legturi inverse este combinaional, n schimb numai anumite reele cu legturi inverse satisfac aceast condiie. Reelele cu elemente logice far legatur invers se mai numesc grafuri booleene. Analiza unui circuit trebuie s nceap cu stabilirea tipului acestuia. Aa cum s-a artat mai sus, dac circuitul nu are legturi inverse atunci el este un circuit logic combinaional. n cazul n care circuitul are legturi inverse (figura 1.4.), atunci, pentru a putea spune c acesta este un circuit logic combinaional, va trebui s analizm dependena semnalelor de ieire de cele de intrare i s artm c ecuaia 1.1. este respectat. Nu intotdeauna este foarte uor s detectm existena unei legturi inverse ntr-un circuit mai ales dac acesta este complicat. Din acest motiv se va prezenta n continuare o regul prin care se poate determina existena legturilor inverse la scheme orict de complicate.

X0 U12A 1 U1A X1 X2 2 3 U7A 2

1 2

i
3

9
74LS08

a
1 1 2

74LS04/SO U5A

1
74LS02

d
3 2 3

U3A

g
2 1 3

U4A

4
74LS08

m
1 Y0

X3

7
74LS02 U11A

11
74LS02

U2A X4 X5 2 3

b
1 1

U10A

e
2 1

h
2 1 2 U9A 1 2 U8A

2
74LS02

n
3 Y1

74LS04/SO

74LS04/SO

12
74LS08

U6A 1 X6 2

f
3

k
3

6
74LS08

10
74LS08

NIVELUL

Figura 1.3. Reea de comutare fr legtur invers

Existena unei legturi inverse ntr-o reea de comutare cu elemente logice se poate determina folosind urmtoarea regul de numerotare a elementelor. Regula 1.1. a. Elementele reelei ale cror intrri fac toate parte din mulimea intrrilor reelei, X={x1 x2,...,xn}, se numeroteaz, ntr-o ordine arbitrar, cu numerele 1 pina la k, unde k este numrul elementelor ce ndeplinesc aceast condiie. b. Elementele reelei ale cror intrri sunt fie intrri din mulimea X, fie ieiri ale elementelor numerotate, la punctul a respectiv b, se numeroteaz n continuare cu numerele k + 1 pna la m, unde m - k este numrul elementelor ce ndeplinesc aceast condiie. c. Dac procednd n acest fel s-au putut numerota toate elementele reelei, adic m este numrul de elemente logice din reea, rezult c reeaua nu are legturi inverse. n caz contrar n reea exist cel puin o legatur invers. Prin procedura de mai sus se face de fapt o ordonare parial a elementelor logice din reea. Aceast ordonare nu este posibil dect atunci cnd un anumit element

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

20

nu mai poate primi numr de ordine, deoarece unele din intrrile sale provin de la elemente 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 : porile 1 i 2 se numeroteaz primele deoarece intrrile acestor pori fac parte din mulimea intrrilor circuitului x1i x2 respectiv x4 i x5. Urmeaz apoi elementul care se numeroteaz cu 3 deoarece acesta are intrarea conectat la un element care a fost deja numerotat (poarta numerotat cu 1), similar acestei situaii este cea a elementului care a fost numerotat cu 5, iar elementele numerotate cu 4, 6 i 9 sunt conectate la elemente deja numerotate i intrri 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 intrrile acestor elemente sunt conectate la elemente deja numerotate. Pentru acest exemplu m = 12, toate elementele circuitului au putut fi numerotate i deci nu exist nici o legtur invers iar circuitul este combinaional, adic starea ieirilor la un moment dat nu depinde dect de starea intrrilor la acel moment (relaia 1.1). Aplicind regula 1.1, definit mai sus, pentru reeaua din figura 1.4 se constat c nu este posibil o ordonare parial a tuturor elementelor reelei i prin urmare reeaua are o legatur invers. Pentru reelele la care se poate face o ordonare parial a elementelor, deci care nu au legaturi inverse, se poate scrie expresia ieirii fiecarui element logic, n ordinea numerotrii acestora, ca o funcie de comutare de variabilele de intrare ale reelei, de unde rezult c i n expresia ieirii intr numai variabilele de intrare ale reelei. Funcia de comutare a unei asemenea reele depinde deci numai de variabilele de intrare, prin urmare reeaua este combinaional. Pentru reeaua logic din figura 1.3 se obtine :
a = x1 + x2

(1.2) (1.3) (1.4) (1.5) (1.6) (1.7) (1.8) (1.9) (1.10) (1.11)

b = x4 + x5

c = a = x1 + x2 d = a x3 = ( x1 + x2 ) x3
e = b = x4 + x5 f = c x6 = x1 + x2 x6

g = d + e = ( x1 + x2 ) x3 + x4 + x5 = x1 x3 + x2 x3 + x4 + x5
h = e = x4 + x5

i = x0 g = x0 x1 x3 + x2 x3 + x4 + x5
k = h f = ( x4 + x5 ) x1 + x2 x6

) )
(

m = y0 = i + g = g ( x0 + 1) = x1 x3 + x2 x3 + x4 + x5 ( x0 + 1) n = y1 = g k = x1 x3 + x2 x3 + x4 + x5 ( x4 + x5 ) x1 + x2 x6

(1.12) (1.13)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

21

Din relaia (1.12) rezult c y0 iar din relaia (1.13) rezult c y1 depind numai de variabilele de intrare ale reelei i deci reteaua din figura 1.3 este o reea combinaional. La reelele care au legturi inverse, expresia ieirii se poate scrie numai dac se introduc variabile de intrare secundare datorate legturilor inverse. Pentru ca o astfel de reea s fie combinaional trebuie ca funciile de ieire a reelei s depind numai de variabilele de intrare principale adic s fie respectat ecuaia 1.1. i deci variabilele de intrare secundare sunt neeseniale. Demonstrarea adestui lucru se poate face prin construirea tabelului de adevr a funciei date, n care se trec toate combinaiile posibile ale variabilelor de intrare principale ct i a celor secundare. Dac din acest tabel rezult faptul c valorile funciei de ieire a circuitului depind numai de valorile variabilelor principale iar valoile variabilelor secundare nu au nici o influen asupra ieirii, atunci funcia analizat este combinaional. Din cele artate rezult c oricarei reele de comutare combinaional cu legaturi inverse i corespunde cel puin o reea de comutare combinaional far legtur invers.
U1A X0 X1 1 2

A
3

U5D 12 13

D
11 Y0

1
74LS08/SO

4
74LS08/SO

U2B 4 X2 5

B
6

2
74LS08/SO

1 2 3 12 13

U6A

?
74LS260/SO

Y1

U3C 9 10

C
8

U4A 1 2

E
3

3
74LS08/SO

?
74LS08/SO

Xa

Fig. 1.4. Circuit logic cu conexiune invers

S considerm circuitul din figura 1.4. Vom ncerca s realizm o ordonare parial a elementelor acestui circuit conform regulii 1.1. Se constat faptul c numerotarea tuturor elementelor circuitului eueaz i deci exist cel puin o legtur invers. n aceast situaie, pentru a vedea dac circuitul este combinaional, se construiesc tabelele de adevr a funciilor de ieire. Funcia logic a ieirii y0 este combinaional pentru c toate elementele aferente acestei ieiri au putut fi numerotate. Funcia de ieire y0 rezult imediat :

y0 = x0 x1 x2

(1.14)

Pentru ieirea y1 se construiete tabelul de adevr 1.1. n care s-au introdus variabilele principale x0, x1, x2 i variabila secundar Xa. Dup realizarea tabelului, prin inspectarea acestuia, ne putem da seama de modul n care o variabil influeneaz ieirea. Pentru a putea observa mai uor influena variabilei secundare Xa asupra ieirii y1, se aaz alturat valorile de ieire pentru situaia cnd variabila Xa ia valoarea zero i valorile de ieire pentru variabila secundar egal cu unu. Dac variabila secundar nu influeneaz ieirea, atunci cele dou coloane trebuie s fie identice.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE TABELUL 1.1. x2 x1 x0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 x2 x1 x0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

22

Xa A=x0x1 B=x1x2 C=x0x2 D=x0x1x2 E=x1x2Xa 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 Xa A=x0x1 B=x1x2 C=x0x2 D=x0x1x2 E=x1x2Xa 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 1 1 1 1 1 1

y1 1 1 1 0 1 1 0 0 y1 1 1 1 0 1 1 0 0

Se observ c n tabelul 1.1 coloana y1 rmne neschimbat atunci cnd variabila Xa ia valoarea zero sau valoarea unu i deci aceast variabil secundar este neesenial. Putem s scriem acum i funcia combinaional de ieire y1:

y1 = x0 x1 + x1 x2 + x0 x2 + x0 x1 x2 = x0 x1 (1 + x2 ) + x1 x2 + x0 x2 = = x0 x1 + x1 x2 + x0 x2

(1.15)

Avnd n vedere faptul c reelele de comutare cu elemente logice, far legatur invers sunt reprezentative pentru reelele combinaionale cu elemente logice, n cele ce urmeaz se trateaza numai acestea. Reelele de comutare combinaionale cu elemente logice cu o singur ieire, la care fiecare dintre intrrile reelei se aplic la un singur element logic, iar ieirea unui element logic poate fi aplicat ca intrare la un singur element logic, se numete arbore boolean. Arborele boolean este un caz particular al grafului boolean. Un exemplu de arbore boolean este dat in figura 1.5
U3A

x0 x1

1 2 7432 U2A

a
3 U4A 1 3 2

y0

x2
U1A

1 2 7432 3 2 7408

b
3

7408

x3 x4

Figura 1.5. Reea combinaional sub form de arbore boolean

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

23

Pentru analiza unui arbore boolean se poate folosi o metod formal care const n gsirea unei acoperiri a mulimii n-uplelor funciei logice pentru care aceasta ia valoarea unu. Se va exemplifica aceast metod pe circuitul din figura 1.5. construindu-se tabelul 1.2. Tabelul construit va conine toate variabilele principale ale funciei (x0, x1, x2, x3, x4,), variabilele secundare (a, b, c) i ieirea circuitului (y0). TABELUL 1.2. x4 x3 x2 x1 x0 1 2 x 1 3 1 x 1 x 1 x x 1 4 1 1 x x 1 x x x 1 x 1 1 1 x x 1 5 x x 1 1 x 1 1 x 1 x
a b c y0 1 Observaii

1 1 1 x 1 x 1

y0 = a b a = x0 + x1 b = x2 + c

c = x3 x4

Tabelul 1.2 se completeaz astfel: pe rndul unu se trece cifra unu pe coloana y0 simbolizndu-se asfel faptul c se vor determina combinaiile variabilelor de intrare pentru care funcia ia valoarea unu. Pe rndul doi se trec valorile variabilelor de pe nivelul zero care determin valoarea unu la ieire. Acestea vor fi: unu pentru variabila secundar a i unu pentru varibila secundar b. Deoarece numai aceast combinaie a variabilelor a i b conduc la valoarea unu a funciei de ieire y0, se trece la rndul trei unde se vor determina combinaiile variabilelor principale pentru care variabila secundar a ia valoarea unu. Aa cum se vede, sunt posibile 2 combinaii pentru variabilele principale x0 i x1: variabila x0 ia valoarea unu i atunci x1 poate avea orice valoare (se noteaz cu x indiferent) sau, cind x1 ia valoarea unu i atunci x0 poate avea orice valoare (x indiferent). Se trece acum la rndul patru care determin combinaile variabilelor care duc la variabila b egala cu unu. Sunt doua posibiliti: x2 egal cu unu i variabila c poate avea n acest caz orice valoare sau c egal cu unu i atunci x2 poate avea orice valoare. Aceste dou posibiliti se aplic celor dou combinaii determinate la rndul trei i rezult patru combinaii posibile. La rndul cinci se expliciteaz variabila c pentru care nu exist dect doua posibiliti: variabila c poate lua orice valoare i atunci i x3 i x4 pot lua orice valoare sau variabila c ia valoarea unu li atunci x3 = x4 = 1. n momentul in care au fost explicitate toate variabilele secundare, completarea tabelului a fost terminat i sa gsit o acoperire a funciei pentru care aceasta ia valoarea unu. Funcia poate fi scris ca o sum de produse a combinaiilor gsite, din care se elimin variabilele principale notate cu x (care pot avea orice valoare) i se noteaz cu variabila direct variabila principal egal cu unu i cu variabila negat cea egal cu zero n tabel. Pentru exemplul dat se obine (forma normal disjunctiv):

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

24 (1.16)

y0 = x2 x0 + x4 x3 x0 + x2 x1 + x4 x3 x1

Printr-o metod similar cutndu-se combinaiile variabilelor principale pentru care funcia este egal cu zero se poate determina funcia de ieire sub forma unui produs de sume. Pentru a exemplifica acest lucru vom considera schema din figura 1.6. Vom cuta de data aceasta o acoperire a n-uplelor funciei logice pentru care aceasta ia valoarea zero. Se construiete tabelul 1.2 similar tabelului 1.1. n care se trec variabilele principale i cele secundare pe coloane iar pe rnduri combinaiile acestora pentru care funcia ia valoarea zero.
U3A X0 X1 1 3 2 14081 1 2 U5A X2 X3 1 3 2 14081 U7A X4 X5 1 3 2 14093 14011 14071 U6A 3

a d
1 3 2 Y0

U8A

b c

Figura 1.6. Arbore boolean

TABELUL 1.3. x5 x4 x3 x2 x1 x0 1 2 3 4 0 x 0 x 0 x 0 x 0 x 0 x 0 x x 0 x 0 x 0 x 0 x 0 x 0 x 0

d y0 0 1

Observaii
y0 = cd c = x4 x5
d =a+b

1 1 1 1 x x 1 1 x x 1 1 x x 1 1 x x x x 1 1

x x 1 1 x x 1 1

x x 1 1 x x 1 1

b = x3 x2

a = x0 x1

n rndul 6 completarea tabelului se ncheie deoarece combinaiile tuturor variabilelor principale au fost precizate. n acest moment putem scrie ecuaia funciei de ieire ca un produs de sume n care variabilele de intrare care iau valoarea zero sunt scrise direct iar cele care iau valoarea unu sunt scrise negat (ecuaia 1.18, forma normal conjunctiv):

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE


y0 = x5 + x1 + x0 x4 + x1 + x0 x5 + x3 + x2 x4 + x3 + x2

25 (1.18)

)(

)(

)(

Verificarea corectitudinii rezultatului se poate face prin intermediul unui program care s genereze toate combinaiile posibile ale variabilelor principale, s calculeze valorile ecuaiei (1.18) i s le compare cu valorile obinute pentru funcia de ieire a circuitului din figura 1.6 a crui ecuaie poate fi scris imediat conform porilor logice i conexiunilor artate n figur: y0 = ( x0 x1 + x2 x3 )x4 x5 (1.19)

n continuare se prezint un program scris n limbaj de programare PASCAL pentru compararea ecuaiei (1.18) cu ecuaia (1.19). S-a ales limbjul PASCAL datorit faptului c este foarte asemntor cu limbajul pseudocod i programele pot fi foarte uor nelese chiar i fr cunoaterea 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; begin for x5:= false to true do for x4:= false to true do for x3:= false to true do for x2:= false to true do for x1:= false to true do for 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 not x3 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 reelelor sub form de graf boolean se aplic aceeai procedur cu singura deosebire c intrrile, respectiv ieirile elementelor logice care se aplic la mai multe elemente logice se consider de mai multe ori (notate cu indici sau cu prim, secund, ter .a.m.d.), iar apoi se impune condiia ca valorile obinute s fie egale, respectiv se elimin subcuburile corespunztoare liniilor pentru care variabilele cu acelai nume nu au aceeai valoare.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

26

Vom exemplifica acest lucru pentru graful boolean din figura 1.7. care va fi analizat n tabelul 1.4.
U3A X0 1

a'

3 2

U2A U1A X1 X2 2 2 1

x2' 3 x2''

a a''
U4A 1 2 13 12

1 3

Y0

X3

Figura 1.7. Reea de comutare sub form de graf boolean

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 rndul ei se aplic la intrile altor dou elemente logice, 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 1 1 1 x 2 x 1 x x x 1 3 1 1 1 x x x 1 1 x 4 1 1 x x 1 x x 1 1 5 1 1 x 1 x x x 1 1 x 1 x x 1 6 1 x 1 1 x 1 1 1 x x x x 1 1 x 1 x 1 7 1 1 1 x 1 1 x x Observaii y0 = b + c c = a x2 x3 b = x0 a a = a = a a = x1 + x2

x2 = x2 = x2

Pn la rndul cinci completarea tabelului se face n modul discutat deja mai sus. n rndul cinci trebuie alese valorile pentru care a = a = a. Sunt dou situaii: cnd a = 1 i a = x i cnd a = x i a = 1 adic sunt posibile urmatoarele cazuri a = 1i a = 0 sau 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 soluie posibila este a = a = a = 1. Acelai raionament este fcut pe rndul apte cnd pentru x2 = x i x2 = x rezult x2 = x n celelalte situaii, ca i pe rndul cinci, soluia este x2 = x2 = x2 = 0. Putem acum s scriem acum forma normal disjunctiv a funciei de ieire:

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

27

y0 = x1 x0 + x2 x0 + x3 x2 x1 + x3 x2 = x1 x0 + x2 x0 + x3 x2 ( x1 + 1) = = x1 x0 + x2 x0 + x3 x2

(1.20)

1.3.

Sinteza circuitelor logice combinaionale

Problema sintezei circuitelor logice combinaionale const n realizarea fizic a unei funcii logice combinaionale dat sub forma unui tabel de adevr sau a unei funcii canonice. Datorit faptului c exist mai multe expresii echivalente pentru o funcie logic, problema sintezei circuitelor logice va avea i ea mai multe soluii. n practic intereseaz n general acea soluie care corespunde circuitului realizabil cu cost ct mai mic, dar pot exista i alte criterii cum ar fi cele de protecie a informaiei, siguran n funcionare etc. Din acest punct de vedere sunt importante procedeele de minimizare a funciilor logice combinaionale care duc la gsirea celei mai avantajoase expresii pentru funcia combinaional dat. De multe ori poate interesa realizarea funciei logice TABELUL 1.5. combinaionale cu ajutorul unui singur tip de poart logic. Aa x2 x1 x0 y0 cum se tie, exist operaii universale cu ajutorul crora pot fi 0 0 0 0 0 scrise in totalitate funciile logice. n continuarea se va arta 1 0 0 1 0 modul de realizare al unei funcii logice al crui tabel de adevr 2 0 1 0 1 este dat n tabelul 1.5. cu ajutorul porii logice I-NU (NAND) a 3 0 1 1 1 crei funcie este o operaie universal. 4 1 0 0 0 Pentru funcia logic a crei tabel de adevr este dat n tabelul 5 1 0 1 1 1.5. putem scrie forma canonic normal disjunctiv: 6 1 1 0 0 7 1 1 1 1
f 3 = P2 + P3 + P5 + P7 = x 2 x1 x 0 + x 2 x1 x0 + x2 x1 x0 + x2 x1 x0

(1.21)

sau forma canonic formal conjunctiv:


f 3 = S0 S1S 4 S6 =

= ( x2 + x1 + x0 ) x2 + x1 + x 0 x 2 + x1 + x0 x 2 + x1 + x0

)(

)(

(1.22)

Plecnd de la forma normal disjunctiv realizarea fizic a circuitului este cea din figura 1.8. Pentru a realiza funcia a crei ecuaie este dat de relaia (1.21) numai cu pori I-NU, facem apel la teorema lui De Morgan extins la n variabile i ecuaia (1.21) devine : y0 = x 2 x1 x 0 x 2 x1 x0 x2 x1 x0 x2 x1 x0 (1.23)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

28

x2 x1 x0
1 2

x2 x1 x0

x2 x1 x0

x2 x1 x0
1 2 8

P2

x2 x1 x0
1 2 8

P3

2 3 1 4 5

f3 = y0

x2 x1 x0
1 2 8

P5

x2 x1 x0
1 2 8

P7

Figura 1.8. Realizarea fizic a funciei (3.21) cu ajutorul porilor logice.

Ecuaie, care, aa cum se vede, poate fi realizat fizic numai cu pori I-NU. Pentru ca ntreaga realizare fizic s conin numai pori logice I-NU, inversoarele folosite n figura 1.8. pentru obinerea variabilelor de intrare negate, se vor nlocui cu pori I-NU cu intrrile scurtcircuitate. Conform tabelului de adevr al acestei funcii, dac pe toate intrrile porii se aplic aceeai valoare atunci se obine un circuit inversor. Rezultatul acestor transformri este prezentat n figura 1.9. Aa cum rezult din figura 1.9. pentru implementarea fizic a unei funcii logice combinaionale, pe baza funciilor canonice, este necesar un numr relativ ridicat de elemente logice. Din acest motiv este important s se gseasc procedee de simplificare a ecuaiilor ce descriu funciile de ieire ale circuitelor logice combinaionale n vederea reducerii numrului de pori logice.
x2 x1 x0
2 4 3

x2 x1 x0

2 4 3

2 4

x2 x1 x0

x2 x1 x0
1 2 13

P2

12

x2 x1 x0
1 2 13

P3

12

1 2 6 4 5

f3 = y0

x2 x1 x0
1 2 13

P5

12

x2 x1 x0
1 2 13

P7

12

Figura 1.9. Funcie logic combinaional realizat numai cu pori I-NU

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

29

1.4.

Minimizarea funciilor logice combinaionale

Se vor prezenta n continuare principalele metode de minimizare a funciilor logice combinaionale care, pe baza formelor canonice normale disjunctive sau normale conjunctive, permit obinerea unor forme mai simple a funciei, realizabile la un cost mai sczut (cu un numr mai mic de pori 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 funcie boolean dat sub forma canonic disjunctiv sau sub forma canonic conjunctiv poate fi scris n cazul general sub o alt form cu numr mai mic de termeni, respectiv factori elementari creia i corespunde o reea cu cost mai redus. Aceast metod de minimizare a funciei de comutare necesit din partea proiectantului mult ndemnare, ingeniozitate i experien, motiv pentru care nu poate fi aplicat cu succes dect dup o practic ndelungat n proiectarea circuitelor de comutare. Unul dintre principalele dezavantaje ale metodei l constituie faptul c obinndu-se prin calcule o anumita form a funciei nu se poate stabili cu uurin dac este forma minim sau se mai poate simplifica. Pentru exemplificare vom considera un exemplu foarte simplu:
y0 = x2 x0 ( x0 + x1 ) + x 2 x1 x0 + x 2 x1 x0

(1.24)

aplicnd teorema absorbiei se obine:


y0 = x2 x0 + x 2 x1 x0 + x 2 x1 x0

(1.25)

grupm acum ultimii doi termeni:


y0 = x2 x0 + x 2 x0 x1 + x1

(1.26)

i aplicm axioma existenei complementului:


y0 = x2 x0 + x 2 x0 = x0 x2 + x 2 = x 0

(1.27)

Acest exemplu simplu indic faptul c prelucrarea unei funcii poate duce la simplificarea considerabil a acesteia. n activitatea de simplificare a funciei logice unii termeni pot fi multiplicai, bazndu-ne pe teorema idempotenei, n scopul gruprii convenabile a acestora i reducerea unor variabile.
1.4.2. Metoda diagramelor Karnaugh

Folosirea unei forme speciale a diagramelor Venn, n scopul simplificarii cu ajutorul acestora a funciilor logice combinaionale a fost sugerat pentru prima oar de ctre E. W. Veitch. La scurt timp M. Karnaugh propune de asemenea o form modificat a diagramelor Venn cu acelai scop. Astfel au rezultat diagramele denumite

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

30

diagrame Karnaugh. Diagramele Karnaugh sunt folosite curent pentru reprezentarea funciilor booleene cu numar relativ mic de variabile. Aceste diagrame sunt utile pentru minimizarea funciilor booleene deoarece permit evidenierea cu uurin a unor identiti de forma:
x + xy = x

xy + x y = x x + xy = x + y

(1.28)

n general, o diagram Karnaugh pentru o funcie booleana de n variabile se deseneaz sub forma unui ptrat sau dreptunghi, mprit n 2n compartimente, fiecare compartiment fiind rezervat unui termen canonic al funciei, respectiv unuia dintre cele 2n n-uple ale funciei sau vrfuri ale cubului n-dimensional din reprezentarea geometric a funciei. n acest fel, o diagram Karnaugh va fi reprezentat printr-un tabel cu m linii i p coloane care ndeplinesc condiia m x p = 2n iar m + p = n. Capetele de tabel vor conine combinaiile posibile pentru variabilele funciei scrise n cod Gray. Aezarea variabilelor pe linii i coloane poate fi fcut n mai multe feluri, singura condiie de care trebuie s se in seama este completarea corect a tabelului. De asemenea la minimizarea funciei va trebui s se in seama de faptul c o diagram Karnaugh este o suprafa nchis i deci marginea de sus i marginea de jos a tabelului precum i marginea din stnga i marginea din dreapta ale acestuia sunt adiacente (sunt lipite). n continuare vom exemplifica modul de realizare a diagramei Karnaugh pentru o funcie de patru variabile. Vom considera tabelul de adevr al funciei tabelul 1.6 (n acest tabel valorile funciei sunt alese la ntmplare). 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)=1 1 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)=0 2 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)=1 3 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 funciei este: f4 = P1 + P2 + P4 + P6 + P10 + P11 + P12 + P14 (1.29)

Tabelele Karnaugh posibil de construit pentru funcia (1.29) sunt prezentete n figura 1.10. Este evident faptul c exist i alte posibiliti de aezare a variabilelor pe liniile i coloanele tabelului n afar de cele artate n figura 1.10. Tabelul se completeaz cu valorile funciei (zero sau unu) corespunztoare combinatiei variabilelor de intrare de pe linia i coloana respectiv (figura 1.10 d.).

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE x1 x1x0 x3x2 00 01 11 10 00 f(0) f(4) f(12) f(8) 01 f(1) f(5) f(13) f(9) a. x3x2 x1x0 00 01 11 10 00 01 f(0) f(1) f(3) f(2) f(4) f(5) f(7) f(6) b. 11 f(3) f(7) f(15) f(11) x0 11 f(12) f(13) f(15) f(14) 10 f(8) f(9) f(11) f(10) 10 f(2) f(6) f(14) f(10) x0 x2 x3x2x1 000 001 011 010 110 111 101 100 0 f(0) f(2) f(6) f(4) f(12) f(14) f(10) f(8) c. 1 f(1) f(3) f(7) f(5) f(13) f(15) f(11) f(9)

31

x3

x1x0 00 01 11 10 x3x2 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.


Figura 1.10. a. b. c. Posibiliti de realizare a tabelului Karnaugh pentru o funcie de patru variabile. d. Tabelul Karnaugh pentru funcia descris de ecuaia (1.29).

Codul Gray (codul binar reflectat), cod ce poart numele celui care l-a imaginat, a fost construit pe principiul ca dou secvene vecine s difere ntr-o singur poziie binar. Secvenele codului Gray pot fi deduse din cele ale codului binar pe baza urmtoarelor relaii: g0 = b0 b1, g1 = b1 b2, g2 = b2 b3, g3 = b3 ,

(1.30)

unde g0, g1, g2, g3, sunt poziiile unei secvene Gray scrise de la dreapta spre stnga, iar b0, b1, b2, b3, sunt poziiile codului binar scrise n ordinea ponderilor. Pentru exemplificare s considerm cifra 6 scris n cod binar: b3 b2 b1 b0 0 1 1 0

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

32

Pe baza relaiilor (1.30) vom deduce succesiv valorile cifrelor binare din secvena 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, secvena Gray corespunztoare cifrei 6 va fi: g3 g2 g1 g0 0 1 0 1 Putem deduce de asemenea i relaiile 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 uor de calculat dac facem observaia c 1 1 = 0. Rezult c este suficient s numrm cifrele binare de unu din relaia de calcul. Dac acestea sunt n numr par, atunci rezultatul este zero, iar daca sunt n numr impar rezultatul este unu. Pentru exemplificare vom considera numrul n cod Gray corespunztor cifrei 6 verificnd dac se obine acelai rezultat: g1 g2 g1 g0 0 1 0 1 Folosind relaiile de mai sus se obine: 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 numrul binar obinut este: b3 b2 b1 b0 0 1 1 0 adic cifra 6 de la care am pornit. 0 diagram Karnaugh este astfel organizat nct dou compartimente vecine, pe o linie sau pe o coloana, corespund la doi termeni canonici care difer numai printr-o singur variabil, care apare ntr-unul dintre ei negat, iar n celallt direct, respectiv la

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

33

dou n-uple adiacente. Se consider vecine i compartimentele aflate la capetele opuse ale unei linii, respectiv coloane (marginile diagramei). Pentru a putea reprezenta uor funcii date n mod convenional prin indicii termenilor canonici, se poate nota fiecare compartiment cu indicele termenului canonic corespondent, innd cont de o anumit ordine a variabilelor. De obicei, diagramele pentru mai mult de patru variabile se construiesc din diagrame de patru variabile, considerate diagrame elementare. Se pot construi ns diagrame Karnaugh pentru numar mai mare de variabile i considernd ca diagrame elementare diagramele de trei variabile. n cazul diagramelor pentru mai mult de patru variabile, dou compartimente se consider vecine i atunci cnd ocup aceeai poziie n dou diagrame elementare vecine, adic n dou diagrame elementare alturate sau aflate la extremitai pe o aceeai linie sau coloan. Diagramele Karnaugh pentru mai multe variabile se pot construi i sub forma unei singure diagrame elementare dac se folosete pentru notarea rndurilor i coloanelor codul Gray (figura 1.11). n acest fel se asigur c oricare dou compartimente alturate sau aflate la extremitile unei linii sau coloane s fie adiacente.
x0x1x2 x3x4 00 01 11 10 x0x1x2 x3x4x5 000 001 011 010 110 111 101 100 000 f(0) f(16) f(24) f(8) 001 f(4) f(20) f(28) f(12) 011 f(6) f(22) f(30) f(14) 010 f(2) f(18) f(26) f(10) 110 f(3) f(19) f(27) f(11) 111 f(7) f(23) f(31) f(15) 101 f(5) f(21) f(29) f(13) 100 f(1) f(17) f(25) f(9)

a.
000 f(0) f(32) f(48) f(16) f(24) f(86) f(40) f(8) 001 f(4) f(36) f(52) f(20) f(28) f(90) f(44) f(12) 011 f(6) f(38) f(54) f(22) f(30) f(92) f(46) f(14) 010 f(2) f(34) f(50) f(18) f(26) f(88) f(42) f(10) 110 f(3) f(35) f(51) f(19) f(27) f(89) f(43) f(11) 111 f(7) f(39) f(55) f(23) f(31) f(93) f(47) f(15) 101 f(5) f(37) f(53) f(21) f(29) f(91) f(45) f(13) 100 f(1) f(33) f(49) f(17) f(25) f(87) f(41) f(9)

b.
Figura 1.11. Tabelele Karnaugh pentru a. funcii cu 5 variabile b. funcii cu 6 variabile.

Dup ce tabelul a fost completat, prin scrierea valorii unu n celulele corespunztoare termenilor canonici ai funciei, dat sub forma normal disjunctiv, se poate trece la minimizarea funciei. Doi termeni canonici care difer numai prin aceea c ntr-unul din acetia una din variabile apare negat, iar n cellalt nenegat, apar n tabelul Karnaugh n celule vecine, deci se recunoate uor c sunt adiaceni. Aceti doi termeni se pot nlocui cu un termen normal n care variabila, prin care cei doi termeni canonici difer, lipsete. S considerm exemplul prezentat mai sus (figura 1.10 d). Dac lum termenii canonici corespunztori celulelor numerotate cu 4 i 12 (care sunt P4 i P12), putem scrie:
x3 x2 x1 x 0 + x3 x2 x1 x 0 = x 3 + x3 x2 x1 x 0 = x2 x1 x 0

(1.32)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

34

n reprezentarea geometric a unei funcii booleene, doi termeni canonici care indeplinesc condiia de mai sus corespund la dou noduri adiacente, deci definesc o latura a cubului n-dimensional. Din acest motiv se spune c dou compartimente vecine sau adiacente pe diagrama Karnaugh reprezint un subcub 1-dimensional. Un grup de patru compartimente dintre care fiecare este vecin cu alte dou compartimente din acelai grup, formeaz un subcub 2-dimensional. n acest caz cei patru termeni canonici corespunztori acestor compartimente au o parte comun format din doua variabile. n baza axiomei existenei elementului neutru, acesti patru termeni pot fi inlocuii cu partea lor comun. De exemplu n figura 1.10. d. termenii canonici P2, P6, P14, i P10 se grupeaz aa cum se arat n ecuaia urmtoare:

= x 3 x 2 + x 3 x2 + x3 x2 + x3 x 2 x1 x 0 =
3 2

( = [x (x

x 3 x 2 x1 x 0 + x 3 x2 x1 x 0 + x3 x2 x1 x 0 + x3 x 2 x1 x 0 = + x2 + x3 x 2 + x2 x1 x 0 = x1 x 0

) (

)]

(1.33)

n cazul general, termenii canonici care formeaz un subcub bidimensional se pot nlocui cu un termen normal avnd cu doua variabile mai puin decit termenii canonici. Pe o diagram de patru variabile se pot forma i subcuburi tridimensionale care cuprind opt compartimente astfel grupate nct fiecare din ele este vecin cu alte trei din acelasi grup. n figura 1.12. sunt date cteva exemple de formare a subcuburilor. x1 1 1 x3 x0 x1 1 1 1 1 x3 x0 x1 1 x2 x3 x2 1 1 x0
Figura 1.12. a.

x1 x2 x3 1 x0 x1 x3

x1 x2 x0 x1 1 1 x2 1 1 x0

1 1

x1 1 x2 x 3 1 x0
Figura 1.12. b.

1 x2 1 x3

1 1 x2 1 1 x0 x3

x3

1 1 1 1

x1 x1 x1 1 1 1 1 1 x2 1 x2 x2 1 1 1 1 1 x3 1 1 1 1 x3 1 1 1 1 1 x0 x0 x0
Figura 1.12. c.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

35

x1 1 1 1 1 x0 x2 x3 1

x1 1 x2 1 1 x0 x3

x1 1 1 1 1 x0 1 x2 x3

x1 1 1 1 x0 x2

x3

Figura 1.12. d. Figura 1.12. Reprezentarea pe diagrame Karnaugh a subcuburilor a. unidimensionale b. bidimensionale c. tridimensionale d. eronate

Determinarea termenului echivalent unui subcub se poate face n felul urmtor: ne deplasm de-a lungul suprafeei subcubului i observm care sunt variabilele care-i schimb valoarea n interiorul suprafeei subcubului iar acele variabile se elimin din termenul final. Termenul final, echivalent subcubului, va conine toate variabilele care nu-i schimb valoarea n interiorul suprafeei acelui subcub. Un subcub 1-dimensional permite eliminarea unei variabile, un subcub 2-dimensional va permite eliminarea a dou variabile i aa mai departe. Pentru o funcie cu n variabile subcubul de dimensiune maxim este (n-1)-dimensional, cu excepia cazului cnd este vorba de funcia unar (f 1) i avem un subcub n-dimensional. Pe o diagram care reprezint o anumit funcie boolean se pot forma n modul artat mai sus subcuburi de diverse dimensiuni. Un subcub care nu este inclus ntr-un subcub de dimensiune mai mare se numeste implicant prim al funciei date. Formnd suma booleana a tuturor implicanilor primi ai unei funcii date se obine o form disjunctiv a acesteia, care n cazul general este mult mai simpl dect forma canonic disjunctiv a aceleiai funcii. Pentru a gsi implicanii primi ai unei funcii reprezentat pe diagrama Karnaugh, compartimentele marcate cu unu trebuie astfel grupate nct s se obin subcuburi cu dimensiunea cea mai mare posibil. Astfel, pe o diagram de patru variabile se va cuta s se formeze n primul rnd subcuburi tridimensionale, apoi n ordine, subcuburi bidimensionale i unidimensionale. Pentru exemplificare vom considera funcia dat de ecuaia 1.29 pentru care diagrama Karnaugh este cea prezentat n figura 1.10. d. Subcuburile ce pot fi formate pe aceast diagram sunt artate n figura 1.13.
x 3 x 2 x1 x0

x2 x1 x 0

x1x0 x3x2 00 01 11 10

00 01 11 10 0 1* 1 0 1 0 0 0 0 0 0 1* 1* 1 1 1 x3 x 2 x1

x1 x 0

Figura 1.13. Diagrama Karnaugh pentru funcia dat de ecuaia 1.28

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

36

Nu toi implicanii primi ai unei funcii sunt necesari pentru definirea acesteia. Unii dintre implicanii primi pot fi termeni redundani la care se poate renuna, obinnd astfel o form mai simpl a funciei. Prin urmare, se pune problema alegerii unui numr minim de implicani primi din mulimea implicanilor primi ai unei funcii booleene care s includ ns toi termenii canonici ai funciei. Problema alegerii acestui set de implicani este o problem de acoperire cu cost minim. Expresia unei funcii booleene n care intr un numr minim din implicanii si primi se numete forma minim disjunctiv a funciei. Dac un termen canonic al funciei este inclus ntr-un singur implicant prim, din mulimea de implicani primi ai funciei, acela devine implicant prim esenial i trebuie s apar obligatoriu n forma minim disjunctiva a funciei. Pentru gsirea formei minime disjunctive trebuie deci determinant n primul rnd implicanii primi esentiali. Pentru aceasta se marcheaz pe diagram ntr-un mod special, de exemplu cu asterisc, acele celule notate cu unu care sunt incluse ntr-un singur implicant prim (figura 1.13). Trebuie menionat ns faptul c n figura 1.13. nu au fost marcai toi implicanii primi ai funciei, dar pentru claritate s-a renunat la marcarea unei pri ai acestora. Implicanii primi care conin compartimente marcate cu asterisc devin eseniali. Compartimentele nsemnate cu unu, rmase neacoperite de ctre implicanii primi eseniali, se cauta s se acopere folosind un numr ct mai mic din implicanii funciei care au mai rmas. Din cele prezentate mai sus rezult c forma minim disjunctiv a funciei dat de relaia (1.29) este:
f 4 = x1 x 0 + x2 x1 x 0 + x3 x 2 x1 + x 3 x 2 x1 x0

(1.34)

Pentru a vedea care din formele: normal disjunctiv sau normal conjunctiv ofer forma de cost minim, trebuie s gsim i forma minimizat normal conjunctiv. 0 metod simpl de determinare a formei minime conjunctive este aceea a cutarii formei minime disjunctive pentru negata funciei date i negarea acesteia. Pentru exemplificare se ia tot funcia dat prin diagrama Karnaugh din figura 1.13. Negata acestei funcii este dat prin compartimentele marcate cu zero. Aplicnd metoda de minimizare prezentat, pentru functia f 4 , unde f 4 este dat de relaia (1.29), se obine pentru aceast form, relaia (1.35), determinat cu ajutorul diagramei din figura 1.14.
x 2 x1 x1

x1x0 x3x2 00 01 11 10

00 01 11 10
*0

x 3 x1 x0

1 1 0 1 1 0 0 1 0 *0 1 1
*0

*0

x3 x1 x0

x2 x0

Figura 1.14. Determinarea formei minime normal conjunctive

f 4 = x 2 x1 x 0 + x 3 x1 x0 + x3 x1 x0 + x2 x0

(1.35)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

37

de unde rezult forma normal conjunctiv a formei cu ecuaia (1.29): f 4 = f 4 = ( x2 + x1 + x0 ) x3 + x1 + x 0 x 3 + x1 + x 0 x 2 + x 0

)(

)(

(1.36)

Concluzie. Folosind metoda diagrameolor Karnaugh se poate obine forma minim disjunctiv sau conjunctiv astfel:

1) 2) 3) 4)

se construiete diagrama ; se caut implicanii primi ; se determin implicanii primi eseniali ; termenii canonici care nu sunt inclui n implicanii primi eseniali se acoper cu un numr ct mai mic de implicani primi ; 5) forma minim normal disjunctiv sau conjunctiv va conine toi implicanii primi eseniali i implicanii primi neeseniali ce conin termeni canonici ce nu sunt inclui n implicanii primi eseniali.

Aa cum s-a artat, metoda diagramelor Karnaugh, dei este o metod foarte simpl i eficient de minimizare a funciilor logice, ea nu poate fi aplicat dect funciilor cu un numr redus de variabile (cel mult apte-opt). Pentru minimizarea funciilor cu un numr mai mare de variabile se recurge la alte metode, algebrice sau tabelare, una dintre acestea fiind descris n paragraful urmtor.
1.4.3. Metoda Quine-Mc Cluskey

Metoda Quine-Mc Cluskey este o metod algebric de minimizare a funciilor booleene cu un numr mare de variabile, pentru care metoda diagramelor Karnaugh sunt greu de utilizat. Aceast metod, care se bazeaz pe acelai principii ca i metoda diagramelor Karnaugh, este mai uor de aplicat funciilor cu numr mare de variabile deoarece metoda presupune construcia succesiv a unor tabele pna la determinarea formei minime a funciei. Algoritmul care st la baza metodei Quine-Mc Cluskey poate fi foarte uor programat ceea ce permite minimizarea automat a funciilor de mari dimensiuni. Metoda se aplic n doi pai: 1. n primul pas se determin implicanii primi ai funciei ; 2. n pasul al doilea se determin implicanii primi eseniali care s dea o acoperire de cost minim a funciei. Prezentm n continuare algoritmul de determinare a implicanilor primi a unei funcii logice combinaionale dat sub forma normal disjunctiv.
Algoritmul 1.1.

a) Se pornete de la forma canonic disjunctiv a funciei n care termenii canonici sunt dai fie sub forma unui produs de variabile fie prin notaia simbolic.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

38

Fiecare termen canonic este reprezentat apoi sub forma unui numr binar, prin n uplul de zerouri i uniti corespondente termenului respectiv. b) Termenii canonici astfel nscrii se mpart n grupe, n funcie de ponderea acestora, adic de numrul cifrelor unu cuprinse n upul respectiv. c) Grupele de termeni canonici sunt aranjate pe o coloan, n ordinea cresctoare a ponderilor. d) Se compar fiecare termen al unei grupe cu toi termenii grupei de pondere mai mare cu o unitate. Dac numerele binare respective sunt adiacente, cei doi termeni se pot asocia formnd un cub 1 dimensional, notat printr un numr binar care are pe poziia prin care cei doi termeni componeni difer, un simbol x , ceea ce semnfic faptul c variabila corespondent acelei poziii lipete; cei doi termeni care au format subcubul rezultat se nscrie pe o nou coloan. Toi termenii normali (subcuburile 1 dimenionale) rezultai n urma comparrii a dou grupe din coloana temenilor canonici formeaz o grup n coloana subcuburilor 1 dimensionale. Prin urmare, coloana cuburilor 1 dimensionale va conine n cazul general cu o grup mai puin dect 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 toi termenii grupei cu pondere mai mare cu o unitate. Pentru ca doi asemenea termeni s se poat asocia formnd un subcub (n+1) dimensional trebuie ca n ambii termenii simbolurile x s fie pe aceleai poziii. Doi termeni care ndeplinesc aceast condiie i sunt adiaceni se asociaz formnd un subcub (n+1) dimensional care se noteaz cu un numr binar n care apare nc un x pe poziia 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 puin dect cloana subcuburilor n dimensionale. Dac se obine de mai multe ori un anumit termen acesta se consider o singur dat. f) Se mrete n cu o unitate i se repet punctul e) pn cnd subcuburile ultimei coloane nu se mai pot asocia n scoul formrii unui subcub de dimensiune superioar. Termenii rmai nebifai n coloanele rezultate formeaz grupul implicaniilor primi ai funciei considerate. Pentru exemplificare vom considera funcia logic combinaional a crei ecuaie sub forma canonic normal disjunctiv este prezentat n (1.37) : f 5 = P0 + P + P2 + P4 + P6 + P7 + P8 + P9 + P + P + P + 1 11 13 15 + P + P + P + P22 + P24 + P26 + P27 + P28 + P30 + P31 17 18 19 (1.37)

Pentru claritatea exemplului s-a ales o funcie de complexitate relativ redus care ar putea fi minimizat i cu ajutorul giagramei Karnaugh. Se ntocmete tabelul subcuburilor 0-dimensionale (tabelul 1.7) pe baza formei normale disjunctive a funciei sau pe baza tabelului de adevr a acesteia i cel al subcuburilor 1-dimensionale (tabelul 1.8) pe baza tabelului 1.7. Dup cum se poate observa, n tabelul 1.7 toi termenii sunt bifai, ceea ce nseamn c fiecare termen a putut fi grupat cu cel puin un alt termen i deci nici un termen din acest tabel nu va apare n forma minim a funciei. Pe baza tebelului 1.8 se construiete tabelul 1.9., tabelul subcuburilor 2dimensionale, grupnd termenii care au simbolul x pe aceeai poziie i care difer

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

39

numai printr-o cifr binar. n acest tabel s-au notat ntre paranteze termenii care se repet.
TABELUL 1.7
Subcuburi 0-dimensionale Grupa Indici x4x3x2x1x0 0 0 00000 1 00001 2 00010 1 4 00100 8 01000 6 00110 9 01001 2 17 1 0 0 0 1 18 1 0 0 1 0 24 1 1 0 0 0 00111 7 11 0 1 0 1 1 13 0 1 1 0 1 3 19 1 0 0 1 1 22 1 0 1 1 0 26 1 1 0 1 0 28 1 1 1 0 0 15 0 1 1 1 1 4 27 1 1 0 1 1 30 1 1 1 1 0 5 31 1 1 1 1 1

TABELUL 1.8
Subcuburi 1-dimensionale Grupa Indici x4x3x2x1x0 0,1 0000x 0,2 000x0 0 0,4 00x00 0,8 0x000 1,9 0x001 1,17 x 0 0 0 1 2,6 00x10 2,18 x 0 0 1 0 1 4,6 001x0 8,9 0100x 8,24 x 1 0 0 0 6,7 0011x 6,22 x 0 1 1 0 9,11 0 1 0 x 1 9,13 0 1 x 0 1 17,19 1 0 0 x 1 2 18,19 1 0 0 1 x 18,22 1 0 x 1 0 18,26 1 x 0 1 0 24,26 1 1 0 x 0 24,28 1 1 x 0 0 7,15 0 x 1 1 1 11,15 0 1 x 1 1 11,27 x 1 0 1 1 13,15 0 1 1 x 1 19,27 1 x 0 1 1 3 22,30 1 x 1 1 0 26,27 1 1 0 1 x 26,30 1 1 x 1 0 28,27 1 1 1 0 x 28,30 1 1 1 x 0 15,31 x 1 1 1 1 4 27,31 1 1 x 1 1 30,31 1 1 1 1 x

TABELUL 1.9
Subcuburi 2-dimensionale Grupa Indici x4x3x2x1x0 0,1 0x00x 8,9 0,2 00xx0 4,6 0 0,4 (0 0 x x 0) 2,6 0,8 (0 x 0 0 x) 1,9 2,6 x0x10 18,22 1 2,18 (x 0 x 1 0) 6,22 9,11 01xx1 13,15 9,13 (0 1 x x 1) 11,15 18,22 1xx10 26,30 2 18,26 1x01x 19,27 24,26 11xx0 28,30 24,28 (1 1 x x 0) 26,30 11,15 x1x11 27,31 11,27 (x 1 x 1 1) 15,31 26,27 3 11x1x 30,31 26,30 (1 1 x 1 x) 27,31 28,27 111xx 30,31

Dup completarea tabelului 1.9., algoritmul de cutare a implicanilor primi se incheie deoarece nici un termen din acest tabel nu mai poate fi grupat. Observaie: doi termeni canonici din coloana subcuburilor zero dimensionali se pot asocia dac diferena ntre indicele termenului din grupa cu ponderea i 1 este un numr ntreg, pozitiv i egal cu putere a lui doi. Puterea lui 2 indic poziia din numrul binar pe care apare simbolul x . n cazul cloanelor subcuburilor de dimensiune mai mare ca zero, pentru ca dou subcubri fcnd parte din grupa a cror pondere difer cu o unitate s se poat asocia, treabuie ca diferena ntre indicii termenilor canonici inclui n subcubul din grupa superioar i indicii termenilor canonici corespondeni ai subcuburilor din grupa inferioar s fie o aceai putere a lui doi. De exemplu, pentru subcubul de pe primul rnd din grupa a doua avem : 11 9 = 2 i 15 13 = 2. Expresia ce poate fi scris n acest moment pentru funcia dat (ecuaia 1.37), cu ajutorul implicanilor primi gsii, se obine nlocuind, n termenii rmai nebifai n

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

40

tabel, zerourile cu variabila corespunztoare poziiei respective negat, unitile cu variabila corespunztoare poziiei respective nenegat i omind variabilele corespunztoare poziiilor pe care se afl simbolul x (ecuaia 1.38). f 5 = x 3 x 2 x1 x0 + x3 x 2 x1 x 0 + x 4 x 3 x2 x1 + x4 x 3 x 2 x0 + x 4 x2 x1 x0 + + x 4 x 2 x1 + x 4 x 3 x 0 + x 3 x1 x 0 + x 4 x3 x0 + x4 x1 x 0 + x4 x 2 x1 + x4 x3 x 0 + x3 x1 x0 + x4 x3 x1 + x4 x3 x2 Pentru a gsi forma minim disjunctiv a unei funcii trebuie alei numai acei mplicanii primi care includ toi termenii canonici ai funciei i conduc la o form a funciei realizat cu cost minim. Implicanii primi care respect aceast condiie formeaz acoperirea cu cost minim. Pentru gsirea acoperirii cu cost minim trebuie cutate toate acoperirile posibile pentru funcia dat din care se alege acoperirea care ndeplinete condiia de cost minim fa de un anumit criteriu de cost. De obicei, acoperirea minimal, adic acoperirea cu numr minim de elemente, satisface condiia de cost. Algoritmul de obinere a acopperiri cu cost minim, plecnd de la mulimea implicanilor primi, obinui n etapa anterioar, este urmtorul:
Algoritmul 1.2.

(1.38)

a) Se construiete un tabel al implicanilor primi, avnd drept cap de linie implicanii primi ai funciei i cap de coloan termenii canonici ai funciei. La intersecia 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. Pentru exemplul considerat mai sus (ecuaia 1.37) se obine 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 este inclus ntr un singur implicant prim, atunci implicantul prim de pe linia nsemnat devine implicant prim esenial i intr obligatoriu n forma minim a funciei. Se construiete un nou tabel, al implicanilor primi neeseniali care rezult eliminnd din tabelul implicanilor primi liniile cu implicani primi eseniali i coloanele cu termenii canonici inclui n acetia. Pentru a gsi mai uor aceste coloane se ncercuiesc toate semnele de pe linia unui implicant prim esenial i se elimin apoi toate coloanele cu semne ncercuite. De asemenea, se elimin liniile pe care nu au mai rmas semne i coloanele care au semne pe acelai rnduri ca i o alt coloan din tabelul implicanilor primi neeseniali, adic, dac mai muli termeni canonici sunt inclui n exact aceeai implicani primi neeseniali, se reine un singur reprezentant al acestora, deoarece orice implicant care l include pe acesta va include automat i pe cei omii (tabelul 1.11.) c) Se inspectez tabelul implicaniilor primi neeseniali n scopul gsirii unei acoperiri cu cost minim, pentru toi termenii canonici rmai n acest tabel. n unele cazuri se pot gsi mai multe acoperiri care satisfac aceast condiie, fiecare avnd acelai cost. n astfel de situaii funcia are mai multe forme minime disjunctive. d)Fcnd suma boolean a implicanilor primi eseniali gsii la punctul b) i a celor neeseniali gsii la punctul c) se obine forma minim disjunctiv a funciei date.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

41

TABELUL 1.10.
Implicani Termeni canonici Indici Observaii primi 0 1 2 4 6 7 8 9 11 13 15 17 18 19 22 24 26 27 28 30 31 x4x3x2x1x0 x0001 1,17 * * x1000 8,24 * * 0011x 6,7 ** 100x1 17,19 * * 0x111 7,15 * * 0 x 0 0 x 0,1,8,9 * * ** 0 0 x x 0 0,2,4,6 * * * * E x 0 x 1 0 2,6,18,22 * * * * 0 1 x x 1 9,11,13,15 * * * * E 1 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 funcia a crei ecuaie este dat relaia (1.27) exist doi implicani primi eseniali. Aceti termeni vor trebui s apar obligatoriu n expresia minim normal disjunctiv a funciei. Cutm acum o acoperire minim a celorlali termeni canonici ai funciei i construim tabelul 1.11. conform regulii prezentate la punctul b al algoritmului 1.2. TABELUL 1.11.
Implicani Termeni canonici Observaii Indici primi 1 7 8 17 18 19 22 24 26 27 28 30 31 x4x3x2x1x0 x0001 1,17 * * A x1000 8,24 * * A 0011x 6,7 * A 100x1 17,19 * * 0x111 7,15 * 0 x 0 0 x 0,1,8,9 * * x 0 x 1 0 2,6,18,22 * * A 1 x x 1 0 18,22,26,30 * * * * 1 x 0 1 x 18,26,19,27 * * * * A 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 * * * * A

Dac din tabelul 1.11. se iau implicanii primi de pe rndurile notate cu A se obine o acoperire a funciei. Aceas acoperire nu este singura, existnd posibilitatea de a selecta ali implicani primi pentru a obine o acoperire a funciei. Se va alege acea acoperire a funciei, care, n funcie de criteriul ales, d acoperirea de cost minim. Pentru exemplu considerat, considernd acoperirea din tabelul 1.11., rezult : f 5 = x 4 x 3 x 0 + x 4 x3 x0 + x 3 x 2 x1 x0 + x3 x 2 x1 x 0 + x 4 x 3 x2 x1 + + x 3 x1 x 0 + x4 x 2 x1 + x4 x3 x2 (1.39)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE 1.4.4. Minimizarea funciilor logice combinaionale incomplet definite

42

Se consider c o funcie logic combinaional este incomplet definit dac pentru anumite combinaii a variabilelor de intrare valoarea funciei poate fi oricare (nu intereseaz dac pentru anumite combinaii ale variabilelor de intrare, valoarea funciei este zero sau unu). Aceste valori se noteaz n tabelul de adevr a funciei respective cu un anumit simbol (de exemplu litera u). Prezentm n continuare un astfel de exemplu a unei funcii logice combinaionale de patru variabile (tabelul 1.12). TABELUL 1.12 nr. x x x x y crt. 3 2 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 2 0 0 1 0 1 3 0 0 1 1 u nr. nr. nr. x x x x y x x x x y x x x x y crt. 3 2 1 0 0 crt. 3 2 1 0 0 crt. 3 2 1 0 0 4 0 1 0 0 1 8 1 0 0 0 u 12 1 1 0 0 1 5 0 1 0 1 u 9 1 0 0 1 u 13 1 1 0 1 0 6 0 1 1 0 1 10 1 0 1 0 1 14 1 1 1 0 1 7 0 1 1 1 u 11 1 0 1 1 1 15 1 1 1 1 0

Aceast funcie este descris de relaiile (1.40). f 4 = x 3 x 2 x1 x 0 + x 3 x 2 x1 x0 + x 3 x 2 x1 x 0 + x 3 x2 x1 x 0 + x 3 x2 x1 x 0 + + x3 x 2 x1 x 0 + x 3 x 2 x1 x 0 + x3 x2 x1 x 0 + x3 x2 x1 x 0


x 3 x 2 x1 x0 = x 3 x2 x1 x0 = x 3 x2 x1 x0 = x3 x 2 x1 x 0 = x3 x 2 x1 x0 = u

(1.40a) (1.40b)

unde relaia (1.40a) reprezint forma normal disjunctiv a prii definite din funcie, iar relaia (1.40b) precizeaz c restul combinaiilor de valori ale variabulelor de intrare, corespunztoare prii nedefinite din funcie, nu apar n funcionare, prin urmare pot fi considerate combinaii indiferente. Pentru minimizarea acestei funcii se ntocmete tabelul din figura 1.15.
x1x0 x3x2 00 01 11 10
x3

00 01 11 10 1 1 1 u 1 u 0 u u u 0 1 1 1 1 1

x1 x 0

x1 x 0

Figura 1.15. Diagrama Karnaugh pentru funcia (1.40).

x3 x 2

Forma normal disjunctiv minim a funciei incomplet definite (1.40) este dat n ecuaia (1.41).
f 4 = x 3 + x1 x 0 + x1 x 0 + x3 x 2

(1.41)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

43

Avnd n vedere faptul c funcia este incomplet definit se poate gsi i o alt acoperire a funciei (figura 1.16).
x1x0 x3x2 00 01 11 10

00 01 11 10 1 1 1 u 1 u 0 u u u 0 1 1 1 1 1
x3 x 2 x1

x1 x 0

x 3 x1

x2 x1 x 0

Figura 1.16. Diagrama Karnaugh pentru funcia (1.40).

Funcia obinut, n acest caz, este (ecuaia 1.42):


f 4 = x1 x 0 + x 3 x1 + x2 x1 x 0 + x3 x 2 x1

(1.42)

Este important de reinut faptul c pentru combinaiile notate cu u nu trbuie asicurat o acoperire deoarece aceste valori sunt indiferente (pot fi zero sau unu). Din acest motiv se pot gsi mai multe acoperiri ale funciei. Se va considera expresia minimizat a funciei, acea expresie care va corespunde unui anumit criteriu adoptat. n cazul cnd minimizarea funciei combinaionale parial definit se face folosind metoda Quine-Mc Cluskey, trebuie s considerm unele modificri i anume se adaug subcuburilor 0-dimensionale i termenii canonici corespunztori combinaiilor indiferente. Nu se vor considera ns subcuburile 1-dimensionale care ar rezulta prin combinarea ntre ei a termenilor indifereni ci numai cele care rezult prin combinarea acestora cu alte subcuburi 0-dimensionale. De asemenea nu se va ine cont de aceti termeni canonici n tabelul implicanilor primi, deoarece nu trebuie acoperii.
1.4.5. Minimizarea sistemelor de funcii booleene

Circuitele logice combinaionale cu n intrri (x0, x1, , xn) i m ieiri (y0, y1, ,ym) pot fi sintetizate considernd fiecare ieire separat, ca o funcie independent de n variabile (graf boolean). Pe baza formei canonice, sau a tabelului de adevr, aplicnd una dintre metodele de sintez, se obine cte o realizarea fizic pentru fiecare ieire, n final acestea fiind puse mpreun. Acest lucru se face de obicei atunci cnd metoda de sintez nu impune minimizarea funciilor. Astfel de metode vor fi discutate aici n capitolele urmtoare. n cazul n care sinteza se face cu ajutorul porilor logice, este necesar s se obin forma minim a unui sistem de funcii booleene de forma (1.1). Formele minime pentru un sistem de funcii booleene sunt acele expresii booleene disjunctive sau conjuctive n care apar un numar minim de termeni, respectiv factori normali diferii, avnd un numar minim de literale (variabile de intrare). Pentru obinerea formelor minime ale unui sistem de funcii booleene dat, se procedeaz la minimizarea corelat a funciilor acestuia, adic la determinarea setului minim de implicani primi care acoper toi termenii canonici ai tuturor funciilor sistemului.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

44

Una dintre metodele de minimizare corelat a mai multor funcii booleene, f1, f2, fn se bazeaz pe determinarea implicanilor primi ai funciilor f1, f2, fn i ai funciilor produs f1f2, f1f3, , fn-1fn, f1f2f3, f1f3f4, fn-2fn-1fn, , f1f2f3 fn. Avnd acest set de implicani primi, se calculeaz acoperirile posibile pentru fiecare dintre funcii iar apoi se alege cea mai avantajoas combinaie de acoperiri din punct de vedere al costului, care reprezint acoperirea minimala a sistemului. Pentru obinerea acoperirii minimale dup aceast metod se parcurg urmatoarele etape:
Regula 1.2.

a) Se calculeaz funciile produs. De exemplu, se cere minimizarea sistemului de funcii:


f 30 = (1,5,6,7 ) f 31 = (1,4,5,6)

(1.43)

f 32 = (0,2,5,6,7 ) unde sub semnul sumei booleene s-au dat indicii termenilor canonici prezeni n forma canonic disjunctiv a funciei. n prima etap se calculeaz funciile produs:

f 30 f 31 = (1,5,6 ) f 31 f 32 = (5,6)

f 30 f 32 = (5,6,7 ) f 30 f 31 f 32 = (5,6)

(1.44)

Functiile (1.44) conin termenii canonici comuni pentru cele dou, respectiv trei funcii inmulite logic.
x1x0 00 01 1110 0 1 0 0 0 1 1 1 x2 0 1 x1x0 00011110 0 1 0 0 1 1 0 1 x1x0 0001 1110 1 0 0 1 0 1 1 1

x2 0 1

x2 0 1

f 30
x1x0 00 01 1110 0 1 0 0 0 1 0 1 x2 0 1

f 31
x1x0 00011110 0 0 0 0 0 1 1 1

f 32
x1x0 0001 1110 0 0 0 0 0 1 0 1

x2 0 1

x2 0 1

f 30 f 31

f 30 f 32

f 31 f 32 = = f 30 f 31 f 32

Figura 1.17. Minimizarea sistemelor de funcii booleene

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

45

b) Se determin implicanii primi ai fiecreia dintre funciile boleene (1.43) i (1.44). n cazul exemplului considerat, pentru determinarea implicanilor primi ai acestor funcii se folosesc diagramele Karnaugh din figura 1.17. Din aceast figur se obin, pentru funciile considerate, implicanii primi din tabelul 1.13. n acest tabel sunt trecute funciile booleene i produsele dintre acestea, acoperirea obinut prin selectarea acelor subcuburi care conin termenii formei normal disjunctive i care nu mai sunt coninui n alte subcuburi i termenii rmai negrupai. De asemenea n tabel se trec indicii termenilor canonici ce formeaz fiecare subcub, expresia termenului nou obinut i notaia adoptat pentru aceti termeni (vezi punctul c.).
TABELUL 1.13. Implicani primi Funcia Indici Expresie Notaie 1 2 3 4 x1 x0 1,5 -

Funcia 1 f 30 f 31 f 30 f32

Implicani primi Indici Expresie Notaie 2 3 4 x1 x0 1,5 e 6 5,7 7,6 5 x2 x1 x 0 x2 x0


x2 x1 x2 x1 x0

0 3

5,7 7,6 1,5 4,6 5,7 2,6 0,2

x2 x0
x2 x1 x1 x0

i h g f
1 3

d c b a

f 31

x2 x 0 x2 x0 x1 x 0
x2 x0

f f =
2 3

2 3

f 30 f 31 f 32

x2 x1 x 0

c) Se noteaz simbolic implicanii primi ai sistemului, pe coloana 4 a tabelului 1.13, ncepnd cu ultimul implicant prim al ultimei funcii produs. Implicanii primi care apar de mai multe ori se noteaz o singur dat. d) Se intocmete un tabel al acoperirilor funciilor sistemului, n care se nscriu pe linii toi implicanii primi gsii la punctul b), iar pe coloane termenii canonici ai fiecareia dintre funciile sistemului, luate n ordine. Tabelul 1.14 reprezint tabelul acoperirilor sistemului de funcii (1.43). e) Se completeaz tabelul acoperirilor, marcnd, de exemplu cu un asterisc, coloana termenilor canonici ai funciilor sistemului, n dreptul liniei implicantului prim n care acetia sunt inclui. Trebuie menionat c acest lucru este posibil numai dac implicantul prim respectiv este implicant prim al funciei considerate sau al unei funcii produs al acesteia. Pentru a respecta aceast condiie s-a prevazut in tabelul 1.14 o coloan n care se specific funciile n acoperirile crora poate intra fiecare implicant prim.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

46

TABELUL 1.14. Implicani primi

Notaie Indici a 6

Funcii f 30 , f 31 , f 32 f 30 , f 31 , f 32 f ,f
0 3 2 3

Termeni canonici Funcia f Funcia f 32 Funcia f 33 1 5 6 7 1 4 5 6 0 2 5 6 7 * * *


1 3

b c d e f g h i

5 7,6 5,7 1,5 0,2 2,6 4,6 1,5

* * * * * * * *

* * * * *

f 30 , f 32 f 30 , f 31 f 32 f f f
2 3 1 3 1 3

* * * * * * * *

f) Pe baza tabelului 1.14 se determin acoperirile fiecrei funcii, conform celor aratate n paragraful 1.4.3. Pentru exemplul considerat, acoperirea functiei f 31 notata A f 31 , este :
A f 30 = ec + eda = A1 + A2

( )

( ) ( )

(1.45)

De asemenea:
A f 31 = hi + eh = B1 + B2

(1.46)

iar:
A f 32 = dfg + cbf + adf + abcf = C1 + C2 + C3 + C4

( )

(1.47)

Prin urmare, pentru funcia f 30 s-au gsit dou acoperiri, pentru f 31 de asemenea dou acoperiri, iar pentru f 32 patru acoperiri. Pentru a forma o acoperire a sistemului se ia cte una din acoperirile fiecarei funcii. Pentru a gsi acoperirea minimal a sistemului se continu cu punctul urmator. g) Se scriu toate acoperirile posibile ale sistemului de funcii i se alege dintre acestea acoperirea cu numr minim de elemente. Numarul acoperirilor posibile este dat de produsul numerelor acoperirilor fiecreia dintre funcii.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE TABELUL 1.15.

47

Nr. crt. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Acoperire A1B1C1 A1B1C2 A1B1C3 A1B1C4 A1B2C1 A1B2C2 A1B2C3 A1B2C4 A2B1C1 A2B1C2 A2B1C3 A2B1C4 A2B2C1 A2B2C2 A2B2C3 A2B2C4

Elementele acoperirii echidfg echicbf echiadf echiabcf echdfg echcbf echadf echabf edahifg edahicbf edahif edahibcf edahfg edahcbf edahf edahbcf

Numrul elementelor 7 7 7 8 6 6 6 6 7 8 6 8 6 7 5 7

Variabile de intrare 14 15 15 18 12 13 13 14 15 18 13 18 13 16 11 16

Pentru exemplul luat exist 2x2x4 = 16 acoperiri (enumerate in tabelul 1.15). Numrul elementelor unei acoperiri a sistemului este egal cu numarul implicanilor primi distinci care intr n acoperirile tuturor funciilor din sistem. Din tabelul 1.15 rezult c pentru sistemul de funcii considerat, poate fi luat ca acoperire minimal poziia a cincisprezecea, cu cinci elemente, ce conin unsprezece variabile de intrare. Numrul de variabile de intrare a termenilor coninui de forma normal disjunctiv a unei funcii indic numrul de intrri ai porii logice ce implementeaz termenul respectiv. Pe baza acoperirii minimale gasit la punctul g) se scriu expresiile minime ale sistemului de funcii. Pentru exemplul tratat, corespunzator acoperirii se obtin expresiile (1.48).
f 30 = y0 = x1 x0 + x2 x0 + x2 x1 x 0 f 31 = y1 = x1 x0 + x2 x 0 f = y2 = x2 x0 + x 2 x 0 + x2 x1 x 0
2 3

(1.48)

Realizarea fizic a sistemului de ecuaii (1.48) este prezentat n figura 1.18. Verificarea soluiei obinute poate fi fcut cu ajutorul unui program n limbaj PASCAL n care se compar valorile funciilor canonice cu cele minimizate. Dac pentru fiecare combinaie posibil a variabilelor de intrare cele dou velori corespunztoare aceleiai funcii n forma canonic i n forma inimizat sunt egale, atunci putem spune c s-a obinut o soluie corect. Acest mod de verificare reprezint de fapt construirea automat a tabelelor de adevr ale funciilor date i compararea acestora.
PROGRAMUL 1.2.
Program logic2; {se verifica daca forma minima a

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE


unui sistem de ecuatii de functii logice este corect}
U4A 1 2 13 2 7404 X2 X1 X0 U14A U2A 1 2 1 3 1 U16A 3 2 7432 7408 U6A 1 2 7404 1 2 U3A 7432 Y0

48

a
7411

12

U5A 1

e
7408 U10A 1 2

3 U11A 1 3 2 7432 3 Y1

h
7408

U17A U12A 1 U13A 2 7404 2 1 3 3 7408 2 7432 Y2

Figura 1.18. Realizarea fizic a sistemului de ecuaii (1.24). var y0_c,y1_c,y2_c,y0_m,y1_m,y2_m,x0,x1,x2:boolean; begin for x2:= false to true do for x1:= false to true do for 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.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

49

O alt posibilitate de verificare a soluiei obinute este cea de compararea a formelor de und obinute la ieirea circuitului logic combinaional atunci cnd la intrarea acestuia combinaiile posibile ale variabilelor de intrare se scced cu o anumit frecven. Aa cum se observ, citind un tabel de adevr pe vertical, variabila de rang minim (x0 variabila cu rangul zero) i schimb valoarea cu frecvena cea mai mare. Vom nota aceast frecven cu f0. n acest caz variabila de rang maxim i schimb valoarea cu frecvena fn = f0 / 2n, unde n este rangul variabilei. Pentru exemplificare vom considera tabelul de adevr a sistemului funciilor logice combinaionale (tabelul 1.16) dat de ecuaiile (1.43). Dac stabilim o anumit durat de timp TABELUL 1.16. t n care semnalul corespunztor intrrii de Variabile rang minim x0 se schimb (ia succesiv valoarea Funcii de de zero i valoarea unu perioada semnalului), Nr.crt. ieire intrare atunci duratele se vor dubla la fiecare trecere x2 x1 x0 y2 y1 y0 spre o variabil de rang superior; de exemplu: 0 000 0 0 1 pentru x1 vom avea 2t, pentru x2 vom avea 1 001 1 1 0 4t, .a.m.d. Astfel, dac notm cu f0 frecvena 2 010 0 0 1 semnalului x0, atunci frecvena semnalului x1 3 011 0 0 0 va fi f1=f0/2, frecvena semnalului x2 va fi 4 100 0 1 0 f2=f1/2=f0/4 etc. 5 101 1 1 1 Aplicnd un astfel de set de semnale la 6 110 1 1 1 intrare se vor obine la ieire semnale 7 111 1 0 1 corespunztoare evoluiei n timp a funciei logice combinaionale. Asfel de semnale sunt mult utilizate n analiza circuitelor cu dispozitive digitale i din acest motiv aceast tehnic va fi prezentat n capitolele urmtoare. n figura 1.19 sunt prezentate semnalele de intrare x0, x1 i x2 i semnalele de ieire y0, y1 i y2 ale sistemului de funcii (1.43). Datorit timpului finit de propagare a semnalelor prin porile logice, modificarea ieirii se face cu o anumit ntrziere fa de modificarea semnalelor de intrare n funcie de caracteristicile definite pentru porile logice utilizate. Mai nti vom considera o variaie lent a semnalelor pentru ca ntrzierile 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 frecvene mari, cu

Figura 1.19. Semnalele circuitului descris de ecuaiile (1.43) la frecven sczut.

ordinul de mrime al perioadei comparativ cu timpul de ntrziere al porilor logice, apariia unei deplasri spre dreapta (o ntrziere) cu tpHL pe axa timpului a semnalului de ieire. De asemenea trebuie semnalat faptul c la ieire pot aprea comutri ce nu sunt n tabelul de adevr al funciei (zona notat cu A apariia unei valori zero a funciei y1 n figura 1.20). Acest fenomen numit hazard nu poate fi detectat dect la analiza

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

50

comportrii n timp a circuitului. Analiza comportrii a circuitelor de comutaie reale prezint o deosebit importan practic i n afar de analiza logic a acestora este necesar i o simulare a comportrii circuitelor reale n timp. Una dintre soluiile cele mai bune n prezent este reprezentat de pachetul de programe OrCAD al firmei OrCAD Inc. destinat proiectrii asistate de calculator a circuitelor electronice analogice, digitale i mixte. Analiza circuitelor logice digitale cu ajutorul pachetului de programe OrCAD va fi prezentat succint n capitolul urmtor. Revenind la sistemul funciilor logice, analizat mai sus, se va face simularea
tpLH

A Figura 1.20. Semnalele circuitului descris de ecuaiile (1.43) la frecven mare.

circuitului bazat pe ecuaiile canonice (1.43), simularea circuitului bazat pe ecuaiile minimizate (1.48) i se vor compara formele de und obinute. Schema electric pentru simularea funciilor canonice (1.43) implementate cu pori logice este prezentat n figura 1.21.
U5A 1 2 7404 U5B 3 4 7404 3 4 5 U6C 7410 6 7404 9 10 11 U8B 7410 X1 X2 3 4 5 7410 6 9 10 11 U10A 7410 1 2 13 1 1 1 9 10 11 U11B 7410 3 4 5 U11C 7410 9 10 11 U13A 7410 1 2 13 7410 12 8 1 6 1 4 1 5 7420 U10C 8 1 1 U12A 2 6 0 Y1C
V

U6A 1 2 13 U6B 7410 6 1 1 8 1 1 2 13 U8C 7410 0 8 1 1 12 U10B 7410 3 4 5 U11A 7410 1 2 13 7410 12 1 6 1 3 2 7408 1 9 U7B 0 10 12 13 7420 8 1 Y2C
V

12 1 1 U7A 2 6 4 5 7420 0 Y0C


V

U5C 5 X0

U8A 12

U9A

Figura 1.21. Circuitul realizat cu pori logice a sistemului funiilor canonice disjunctive (1.43)

Schema electric pentru simularea funciilor minimizate (1.48) implementate cu pori logice este prezentat n figura 1.22. Formele de und obinute n urma simulrii sunt prezentate n figura 1.23.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

51

U1A 1 2 13 2 7404 0 B1
CLK

a
7411

12

OFFTIME = 5s ONTIME = 5s DELAY = 0 STARTVAL = 0 OPPVAL = 1 OFFTIME = 2.5s ONTIME = 2.5s DELAY = 0 STARTVAL = 0 OPPVAL = 1

C1
CLK

U2A 1 1

U2B 1 4 7404

0 U3A

U2C 5 1 6 7404 0 1 2 U2D 9 1 8 7404 0 0 0 U2E 11

U4A

1 3 4

U3B 6 5 7432 7432 0 Y0M


V

d
7408

2 0

OFFTIME = 1.25s A1 ONTIME = 1.25s CLK DELAY = 0 STARTVAL = 0 OPPVAL = 1

10 7404 1 5 4

U4B

e
U4C

6 9 7408 10 0 8 7408

U3C 0

0 8 0 0 7432 Y1M
V

X2 X1 VX0 V

9 10 1 U4D 12 U2F 13 12 7404 1 13

U3D 12 11 11 1 7432 7408 13 1 Y2M


V

Figura 1.22. Circuitul realizat cu pori logice a sistemului funiilor logice disjunctive minimizate (1.24)

Figura 1.23. Rezultatul simulrii circuitelor din figura 1.21. i 1.22.

n figura 1.23. se poate vedea faptul c formele de und de ieire y0C, y1C respectiv y2C corespunztoare ecuaiilor canonice (1.43) sunt identice cu formele de und y0M, y1M respectiv y2M corespunztoare ecuaiilor minimizate. Acest lucru demonstreaz faptul c minimizarea sistemului de funcii logice (1.43) a fost fcut corect. Din analiza n domeniul timp a circuitului obinut s-a constatat apariia hazardului la frecvene ridicate pe ieirea y1. Evitarea apariiei hazardului va fi discutat n capitolul urmtor.

1.5.

Apariia hazardului

Fenomenul apariiei unor comutri neateptate la ieirea unui circuit logic combinaional, datorate modificrii strii uneia sau mai multor intrri ale circuitului, se numete hazard. Hazardul se datoreaz n general timpului de propagare i timpului de comutaie al porilor logice reale. Studiul circuitelor logice se face n regim staionar cnd astfel de fenomene nu pot fi detectate sau n regim tranzitoriu cnd se pune n eviden apariia hazardului.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

52

Rezult imediat c o soluie de combatere a hazardului este sincronizarea circuitului combinaional cu ajutorul unui semnal de tact care s permit modificarea ieirii circuitului numai dup ce ieirea acestuia s-a stabilizat (componenta tranzitorie a semnalului de ieire a disprut). Analiza n regim staionar se face de regul n scopul verificrii circuitului din punct de vedere logic, iar analiza n regim tranzitoriu se face n scopul studierii comportrii n timp a circuitului. La circuitele logice combinaionale putem ntlni dou tipuri de hazard : a. hazardul static caracterizat prin apariia unui singur impuls la ieirea circuitului logic combinaional ca rezultat al schimbrii strii unei intrri. Hazardul static este de dou feluri: a.1. hazardul static-1 la care ieirea circuitului logic combinaional trebuie s fie unu dar apare o tranziie scurt n zero ca rezultat al schimbrii strii unei intrri; acest tip de hazard apare n cazul circuitelor construite cu pori AND i OR pe baza funciilor canonice disjunctive; a.2. hazardul static-0 la care ieirea circuitului logic combinaional trebuie s fie zero dar apare o tranziie scurt n unu ca rezultat al schimbrii strii unei intrri; acest tip de hazard apare n cazul circuitelor construite cu pori OR i AND pe baza funciilor canonice conjuctive; hazardul dinamic la care ieirea circuitului comut de mai multe ori la schimbarea strii unei singure intrri. Acest tip de hazard nu este posibil n cazul circuitelor construite numai cu pori AND i OR.

b.

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 aa fel nct semnalul aplicat circuitului s nceap cu starea zero.
X2
CLK

U5A 1 1 2 7404
V

U1A 1 0 U8A 2 7404


V

x2 x1
3 7408 1 3 2 0 Y0
V

2 1 0 U4A

X1
CLK

U6A 1 1 2 7404

U2A 1 0 3 2 0 0 7408

X0
CLK

U7A 1 1 2 7404
V

x1 x0

7432

Figura 1.24. Circuitul pentru explicarea fenomenului de hazard.

Acest circuit construit cu pori AND i OR, care evident are la baz o ecuaie canonic de tip disjunctiv, prezint un hazard static 1 atunci cnd x2=1, x0=1 i x1 comut din unu n zero. S presupunem c toate porile logice ale circuitului din figura 1.24 au acelai timp de propagare t. n aceast situaie putem desena un detaliu al diagramei de timp (figura 1.25) a circuitului din figura 1.24.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

53

Comutarea semnalului de intrare x1 din unu n zero duce la comutarea din zero n unu a semnalului x1 dup timpul t datorit ntrzierii prin poarta U8A. Semnalul x1 se aplic mpreun cu semnalul x0 porii U2A care comut n zero dup t (timpul necesar trecerii semnalului prin aceast poart). Lund ca referin momentul comutrii semnalului x1 din unu n zero, comutarea porii U2A din unu n zero se face dup t. Similar, poarta U1A care era n zero datorit semnalului x1 va comuta n unu dup un timp egal cu t (timpul de ntrziere a porii U1A). Dac ne raportm la aceeai referin, momentul comutrii semnalului x1 din unu n zero, comutarea porii U1A se va face dup 2t. Reamintim c semnalele x0 i x2 au valoarea unu. Datorit diferentei de timp egal cu t a comutrii celor dou pori apare un impuls la ieire cu valoarea zero cu durata t, impuls ce nu ar trebui s apar dac porile ar fi ideale. Figura 1.25. Diagrama de timp explicativ pentru apariia hazardului n figura 1.26 se prezint rezultatul simulrii circuitului din figura 1.24.
hazard static-1

hazard static-0 Figura 1.26. Rezultatul simulrii circuitului din figura 1.24.

1.5.1. Eliminarea hazardului cu ajutorul diagramelor Karnaugh Hazardul static-1 Hazardul static-1 apare atunci cnd o variabil de intrare direct i complementul acesteia sunt conectate la dou pori AND diferite. Atunci cnd folosim o diagram Karnaugh, identificarea hazardului se poate face prin identificarea subcuburilor adiacente ce cuprind termeni canonici diferii ai funciei. Pentru exemplificare scriem ecuaia canonic disjunctiv pentru circuitul din figura 1.24.
y0 = x2 x1 + x1 x0

(1.49) Tabelul Karnaugh corespunztor acestei ecuaii este cel din figura 1.27.a. Din tabelul Karnaugh se observ c tranziia de la suprafaa x2 x1 la suprafaa x1 x0 se face prin tranziia variabilei x1. Pentru eliminarea hazardului static-1 se adaug un subcub suplimentar (implicant prim) care s

x2

x1x0 0 1

00 0 1

01 0 1

11 1 1

10 0 0

Figura 1.27.a. Tabelul Karnaugh

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

54

conecteze cele dou suprafee, asa cum este artat n figura 1.27.b. x2 x1x0 0 1 00 0 1 01 0 1 11 1 1 10 0 0 Ecuaia normal disjunctiv pentru cu hazardul eliminat este:

Figura 1.27.b. Tabelul Karnaugh

y0 = x2 x1 + x1 x0 + x2 x0

(1.50)

Circuitul obinut, corespunztor ecuaiei (1.27.b) este cel din figura 1.28 iar rezultatele simulrii n figura 1.29.
X2
CLK

U5A 1 1 2 7404 1 2 7404 0 U8A 2 2 7404 1

U1A 3 0 7408

X1
CLK

U6A 1 1

U2A X0
CLK

U4A 3 1 2 13 7427 U9A 12 1 1 2 7404 0 Y0

U7A 1 1 2 7404

0 0

1 0 2 7408 0

U3A 1 3 2 7408 0

Figura 1.28. Eliminarea hazardului.

Figura 1.29. Rezultatele simulrii circuitului din figura 3.51.

Aa cum se observ din figura 1.29 hazardul static-1 din semnalul de ieire y0 este eliminat.. O alt posibilitate de eliminare a hazardului este cea de modificare a ntrzierilor n circuit prin adugarea sau eliminarea de pori. De exemplu n figura 1.28. se poate renuna la inversorul U8A semnalul x1 putnd fi cules direct de la intrarea porii U6A. n acest caz se poate renuna la poarta U3A. Din acest exemplu rezult importana deosebit a simulrii funcionrii circuitelor logice, activitate ce poate scurta considerabil timpul de proiectare i punere la punct a unui circuit.
Hazardul static-0 Hazardul static-0 apare la circuitele compuse din pori logice OR-AND, descrise de ecuaii normale conjunctive, atunci cnd o variabil de intrare direct i complementul acesteia sunt conectate la dou pori OR diferite. Eliminarea hazardului-0 se face printr-o metod dual celei de eliminare a hazardului static-1 cu ajutorul diagramelor Karnaugh. Hazardul static-0 poate fi identificat acolo unde, n diagrama Karnaugh, apar suprafee adiacente, formate din zerouri, care acoper sume de termeni diferii. Eliminarea hazardului se va face prin

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

55

inserarea unui subcub suplimentar (implicant prim) care reprezint o sum de termeni ai funciei i care acoper tranziia variabilei care produce hazardul. De asemenea se poate utiliza metoda modificrii corespunztoare a ntrzierilor prin adugarea i eliminarea de pori i simularea circuitului.

1.6. Analiza circuitelor logice combinaionale cu ajutorul pachetului de programe OrCAD


Acest capitol nu este destinat nvrii lucrului cu mediul OrCAD. Vor fi date doar indicaii succinte privind analiza unui circuit digital ncepnd de la proiectarea schemei i ncheind cu simularea acesteia. Din acest motiv, pentru nvarea lucrului n OrCAD vor trebui consultate manualele dedicate acestui scop. Produsul OrCAD reprezint o colecie de aplicaii construite conform fluxului de proiectare ingineresc. OrCAD CIS (Component Information System) reprezint o component opional a sistemului OrCAD ce este folosit mpreun cu OrCAD Capture. OrCAD CIS permite managementul proprietilor componentelor electronice, necesare fiecrei etape, pe durata proiectrii schemei electrice, pn la realizarea cablajului imprimat. Cu ajutorul acestui sistem proiectele realizate i cele viitoare sunt actualizate cu informaiile existente la productorii componentelor electronice i n bazele de date prin intermediul reelei Internet. Principalele componentele ale sistemului OrCAD cu ajutorul crora se realizeaz proiectarea unui circuit electric, ncepnd cu proiectarea schemei electrice i terminnd cu simularea acesteia i proiectarea cablajului imprimat sunt:
o OrCAD Capture sau OrCAD Capture CIS destinat proiectrii schemelor electrice, o OrCAD Express sau OrCAD Express CIS destinat proiectrii dispozitivelor logice digitale i a dispozitivelor logice programabile, o OrCAD Layout destinat proiectrii cablajelor imprimate, o OrCAD Pspice destinat simulrii circuitelor electrice analogice, o OrCAD PSpice A/D destinat simulrii circuitelor electrice analogice, digitale i mixte analogice i digitale.

Pentru simularea unui circuit logic combinaional realizat cu pori logice este necesar mai nti realizarea circuitului electric cu ajutorul componentei OrCAD Capture. Se va explica n continuare modul de realizare i de simulare a schemei din figura 1.24 cu ajutorul pachetului de programe OrCAD ver. 9.1.
1.6.1. Proiectarea schemei electronice cu ajutorul programului OrCAD CAPTURE 1.6.1.1.nceperea unui proiect nou

Pentru nceperea unui proiect nou, se pornete programul OrCAD Capture i se selecteaz din meniul principal File,

Figura 1.30. Definirea unui proiect nou.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

56

apoi New dup care se selecteaz opiunea Project. Se deschide o fereastr pentru crearea 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 Signal Circuit Wizard prin selectarea acestei opiuni i apoi directorul unde se va gsi 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 Figura 1.31. Selectarea bibliotecilor Pspice care se vor folosi n acest proiect. proiectului. ncluderea bibliotecilor suplimentare se poate face i pe parcursul elaborrii schemei electrice deci n aceast faz putem s selectm

Meniul principal Fereastra pentru desenarea schemei Fereastra pentru gestionarea proiectului

Fereastra de mesaje Figura 1.32. Deschiderea unui proiect n OrCAD Capture.

doar o parte din bibliotecile de componente folosite. Bibliotecile de componente Pspice (cu extensia .olb) conin, pe lng simbolul componentei folosite i modelul aesteia (definit conform regulilor programului SPICE) folosit la simulare. Vom selecta biblioteca 7400.olb dup care se apas butonul Add>> pentru a aduga aceast bibliotec iar n final se apas butonul Finish. Terminarea definirii proiectului nou determin apariia mai multor ferestre n spaiul programului OrCAD Capture: fereastra pentru gestiunea Figura 1.33. Fereastra pentru proiectului care are numele proiectului, fereastra gestiune a proiectului pentru desenarea schemei cu numele / -

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 pentru desenarea schemei (/ - (SCHEMATIC : PAGE1)). Dac aceast fereastr nu este afiat se face dublu clic pe pictograma acesteia din fereastra de gestiune a proiectului artat n figura 1.33. (pentru desfurarea structurii proiectului se va face clic pe simbolul +). n continuare, atunci cnd nu se specific altfel, prin expresia se face (dublu) clic se nelege acionarea butonului din stnga a mausului. Plasarea componentelor n schema electric se poate face selectnd opiunea Place din meniul principal dup carese selecteaz opiunea Part din meniul desfurat sau se selecteaz pictograma din bara de unelte (figura 1.34).

Figura 1.34. Bara de unelte.

La selectarea acestei opiuni este afiat fereastra din figura 1.35. n aceast fereastr este posibil s adugm biblioteci noi cu opiunea Add Library (dac aceastea n-au fost adugate la definirea proiectului figura 1.31), s eliminm o bibliotec de componente cu opiunea Remove Library, dac aceasta nu mai este necesar, sau s cutm o component n biblioteci cu ajutorul opiunii Part Search ce permite o cutare complex. Reamintim aici faptul c simularea unei scheme electrice necesit existena modelelor SPICE ale componentelor respective. Din acest motiv o schem destinat simulrii se va realiza exclusiv cu ajutorul componentelor aflate n bibliotecile cu extensia .olb.

Fereastra componentelor aflate n bibliotecile selectate Fereastra bibliotecilor folosite n proiectul respectiv Simbolul grafic al componentei selectate

Figura 1.35. Fereastra de selecie a componentei ce va fi plasat n schema electric

Pentru realizarea schemei electrice a circuitului din figura 1.24 se vor plasa pe desen porile logice. Din acest motiv se va selecta biblioteca 7400 n fereastra bibliotecilor folosite n proiectul respectiv iar din fereastra componentelor se vor selecta succesiv componentele: 7404, 7408 i respectiv 7432. Dup selectarea unei componente se apas butonul OK al ferestrei de seleciei a componentei i simbolul grafic al acesteia apare solidar cu cursorul mausului. Pentru plasarea componentei se face clic pe butonul din stnga al mausului. Pentru ncheierea operaiei de plasare a unui tip de component se face clic pe butonul din dreapta al

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

58

mausului iar n meniul desfurat se selecteaz End Mode. Tot n acest meniu sunt opiuni pentru rotirea componentei, aezarea n oglind etc. necesare editrii schemei. Pentru plasarea unei noi componente se selecteaz din nou opiunea de plasare a unei componente iar operaiunea se repet. Dup aezarea tuturor porilor logice conform desenului 1.24 se vor plasa la intrarea circuitului generatoarele de semnal. Pentru acesta, n fereastra de selecie a componentei, n fereastra de selecie a bibliotecii, se va selecta biblioteca SOURCE.OLB. Din aceast bibliotec se va selecta componenta DigClock. Componenta DigClock este o surs de semnal digital care este folosit de obicei ca semnal de ceas reprezentat de un semnal dreptunghiular periodic. Dup plasarea componentei n schema electric, dac se face dublu clic pe imaginea acesteia se deschide fereastra editorului proprietilor componentei (Property Editor) n care se pot preciza: timpul dup care apare prima tranziie a ceasului (parametrul DELAY), timpul ct dureaz nivelul ridicat (high), n fiecare perioad a semnalului de ceas (parametrul ONTIME), timpul ct dureaz nivelul sczut (low), n fiecare perioad a semnalului de ceas (parametrul OFFTIME), starea nivelului sczut a semnalului de ceas - Low state, implicit aceasta este zero (parametrul STARTVAL) i starea nivelului ridicat a semnalului de ceas - High state, implicit aceasta este unu (parametrul OPPVAL), aa cum este artat n figura 1.36.

Figura 1.36. Fereastra editorului proprietilor.

Cele trei semnale de ceas aplicate la intrarea circuitului trebuie s aib frecvenele n urmtoarea relaie:
f x 0 = 2 f x1 = 4 f x 2

(1.51)
TABEL 1.17. Semnal OFFTIME x0 .125uS x1 .25uS x2 .5uS ONTIME .125uS .25uS .5uS

n aa fel nct la intrarea circuitului s fie generate toate combinaiile posibile ale variabilelor de intrare conform celor

Figura 1.37. Fereastra de afiare a proprietilor textului

prezentate n paragraful 1.4.5. Pentru aceasta se vor face modificrile prezentate n tabelul 1.17, n fereastra editorului proprietilor componentelor. Pentru modificarea textului asociat unei componente se face dublu clic pe acesta, fapt ce determin deschiderea ferestrei de afiare a proprietilor (fereastra Display Properties figura 1.37) sau se face clic dreapta i din mesajul afiat se selecteaz opiunea Edit

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

59

Properties . n aceast fereastr se fac modificrile textului, a dimensiunilor acestuia etc. 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 apsarea tastei Del. Datorit faptului c semnalul de ceas pornete cu starea unu a semnalului, n schem s-au prevzut inversoarele U5A, U6A i U6A (figura 1.24) pentru aducerea semnalului ntr-o form convenabil n coresponden cu tabelul de adevr. Acest lucru se putea realiza i direct din editorul proprietilor componentei ns, avnd n vedere faptul c, n general, ntr-un circuit logic combinaional sunt necesare att semnalele de intrare directe ct i cele negate, s-a preferat aceast soluie. n sfrit, schemei i se mai adaug un conector de ieire. Pentru aceasta se selecteaz din meniul principal Place opiunea Hierarchical Port sau se selecteaz

pictograma din bara de unelte. n fereastra care 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 textul asociat acestuia care se schimb n Y0. Dup plasarea conectorului, activitatea de plasare a componentelor conform figurii 1.24 se ncheie. n continuare componentele trebuie conectate ntre ele prin intermediul legturilor electrice.

Figura 1.38. Fereastra pentru selectarea conectorului

1.6.1.3.Conectarea componentelor schemei electronice

Pentru conectarea componentelor unei scheme electrice n OrCAD CAPTURE exist mai multe posibiliti. Opiunile disponibile n meniul Place sunt: Wire pentru plasarea unui traseu electric, cu pictograma n bara de unelte, Bus pentru plasarea unei 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 sfrit, Bus entry pentru conectarea magistralei la componente cu pictograma . n exemplul nostru nu vom avea nevoie dect de trasee electrice (Wire). Conform schemei prezentate n figura 1.24, pentru a realiza o conexiune electric se selecteaz opiunea Wire din meniul Place sau se selecteaz pictograma corespunztoare din bara de unelte. Se plaseaz indicatorul mausului n primul punct al conexiunii i se face clic. Se deplaseaz indicatorul mausului n punctul urmtor al conexiunii i se face din nou clic. n acest fel s-a realizat o conexiune ntre dou puncte i se poate trece la conexiunea urmtoare. Pentru a realiza o conexiune corect aceasta trebuie s fie fcut n vrful punctului de conectare fr suprapuneri cu terminalul componentei conectate. Pentru ncheierea activitii de conectare a componentelor, se face clic dreapta i se selecteaz End Wire din meniul desfurat. Pentru plasarea unor etichete traseelor electrice se selecteaz opiunea Place din meniul principal dup care se selecteaz Net Alias sau se selecteaz pictograma

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

60

din bara de unelte. Ca rezultat al acestei aciuni se afieaz o fereastr de editare a etichetei pentru unul din traseele electrice. Dup apsarea butonului OK, plasarea etichetei se face poziionnd cursorul cu eticheta pe unul din traseele electrice i fcnd clic pe acesta. Utilizarea etichetelor poate fi folositoare, spre exemplu, pentru identificarea semnalelor care circul ntre anumite puncte ale schemei electrice. Aceste etichete vor aprea i pe graficele de semnal construite de simulatorul OrCAD PSPICE. Dup conectarea tuturor componentelor se poate face o prim verificare a corectitudinii realizrii schemei electrice.
1.6.1.4.Verificarea corectitudinii realizrii schemei electrice

Pentru verificarea corectitudinii realizrii unei scheme electrice se va selecta n fereastra de gestionare a proiectului (figura 1.33) schema electronic aflat n desenul PAGE1. Dup acesta, n meniul Tools aprut n meniul principal se selecteaz opiunea Design Rules Check care determin apariia ferestrei de stabilire a regulilor de verificare a schemei electrice. n aceast fereastr opiunile implicite sunt suficiente i pentru lansarea verificrii se va apsa butonul OK. n fereastra Session Log vor fi afiate urmtoarele 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 situaia n care apare o eroare la desenarea schemei, aceast eroare este semnalat printr-un mesaj i se afieaz coordonatele punctului n care apare eroarea. Dup ce desenarea schemei circuitului electronic a fost ncheiat, se poate trece la simularea funcionrii circuitului n vederea analizei comportrii acestuia i, apoi, la proiectarea cablajului imprimat. Pentru simulare se folosete componenta pachetului de programe OrCAD PSPICE. Pregatirea simulrii circuitului electronic presupune stabilirea punctelor de test i stabilirea profilului simulrii.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE 1.6.1.5. Plasarea punctelor de test pe schema electronic

61

Punctele de test sunt punctele din schema electric unde utilizatorul dorete s vizualizeze anumii parametri. Din programul OrCAD CAPTURE se selecteaz din meniul principal opiunea PSpice iar din meniul desfurat, opiunea Markers. Opiunea 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 msurtori complexe. De asemenea, opiunea Markers permite afiarea tuturor punctelor de msur pe schem (Show All), ascunderea acestora (Hide All), tergerea (Delete All) i listarea acestora (List ). Deoarece n urma simulrii dorim s urmrim forma tensiunii (nivelele logice) n anumite puncte se va selecta Voltage Level. Simbolul sondei de msur care apare solidar cu indicatorul mausului se plaseaz la captul terminalelor unde se dorete afiarea, n simulatorul PSpice, a formelor de und ale tensiunii. Conform figurii 1.24, punctele de msur 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 simulri trebuie stabilit acum un profil de simulare. Pentru aceasta se selecteaz din meniul principal PSpice dup care se selecteaz din meniul desfurat New Simulation Profile. Apare fereastra din figura 1.39 prin intermediul creia ni se solicit numele profilului de simulare. Vom scrie n Figura 1.39. Fereastra caseta text Name:, spre exemplu, numele test1 i se pentru stabilirea numelui apas butonul Create. n fereastra profilului de simulare profilului de simulare test1 afisat pe ecran se pot stabili caracteristicile unei simulri conform opiunilor afiate de fereastr (figura 1.40): General, Analysis, Include Files, Libraries, Stimulus, Options, Data Collection i Probe Window. Pentru exemplul nostru sunt suficiente opiunile implicite. Totui se va verifica dac n fereastra afiat pentru opiunea Analysis sunt stabilite setrile afiate n figura 1.40. Durata simulrii se stabileste n funcie de perioada semnalelor de intrare stabilite la configurarea componentei DigClock (paragraful 1.6.1.2). Semnalul de intrare cu frecvena cea mai sczut (perioada cea mai mare) este semnalul x2 care, conform tabelului 1.17, are o perioad de 2 x 0,5 s = 1 s. Pentru a avea graficul unei perioade complete a acestui semnal stabilim timpul de simulare (Run to time) egal cu perioada acestuia. Figura 1.40. Fereastra profilului de simulare Pentru o singur schem electric test1 se pot stabili mai multe profile de

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

62

simulare diferite n funcie de necesitile utilizatorului stabilind nume diferite pentru aceste profile.
1.6.1.7. Simularea circuitului

Se poate trece acum la simularea circuitului logic combinaional. Pentru aceasta se selecteaz opiunea PSpice din meniul principal, dup care se selecteaz comanda Run. Dup selectarea acestei comenzi, programul OrCAD PSPICE este lansat n execuie i sunt afiate pe ecran graficele corespunztoare variaiilor de tensiune n punctele de test (figura 1.50). n urma simulrii circuitelor logice combinaionale se pot realiza observaii asupra comportrii circuitului n domeniul timp, corespondena ntre formele de und, apariia hazardului, comportarea static i dinamic a circuitului, analiza dispersiei parametrilor componentelor, influena temperaturii i multe altele. Dac n urma simulrii circuitului rezultatele sunt bune se poate trece la realizarea fizic a acestuia.

1.7. Analiza circuitelor logice combinaionale cu ajutorul limbajelor pentru descrierea structurii hardware (HDL)
1.7.1. Introducere

Realizarea circuitelor digitale simple presupune parcurgerea mai multor etape, dintre care cele mai importante sunt: descrierea informal a funcionrii circuitului; transpunerea descrierii circuitului n ecuaii logice; aplicarea metodelor de simplificare i optimizare a funciilor logice; sinteza schemei electrice a circuitului cu ajutorul porilor logice i a bistabililor; o simularea funcionrii circuitului i corectarea eventualelor erori; o realizarea fizic a circuitului.
o o o o

Dac circuitul digital este de complexitate mai mare, o metod de realizare des utilizat presupune descompunerea circuitului n blocuri funcionale, testarea separat a acestora i apoi, dup stabilirea relaiilor ierarhice ntre acestea, testarea ansamblului compus din blocuri funcionale. De regul o astfel de metod poate fi aplicat la circuitele compuse din pn la aproximativ ase sute de pori. Creterea complexitii sistemelor numerice odat cu dezvoltarea tehnologiei digitale a dus la imposibilitatea folosirii metodelor clasice de proiectare i realizare a acestora. Sistemele numerice actuale sunt extrem de complexe. La nivelul celor mai mici detalii, ele constau n sute de miloane de elemente de tipul tranzistoarelor sau al porilor. De aceea, pentru sistemele numerice mari, proiectarea la nivelul porilor este practic imposibil. Schema devine un paienjenis de conexiuni, care nu mai arata functionalitatea proiectului. Incepand cu 1970, inginerii de calculatoare si inginerii electronisti au apelat la HDL (Hardware Description Language) care reprezint, aa cum arat i numele

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

63

acestora, limbaje de programare destinate descrierii formale a circuitelor electronice. Aceste limbaje pot descrie funcionarea, structura, permit simularea, iar n final crearea structurii fizice a circuitelor electronice. Structura fizic obinut 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 unui circuit electronic i relaiile ierarhice care exist ntre diversele blocuri ale circuitului sunt considerate ca limbaje pentru descrierea reelelor (netlist). Spre deosebire de acestea, limbajele destinate descrierii formale a structurilor fizice electronice (hardware), trebuie s conin att expresii pentru redarea comportrii n domeniul timp ct i expresii destinate redrii simultaneitilor, caracteristici ce reprezint principalele atribute ale unei structuri fizice de acest tip. HDL sunt folosite pentru descrierea diferitelor componente fizice ale unui circuit electronic cu ajutorul anumitor secvene de program. Aceste secvene de program pot fi utilizate prin intermediul unui simulator pentru analiza comportrii n timp a circuitului electronic nainte de realizarea fizic a acestuia. Simulatoarele pot fi utilizate pentru circuite digitale (circuite la care semnalele au o evoluie discret n timp), pentru circuite analogice (cu evoluie continu n timp) sau circuite mixte analogice i digitale, pentru fiecare dintre aceste tipuri de circuit existnd limbaje descriptive adecvate. Scrierea secvenei de program corespunztoare unui anumit circuit electronic nu nseamn c, pe baza acestui cod, se poate genera automat, cu ajutorul unui software de sintez, structura fizic a circuitului. Un program de sintez poate doar realiza convertirea codului corespunztor descrierii structurii fizice i efectuarea unor optimizri locale dar nu poate realiza implementri eficiente pe baza unor descrieri defectuase sau incomplete. Fr o nelegere profund a modului de funcionare corespunztor circuitului proiectat limbajele pentru descrierea structurilor fizice pot conduce la realizri nejustificat de complexe i, de multe ori, la imposibilitatea implementrii circuitului. n general, limbajele de programare de uz general precum C, PASCAL, JAVA etc, nu sunt potrivite utilizrii ca HDL datorit faptului c nu exist faciliti pentru descrierea comportrii n timp i a simultaneitilor, programarea n astfel de limbaje presupunnd un effort suplimentar din pertea programatorului. Din acest motiv s-au dezvoltat limbaje specializate, adecvate acestui scop, care permit o descriere simpl a structurii hardware. Limbajele destinate descrierii structurilor fizice digitale au aprut din necesitatea proiectrii sistemelor extrem de complexe. Complexitatea sistemelor digitale impune utilizarea mai mutor tipuri de informaii n procesul de realizare a circuitului integrat. Acelai 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 se ignor modul de realizare a structurii interne. n acest caz descrierea se concentreaz asupra relaiilor ntre semnalele de intrare i ieire, indicndu-se rspunsul de ieire pentru un anumit set de semnale aplicate la intrare. Exist mai mute ci pentru

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

64

descrierea relaiilor dintre semnalele de intrare i ieire i din acest motiv arareori descrierea 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 care acestea sunt conectate. Aceast descriere reprezint mai mult sau mai putin schema sistemului care furnizeaz informaii asupra conexiunilor (netlist). Descrierea fizic se refer la caracteristicile fizice ale sistemului i adaug informaii suplimentare la descrierea structural. Sunt specificate dimensiunile componentelor, poziia acestora pe cablajul imprimat sau n structura de siliciu a circuitului integrat i poziia traseelor electrice destinate conexiunilor. Pe un circuit integrat putem avea sute de milioane de tranzistoare interconectate ntre ele n vederea obinerii sistemului digital. Este imposibil pentru un operator uman i chiar unui calculator s prelucreze un volul de date att de mare. Din acest motiv, n scopul gestionrii corecte a volumului foarte mare de date descrierea sistemului de realizat se face pe mai multe nivle de abstractizare. O abstractizare semnific n acest caz un model simplificat a sistemului. Cele mai multe detalii se ntlnesc la abstractizrile de pe nivelul de jos care sunt cele mai apropiate de structura fizic real iar cele mai puine detalii pe nivelul cel mai nalt. La sistemele digitale se folosesc urmtoarele patru nivele de abstractizare:
o o o o

nivelul tranzistor; nivelul poart logic; nivelul registrului de transfer (Register-transfer-level sau RT-level); nivelul procesor.

mprirea pe aceste nivele se bazeaz n primul rnd pe elementele bloc de baz utilizate la realizarea circuitelor numerice: tranzistorul, porile logice, modulele funcionale i respectiv procesorul. Abstractizarea la nivel de tranzistor reprezint abstractizarea pe nivelul cel mai sczut. La acest nivel, elementele de baz sunt tranzistoarele, rezistenele electrice, capacitile i aa mai departe. Descrierea comportrii se face n mod obinuit cu ajutorul unui set de ecuaii difereniale sau cu ajutorul unor diagrame curent-tensiune. n aceast situaie pot fi folosite programe de simulare a sistemelor analogice pentru a obine caracteristicile de intrare-ieire. La acest nivel, descrierea fizic reprezint schema detaliat ce conine componentele i conexiunile ntre acestea. Abstractizarea la nivel de poart reprezint urmtorul nivel de abstractizare. La acest nivel elementele constructive ale schemei sunt reprezentate de ctre circuite combinaionale (pori logice elementare, multiplexoare etc) i circuite secveniale (circuite de memorare latch i bistabili). La acest nivel se iau n considerare numai dou valori a semnalelor, corespunztoare celor dou valori logice logice unu i zero. ntlnim deci, pe acest nivel, o prim abstractizare important i anume conversia unui sistem analogic ntr-un

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

65

sistem digital. Trebuie reinut ns faptul c, n realitate, semnalele i circuitele sunt n continuare continui. Cu ajutorul acestei abstractizri, descrierea comportrii intrareieire se poate face cu prin intermediul ecuaiilor algebrei logice (ecuaii booleene) renunndu-se la ecuaiile difereniale care sunt cu mult mai complexe i mai dificil de folosit. De asemenea informaiile n domeniul timp sunt simplificate. Se folosete o singur informaie i anume timpul de propagare (paragraful 2.3.3.) sau timpul de ntrziere (delay time propagation delay) pentru specificarea caracteristicilor n domeniul timp a porii. Abstractizarea la nivelul registrului de transfer (RTL) se bazeaz pe module funcionale construite din elemente logice simple. Aceste module funcionale sunt reprezentate de ctre sumatoare, comparatoare registre, multiplexoare etc. Acest nivel de 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 funcionare i a fluxului de date. Pentru descrierea unui sistem proiectat cu ajutorul metodologiei RT se folosete maina cu stri finite extins (extended finite state machine FSM). O caracteristic important a descrierii la nivelul registrului de transfer o reprezint folosirea unui semnal de ceas comun la componentele de memorare. Datorit existenei acestui semnal, se realizeaz sincronizarea semnalelor i timpul de ntrziere este nlocuit cu un numr de perioade de ceas. Abstractizarea la nivel de procesor este reprezentat de blocuri funcionale ce conin procesoare, memorie, magistrale i alte elemente asemntoare. Descrierea funcional a sistemului este similar cu un program scris ntr-un limbaj de programare de nivel nalt. Utilizarea limbajelor descriptive a structurilor fizice (HDL) simplific numrul etapelor necesare elaborrii unui circuit digital:
o o o o

descrierea informal a funcionrii circuitului; specificaii n HDL; simularea funcionrii circuitului i corectarea eventualelor erori; realizarea fizic a circuitului.

Limbajele descriptive a structurii fizice sunt folosite n principal la dispozitive logice programabile (Programmable Logic Devices PLDs) de diferite complexiti de la PLD simple la cele mai complexe (CPLD) i arii programabile de pori logice Field Programmable Gate Arrays (FPGAs). Descrierea dispozitivelor simple poate fi fcut cu limbaje precum Abel, Palasm i Cupl iar a celor complexe cu Verilog (numit i Verilog HDL) i VHDL (VHSIC Hardware Description Language), unde VHSIC reprezint acronimul de la Very-HighSpeed Integrated Circuit. Verilog a fost lansat n 1985 de ctre Gateway System Corporation, care a fost preluat de ctre Cadence Design Systems, Inc.s Systems Division. Pna n 1990, cnd a luat fiin Open Verilog International (OVI), Verilog HDL a fost proprietatea companiei Cadence. Ulterior, Cadence a plasat Verilog n Domeniul Public, cu sperana deschiderii unei piee de produse software legate de Verilog HDL, n condiiile n care acesta se va

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

66

bucura de o larg rspndire. Verilog HDL permite proiectantului de hardware s descrie proiectele, att la un nalt nivel de abstractizare, cum ar fi cel al arhitecturii sau comportamental, ct i la niveluri mai joase de implementare (nivelurile porii i comutatorului), conducnd la mtile/abloanele pentru circuitele integrate pe scar foarte larg (Very Large Scale Integration) i la fabricarea circuitului. Standardul IEEE, pentru VHDL, a aprut n 1987, n timp ce standardul IEEE, pentru Verilog, a fost elaborat n 1995. VHDL este asemntor cu limbajul Ada iar Verilog este asemntor limbajului C, care este foarte rspndit n rndurile inginerilor electroniti i de calculatoare. VHDL a fost solicitat iniial companiilor furnizoare, de ctre Departamentul Aprrii al Statelor Unite (US Department of Defense), pentru documentarea circuitelor integrate destinate aplicaiilor specifice (ASIC - application-specific integrated circuit). Cu alte cuvinte, VHDL a fost elaborat ca o alternativ la voluminoasele documentaii nsoitoare ce conineau detalii specifice de implementare. Pn la ideea de simulare a acestor documentatii nu a fost dect un pas i au fost create simulatoare care s poat citi fiierele VHDL. Urmtorul pas a fost cel al dezvoltrii sintetizatoarelor logice care pe baza fiierelor VHDL puteau furniza la ieire specificaiile pentru realizarea fizic a circuitului. Simularea unui circuit electronic reprezint o etap n procesul de elaborare a acestuia n scopul verificrii i optimizrii circuitului nainte de realizarea fizic. Prin intermediul procesului de simulare se verific, la orice nivel de abstractizare, caracteristicile funcionale ale modelului. n acest scop se folosesc simulatoare cum sunt de exemplu: OrCAD Simulate, ModelSim, VCS, Verilog-XL, Veriwell, Finsim, iVerilog, VeriDOS etc. Simulatorul testeaz dac sunt ndeplinite, de ctre codul RTL, cerinele funcionale din specificaie, verificndu-se dac toate blocurile RTL sunt corecte din punct de vedere funcional. Pentru aceasta trebuie scris un fiier de test (testbench) care genereaz semnalul de tact (clk), semnalul de reset i vectorii de test necesari. Cele mai multe simulatoare afieaz formele de und de ieire ale circuitului testat n aa fel nct s ne putem da seama dac circuitul funcioneaz corect. Dac circuitul este foarte complex atunci fiierul de test va vonine i semnalele de ieire ateptate astfel nct verificarea s se fac automat. n figura 1.41. este prezentat modul de testare a unui circuit digital.
reset clock semnale de test n Circuit digital m semnale de ieire

Fiier de test (testbench)

Comparator logic

Figura 1.41. Testarea cu ajutorul simulatorului

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 n considerare ntzierile introduse de porile logice i de ctre traseele electrice i se verific funcionarea la frecvena 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 fi descrise doar acele elemente ale limbajului care vor permite descrierea unui circuit realizat cu pori logice, n vederea simulrii. Aceste aspecte acoper doar o parte a limbajului. Pentru o descriere complet a limbajului Verilog HDL se pot examina lucrrile date la bibliografie, ct i standardul IEEE. n acest paragraf se vor prezenta gradat noiunile de baz ale limbajului i modul de pregtire a unei simulri n aa fel nct s se poat nelege principiile care stau la baza simulrii circuitelor logice combinaionale 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 poate fi descris cu ajutorul unui singur modul sau cu ajutorul a mai multor module n funcie de strategia aleas de ctre proiectant. Modulele reprezint pri hardware, ce pot descrie o gam larg de structuri fizice, ncepnd cu pori logice simple i tranzistoare i terminnd cu sisteme complexe cum ar fi, de exemplu, microprocesoarele. Fiecare modul este compus dintr-o interfa, corpul modulului i elemente suplimentare adugate opional. Structura unui modul este urmtoarea:
module <nume_modul> (<lista de porturi>); delimitator modul (nceput modul) -----------------------------------------------------------------------------------interfaa <declararea porturilor> <declararea parametrilor> -----------------------------------------------------------------------------------elemente externe suplimentare <directive include> -----------------------------------------------------------------------------------corpul modulului <declararea variabilelor> <atribuiri> <instane ale module de nivel sczut> <blocuri initial i always> <sarcini i funcii> ------------------------------------------------------------------------------------endmodule delimitator modul (sfrit modul)

Cuvintele rezervate module i endmodule delimiteaz modulul.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

68

Dup cuvntul rezervat module urmeaz <nume_modul> ce reprezint un identificator care, n mod unic, denumete modulul. Identificatorii Verilog (inclusiv numele modulelor) trebuie s respecte urmtoarele reguli:
o identificatorul poate fi compus numai din litere, cifre, simboul dollar $ , i liniua de subliniere (underscore) _ "; o identificatorul trebuie s nceap cu o liter sau cu liniua de subliniere; o nu sunt permise spaiile n numele unui identificator; o Verilog face distincie ntre caracterele mari i mici, deci acelai nume scris cu litere mari i litere mici reprezint identificatori diferii; o cuvintele rezervate nu pot fi folosite ca identificatori.

Dup numele modulului urmeaz lista de porturi, scris ntre paranteze rotunde. Aceast list este n strns legtur cu descrierea porturilor n interfaa modulului. n acest list sunt enumerate porturile modulului, care sunt folosite pentru conectarea cu alte module, separate prin virgul. n interfaa modulului se face declararea acestor porturi prin specificarea direciei acestora : porturi de intrare (input), ieire (output) sau intrare/ieire (inout), Sectiunea <declararea parametrilor> din interfa, specific obiectele de tip date ca registre (reg), memorii si fire (wire), ct i construciile procedurale ca function i task care vor fi explicate mai trziu. Elementele externe suplimentare sunt declarate cu ajutorul directivelor include. Un exemplu genearal al unui modul n care sunt precizate interfaa i elementele externe suplimentare este prezentat n continuare.
module ModulOarecare (); input ; output ; inout ; include endmodule

La scrierea unui program, de mare importan este adugarea comentariilor, care s explice codul scris i care s nu fie luate n considerare de ctre compilator. Limbajul Verilog permite introducerea comentariilor astfel: folosind dou simboluri slash (//) se poate scrie comentariul pe o linie, sfritul comentariului fiind marcat de sfritul liniei i comentariul pe bloc, care poate fi scris pe mai multe linii i care este delimitat la nceput cu /* iar la sfrit cu */. Regulile de folosire a comentariilor sunt aceleai ca i pentru limbajele de nivel nalt. Pentru a exemplifica modul de realizare al interfeei unui modul, vom considera unitatea logic i aritmetic din figura 1.42. Conform porturilor sistemului reprezentat de unitatea logic i aritmetic, interfaa modulului corespunztor acesteia este artat n exemplul 1.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

69

In1

In2

OpSel

Mode

COut UNITATE LOGIC I ARITMETIC (ULA)

CIn

Result

Equal

Figura 1.42. Semnalele de intrare i de ieire a unei uniti logice i aritmetice

EXEMPLUL1 module ALU (Result, Cout, Equal, In1, In2,OpSel, Cin, Mode) ; output [3:0] Result; // rezultatul operaiei output Cout; // ieire depire (Carry out) output Equal; // cnd este 1, In1 = In2 input [3:0] In1; // primul operand input [3:0] In2; // al doilea operand input [3:0] OpSel; // selectarea operaiei input Cin; // intrare depire (Carry in) input Mode; // modul aritmetic/logic, aritmetic cnd este 0 /* Urmeaz corpul modulului care va fi descris mai trziu; acest parte a modulului poate conine toate cele cinci elemente ale corpului modulului sau numai o parte dintre acestea */ ... endmodule

Corpul modulului conine descrierea structurii fizice la care se refer modulul. Cele cinci elemente ale corpului modulului pot fi scrise n orice ordine cu o singur restricie: nici un articol nu poate fi folosit nainte de a fi definit. Exist trei moduri diferite prin care un sistem poate fi descris cu ajutorul modulelor : descrierea comportamental, descrierea structural sau cea a fluxului de date. Descrierea structural exprim comportarea unui sistem numeric (modul) ca o conectare ierarhic de submodule. La baza ierarhiei componentele trebuie s fie primitive sau module specificate anterior. Primitivele Verilog sunt pori logice elementare i tranzistoare de trecere (comutatoare). Descrierea prin fluxul de date reprezint o list de expresii care arat modul de prelucrare a semnalelor de ieire n aa fel nct s se obin la ieire valorile dorite, similar cu descrierea cu ajutorul ecuaiilor logice. Expresiile se pot baza pe o gam larg

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

70

de operatori cum sunt : operatori logici, prelucrri la nivel de bit, operatori aritmetici, operatori condiionali etc. Descriere comportamental definete comportarea unui sistem numeric (modul) folosind descrierea algoritmic cu ajutorul construciilor similare limbajelor de programare tradiionale. Pentru exemplificarea celor trei moduri de descriere ale unui sistem vom considera schema din figura 1.43. Circuitul din figura 1.43 reprezint un multiplexor cu patru TABELUL 1.18. intrri (In0, In1, In2 i In3), o ieire (Out) i dou intrri de Sel1 Sel0 Out comand (Sel0 i Sel1). Funcionarea acestui circut este 0 0 In0 similar cu cea a unui comutator comandat: n funcie de 0 1 In1 valoarea binar aplicat pe intrrile de comand (Sel0 i Sel1) 1 0 In2 una din intrrile de semnal (In0, In1, In2 sau In3) este conectat 1 1 In3 la ieire (Out). Tabelul de adevr al multiplexorului cu patru intrri este tabelul 1.18. n continuare, se prezint pe rnd, posibilitatea de scriere n limbajul Verilog, a modulului corespunztor circuitului din figura 1.43 n cele trei stilulri posibile: structural, a fluxului de date i respectiv comportamental.
U3A

In0
U1A

1 2 13 2 7410

12

Y0

Sel0 In1

1 7404

NotSel1
1 2 13 2

U4A 12 7410

Y1 1
2

U7A 6

U2A

Sel1 In2

1 7404

Y2

NotSel0
1 2 13 U5A 12 7410 U6A 1 2 13 7410

4 5 7420

Out

In3

12

Y3

Figura 1.43. Circuitul multiplexor cu patru intrri

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

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE nand (Y1, In1, NotSel1, Sel0); nand (Y2, In2, Sel1, NotSel0); nand (Y3, In3, Sel1, Sel0); nand (Out, Y0, Y1, Y2, Y3); endmodule

71

Descrierea prin fluxul de date Analiznd fluxul datelor circuitului din figura 1.43 putem construi diagrama de semnal din figura 1.44. Acest diagram indic modul n care sunt prelucrate, din punct de vedere logic, semnalele de intrare n scopul obinerii semnalului de ieire.

In0 Sel0 In1 Sel1 In2


NU logic NU logic

SI-NU logic

SI-NU logic

SI-NU logic

Out

SI-NU logic

In3

SI-NU logic

Figura 1.44. Fluxul datelor pentru circuitul din figura 1.43.

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

Notaiile operanzilor din linia assign sunt cele corespunztoare limbajului C. Descrierea comportamental Conform descrierii modului de funcionare a circuitului fcut mai sus, putem construi o schem echivalent a acestuia ca cea prezentat n figura 1.45. Circuitul este echivalent cu un comutator cu patru poziii comandat de semnalele Sel1 i Sel2.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

72

In1 In2 In3 In4 Out

Sel1, Sel2 Figura 1.45. Principiul de funcionare al multiplexorului

Stilul comportamental descrie circuitul n funcie de comportarea acestuia, descriind aciunile pe care circuitul le execut n timpul funcionrii. Aciunile sunt specificate n cadrul blocurilor comportamentale initial i always care sunt compuse din instruciuni secveniale i concurente. De multe ori este suficient s se trenscrie descrierea comportamental a circuitului ntr-un limbaj de nivel nalt n limbajul specific Verilog respectnd regulile de sintax ale acestuia. Forma comportamental a modulului corespunztor circuitului din figura 1.43 este 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 = 1bx; endcase end endmodule

Semantica construciei unui module n Verilog este diferit de cea a subrutinelor, procedurilor i a funciilor din alte limbaje. Un modul nu este chemat niciodat. Un modul are o instan la nceputul unui program i este prezent pe ntreaga durat a programului. O instan a unui modul Verilog este utilizat ca model al unui

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

73

circuit hardware la care se presupune c nu se efectueaz modificri de cablaj. La fiecare instan a modulului, acesteia i se da un nume. De exemplu NAND1 i NAND2 sunt nume de instane ale porii NAND, n exemplul de mai jos (exemolul 5). n acest exemplu este dat o specificare din punct de vedere a fluxului de date a unui modul NAND. Ieirea out este negaia produsului and al intrrilor 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 continua assign out = ~(in1 & in2); endmodule Porturile in1, in2 i out sunt etichetele pe fire. Atribuirea continu assign urmrete n permanen eventualele modificri ale variabilelor din membrul drept, pentru reevaluarea expresiei i pentru propagarea rezultatului n membrul stng (out). Instruciunea de atribuire continu este utilizat pentru a modela circuitele combinationale la care ieirile se modific ca urmare a modificrilor intrrilor. Specificarea structural a unui modul AND (exemplul 6), obinut ca urmare a conectrii ieirii unei pori NAND la cele dou intrri ale altei pori NAND (cea de-a doua 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 NAND output out; input in1, in2; wire w1; // doua instante ale modulului NAND NAND NAND1(in1, in2, w1); NAND NAND2(w1, w1, out); endmodule

Acest modul are dou instane ale lui NAND, numite NAND1 i NAND2, conectate printr-un fir intern w1. Forma general pentru invocarea unei instane este urmtoarea: <nume_modul > <lista de parametri > <numele instantei> (<lista de porturi>); unde <lista de parametri> are valorile parametrilor, care sunt transferate ctre instan. Un exemplu de parametru transferat ar fi intrzierea pe o poart. Urmatorul modul (exemplul 7) reprezint un modul de nivel nalt, care stabilete anumite seturi de date i care asigur monitorizarea variabilelor.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE 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; end initial begin // Activarea monitorizarii $monitor("Time=%0d a=%b b=%b out1=%b out2=%b", $time, a, b, out1, out2); end // Instantele modulelor AND si NAND AND gate1(a, b, out2); NAND gate2(a, b, out1); endmodule

74

De notat c valorile a i b trebuie meninute pe toat durata operrii. De aceea este necesar utilizarea unor registre de cte un bit. Variabilele de tip reg stocheaz ultima valoare care le-a fost atribuit procedural. Firul, wire, nu are capacitatea de memorare. El poate fi comandat n mod continuu, de exemplu, prin instruciunea de atribuire continu sau prin ieirea 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 aprea numai n construciile initial i always. Instruciunile din blocul primei construcii initial vor fi executate secvenial, dintre care unele vor fi ntrziate de #1 cu o unitate de timp simulat. Construcia always se comport n acelai mod ca i construcia initial cu excepia c ea cicleaz la infinit (pan la terminarea simulrii). Construciile initial i always sunt utilizate pentru modelarea logicii secventiale (automate cu stri finite). Verilog face o important distincie 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 combinaional. Atribuirile continue comand variabile de tip wire i sunt evaluate i actualizate atunci cnd un operand de intrare ii modific valoarea. Este important de neles i de memorat aceste diferene.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

75

Toate cele trei module vor fi plasate ntr-un fiier, care va fi executat de ctre simulator pentru a produce urmatoarea ieire: Time=0 a=0 b=0 out1=1 out2=0 Time=1 a=1 b=0 out1=1 out2=0 Time=2 a=1 b=1 out1=0 out2=1 Time=3 a=0 b=1 out1=1 out2=0 ntruct simulatorul iese din cadrul evenimentelor, nu a mai fost necesar oprirea explicit a simulrii. n Verilog semnalele pot avea patru valori distincte: 1 corespunztor valorii logice adevrat, 0 corespunztor valorii logice fals, x corespuztor unei valori logice oarecare (necunoscute) i z corespunztor strii de nalt impedan. Aceste semnale nu pot aparine dect uneia din cele dou clase: reea sau registru. Reeaua reprezint conexiunile ntre elementele fizice, nu are nici un fel de capacitate de stocare iar valoarea semnalului de pe reea depinde numai de valoarea semnalului de surs. O reea 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 cnd sunt deconectate. O valoare atribuit unui registru este pstrat de acesta pn cnd i este atribuit o nou valoare. Ca urmare, un registru joac acelai rol ca i o variabil dintrun limbaj de programare. Trebuie reinut faptul c registrul Verilog difer de un registru numeric deoarece registrul Verilog nu are nici o legtur cu semnalul de ceas. Cele mai multe semnale dintr-un sistem sunt de tip reea deoarece reprezint semnale trimise de ieirile unor dispozitive ctre intrrile altor dispozitive. Numele (cuvintele rezervate) folosite n limbajul Verilog pentru semnalele de tip reea vor fi descrise pe scurt n continuare. Prima categorie este reprezentat de semnalele, cel mai frecvent utilizate, de tip wire i tri. Semnalele de tip wire sunt folosite n reelele cu o singur surs iar semnalele de tip tri sunt folosite n reelele cu surse multiple. Cele dou nume desemneaz practic acelai tip de reea i sunt folosite numai n scopul claritii programului surs. Numele de wand/triand i wor/trior repezint cea de-a doua categorie de semnale de tip reea care sunt folosite pentru a desemna reele ale cror trasee realizeaz funcii logice cablate (capitolul 2.5). Cuvntul rezervat wand/triand este desemnat pentru specificarea funciei i and cablat (figura 1.46) iar wor/trior specific funcia sau or cablat (figura 1.47). i n acest caz prefixul w- respectiv tri- sunt folosite doar n scop pur funcional, pentru creterea claritii. Cea de-a treia categorie de semnale de tip reea sunt reprezentate de numele
+V R
K1 K2

+V

K1 K2

Kn

Out

Out

R
Kn

Figura 1.46. Funcia logic i cablat

Figura 1.47. Funcia logic sau cablat

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

76

rezervate supply0, supply1, tri0, tri1, trireg care faciliteaz descrierea elementelor speciale ale reelelor specificaiilor de nivel sczut cum sunt tranzistoarele sau porile realizate n diverse tehnologii. Aceast categorie de semnale nu intereseaz aici deoarece ele nu fac parte din obiectivul propus i anume acela de simulare a circuitelor logice combinaionale. Ca i celelalte elemente ale limbajului verilog i semnalele trebuie declarate nainte de a fi folosite. Sintaxa declarrii 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 acestui capitol (descrierea structurii modulului). Linia declarrii semnalului se termin, ca i celelalte linii, cu punct i virgul (;). ntr-un sistem descris cu ajutorul programului semnalele de tip reea pot fi semnale scalare corespunztoare unei singure conexiuni sau semnale vectoriale corespunztoare magistralelor formate din mai multe conexiuni electrice. Cel mai adesea semnalele vectoriale se ntlnesc n sistemele complexe similare cu cel descris n figura 1.42. Aa 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 urmtor: wire [MSB : LSB] <numele_vectorului>; unde MSB (Most Significant Bit cel mai semnificativ bit) este indicele bitului de rang maxim al vectorului iar LSB (Least Significant Bit cel mai puin semnificativ bit) este indicele bitului de rang minim al vectorului. n limbajul Verilog indicii sunt nume ntregi pozitive sau negative iar valoarea MSB poate fi mai mic dect LSB ceea ce este puin contradictoriu dac ne gndim la modul de definire al acestor bii la reprezentarea informaiei. Calculul dimensiunii vectorului se face cu relaia urmtoare: dimensiune = | MSB LSB| dimensiunea reprezentnd numrul de bii sau numrul de circuite ale vectorului (magistralei). Numele vectorului respect aceleai reguli cu ceilali 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 funcionarea modulului. Diferena 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 se folosete atunci cnd o instan a modulului se gsete ntr-o specificaie ierarhic cum ar fi de exemplu atunci cnd modulul este folosit pentru o component aflat la nuvelul de baz (vezi exemplul 5 i exemplul 6); o declararea portului prin care se specific direcia, dimensiunea (limea vectorului) i numele portului. Aceste declaraii se afl n interfaa

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

77

modulului (partea de nceput a acestuia) iar declararea porturilor este similar cu cea a semnalelor interne: <cuvnt_rezervat> [dimensiunea vectorului] <identificator> ; Diferena de esen ntre semnalele externe i cele interne const n cuvntul_rezervat din declaraia de mai sus: pentru porturi cuvntul rezervat semnific sensul semnalului iar pentru semnale interne cuvntul rezervat semnific tipul semnalului. n Verilog porturile sunt n mod implicit considerate drept reele de tip wire. Acest lucru este convenabil n cazul circuitelor combinaionale, dar n cazul circuitelor secveniale vor fi necesare anumite completri care vor fi discutate atunci cnd vom studia acest tip de circuite. Pentru descrierea circuitelor combinaionale, cel mai potrivit tip de descriere este cel structural deoarece acest tip de descriere este cel mai apropiat de structura fizic a circuitului (schema electric a circuitului). Deoarece limbajul Verilog conine un set de pori logice predefinite (numite primitive) este posibil ca orice circuit logic combinaional s fie descris cu ajutorul acestor primitive. Primitivele limbajului Verilog sunt n numr de paisprezece i ele pot fi folosite n descrierea structural a circuitului. Cele paisprezece primitive se mpart n patru categorii:
o pori logice cu mai multe intrri (ce conin ase primitive pentru porile logice: and i, nand i negat, nor sau negat, or sau, xnor sau exclusiv negat i xor sau exclusiv; aceste pori logice pot avea orice numr de intrri i numai o singur ieire); o pori logice cu mai multe ieiri (ce conin dou primitive buf circuitul de amplificare i not - inversorul; oricare din aceste pori are o singur intrare i un numr nelimitat de ieiri; o pori logice cu trei stri (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 trei stri ce pot fi activate cu una din valorile logice zero sau respectiv unu: notif0 i respectiv notif1; o pori logice cu etajul final n gol (pull gates).

Pentru a exemplifica modul de scriere a unui modul folosind descrierea structural cu ajutorul primitivelor, considerm sumatorul complet de un bit din figura 1.48.
U1A

A B Cin

1 3 2 74136

AxorB

U2A 1 3 2 74136

Sum

U3A 1 3 2 U4A 1 3 2 U5A 1 3 2 7408 7408 7408 U6A

AandB

AandCin

1 2 13

NCout
12 7427 1

U7A 2 7404

Cout

BandCin

Figura 1.48. Sumatorul complet de un bit.

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 ieire i de intrare (lista conexiunilor la poarta respectiv) de exemplu (AxorB, A, B) , linia ncheiinduse cu punct i virgul. Ordinea n care sunt scrise instanele primitivelor n interiorul modulului nu are nici o importan, scrierea n ordine fiind necesar doar din punct de vedera a claritii. n cazul n care se folosete descrierea prin transformrile fluxului de date trebuie s discutm, pentru nceput, despre expresiile din Verilog. Cu excepia ctorva sisteme fr mportan, semnalul de intrare sufer anumite transformri n scopul generrii semnalului de ieire dorit. Acest procces poare fi descris astfel: ieirea prelucrarea (intrrii)

Prelucrarea semnalelor de intrare este realizat cu ajutorul expresiilor care sunt (conform descrierii din manualul de referin al limbajului Verilog) construcii ce combin operanzii cu operatorii pentru a produce rezultate ce sunt funcii de valorile operanzilor i a semnificaiei semantice a operatorilor. n Verilog, un operator poate avea unul, doi sau trei operanzi n funcie de specificaiile sale. Nu exist expresie fr operanzi. n plus, anumii operatori pot lucra numai cu anumii operanzi. Operanzii, despre care s-a discutat deja, sunt cei reprezentai de elementele reelelor sau registrelor, referite prin numele acestora. O alt categorie de operanzi este reprezentat de constante. Verilog permite folosirea constantelor de diferite tipuri care pot fi specificate n diferite formate pe care le vom discuta n continuare. De asemenea, drept operand poate fi specificat un singur bit sau o succesiune de bii ai unui vector dintr-o reea sau al unui registru.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

79

n sfrit, apelul unei funcii (call) sau un sistem definit de utilizator, pot fi folosii ca operanzi, dac acetia 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 nu se specific altceva. Numerele precedate de semnul minus sunt constante de tip ntreg, negative. Limbajul Verilog permite specificarea constantelor de tip ntreg i n alte baze de numeraie 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 dect baza zece sunt precedate de simbolul apostrof () urmat de o liter care desemneaz baza n care este scris numrul: b sau B pentru numere binare (n baza doi), o sau O pentru numere octale (n baza opt) sau h sau H pentru numere hexazecimale (n baza aisprezece). Numerele specificate n acest fel sunt tratate ca numere ntregi fr semn. Dimensiunea constantei de tip ntreg este determinat de ctre compilator dar ea trebuie s fie de cel puin 32 de bii. De multe ori aceast dimensiune este prea mare i din acest motiv se folosesc adesea constantele dimensionate. Constantele dimensionate sunt precedate de o valoare ntreag pozitiv care desemneaz numrul de bii al constantei de tip ntreg. Specificarea dimensiunii la constantele n baza zece impune folosirea literei d sau D naintea constantei de tip ntreg. EXEMPLUL 9 // constante la care nu este specificat dimensiunea 35 // numr zecimal (implicit) h2a // numr hexazecimal b1010 // numr binar // constante la care se specific dimensiunea 4d7 //numrul zecimal 4 scris pe 4 bii n loc de 32 8b11001111 // valoare binar pe 8 bii 8b1 // va fi reprezentat ca 00000001 8h1 // va fi reprezentat ca 00000001 // numere negative -10 // numr reprezentat intern n cod complement fa de doi pe // 32 bii -8d10 // echivalent cu (8d10) // folosirea caracterului ? 8h1? // echivalent cu 0001zzzz 2b1? // echivalent cu 1z // folosirea caracterelor x 4b01xx // ultimii doi bii ai numrului sunt necunoscui hx // numr pe 32 de bii necunoscut // folosirea caracterului _

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE 16b1100_0101_1111_1000 121_523_191

80

Operanzi de selecie pentru un bit sau pentru o succesiune de bii Putem folosi ca operand un singur bit sau o succesiune de bii ai unui vector de reea sau de registru. Sintaxa operandului de selecie a unui bit const n folosirea numelui vectorului a crui 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 specificm un anumit numr de bii succesivi ai unui vector, atunci precizarea acestora trebuie s se fac relativ la vectorul vizat. Precizarea succesiunii de bii folosii se face n mod similar cu declararea unui vector: [MSB:LSB]. n aceast declaraie LSB nu poate fi mai mare ca MSB, MSB nu poate fi mai mare dect rangul maxim al vectorului iar LSB nu poate fi mai mic ca zero. Dac se folosete un index care depete dimensiunile vectorului sau pentru index se folosesc valorile x sau z atunci ntregul operand va avea valoarea x necunoscut. De exemplu, declararea unei poriuni din vectorul AddresBus[8:0], poate fi: AddressBus[6:4] care reprezint un operand compus din trei bii biii de pe poziiile ase, cinci i patru ale vectorului AddressBus. Operatorii aritmetici n numr de patru: + pentru adunare, - pentru scdere, * pentru nmulire i / pentru mprire se folosesc cu cte doi operanzi. Operatorii + i - pot fi folosii i cu un singur operand pentru determinarea semnului acestuia. n afar de aceti operatori mai exist i operatorul modulo, notat cu %, care returneaz restul mpririi ntregi a doi operanzi. Operatorii aritmetici trateaz n mod diferit operanzii de tip ntreg i operanzii de tip registru. Operanzii de tip ntreg sunt tratai ca operanzi cu semn pe cnd operanzii de tip registru sunt tratai ca operanzi fr semn. Din acest motiv rezultatul operaiilor aritmetice poate fi diferit n funcie de tipul operanzilor. n acelai timp, trebuie inut cont de faptul c numerele negative sunt stocate sub form de complement fa de doi pe un anumit numr de bii. EXEMPLUL 10 1. Codul Verilog: integer intA; intA = -4d12 //variabil de tip ntreg

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

81

dac se efectueaz operaia de mprire: intA / 3 se obine rezultatul: -4 deoarece intA este o variabil de tip ntreg care este tratat ca un numr cu semn. Dac rezultatul este atribuit unei variabile de tip registru, acesta va fi stocat sub forma 65532, numr ce reprezint complementul fa de doi a lui minus patru. 2. Codul Verilog: reg[15:0] intA; intA = -4d12 //variabil de tip registru dac se efectueaz operaia de mprire: intA / 3 se obine rezultatul: 21841 deoarece intA este o variabil de tip registru care stocheaz numrul 12 sub forma complementului fa de doi: 65524. Acest numr mprit la trei d valoarea 21841. 3. Dac operandul este o constant nedimensionat notat ca 12 atunci operaia 12 / 3 va da rezultatul: 4 deoarece constanta nedimensionat este reprezentat intern ca o constant de tip ntreg. Dac rezultatul este atribuit unei variabile de tip registru, acesta va fi stocat sub forma 65532, numr ce reprezint complementul fa de doi a lui minus patru. 4. Dac operandul este o constant dimensionat: 4d12, atunci rezultatul operaiei 4d12 / 3 va fi egal cu: 1431655761. Acest lucru se ntmpl deoarece pe durata simulrii constanta 12 este reprezentat n complement fa de doi ntr-un registru de 32 de bii (4294967283). Aceast valoare se mparte la 3: 4294967283 / 3 = 1431655761. Operatorii relaionali sunt destinai comparrii operanzilor. n Verilog sunt dafinii patru operatori relaionali: < operatorul mai mic, > operatorul mai mare, <= operatorul mai mic sau egal i >= operatorul mai mare sau egal. Rezultatul unei expresii ce conine unul din cei patru operatori relaionali poate fi zero 0 dac rezultatul obinut este fals, sau unu 1 dac rezultatul abinut este adevrat. Dac n expresia relaional exist cel puin un bit n nalt impedan z sau necunoscut x atunci rezultatul va fi necunoscut x. n Verilog operatorii relaionali au o prioritate mai sczut dect operatorii aritmetici. Operatorii de egalitate sunt tot n numar de patru. Datorit faptului c n cazul operatorilor relaionali rezultatul este necunoscut dac mcar unul din operanzi are un bit n nalt impedan z sau necunoscut x , a fost necear un mod nuanat de stabilire a egalitii ntre doi operanzi. Egalitatea respectiv neegalitatea dup tip se noteaz 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.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE 2. 3. 4. 5. 6. 1010 !== 1010 furnizeaz rezultatul 0. 1100 === 11 furnizeaz rezultatul 0. 1100 !== 11 furnizeaz rezultatul 1. 0110 === 0xx0 furnizeaz rezultatul 0. 1z1z !== 1z1z furnizeaz rezultatul 0.

82

Dac cei doi operanzi nu sunt egali ca numar de simboluri, atunci operandul cu un numr mai mic de simboluri este completat cu zerouri spre stnga. n exemplul 3 sau exemplul 4, al doilea operand 11 este transformat n 0011 pentru a avea acelai numr de simboluri cu primul operand 1100. n cazul egalitii (neegalitii) logice, dac unul din operanzi conine cel puin un bit n starea de nalt impedan z sau starea bitului este necunoscut x atunci rezultatul operaiei este necunoscut. EXEMPLUL 12 1. 2. 3. 4. 1010 == 1010 furnizeaz rezultatul 1. 1010 != 1010 furnizeaz rezultatul 0. 1z1z != 1z1z furnizeaz rezultatul x. 1z1z == 1z1z furnizeaz rezultatul x

Operatorii logici sunt de dou tipuri: operatori logici pe bit i operatori logici care acioneaz asupra ntregului operand. Operatorii logici pe bit realizeaz operaia logic separat pe fiecare bit ai operanzilor i furnizeaz o valoare corespunztoare operaiei logice efectuate. Dac operatorii logici pe bit au un singur operand atunci ei se numesc operatori logici de reducere iar operaia logic se realizeaz ntre toi biii operandului furniznduse un rezultat cu dimensiunea de un bit. Operatorii logici care acioneaz asupra ntregului operand realizeaz operaia logic ntre valoarile logice de adevr asociate operanzilor: adevrat dac operandul este diferit de zero sau fals dac operandul este egal cu zero. Operatorii logici pe bit (dac se folosesc doi operanzi) sau de reducere (dac se folosete 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 execuia modulului and2 se realizeaza operaiile: c(0) = a(0) and b(0)

/*

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE c(1) = a(1) and b(1) */ 2. // efectuarea operatiei logice pe intregul operand wire[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 zero else a= !x // a=0 daca x este diferit de zero //operator logic de reducere module 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)

83

3.

/*

Operatorii de deplasare realizeaz deplasarea primului operand cu un numr de bii specificat de ctre cel de-al doilea operand. Poziiile rmase libere n urma deplasrii sunt completate cu valoarea zero. Operatorii de deplasare sunt : << deplasare stnga 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 muli 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 = {1b0,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 de replicare se noteaz: {n{operand}} unde n indic numrul de replicri ale operandului. EXEMPLUL 16 wire [1:0] a, b; wire [4:0] x; assign x = {2{1b0},a}; // este echivalent cu: x = {0,0,a}

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE assign y = {2{a}, 3{b}}; // este echivlent cu y = {a,a,b,b}

84

Operatorul condiional ? are aceeai semnificaie ca i n limbajul C/C++ (n funcie de rezultatul unei condiii se alege una din dou expresii): (conditie) ? (expresie n cazul cnd condiia este adevarata) : (expresie n cazul cnd condiia 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 sunt intrari de semnal, a este iesirea de semnal iar c este intrarea de comanda */ Atribuirea continu se folosete pentru stabilirea unei valori la o conexiune (wire) dintr-un modul. Atribuirea se poate face la un semnal de ieire pentru ca rezultatul unei expresii sau operaii s fie accesibil la ieirea modulului. Exist dou tipuri de atribuiri: atribuitri continui i atribuiri procedurale. Atribuirea continu este folosit n modelarea fluxului de date fiind cel mai ntlnit tip de atribuire. Instruciunea de atribuire continu este compus din urmtoarele elemente: o cuvntul rezervat assign; o declararea ntrzierii (opional); o partea stng a instruciunii care este destinaia atribuirii i care poate fi o reea (scalar sau vectorial) sau mai multe reele concatenate. Folosirea registrelor nu este permis n partea stng a expresiei; o simbolul de atribuire (semnul egal =); o partea dreapt a instruciunii care este o expresie a crei operanzi pot fi de orice tip permis (constante, reele, registre, apeluri de funcii etc.).
A B C D X Z Y

Fig. 1.49. Modul pentru explicarea atribuirii implicite i

Atribuirile implicite continue reprezint atribuirile fcute o dat cu declararea reelelor. Pentru exemplificare considerm un modul oarecare a crui schem bloc este reprezentat n figura 1.49. EXEMPLUL 18 1. Atribuirea continu implicit.

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 B wire 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 B assign Y= ; //expresie ce contine operanzii C si D assign Z= ; // expresie ce contine operanzii X si Y endmodule Atribuirea condiional este exemplificat la prezentarea operatorului condiional (exemplul 17). Atribuirea continu este evaluat permanent, aa cum arat i numele acesteia i orice modificare a unui operand n membrul drept se va reflecta imediat in membrul stng al atribuirii. n cazul n care exist mai multe atribuiri acestea vor fi evaluate n mod concurent astfel nct funcionarea programului s reflecte n mod fidel comportarea structurii fizice. ntrzierile reflect comportarea sistemelor fizice reale. ntrzierile sunt specificate n uniti de timp care sunt definite n directiva compilator timescale. n cazul descrierii comportamentale a circuitelor complexe sau a sistemelor, cu ajutorul algoritmilor, trebuie folosite noiuni 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 (funcional) a sistemelor. Datorit faptului c aceste cunotiine nu sunt absolut necesare pentru simularea circuitelor logice combinaionale, ele nu vor fi prezentate deocamdat. Directivele compilatorului Directivele compilatorului sunt comenzi speciale care ncep cu caracterul ( ` atenie acest simbol nu este apoatrof: ) i care influeneaz funcionarea simulatorului Verilog. Prezentm n continuare cteva din directivele compilatorului.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

86

Directiva `timescale specific unitatea de timp i precizia unitii de timp. Spre exemplu, dac unitatea de timp este stabilit la 10ns atunci o ntrziere notat cu #3.5 reprezint 35ns. Precizia unitii de timp indic modul n care este fcut rotunjirea valorii ntrzierii pe timpul simulrii. Unitile de timp valide sunt: s, ms, s, ns, ps, fs. Pentru specificarea unitii de timp sau a preciziei nu pot fi folosite dect cifrele: 1, 10 sau 100. Sintaxa directivei `timescale este : `timescale time_unit/time_precision; Directiva pentru definirea macroinstruciunilor este `define. Macroinstruciunile sunt apelate cu numele macroinstruciunii 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 fiier text n punctul n care se gsete directiva. Directiva este similar celei din limbajul C/C++. Sarcinile (task) i funciile (function) sistem Sarcinile i funciile sistem sunt folosite pentru generarea intrrilor i a ieirilor pe durata simulrii. Numele acestora este precedat de semnul dollar ($) i se pot gsi n orice loc pe parcursul programului. Sarcinile sistem care extrag datele, cum este spre exemplu $monitor trebuie s se gseasc ntr-un bloc initial sau always. Vom prezenta n continuare cteva dintre sarcinile sau funciile sistem mai des folosite. Comenzile $display, $strobe, $monitor au aceeai sintax i ele afieaz valorile sub form de text pe durata simulrii. Comenzile $display i $strobe determin o afiare ori de cte ori sunt executate pe cnd $monitor afieaz ori de cte ori se produce o schimbare a parametrilor. irul format este asemntor cu cel din C/C++ putnd conine caractere de formatare: %d (zecimal), %h (hexazecimal), %b (binar), %c (caracter), %s (ir) i %t (timp). Adugarea literelor b, h sau o la numele taskului schimb afiarea 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 simulrii sub forma unui ntreg de 64 de bii, respectiv 32 de bii sau sub forma unui numr real.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE EXEMPLUL 21 time ts; ts = $time;

87

Comenzile $reset, $stop i $finish au urmtoarele efecte: $reset iniializeaz simulatorul la momentul zero, $stop oprete simulatorul i-l pune n modul interactiv ateptnd comenzi de la utilizator iar $finish produce ieirea din simulator i rentoarcerea n sistemul de operare. Comanda $deposit seteaz o reea la o valoare particular. Sintaxa comenzii este: $deposit (nume_reea, valoare); 1.7.2.2.Testarea programelor Verilog HDL Exist mai multe modaliti de testare a proiectelor realizate n limbajul Verilog, ns cea mai folosit metod este cea cu ajutorul fiierului de testare (Test Benches). Fiierul de test este compus din mai multe elemente: o interfaa cu proiectul de testat (numit i unitate de testat UUT Unit Under Test), care poate reprezenta unul sau mai multe module Verilog; o semnalele de test stimulii; o sistemul de monitorizare a rspunsului unitii de testat la stimulii aplicai i reprezint o specificaie hibrid alctuit din instruciuni de tip structural i instruciuni de tip comportamental. Aceast specificaie Verilog este simulat cu ajutorul unui simulator Verilog. Stimulii pentru modulul/modulele testat/testate sunt precizai direct n interiorul fiierului de test sau pot fi furnizai de ctre un modul extern. Pe de alt parte, semnalele de ieire ale modulului/modulelor de testat pot fi observate prin intermediul ieirilor simulatorului (de exemplu formele de und afiate pe ecran), prin intermediul mesajelor de simulare sau pot fi scrise ntr-un fiier. Fiierul de test reprezint deci o specificaie Verilog care are modulul su propriu. Acest modul se deosebete de celelalte module prin cteva caracteristici aparte: o modulul nu are porturi; o stimulii care pot fi specificai n acest modul sau ntr-un modul extern separat; o monitorizarea ieirilor realizat cu ajutorul sarcinilor sistem scrise ntrun bloc separat pentru creterea lizibilitii. Structura general a fiierului Test Bench este prezentat n continuare n exemplul 22.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE EXEMPLUL 22 module TestBench; ------------------------------------------------------------------------------reg ; declararea semnalelor de stimulare wire ; ------------------------------------------------------------------------------initial always begin # = ; # = ; end initial # $finish --------------------------------------------------------------------------------modname UUT (); instanierea modulului UUT --------------------------------------------------------------------------------initial monitorizarea rezultatelor $monitor (); --------------------------------------------------------------------------------endmodule declararea stimulilor

88

Dup realizarea proiectului n limbaj Verilog trebuie realizat verificarea acestuia cu ajutorul fiierului de testare. Proiectul realizat se folosete n fiierul de testare fr a fi necesar nici un fel de modificare, folosindu-se n fiierul de testare o instaniere a modulului de test. Din acest motiv putem spune c fiierul de test poate fi aplicat oricreispecificaii Verilog. Pentru instanierea modulului de testat (UUT) n interiorul fiierului de test, se scrie numele modulului UUT urmat de lista de asociere a porturilor prin nume sau prin ordinea n care acestea sunt scrise. Porturile instanierii UUT sunt asociate cu semnalele de stimulare. Deoarece procesele sunt concurente, ordinea de definire a stimulilor i instanierea modulului de testat nu are nici o imporan. n exemplul 23 se arat felul cum se definete un modul i fiierul de test asociat acestuia. // modulul de testat module combi (Y, A, B, C); output Y; input A, B, C; endmodule // fisierul de test

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

89

module TestBench; combi UUT (.Y(), .A(), .B(), C()); endmodule Semnalele de simulare sunt declarate, aa cum s-a artat, n interiorul modulului de testare sau ntr-un modul extern. Aceste semnale sunt asociate cu intrrile modulului UUT prin intermediul semnalelor declarate n modulul de test. Evoluia n timp a semnalelor de stimul se specific ntr-o manier secvenial, 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. Corespondena ntre stimuli i modulul de testat se realizeaz prin specificaia porturilor din instanierea UUT. n exemplul 24 se prezint un modul corespunztor unui multiplexor cu dou intrri i specificarea semnalelor de stimul pentru fiierul de test. Schema electric a multiplexorului este prezentat in figura 1.50.
COMANDA Sel

INTRARE A

U1A 1 3 2 7408 U4A 1 2 7404 1 U2A 3 2 7408 1 3 2 7432 U3A

IESIRE Y

INTRARE B

Fig. 1.50. Multiplexorul cu dou intrri i o ieire

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;

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

90

mux2to1 UUT (Y, A, B, Sel); initial begin Sel = 1bx; A = 1b0; B = 1b1; end always begin #40 Sel = 1b0; // schimbare la 40 #20 A = 1b01 ; // schimbare la 60 #20 Sel = 1b1 ; // schimbare la 80 #20 B = 1b0 ; // schimbare la 100 #20 Sel = 1b0 ; // schimbare la 120 #20 A = 1b1 ; // schimbare la 140 #20 Sel = 1b1 ; // schimbare la 160 #20 B = 1b1 ; // schimbare la 180 end initial #200 $finish ; endmodule n exemplul 25 se prezint dou forme de analiz a rezultatelor simulrii: prezentarea rezultatelor pe display (exemplul 25.a) folosind comanda sistem $monitor sau salvarea datelor n fiier (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 = 1bx; A = 1b0; B = 1b1; end always begin // stimuli end initial #200 $finish ; initial begin $display( TIME A B Sel Y);

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE $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 = 1bx; A = 1b0; B = 1b1; end always begin // stimuli end initial #200 $finish ; initial begin Res = $fopen(simlog.txt); $fdisplay( TIME A B Sel Y); $fmonitor($time, %b %b %b %b, A, B, Sel, Y); end endmodule Rezultatul simulrii obinut n fiierul simulog.txt este: TIME 0 40 60 80 100 120 140 160 180 A 0 0 0 0 0 0 1 1 1 B 1 1 1 1 1 1 1 1 0 Sel x 0 0 1 1 0 0 1 1 Y x 0 1 1 0 1 1 0 0

91

Vom prezenta n continuare modul n care se face simularea unui circuit logic combinaional cu ajutorul programului Silos, versiunea demonstrativ (2002.100), pus la dispoziia utilizatorilor n mod gratuit, de ctre firma Simucad Inc.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

92

Dup lansarea n execuie a programului Silos, se va deschide un proiect nou

Figura 1.51. Fereastra principala a programului Silos

prin selectarea opiunii Project din meniul principal, iar din meniul desfurat se selecteaz opiunea New (figura 1.51). Se deschide o fereastr nou prin intermediul creia se solicit numele noului proiect. Se va crea un director nou Silos TEST n directorul rdcin pe discul n care lucrm i n acest director se creeaz proiectul mux2to1 extensia proiectului fiind implicit: .spj. Dup introducerea numelui proiectului fereastra se extinde i se solicit fiierele care vor fi incluse n proiect: fiiere surs scrise n limbaj Verilog, biblioteci, directoare ce conin informaia de inclus n proiect etc. Deocamdata proiectul nu conine nici un fiier i deci se apas butonul OK i se rspunde YES la avertismentul aprut (figura 1.52). Dac fiierul

Figura 1.52. Fereastra pentru creerea proiectului nou.

Figura 1.53. Fiierul modulului mux2to1.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

93

surs ce conine modulul cu multiplexorul cu dou intrri i o ieire exist, atunci acel fiier va fi inclus n proiect. Pentru a crea acest fiier 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 intrri i o ieire are schema electric 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 combinaional vom folosi acum descrierea structural cu ajutorul porilor logice. Se selecteaz din meniul principal File dup care se selecteaz New moment n care se deschide fereastra fiierului surs numit generic Source1. Se introduce textul corespunztor modulului mux2to1 conform celor prezentate n exemplul 26 dup care se salveaz acest fiier cu numele mux2to1_module.v aa cum este artat n figura 1.53. Dup salvarea fiierului mux2to1_module.v se selecteaz Project din meniul principal, apoi Files i se adaug la proiect acest fiier (figura 1.54). n acest moment fiierul surs poate fi verificat i se Figura 1.54. Adaugarea fiierului selecteaz din meniul principal opiunea Debug, mux2to1_module.v la proiect. apoi Go sau se apas tasta. Dac in fereastra de ieire a simulatorului nu sunt semnalate erori atunci fiierul sursa este corect din punct de vedere sintactic. Dac apar erori de sintax, acestea se corecteaz dup care se reface compilarea fiierului (aciunea Debug -> Go). EXEMPLUL 26 module mux2to1 (Y,A,B,Sel); // intrarile si iesirile modulului output Y; input A,B,Sel; // conexiunile interne ale circuitului wire U4A, U1A, U2A; not (U4A,Sel); and (U1A,A,Sel); and (U2A,U4A,B); or (Y,U1A,U2A); endmodule Urmeaz acum scrierea fiierului TestBench pentru simularea modulului mux2to1. Pentru aceasta se deschide un fiier nou cu ajutorul comenzii File urmat de

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

94

New sau se apas combinaia de taste Ctrl + N. n acest fiier se creaz modulul de test mux2to1_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 intrare always begin #40 Sel = 0; #20 A = 1; #20 Sel = 1; #20 B = 0; #20 Sel = 0; #20 A = 1; #20 Sel = 1; #20 B = 1; //simulare completa $finish; end

// schimbare la 40 // schimbare la 60 // schimbare la 80 // schimbare la 100 // schimbare la 120 // schimbare la 140 // schimbare la 160 // schimbare la 180

Figura 1.55. Fereastra principal a programului Silos cu rezultatele simulrii.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE initial begin //valori initiale Sel = 1; A = 0; B = 1; end endmodule

95

La sfrit salvm fiierul cu ajutorul comenzii File, Save As folosind numele mux2to1_TB.v pentru acesta. Includem apoi acest fiier n proiect cu succesiunea de comenzi Project urmat de Files iar n fereastra aprut, similar cu cea prezentat n figura 1.54 se face dublu clic pe fiierul mux2to1_TB.v sau, se selecteaz acest fiier, apoi se apas butonul Add, n final selectndu-se butonul OK. Pentru testare lansm n execuie proiectul cu ajutorul comenzii Debug din meniul principal, urmat de Go, sau se apas pe butonul din bara principal de unelte (Main Toolbar). n urma acestei aciuni se face compilarea fiierelor i simularea acestora. Dac n fereastra de ieire nu sunt semnalate erori putem acum s vizualizm semnalele circuitului. Pentru aceasta selectm fereastra Data Analizer prin selectarea pictogramei sau apsarea tastei F6 sau selectarea opiunii 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 de Open Explorer. n aceast fereastr sunt afiate modulele din proiect, ntr-o structur ierarhic, n partea stng i porturile aferente acestora, n partea dreapt. Semnalele pe care dorim s le afim trebuie s apar aici. Prin tehnica drag and drop aceste semnale sunt trase din partea dreapt a ferestrei Explorer i puse n partea stng a ferestrei Data Analizer. Semnalele din fereastra Data Analizer de care nu mai avem nevoie le putem terge prin selectarea acestora i apsarea tastei Delete. n final, pentru a vizualiza semnalele pe toat durata simulrii apsm n mod repetat pictograma .Fereastra principal a programulul Silos cu rezultatele simulrii este prezentat n figura 1.55. Rezultatele simulrii sunt prezentate n figura 1.56.

Figura 1.56. Rezltatul simulrii multiplexorului cu dou intrri i o ieire prezentat n figura 1.50.

Din aceast figur se observ faptul c semnalul de ieire copiaz semnalele de intrare A sau B n funcie de semnalul Sel : dac Sel este egal cu unu se copiaz semnalul A iar dac Sel este egal cu zero se copiaz semnalul B.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

96

O alt posibilitate de simulare a circuitelor logice combinaionle este oferit de programul ModelSim. Acest program este realizat de ctre firma Model Technology care aparine companiei Mentor Graphics Corporation. Folosim Modelsim SE versiunea 2.7f.

Se selecteaz File, apoi New, dup care Project

Spaiul de lucru (workspace) pentru fiecare set de date este creat cte o etichet a structurii

Figura 1.57. Fereastra principal a programului ModelSim.

Programul Modelsim permite managementul proiectelor realizate n limbaj Verilog sau VHDL ct i n alte limbaje, editarea surselor pentru aceste limbaje de simulare, compilarea si execuia programelor scrise. De asemenea programul dispune de instrumente puternice de afiare i prelucrare a semnalelor i a formelor de und rezultate n urma simulrii. Anumite variante ale programului ModelSim permite simularea proiectelor combinate realizate att n limbaj Verilog ct i n limbaj VHDL. Datorit numeroaselor faciliti ale programlui, simularea i depanarea proiectelor poate fi realizat ntr-un timp scurt chiar i n cazul proiectelor complexe. Pentru exemplificare se va simula n programul ModelSim acelai circuit i anume multiplexorul cu dou intrri i o ieire prezentat n figura 1.50. De asemenea, vom folosi fiierele deja scrise mux2to1_module.v i mux2to1_TB.v n cazul simulrii cu ajutorul programului Silos, prezentat anterior. Se deschide programul Modelsim i este afiat fereastra din figura 1.57 (dup ce se Figura 1.58. Fereastra pentru nchide, eventual, fereastra de ntmpinare crearea unui proiect nou.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

97

Welcome Menu). Pentru a crea un proiect nou, din meniul principal se selecteaz File, din meniul desfurat se alege New, dup care se selecteaz Project Se deschide fereastra Create Project (figura 1.58), unde la Project Name se completeaz : test, la Project Location se introduce locaia proiectului, de exemplu : E:\Modelsim teste\proiect1, iar la Default Library Name rmne valoarea implicit : work.

Figura 1.59. Fereastra de adugare a elementelor noi la un proiect.

Figura 1.60. Adugarea unui fiier la proiect

Dup completarea acestor opiuni se apas butonul OK. Dup aceasta, se deschide fereastra de adugare a elementelor la proiect (figura 1.59). Astfel se poate crea un fiier nou, se poate aduga un fiier existent, se poate crea un director sau se poate realiza o simulare.

Figura 1.61. Spaiul de lucru dup adugarea fiierelor.

n aceast faz se vor aduga la proiect cele dou fiiere deja create : mux2to1_module.v i mux2to1_TB.v care se vor copia n directorul proiectului. Copierea fiierelor se poate face din opiunea Add Existing File sau de sub sistemul de operare Windows n directorul noului proiect ; n exemplul nostru: E:\Modelsim teste\proiect1, Este evident faptul c fiierele pot fi Figura 1.62. Fereastra de editare a create n aceast faz prin selectarea opiunii fiierului mux2to1_TB.v Create New File. Dac se selecteaz opiunea Add Existing File, este afiat fereastra Add file to Project (figura 1.60). n aceast

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

98

fereastr se completeaz numele fiierului i se bifeaz opiunea de copiere a fiierului n directorul proiectului (Copy to project directory) dac este necesar acest lucru. La sfrit, dup copierea celor dou fiiere, se apas butonul Close al ferestrei Add items to the Project. Dup adugarea celor dou fiiere: mux2to1_module.v i mux2to1_TB.v acestea apar n spaiul de lucru ca n figura 1.61. Se selecteaz fiierul mux2to1_TB i se face dublu clic pe acesta pentru a se deschide fereastra de editare (figura 1.62). n aceast fereastr se modific funcia sistem $finish n $stop ca n figur. Dup acesta nchidem fereastra i salvm fiierul.

Figura 1.63. Biblioteca work cu fiierele compilate.

Din meniul View se selecteaz fereastra Signals i fereastra Wave

Figura 1.64. Crearea unei sesiuni de simulare.

Ne ntoarcem n spaiul de lucru i pe unul din fiiere selectat se face clic dreapta. n meniul desfurat se alege Compile i apoi Compile All (acelai lucru se obine dac se selecteaz Compile din meniul principal i apoi Compile All). Compilarea trebuie s decurg fr s se semnaleze erori. n caz contrar, fiierul cu erori

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

99

se editeaz pentru corecia acestora. Rezultatele compilrii 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 multiplexorul cu dou intrri i o ieire. Pentru aceasta, n spaiul de lucru, n partea de jos, se selecteaz eticheta Library. n spaiul de lucru se afieaz lista bibliotecilor care cuprinde i biblioteca work a proiectului nostru. Se expandeaz aceast bibliotec prin clic pe semnul plus din dreptul librriei work i se face dublu clic pe modulul mux2to1_TB pentru a deschide o sesiune de simulare (figura 1.63). Pentru vizualizarea semnalelor, din meniul principal se selecteaz opiunea View iar din aceasta fereastra Signals i fereastra Wave (figura 1.64). n fereastra Signals se selecteaz semnalele a cror form de und dorim s o vizualizm iar prin tehnica Drag and Drop acestea sunt duse n fereastra Wave (figura 1.65). Pentru selectarea tuturor semnalelor, n fereastra Signals se alege din meniul principal Edit i de aici Select All. Dup ce semnalele alese au fost duse n fereastra Wave se trece la simulare prin selectarea opiunii Simulate din fereastra principal a programului ModelSim i de aici Run i apoi, din meniul desfurat Run All. Programul este executat pn la ntlnirea funciei $stop i formele de und a semnalelor sunt afiate Figura 1.65. Transferarea semnalelor din fereastra n fereastra Wave (figura 1.66). Signals n fereastra Wave Dac se analizeaz aceste forme de und se constat c semnalul de ieire /mux2to1_TB/Y copiaz semnalul de intrare /mux2to1_TB/A sau /mux2to1_TB/B dup cum semnalul de selecie /mux2to1_TB/Sel are valoarea unu logic, respectiv zero logic. Aceste forme de und sunt similare cu cele prezentate n figura 1.50 obinute cu ajutorul programului Silos. Trebuie remarcat faptul c simulrile fcute s-au bazat pe pori logice ideale la care nu apar ntrzieri datorate tranziiei Figura 1.66. Formele de und obinute la simularea semnalului prin poarta real. multiplexorului cu dou intrri i o ieire. Aa cum s-a artat, aceste ntrzieri pot fi introduse n program sau pot fi folosite module oferite de ctre productori.

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 combinaionale. Acest limbaj realizeaz o descriere a comportrii structurii fizice, ascunznd detaliile de implementare i acoperind astfel o gam larg de aplicaii, permind simularea circuitelor digitale din cele mai diverse. Limbajul VHDL este folosit n procesul de proiectare a circuitelor digitale ncepnd de la nivelul de sistem i pn la nivelul porii logice. De asemenea, datorit caracterului su descriptiv, limbajul VHDL poate constitui de multe ori documentaia de funcionare a unei structuri fizice. Etapele proiectrii unui circuit logic digital cu ajutorul limbajului VHDL sunt: 1. descrierea detaliat a sistemului se stabilesc cerinele ce trebuie s le ndeplineasc sistemul ce urmeaz s fie proiectat; 2. proiectarea sistemului se face modelarea comportrii sistemului n limbaj VHDL; 3. validare verificarea modelului prin furnizarea stimulilor i verificarea rspunsului ateptat; 4. proiectarea logic modelarea structurii la nivel RTL (Registertransfer-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 i verificarea rspunsului ateptat; 6. proiectarea circuitului conversia automat a descrierii structurale; 7. validare verificarea rezultatului prin furnizarea stimulilor i verificarea rspunsului ateptat; 8. obinerea planului general a circuitului se obin datele necesare implementrii fizice a circuitului pe baza listei de conexiuni (netlist); 9. validare verificarea final a rezultatului obinut, cu ajutorul datelor furnizate de fabricantul circuitelor, prin furnizarea stimulilor i verificarea rspunsului ateptat. 1.7.3.1. Structura unui program VHDL n limbajul VHDL se consider c un sistem este alctuit din trei pri eseniale: interfaa (entity) sistemului cu mediul, corpul (architecture) sistemului cu ajutorul cruia sunt prelucrate semnalele furnizate de interfa i care trimite prin interfa semnale spre exterior i elementele suplimentare (package) adugate corpului sistemului pentru adugarea unor funcii noi. Aceste componente constituie elemente de proiectare independente ale limbajului ce vor fi prezentate succint n continuare. Elementul de baz a limbajului, care descrie interfaa sistemului cu mediul extern, este entitatea (entity). Nu poate fi conceput un program n limbaj VHDL fr nici o entitate. De asemenea, proiectarea unui sistem va ncepe cu declararea unei entiti.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

101

Entitatea furnizeaz specificaii ale interfeei sistemului prin dou elemente: parametrii sistemului care sunt vzui din exterior i conexiunile prin care se transfer informaia din i ctre sistem (intrrile i ieirile sistemului). Parametrii sistemului reprezint declaraii generice care sunt transferate corpului sistemului folosindu-se cuvntul rezervat generic. Conexiunile sistemului desemneaz porturile de intrare, de ieire sau de intrare/ieire a acestuia cu ajutorul cuvntului rezervat port. Declararea unei entiti, n general, este dat n exemplul 28. EXEMPLUL 28 -- Un exemplu de definire a unei entitati entity <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 entiti corespunztoare unei pori logice SAU (or gate). EXEMPLUL 29 -- or gate entity org is ----------------------------------------------------------generic (tpd_hl : time := 1 ns; -- parametrii tpd_lh : time := 1 ns); ----------------------------------------------------------port (in1, in2 : std_logic; -- conexiuni out1 : out std_logic); ----------------------------------------------------------end org; Comentariile n limbajul VHDL se marcheaz, pe fiecare linie, cu dou liniue -" n faa comentariului iar instruciunile se termin ntotdeauna cu caracterul punct i virgul ; ". Dup definirea entitii trebuie definit modul n care sistemul prelucreaz informaia, adic ceea ce s-a numit corpul sistemului. Corpul sistemului este definit prin intermediul arhitecturii (architecture) acestuia (architecture of entity) care poate fi de dou feluri: descriere structural i descriere comportamental. Descrierea structural se refer la elementele componente ale sistemului i modul de interconectare a acestora pentru a obine comportarea dorit a sistemului. Sinteza pe baza descrierii structurale este mai simplu de fcut deoarece acest tip de descriere se refer la modulele componente concrete ale sistemului. Descrierea comportamental (funcional) se refer la modul de prelucrare a semnalelor de ctre sistem fiind vorba n general de specificarea semnalelor de ieire n funcie de semnalele de intrare. Sinteza pe baza acestui tip de descriere este mai dificil de fcut deoarece exist mai multe posibiliti de realizare fizic.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

102

Programele de sintez a circuitelor digitale folosesc, n general, att descrierea structural ct i cea comportamental a sistemului. Deoarece variante diferite de arhitecturi ale sistemelor digitale pot implementa aceeai funcie, pentru o entitate (un sistem) pot exista mai multe arhitecturi diferite (reciproca nu este adevrat deoarece unei arhitecturi nu-i pot corespunde mai multe interfee entiti diferite). n exemplul 30 este prezentat descrierea comportamental (algoritmic) a porii logice SAU a crei entitate este definit n exemplul 29. EXEMPLUL 30 architecture only of org is begin p1: process(in1, in2) variable val : std_logic; begin val := 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 de text, mrginit, care conine o seciune de declaraii i o seciune executabil. Un corp arhitectural este un bloc cu deosebirea c, n interiorul unui corp arhitectural pot fi formate alte blocuri. n exemplul 31 este prezentat corpul arhitectural BLOCK_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. Numrul nivelelor de includere este, n general, nelimitat. EXEMPLUL 31 Architecture BLOCK_STRUCTURED of SYSTEM is -- seciunea declaraiilor blocului exterior begin -- instruciuni executabile ale blocului exterior A: block -- seciunea de declaraii pentru blocul interior A begin -- instruciuni executabile pentru blocul interior A end block A; B: block

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE -- seciunea de declaraii pentru blocul interior B begin -- instruciuni executabile pentru blocul interior B end block B; end BLOCK_STRUCTURED;

103

Atunci cnd anumite elemente sunt mai frecvent ntlnite n programele VHDL sau n situaia n care dorim s utilizm elemente predefinite n biblioteci se folosesc pachetele (package) care ncapsuleaz elemente ce pot fi folosite simultan n mai multe uniti 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 entitii care folosete un element declarat n pachet. n exemplul 32 se arat regula de definire a unui pachet. EXEMPLUL 32 package <identificator> is -- partea declarativ a pachetului end [package] [identificator]; Identificatorul furnizeaz un nume pentru pachet, nume care se poate folosi oriunde ntr-un model pentru a face referire la pachetul respectiv. n interiorul declaraiei de pachet se scriu declaraii care includ tipuri, subtipuri, constante, semnale i subprograme. Limbajul VHDL are cteva pachete predefinite, folosite n mod frecvent, dintre care cele mai importante sunt: pachetul STANDARD, pachetul TEXTIO i pachetul STD_LOGIC_1164. Pachetul STANDARD este ncrcat n mod implicit de ctre compilatorul VHDL i conine declararea tuturor tipurilor standard, a operatorilor i obiectelor limbajului. Pachetul TEXTIO conine declaraii de tip i obiecte referitoare la citirea i scrierea textelor. Pentru utilizarea acestui pachet, naintea descrierii entitii, trebuie scrise urmtoarele declaraii: library Std; use Std.TextIO.all; Pachetul STD_LOGIC_1164 conine extensii ale limbajului VHDL standard. Pentru utilizare se folosesc declaraiile: library IEEE use IEEE.Std_Logic_1164.all; 1.7.3.2. Testarea programelor VHDL Testarea unei modelri realizate n limbajul VHDL se face, similar cu cea n limbajul Verilog, cu ajutorul unei entiti de nivel nalt numit test bench. Exist i alte posibiliti dar aceast metod este cea mai folosit.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

104

VHDL test bench este de asemenea o specificaie care are propria ei entitate i arhitectur dar este o specificaie de tip special cu elemente caracteristice unei astfel de structuri. Principalele elemente ale unei specificaii test bench sunt: entitatea test bench caracterizat prin faptul c nu are porturi; instanierea componentei UUT (Unit Under Test) relaia dintre test bench i UUT este specificat prin instanierea componentei i specificaiile de tip structural; stimulii ce reprezint un set de semnale declarate intern n arhitectura test bench i atribuite porturilor din instanierea UUT. Stimulii sunt definii prin forma de und prin una sau mai multe procese comportamentale.

n exemplul 33 este prezentat structura general a test bench. EXEMPLUL 33 entity TB is end entity TB; architecture TBArch of TB is signal A, B, :bit; signal ; begin UUT: entity work.MyProcessor(Beh) port map (); stimuli: process begin A <= ; B <= ; wait for ; wait for ; wait; end process stimuli; end architecture TBArch; -- entitatea testbench

-- declararea stimulilor -- instaniere UUT

Exist dou tipuri de semnale permise de specificaiile VHDL: bit (pentru un singur semnal, echivalent wire) i bit_vector (n cazul magistralelor, echivalent bus, situaie n care trebuie specificat i dimensiunea vectorului). Ordinea biilor unui vector este de asemenea important i ea trebuie precizat la specificarea dimensiunii vectorului. De exemplu, pentru un vector de opt bii la care bitul apte este cel mai semnificativ bit (MSB), se scrie: bit_vector (7 downto 0) iar cnd bitul zero este cel mai semnificativ bit: bit_vector (0 to 7).

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

105

Pentru a exemplifica modul de analiz a circuitelor logice combinaionale cu ajutorul limbajului VHDL vom exemplifica modul de simulare a unei pori NAND i a unui multiplexor cu dou intrri 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 programului Modelsim. Modul de lucru este identic numai c de data aceasta fiierele se vor scrie n limbajul VHDL. Primul exemplu, cel de simulare a porii logice NAND va conine dou fiiere: un fiier n care este modelat poarta logic NAND numit gate.vhd i un fiier pentru simularea acesteia numit test_gate.vhd. Conform celor artate n paragraful 1.7.2.2. se creeaz un proiect nou cu cele dou fiiere. Coninutul fiierelor este dat n exemplul 34. EXEMPLUL 34 -- continutul fisierului gate.vhd
entity gate is port( a:in bit; b:in bit; q:out bit ); end gate; architecture dataflow of gate is signal q_prim: bit; begin q_prim <= a and b after 5 ns; q <= not q_prim; end dataflow;

-- continutul fisierului test_gate.vhd


entity test is end test; architecture testNand of test is component 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); begin c1: 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;

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

106

Aceste fiiere se compileaz i se elimin eventualele erori dup care se deschide biblioteca work asa cum s-a artat n paragraful 1.7.2.2. i se trece la simularea circuitului. Rezultatele simulrii sunt artate n figura 1.67.

1.67. Rezultatele simulrii porii logice NAND.

Se propune ca exerciiu explicarea formelor de und obinute. Cel de-al doilea exemplu se refer la multiplexorul cu dou intrri prezentat n figura 1.50. n acelai fel, ca cel artat mai sus, se deschide un proiect nou i aici se realizeaz cele dou fiiere: mux2to1.vhd cu modelarea multiplexorului i test_mux2to1.vhd pentru simularea acestuia. n exemplul 35 este prezentat coninutul acestor fiiere. EXEMPLUL 35 -- continutul fisierului mux2to1.vhd
library 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.vhd


entity TB is end; library IEEE; use IEEE.std_logic_1164.all; architecture TBArch of TB is

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE


component mux2to1 port ( IN0, IN1, SEL : IN std_logic; MUX_OUT : OUT std_logic); end component; signal IN0, IN1, SEL, MUX_OUT : std_logic; begin uut: 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;

107

Rezultatul simulrii multiplexorului cu dou intrri este prezentat n figura 1.68.

Fig. 1.68. Rezultatul simulrii multiplexorului cu dou intrri.

Aa cum rezult i din cele prezentate, utilizarea limbajelor pentru descrierea structurii fizice, degreveaz proiectantul de activitatea privind amnuntele realizrii fizice a dispozitivului numeric, atenia fiind ndreptat n primul rnd spre funciile i performanele sistemului. Modul de implementare fizic a structurii proiectate reprezint tehnologii proprii ale firmelor productoare de dispozitive numerice de tip ASIC (Application-Specific Integrated Circuit) sau FPGA (Field-Programmable Gate Array) i sunt supuse continuu mbunatirilor i perfecionrilor.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

108

CAPITOLUL 2
Analiza i sinteza circuitelor logice secveniale
2.1. Introducere

Circuitele logice secveniale (CLS) sunt circuite logice la care starea ieirilor la un moment dat depinde de starea intrrilor la acel moment de timp i de strile anterioare ale circuitului. Din acest motiv se spune c circuitele logice secveniale sunt circuite cu memorie. Schema bloc a unui circuit logic secvenial este prezentat n figura 2.1.
Circuit logic secvenial x0 x1 . . . xn y'0 Intrri secundare 1 y0 y1 . . . yk z0 z1 . . . zm Intrri principale Ieiri principale

y1 . 2 . . yk k

Circuit logic combinaional

Figura 2.1. Reprezentarea schematic a unui circuit logic secvenial

Circuitul logic secvenial (CLS) se obine dintr-un dircuit logic combinaional (CLC) la care se adaug o serie de elemente de circuit secundare (memorie), care reprezint conexiuni de reacie invers. Circuitul logic secvenial reprezentat n figura 2.1 are n+1 intrri principale sau primare, notate cu x0, x1, , xn, accesibile din exterior i m+1 ieiri principale sau primare,

Ieiri secundare

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

109

notate cu z0, z1, , zm, de asemenea accesibile din exterior. Memoria circuitului secvenial este realizat de ctre elementele de circuit secundare, ale cror ieiri y0, y1, , yk, sunt aduse prin legturi inverse la intrarea circuitului, formnd intrrile secundare ale circuitului secvenial, y0, y1, , yk. Starea ieirilor y0, y1, , yk, formeaz starea (intern) urmtoare a circuitului, iar starea intrrilor y0, y1, , yk, formeaz starea (intern) prezent a circuitului secvenial. Starea urmtoare devine stare prezent dup un timp determinat de ntrzierile cauzate de ctre elementele de ntrziere special introduse n buclele de reacie sau de ntrzierile de propagare a semnalelor, inerente circuitelor fizice. Relaia ce exist ntre intare, ieire, starea prezent i starea urmtoare poate fi exprimat fie prin tabele de stare, fie prin diagrame de stare. leirile unui circuit de comutare secvenial pot fi exprimate n general ca funcii booleene de intrrile i starea intern a acestuia : z1 = z1 ( x0 , x1 , K, xn , y0 , y1 , K, yk ) M z0 = z0 ( x0 , x1 , K, xn , y0 , y1 , K, yk ) (2.1)

zm = zm ( x0 , x1 , K, xn , y0 , y1 , K, yk )

Pentru a descrie complet comportarea unui circuit secvenial trebuie s se specifice pe lng ecuaiile ieirilor (2.1) i comportarea sa intern, adic s se indice corespondena ntre starea intrrilor principale i secundare, denumit i starea total a circuitului, i starea urmtoare a circuitului. Se presupune n cele ce urmeaz c circuitul are o comportare determinist, adic pentru o anumit stare a intrrilor (un set de semnale x0, x1, , xn) i o anumit stare intern (un set de valori pentru y0, y1, , yk) exist o singur tranziie posibil, ntr-o stare y0, y1, , yk. n acest caz, o variabil de stare yk poate fi exprimat ca o funcie boolean de intrrile circuitului i starea sa intern :
' ' y0 = y0 ( x0 , x1 , K, xn , y0 , y1 , K, yk )

y1' = y1' ( x0 , x1 , K, xn , y0 , y1 , K, yk ) M

(2.2)

' ' yk = yk ( x0 , x1 , K, xn , y0 , y1 , K, yk )

Ecuaiile (2.2) poart denumirea de ecuaiile strii urmtoare. Circuitul secvenial se afl ntr-o stare stabil atunci cnd pentru o anumit stare a intrrilor, starea sa (intern) prezent este identic cu starea (intern) urmtoare, adic yi = y'i, pentru i = 0, 1, . . ., k. Dac pentru o anumit stare a intrrilor, starea prezent a circuitului difer de starea sa urmtoare, adic yi y'i cel puin pentru un anumit i {0, 1, . . ., k), circuitul se afl ntr-o stare instabil. Pentru ca un circuit secvenial s se comporte determinist, trebuie ca pentru fiecare stare posibil a intrrilor s existe cel puin o stare intern stabil. Circuitele secveniale la care ecuaiile ieirii sunt de forma (2.1) iar ecuaiile strii urmtoare sunt de forma (2.2) se numesc circuite secveniale de tipul Mealy, iar modelul lor matematic, automat de tipul Mealy. Exista circuite secveniale la care strile ieirilor nu depind de strile intrrilor

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

110

principale, ci numai de strile intrrilor secundare, adic de starea intern a circuitului. n acest caz, ecuaiile ieirii (2.1) se transform n ecuaiile: z0 = z0 ( y0 , y1 , K, yk ) z1 = z1 ( y0 , y1 , K, yk ) M zm = z m ( y0 , y1 , K, yk ) (2.3)

Circuitele secveniale la care ecuaiile ieirii sunt de forma (2.3) iar ecuaiile strii urmatoare de forma (2.2) se numesc circuite secveniale de tipul Moore, iar inodelul lor matematic, automat de tipul Moore. Atunci cnd numrul de stri interne ale unui circuit secvenial este finit, circuitul este denumit circuit secvential finit iar modelul sau matematic, automat finit. n continuare se vor trata numai circuitele secveniale binare, la care fiecare dintre variabilele de intrare, de ieire, respectiv de stare pot avea numai dou valori, zero i unu, cu numr finit de stri. Temporizarea semnalelor este foarte important n circuitele secveniale. n acest sens, circuitele logice secveniale sunt clasificate n dou categorii:
o circuite secveniale asincrone; o circuite secveniale sincrone.

n circuitele secveniale asincrone starea curent (intrrile secundare provenite pe calea de reacie) poate fi modificat n orice moment ca efect al schimbrii variabilelor aplicate la intrarea primar. Elementul de memorie de pe calea de reacie este n mod obinuit un dispozitiv de ntrziere; ntrzierea este realizat prin propagarea semnalului printr-un ir de pori logice. ntrzierea prin porile logice nu poate fi controlat i de aceea circuitele secveniale asincrone pot deveni instabile. Proiectarea circuitelor secveniale asincrone este complicat, de aceea majoritatea circuitelor secveniale utilizate sunt de tip sincron. La circuitele logice secveniale sincrone spre deosebire de cele asincrone, apare o intrare suplimentar, intrarea semnalului de ceas. Circuitele secveniale sincrone sunt circuite la care schimbarea strii i a ieirii are loc la momente de timp bine definite. Aceste momente sunt asociate cu frontul cresctor sau cu frontul cztor al unui semnal de temporizare cunoscut ca semnal de
amplitudine front cresctor

front descresctor timp

durata perioada

palier unu (HIGH)

palier zero LOW

Figura 2.2. Elementele semnalului de ceas.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

111

ceas (clock, tact). n mod obinuit semnalul de ceas (clock) este un semnal dreptunghiular ale crui elemente sunt redate n figura 2.2. Cnd semnalul de ceas face o tranziie de la zero la unu, avem un front cresctor; cnd semnalul de ceas face o tranziie de la unu la zero, avem un front cztor (sau descresctor). Din diagrama de timp a semnalului se poate observa c perioada semnalului de clock este intervalul de timp dintre dou tranziii succesive n acelai sens (ntre dou fronturi cresctoare sau ntre dou fronturi cztoare). Tranziiile n circuitele secveniale sincrone au loc doar n momentele cnd semnalul de clock are fie un front cresctor, fie un front cztor. La ieirea unui circuit sincron nu are loc nici o schimbare ntre dou fronturi succesive, indiferent de valoarea variabilelor aplicate la intrare. Frecvena semnalului de ceas este inversul periadei semnalului de ceas. Limea semnalului de ceas este definit ca fiind intervalul de timp n care semanlul are valoarea unu. Raportul dintre limea semnalului i perioada acestuia este numit factor de umplere. Un semnal de clock este activ pe front cresctor dac starea circuitului sincron se schimb pe frontul cresctor al semnalului de clock. Dac starea circuitului sincron se schimb pe frontul cztor, semnalul de clock este activ pe front cztor.

2.2.

Tabelul tranziiilor i al ieirilor

Comportarea unui circuit secvenial poate fi descris prin tabelul tranziiilor i tabelul ieirilor, care reprezint o modalitate de reprezentare a funciilor (2.2) respectiv (2.1). n tabelul tranziiilor exist attea coloane cte stri diferite ale celor n+1 intrri xi (i = 0, 1, ..., n) exist, adic 2n+1 coloane i attea rnduri cte stri interne distincte exist, adic 2k+1 rnduri, unde k+1 este numrul variabilelor secundare yi. Un element al tabloului tranziiilor, aflat la intersecia unei coloane cu o anumit linie, reprezint starea urmatoare a circuitului, corespunztoare strii interne de pe linia respectiv i strii intrrilor de pe coloana respectiv. Pentru automatele de tipal Mealy, tabelul ieirilor are aceleai linii i coloane ca i tabelul tranziiilor. Un element al tabelului ieirilor, aflat la intersecia unei anumite coloane cu o anumit linie reprezint starea ieirilor corespunzatoare strii intrrilor de pe coloana respectiv i strii interne de pe rndul respectiv. Pentru automatul de tipul Moore tabelul ieirilor are o singur coloan. n tebelul tranziiilor i al ieirilor, strile, respectiv ieirile, sunt notate simbolic, de obicei prin numere zecimale sau prin numere binare. n cel de-al doilea caz, codul binar al strii urmatoare, respectiv al ieirii reprezint valorile sistemului de funcii (2.1), respectiv (2.2) sau (2.3) pentru starea prezent de pe rndul respectiv i pentru starea intrrilor de pe coloana respeetiv. Aceste tabele pot fi completate dac se cunoate structura circuitului, determinnd, n modul artat la circuitele combinaionale, valoarea fiecreia dintre: funciile 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 secvenial a crui reea de comutare este dat n figura 2.3.a. Pentru a ine cont de ntrzierile introduse de firele de legtur i de ntrzierea proprie a circuitului logic, se consider toate aceste ntrzieri concentrate n elementele de ntrziere notate n figura 2.3.b. cu 0 i 1. Aceast ipotez simplificatoare permite analizarea corect a comportrii circuitului, deoarece nu

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

112

U1A X0 2 1 3 7402 Z0

U1A X0 Y1 7402 2 3 Y1 1

Z0

U2A 2 1 X1 3 7402 Z1

U2A Y0 2 X1 3 7402 Y2 1

Z1

Fig 2.3.a.

Fig 2.3.b.

Fig. 2.3. Analiza unui circuit secvenial asincron

influeneaz asupra modului de funcionare. Variabilele x0 i x1 din figura 2.3.b. reprezint intrrile principale ale circuitului, fiecare din ele putnd avea dou valori: 0 i 1 care corespund unor semnale de tensiune, corespondena stabilindu-se n funcie de logica adoptat (negativ sau pozitiv). Variabilele y0 i y1 reprezint intrrile secundare ale circuitului sau starea lui intern prezent, iar variabilele y'0 i y'1 starea intern urmtoare. Att y0 i y1 ct i y'0 i y'1 pot avea valoarea logic 0 sau 1. ntre y0 i y'0 respectiv y1 i y'1 exist relaiile (2.4).
TABELUL 2.1. a. x0x1 00 01 y0y1 00 11 10 01 01 00 11 00 00 10 10 10 b.

11 00 00 00 00

10 01 01 00 00

Din relaiile (2.4) rezult c dup un interval de timp egal cu 0 valoarea variabilei secundare y0 z0 z 1 devine egal cu valoarea variabilei secundare y'0, respectiv dup un y'0y'1 interval de timp 1 valoarea variabilei secundare y1 devine egal cu valoarea variabilei secundare y'1, n momentul considerat. Lund pentru simplificare 0=1 = , rezult c dup un interval de timp egal cu starea urmtoare devine starea prezent. Circuitele secveniale la care starea urmtoare devine stare prezent dup un timp determinat de ntrzierile inerente circuitului se numesc circuite secveniale asincrone sau circuite funcionnd n modul fundamental. Pentru ca un astfel de circuit s funcioneze determinist, se impune ca pe fiecare coloan din tabelul tranziiilor, adic pentru fiecare stare a intrrilor, s existe cel puin o stare stabila. Circuitele secveniale la care starea urmatoare devine starea prezent numai la anumite momente de timp bine determinate, marcate prin impulsuri de tact date de ctre un generator de impulsuri numit ,,orologiu", se numesc circuite secveniale sincrone. Elementele de memorie ale circuitelor secveniale sincrone sunt circuite basculante bistabile. La circuitele secveniale sincrone legturile inverse, adic intrrile la circuitele basculante bistabile, sunt ntreruptc n lipsa impulsurilor de tact fiind stabilite numai n prezena tactului (fig. 2.4). Durata impulsului de tact se ia suficient de scurt, astfel nct legturile inverse s fie ntrerupte nainte ca ieirile secundare ale circuitului sa-i modifice starea n conformitate cu starea intrrilor i starea n care a trecut circuitul n timpul impulsului de tact considerat. n acest fel toate strile circuitului secvenial sincron sunt

y0y1 00 01 11 10

00 01 11 10

' y0 (t ) = y0 (t + 0)

y1' (t ) = y1 (t + 1)

(2.4)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

113

stabile.
x0 x1 xn y0 y1 yk z0 z1 zm y'0 y'1 y'k

Circuitul din fig. 2.3b are ieirile z0, z1 identice cu intrrile secundare y0, respectiv y1. Ieirea depinde numai de starea intern, deci circuitul secvenial este de tipul Moore. Deoarece exist dou variabile de stare, dou intrri i dou ieiri, circuitul are patru stri interne, patru stri diferite ale intrrilor i patru stri diferite ale ieirilor i anume: 00, 01, 11 i 10. Pentru a putea completa tabelul tranziiilor se caut expresiile funciilor y'0 i y'1 realizate de circuit. n acest scop se folosete tabelul 2.2 ntocmit n modul artat n paragraful 1.2 (tabelul 1.2). Cunoscnd funciile y'0(x0 x1, y0, y1) i y'1(x0 x1, y0, y1) se completeaz tabelul tranziiilor i al ieirilor (tabelul 2.1.a i b.). Analiznd tabelul 2.1.a observm c, spre exemplu, y1' = x1 + y0 pentru x0=0, x1=0 i y0=0, y1=0 (intersecia primei linii cu prima coloan) se obine valoarea y'0=1, y'1=1. Aceast valoare devine valoarea lui y0y1 dup o ntrziere (starea urmtoare devine stare prezent) i atunci ne ducem n tabel la situaia 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 stri, fapt semnalat n tabel cu sgetile cu linie punctat. Dac vom considera acum c la intrrile circuitului avem situaia x0=0, x1=0 i y0=0, y1=1, observam din tabel c starea urmtoare este y'0=0, y'1=1 ceea ce conduce la concluzia c circuitul rmne n aceast stare i deci avem o stare stabil. Sgeile cu linie plin indic evoluia circuitului ctre strile stabile. n tabelul tranziiilor (tabelul 2.1.a) s-au ncercuit strile stabile. Dup cum se vede, circuitu1 are trei stri stabile. n practic se gsesc ns numai dou dintre Observaii ' y0 = x0 + y1
TABELUL 2.2. x0 x1 y0 y1 y'0 y'1 1 0 x x 0 1 x 0 0 x

CIRCUIT LOGIC COMBINAIONAL Q Q Q S

CBk R
S

CB1 R
S

CB0 R
SINCRONIZARE Fig. 2.4. Modelul unui circuit logic secvenial sincron.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

114

acestea : starea 10, numit starea 1 i starea 01, denumit starea 0. Aceasta se datorete faptului c la un circuit real nu poate fi controlat tranziia din starea 00, dect n cazul cnd se modific numai una dintre variabilele de intrare. De exemplu, dac circuitul se afl n starea stabila 00, ceea ce corespunde la x0=l i x1=l i se modific starea intrrii x0 din 1 n 0, se trece din starea stabil 00 n starea instabil 10 din care se trece apoi n starea stabila 10 (tabelul tranziiilor, coloana a doua). Dac ns circuitul se afl n starea stabila 00 i se modific intrarea x1 din 1 n 0, se trece prin starea instabil. 01 n starea stabila 01 (tabelul tranziiilor, coloana a patra). Atunci cnd circuitul se afl n starea stabil 00 i se modific ambele intrri, adic starea intrrilor devine x0=0 i x1=0, circuitul ar trebui sa intre teoretic n oscilaie, adic s fac tot timpul tranziia din starea instabil 11 n starea instabil 00 (prima coloan din tabelul tranziiilor). Aceast situae nu poate s apar n practic deoarece, chiar dac s-ar putea modifica simultan ambele intrri, nu se pot modifica simultan, din cauza ntrzierilor diferite pe cele dou ci de legatur invers, strile interne ale circuitului astlel nct aceasta se stabilete dup cum se modific mai repede y0 sau y1, fie n starea 10 fie n starea 01. Pentru ca circuitul s poat funciona determinist se impune deci condiia ca intrrile sa nu fie niciodat simultan n starea 1. Aceasta condiie se poate formula prin expresia logic : x0 x1 = 0 (2.5)

impunnd circuitului studiat anterior coudiia (2.5), acesta devine un circuit cu dou stri stabile, denumit circuit basculant bistabil RS ( x0 = S , x1 = R, z0 = Q, z1 = Q , figura 2.5).
S

SR Q 1 0

00 1 0

01 0 0 Q
b.

11 -

10 1 1

a.

Fig.2.5. Circuit basculant bistabil RS construit cu pori SAU-NU.

Timpul ct intrarea S respectiv intrarea R trebuie s stea n starea unu pentru ca circuitul s fie adus, indiferent n ce stare s-ar afla, n starea unu, respectiv zero, este limitat numai inferior i anume acest timp trebuie s fie cel puin egal cu suma ntrzierilor 0 i 1. Deoarece exist numai dou stri stabile se folosete o singur variabil de stare, notata n figura 2.5 cu Q, care joac i rolul de variabil de ieire (pentru convenia facut privind iirile, z0 = Q, z1 = Q ). Tabelul tranziiilor pentru circuitul basculant bistabil RS este redat n figura 2.5b. Conform celor discutate, acest tabel se construiete astfel: prma coloan, din stnga tabelului, va conine cele dou stri stabile ale circuitului pentru situaia n care S=0 i R=0; coloana a doua este coloana comenzii RESET (S=0, R=1) n care circuitul trece din starea instabil zero (cnd Q=1) n starea stabil zero; coloana a treia nu este definit pentru c se exlude situaia n care S=1, R=1 iar coloana a patra este coloana comenzii de SET cnd circuitul trece din

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

115

starea instabil unu (cnd Q=0) n starea stabila unu. Trebuie menionat c n timpul tranziiilor cele dou ieiri, respectiv intrri secundare nu sunt ntotdeauna complementare dup cum se poate vedea din tabelul tranziiilor 2.1 a. Din tabelul tranziiilor rezultat n urma consideraiilor fcute mai sus (fig. 2.5b), se obine ecuaia strii urmtoare, Q' ca funcie de variabilele de intrare Q, R i S sub forma :

Q| = S R + Q R

(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:
SR = 0

(2.7)

rezult ecuaia bistabilului RS:

Q| = S R + Q R + SR = S R + R + Q R = S + Q R
(x0)
S
U1A 1 2

(2.8)

n mod asemntor se poate 11 11 11 realiza un circuit 11 01 01 basculant bistabil de (y0) (x1) Q 10 00 01 tipul RS cu elemente R (y|1) 10 10 11 logice SI-NU, (fig. Fig. 2.6. Bistabil RS cu 2.6.) cruia i pori NAND corespunde tabelul y'0y'1 tranziiilor 2.3. Trebuie notat faptul c nu s-au mai reprezentat ntrzierile dar se ine cont de ele. Acest tabel se obine procednd la fel ca i n cazul circuitelor basculante bistabile de tipul RS cu elemente logice SAU-NU. Se obine tabelul 2.4. care reprezint tabelul tranziiilor circuitului basculant bistabil RS realizat cu circuite I-NU. Se vede imediat c ecuaia care descrie acest circuit este ecuaia (2.8). Z1 TABELUL 2.4. U2A 1 X0 SR 3 00 01 11 10 2 Q 7400 1 1 1 0 Z0 U3A 0 1 0 0
(y1)
Q

(y|0) 3

74LS00

U2A

1 2

74LS00

TABELUL 2.3. x0x1 00 y0y1 00 11 01 11 11 11 10 11

01

11

10

X1

1 2

3 7400

U1

Y' Circuitele basculante Q R bistabile RS sunt circuite secveniale Q S elementare care pot juca rolul de element de memorie n cadrul unor Fig. 2.7. Circuit secvenial cu bistabil RS. circuite secveniale mai complexe. Ca exemplu, se va analiza circuitul secvenial din figura 2.7.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

116

Starea inten a acestui circuit este determinat de starea bistabilului RS din bucla de reacie i se modific n conformitate cu ecuaia de stare a acestuia, deci starea urmtoare a circuitului va fi dat de relaia :
Y | = S + RY

(2.9)

Scriind expresiile funciilor S i R realizate de partea combinaional a circuitului (partea ncadrat cu linie ntrerupt din figura 2.7), rezult:

R = x0Y = x0 + Y , S = x1Y , S = x1Y nlocuind n ecuaia (2.9) se obine:


Y | = x1Y + x0 + Y Y = x0Y + x1Y

(2.10)

(2.11)

TABELUL 2.5. x0x1 00 01 11 10 Y 0 0 1 1 0 1 1 1 0 0

Acestei ecuaii i corespunde tabelul tranziiilor 2.5. Din acest tabel rezult c circuitul analizat se comport, atta timp ct se aplic semnal de comand numai la una din intrri, ca un circuit basculant bistabil RS, iar atunci cnd se comand ambele intrri circuitul basculeaza (ii | schimb starea). n cazul circuitului analizat aplicarea unui Y semnal de comand la una din intrari U2A nseamn aducerea intrrii respective U1A U3A 1 1 3 1 2 n starea 1. Circuitul cu o asemenea 3 2 3 1 3 2 2 z comportare poart denumirea de 74LS08 74LS32 74LS32 circuit basculant bistabil JK, la care a. se noteaza cu J intrarea de aducere in U1A starea 1 (J=x1,) iar cu K intrarea de | y0 1 x y1 aducere n starea 0 (K=x0). Dup cum 74LS32 U2A se vede din tabelul tranziiilor 2.5, pe U3A 2 coloana corespunztoare strii y0 3 74LS08 z intrrilor 11 nu exist stare stabil, | U4 74LS32 y 1 deci acest circuit nu poate funciona 1 asincron. Ecuaia de stare a DELAY U5 circuitului basculant bistabil JK 0 asincron se poate obine din ecuaia DELAY (2.11) realiznd modificrile b. menionate mai sus. Se obine ecuaia Figura 2.8. Circuit secvenial asincron. (2.12): (2.12)

Q| = K Q + J Q

n practic se folosesc ns frecvent circuite basculante bistabile JK sincronizate. Un circuit basculant de tip T se poate obine dintr-un circuit basculant bistabil de tip JK prin conectarea intrrii J la intrarea K printr-un inversor. n acest fel, pe intrrile

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

117

J i K ale bistabilului nu se pot aplica dect combinaiile: 01 i 10. Rezult c ecuaia de stare a bistabilului de tip T este: Q| = T Q + T Q (2.13)

n exemplele considerate anterior, ieirile circuitelor secveniale depindeau numai de variabilele de stare ale circuitului (automate de tip Moore). De multe ori ns, ieirile circuitului secvenial sunt funcii, nu numai de starea circuitului, ci i de intrrile sale (automate de tip Mealy). Ca exemplu, se consider circuitul secvenial din figura 2.8.a. Pentru a analiza comportarea circuitului, se consider ntrzierile pe liniile de legtur i ntrzierile elementelor logice concentrate la ieirile elementelor logice cu numerele 1 i 3 de la care, prin legturi inverse se obin intrrile secundare ale circuitului (fig. 2.8.b). Pentru simplificare se ia 0=1=. n aceste condiii, ecuaiile strii urmtoare sunt date de relaiile :
| y0 = x + y1 | y1 = xy0 + y1

(2.14)

Unde y|i(t) = yi(t+), pentru i=0 i 1, iar ecuaia ieirii, z, este dat de relaia :
z = xy1 + y2

(2.15)
TABELUL 2.7. x 0 y1y2 00 00/0 01 11/1 11 11/1 10 00/0

TABELUL 2.6. x 0 y1y2 00 00 01 11 11 11 10 00

1 10 11 11 11

x y1y2 00 01 11 10

0 0 1 1 0 z

1 0 1 1 1

1 10/0 11/1 11/1 11/1

y|0y|1

y|0y|1/z

Comportarea circuitului este redat n tabelul tranziiilor i al ieirilor 2.6. Adeseori, pentru circuitele secveniale de acest tip, tabelul tranziiilor i al ieirilor se unific ntr-un singur tabel, sub forma tabelului 2.7. Pentru simplificarea scrierii, strile, intrrile i ieirile din tabelul tranziiilor sunt notate adeseori prin litere sau cifre zecimale. Folosind astfel de notaii se obine tabelul tranziiilor i al ieirilor. De exemplu, dac n tabelul tranziiilor 2.7 se folosesc notaiile: starea 00 q0, starea 01 q1, starea 11 q2, starea 10 q3, intrarea 0 i0, intrarea 1 i1, ieirea 0 w0, ieirea 1 w1,

(2.16)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

118

se obine tabelul 2.8 sau folosind numai indicii strilor, ieirilor i intrrilor din relaiile (2.16), se obine tabelul strilor 2.9.
TABELUL 2.8
Intrare stare prezent

TABELUL 2.9
Intrare

i0 q0/w0 q2/w1 q2/w1 q0/w0

i1 q3/w0 q2/w1 q2/w1 q2/w1

stare prezent

0 0/0 2/1 2/1 0/0

1 3/0 2/1 2/1 2/1

q0 q1 q2 q3

0 1 2 3

starea urmtoare/ieire

starea urmtoare/ieire

2.3.

Graful tranziiilor

Comportarea unui circuit secvenial poate fi redat pe lng tabelul tranziiilor, respectiv tabelul strilor i prin graful tranziiilor, respectiv diagrama strilor. n graful tranziiilor (diagrama strilor) fiecare stare a circuituhii se reprezint printr-un nod, iar fiecare tranziie printr-un arc. Circuitele secveniale de tipul Moore au nscrise n noduri strile, simbolic sau codificate binar, i ieirile corespondente separate prin slash (simbolul de mprire /), iar pe arce au notate intrrile care provoac tranziia respectiv (fig. 2.9). Circuitele secveniale de tipul Mealy au nscrise pe arce intrrile care cauzeaz tranziia, i ieirile obinute n timpul tranziiei respective, iar n noduri sunt nscrise strile circuitului (fig. 2.10). n graful de tranziie, starea iniial poate fi reprezentat printr-un cerc realizat cu o linie dubl.
0/11/1 11 0/1 01
Fig. 2.10. Graful tranziiilor pentru circuitul secvenial din figura 2.8.

0/0 0010 0/0 11


Fig. 2.9. Graful tranziiilor pentru circuitul secvenial din figura 2.7.

1/0 00 0/0 10

1/1

11

0001 1/1

1/1

2.4.

Alte modele ale circuitelor secveniale

n paragrafele anterioare s-au prezentat cteva modele ale circuitelor secveniale fie pentru descrierea lor structural, reeaua de comutare sau schema logic, fie pentru descrierea comportrii lor, tabelul tranziiilor, tabelul strilor, graful tranziiilor i diagrama strilor. De asemenea se d o definiie formal a celor dou tipuri de circuite

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

119

secveniale prezentate i se prezint alte dou modele pentru descrierea comportrii acestora. Modelul matematic al unui circuit secvenial de tipul Mealy, denumit automat finit Mealy, se definete n modul descris n continuare. Un automat finit Mealy, A, const din urmatoarele : 1. 2. 3. 4. o mulime finit Q de stari interne; o mulime finit I de intrri; o mulime finit W de ieiri; o aplicaie T (denumit aplicaia tranziiilor lui A) a unei submulimi D a mulimii QxI pe o submulime a lui Q; 5. o aplicaie (denumit aplicaia ieirii lui A) a unei submulimi D a mulimii QxI pe mulimea W.

Automatul finit A este dat prin urmare prin 5-uplul ordonat A =(Q, I, W, , ). De exemplu, se consider automatul finit A1 dat prin :
(q , i ) = q1 , Q = {q0 , q1 , q2 }, 0 0 (q1 , i0 ) = q2 , I = {i0 , i1}, (q2 , i0 ) = q0 , W = {w0 , w1}. (q2 , i1 ) = q1 , (q0 , i0 ) = w1 , (q , i ) = w , 0 1 0 (q1 , i0 ) = w0 , (q2 , i0 ) = w1.

(2.17)

Acest automat poate fi reprezentat prin diagrama strilor din figura 2.11. Un automat A este incomplet definit din punct de vedere al tranziiilor dac D=Q x I, i complet definit dac D = D = Q x I. Atunci cnd un automat nu este complet definit, el se numete automat incomplet sau automat incomplet definit. Automatul A1 reprezentat prin diagrama strilor din figura 2.11 este un exemplu de automat incomplet definit. Un automat finit Moore, A*, poate fi definit prin: 1. 2. 3. 4. o mulime finita Q* de stri interne ; o mulime finita I* de intrri; o mulime finit W* de ieiri; o aplicaie * a unei submulimi D* a mulimi Q* x I* pe o submulime a lui Q* ; * 5. o aplicaie * a unei submulimi D a mulimii Q* n multimea W*.

Definiia automatului Moore difer de definiia automatului Mealy numai prin punctul 5. Prin urmare, dac n exemplul precedent se nlocuiete aplicaia din relaia (2.17) cu *, dat de relaia (2.18), se obine un automat A1, reprezentat prin diagrama strilor din figura 2.12.
* (q0 ) = w1 * (q2 ) = w0

(2.18)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

120

i1/w0 q0 i0/w1

i0/w1 i0/w0 q2 q1 i1/q0/w1 i0

i0 i0 q2/w0 q1/i1

Fig. 2.11 Diagrama strilor pentru un automat Mealy.

Fig. 2.12. Diagrama strilor pentru un automat Moore.

n afar de tabelul strilor i diagrama strilor, un automat finit A poate fi reprezentat i printr-o matrice a conexiunilor CA=(Cij), avnd un numr de linii i de coloane egal cu numrul de stri interne. Elementul cij n aceast matrice este reuniunea perechilor intrare/ieire, aflate n diagrama strilor pe arcele care conduc de la starea qi la starea qj pentru automatul Mealy, respectiv reuniunea intrrilor care conduc de la qi la qj pentru automatul Moore.
i1/w1 q0 i0/w0i1/w1 q1 i0/w0 i0/w0 q2

q0 q0 0 C A2 = q1 i1 / w1 q2 i0 / w0 i0/

q1 i0 / w0 i1 / w1 0 i1 / w0

q2 0 i0 / 0

Fig. 2.13. Diagrama strilor i matricea de conexiuni pentru un automat Mealy.

Pentru automatul Moore se mai d n plus un vector coloan al ieirilor W0, cu numr de elemente egal cu numrul de stri, fiecare element wi reprezentnd ieirea corespunztoare strii qi. n figura 2.13. se reprezint un automat Mealy A2, dat prin diagrama strilor i matricea conexiunilor corespondent, iar n figura 2.14 un automat Moore A2, dat prin diagrama strilor, respectiv matricea conexiunilor i vectorul ieirilor corespondent.
i0 q0/w0 i1
i0

q0

q1

q2

q1/i1 i0 i1
C
* A2

q2/w1

i0 i1 q0 0 w0 W = i i1 0 = q1 0 w1 q2 0 i0 i1 0

Fig. 2.14. Diagrama strilor i matricea de conexiuni pentru un automat Moore.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE 2.5.

121

Analiza circuitelor logice secveniale

Analiza circuitelor secveniale se definete astfel: cunoscnd structura circuitului secvenial se cere evoluia semnalelor de ieire pentru anumite evoluii (secvene) ale semnalelor de intrare. O condiie necesar pentru rezolvarea problemei de analiz a circuitelor secveniale o constituie cunoaterea strii iniiale a circuitului analizat. Att pentru circuitele sincrone ct i pentru cele asincrone, analiza presupune parcurgerea urmtoarelor etape: 1. pornind de la structura circuitului se determin prile combinaionale i cele de memorie i se defmesc semnalele de intrare, de iesire i semnalele secundare (de stare); 2. se stabilesc expresiile funciilor booleene ale ieirilor din partea combinaional. Funciile stabilite se pun n forma canonic; 3. corespunzator combinaiilor variabilelor de stare se realizeaz codificarea strilor i se definesc strile circuitului; 4. se construiete tabelul strilor i/sau graful de tranziie a circuitului; 5. pentru evoluia semnalelor de intrare i starea iniial impus, folosindu-se graful sau tabelul de tranziie, se stabilete evoluia semnalelor la ieire. Etapa neobligatorie dar de multe ori util din punct de X Z vedere practic presupune obinerea unui circuit echivalent cu primul dar mai economic dect primul. Vom explica modul de analiz a circuitelor logice secveniale printr-un exemplu. CLC Considerm circuitul din figura 2.15 compus din dou Q0 D0 pri, o parte combinaional notat pe figur cu CLC i o Q1 D1 parte secvenial, de memorie, realizat cu dou circuite Memorie basculante de tip D. Circuitul are o singur Fig. 2.15. Circuit logic secvenial. intrare notat cu x i o singur ieire notat cu z. Ecuaia de stare a circuitului basculant D asincron este foarte simpl, circuitul repet la ieirea Q ceea ce se aplic pe intrarea D:
U2A 1 2 3 U7A 74LS08 U4A 1 2 U9A 3 1 2 1 2 3 74LS04 U3A 74LS32 1 2 74LS08 3 1 U10A 2 74LS08 U8A 74LS04 U5A 1 2 3 1 2 3 U6A 74LS32 1 2 74LS00 3 74LS00 U11 Q D U12 Q D

Q| = D

(2.19) Expresiile funciilor de ieire a prii combinaionale a circuitului din figura 2.15,

sunt:

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE


z = xQ0 D0 = xQ0 + xQ1 D1 = xQ0 Q1 + xQ1Q0 = xQ0 Q1 + xQ1 + Q0

122

(2.20)

se dezvolt formele canonice ale acestor funcii:


z = xQ0Q1 + xQ0 Q1 D0 = xQ0Q1 + xQ0 Q1 + xQ0Q1 + xQ0Q1 D1 = xQ0 Q1 + xQ1Q0 = xQ0 Q1 + xQ0Q1 + xQ0Q1 + + xQ0Q1 + xQ0Q1 + xQ0 Q1 + xQ0 Q1

(2.21)

nlocuind relaiile (2.21) n (2.19) se poate construi acum tabelul tranziiilor i al ieirii (tabelul 2.10).
TABELUL 2.10. Q0Q1 00
x

01 11 01

11 11 10 Q|0Q|1

10 00 11

Q0Q1
x

00 0 0

01 0 0

11 0 1 z

10 0 1

0 1

01 01

0 1

Circuitul studiat are dou variabile de stare. Ca urmare cele 4 combinaii posibile ale valorilor acestora definesc strile circuitului. Putem scrie urmtoarea codificare: y0 0 0 1 1 y1 0 1 0 1 -> -> -> -> sk s0 s1 s2 sk
2.11.
1/0 0/0 1/0

(2.22)

TABELUL x 0 sk s0 s1/0 s1 s3/0 s2 s0/0 s3 s3/0

1 s1/0 s1/0 s3/1 s2/1


0/0

s0
1/1

s1
0/0

s2
1/1

s3
0/0

starea urmtoare/ieire

dubl.

Fig. 2.16. Graful de tranziie

Avnd n vedere codificarea realizat se poate construi acum tabelul strilor (tabelul 2.11). Tabelul corespunde unui automat de tip Mealy. Pe baza acestui tabel se poate stabili imediat graful de tranziie al circuitului care este dat n figura 2.16. Starea iniial este reprezentat printr-un cerc cu linie

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

123

2.6.

Sinteza circuitelor logice secveniale

Problema de sintez a circuitelor logice combinaionale se definete n modul urmtor: cunoscnd modul de funcionare a circuitului secvenial exprimat prin evoluia semnalelor de intrare respectiv a celor de ieire (secvenele de intrare respectiv cele de ieire), se cere s se stabileasc structura circuitului. innd cont de aceast formulare rezult c rezolvarea problemei de sintez presupune parcurgerea etapelor: 1. se construiete tabelul tranziiilor i ieirilor din specificaia dat sub form de descriere; 2. se minimizeaz numrul strilor; 3. se realizeaz codificarea strilor; 4. se substituie combinaia variabilelor de stare n tabelul strilor i ieirilor pentru a crea tabelul tranziiilor i strilor; 5. se alege tipul de celule de memorie folosite (tip R-S, J-K, D, T); 6. se construiete tabelul de excitaie care indic valorile excitaiilor necesare pentru a obine starea urmatoare dorit pentru fiecare combinaie stare actual-intrare; 7. se obin expresiile funciilor de excitaie; 8. se obin expresiile funciilor de ieire; 9. se traseaz schema logic a circuitului care materializeaz funciile de excitaie i cele de ieire la care se adaug i celulele de memorie corespunztoare. Dintre etapele prezentate mai sus, prima este cea mai dificil i afectat de erori. Parcurgerea ei cu succes depinde foarte mult de experiena i abilitile proiectantului. Fiecare din celelalte etape pot fi parcurse n mod sistematic manual sau folosind programe pe calculator special realizate. n ceea ce privete prima etap, se recomand construirea unui label de tranziii primar unde s fie o singur stare stabil pe fiecare linie a tabelului. Fiind doar o singur stare stabil pe fiecare linie a tabelului, ieirea poate fi considerat ca depinznd numai de starea curent. n acest fel este posibil s se introduc stri suplimentare care ns pot fi eliminate mai trziu n etapa de minimizare a strilor. n continuare vom exemplifica acest procedeu de sintez a circuitelor logice combinaionale.

2.7.

Circuite basculante bistabile folosite ca elemente de memorie pentru circuitele secveniale

2.7.1. Introducere

Circuitele basculante bistabile sunt circuite secvenial elementare cu numai dou stri stabile, folosite ca elemente de memorie pentru circuitele secveniale mai complexe, n scopul memorrii strii interne a acestora. Circuitele basculante bistabile pot fi construite pentru a funciona fie numai n regim asincron, fie numai n regim sincron, fie att n regim asincron ct i n regim sincron, funcie de tipul circuitelor secveniale n care sunt folosite. De obicei, pentru circuitele secveniale sincrone se folosesc ca elemente de

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

124

memorie circuite basculante care pot funciona att n regim sincron ct i asincron, intrrile asincrone fiind utilizate pentru aducerea circuitului n starea iniial, independent de impulsul de tact.
2.7.2. Tabelele caracteristice, tabelele excitaiilor i ecuaiile intrrilor

Comportarea circuitului basculant bistabil poate fi descris prin tabelul caracteristic al bistabilului, n care se d starea urmtoare a ieirii n funcie de comabinaiile de valori prezente ale intrrilor i ale strii prezente sau prin ecuaia de stare a bistabilului, care exprim starea urmtoare a acestuia n funcie de intrri i starea prezent. n continuare se prezint tabelele caracteristice, tabelele excitaiilor i ecuaiile de stare pentru cteva tipuri de circuite basculante bistabile, folosite mai frecvent.
TABELUL 2.12. S R Q(t+1) 0 0 Q(t) 0 1 0 1 0 1 1 1 ?
U3A

Circuitul basculant bistabil de tipul RS. Circuilul H basculant bistabil de tipul RS, /RH realizat cu module SI-NU, /Q R respectiv SAU-NU, analizat n Fig. 2.17. Bistabil RS sincron. paragraful 2.2 reprezint cel mai simplu circuit basculant bistabil. Tabelul caracteristie al acestuia (tabelul 2.12) se folosete ndeosebi pentru a caracteriza funcionarea circuitului bistabil RS sincron, nelegnd prin Q (t) starea sa la tactul t, iar prin Q (t+1) starea sa la tactul t+1, dar ramne valabil i pentru circuital bistabil RS asincron, daca Q(t) se interpreteaz ca starea circuitului la timpul t, iar Q (t+1) starea sa la timpul t+t, unde t este timpul de rspuns al circuitului la semnale de intrare. Pentru a obine un circuit bistabil RS sincron, avnd un circuit asincron, proiectat, de exemplu, cu circuite logice SI-NU, se pune condiia ca intrrile sale sincrone, RH i SH (fig. 2.17) s fie active numai n prezena unui impuls de tact H, adic:
2 2 74LS00 74LS00 U4A U2A 1 2 1 2 3 3 74LS00 74LS00

1 3

/SH

U1A 1 3

SH = S H RH = R H

(2.23)

innd cont de relaiile (2.23) rezult schema circuitului basculant bistabil din figura 2.17. Ecuaia caracteristic a acestui bistabil, dedus n paragraful 2.2, denumit i ecuaie de stare, este urmtoarea:
Q| = S + RQ

(2.24)

unde prin Q| s-a notat starea la momentul t+1, iar prin Q starea la momentul t. n cadrul unui circuit secvenial, circuitul basculant bistabil are rolul de a memora starea unei anumite variabile de stare. Din acest motiv, starea sa trebuie s se modifice funcie de variabilele de intrare ale circuitului, n conformitate cu expresia care descrie starea urmtoare a variabilei de stare considerate, denumit n acest caz ecuaia de aplicare a bistabilului. n general, starea urmtoare a unei variabile de stare Qk notat Q|k este o funcie de variabilele de intrare Xi, pentru i = l, ... , n i de celalalte variabile de stare Qj,

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

125

pentru j = 1, ..., k, ..., p unde n i p sunt numrul de variabile de intrare, respectiv de stare pentru circnitul considerat (relaia 2.25).
| Qk = f (x1 , x2 ,..., xn , Q1 , Q2 ,..., Q p )

(2.25)

Dac pentru memorarea strii acestei variabile se folosete un bistabil, notat tot cu Qk, expresia (2.25) devine ecuaia de aplicare pentru acest bistabil. Pentru ca bistabilul s memoreze starea urmtoare a variabilei de stare, trebuie ca la intrrite sale s se aplice astfel de comenzi nct starea sa urmtoare s corespund ecuaiei de aplicare. Pe baza acestei condiii se stabilesc expresiile booleene care descriu comenzile ce trebuie aplicate la intrrile bistabilului, denumite ecuaiile intrrilor bistabilului. Problema determinrii ecuaiilor de intrare pentru un anumit bistabil, n cazul considerat aici pentru bistabilul RS, se reduce la rezolvarea sistemului de ecuaii booleene (2.26), format din ecuaia de aplicare i ecuaia de stare a bistabilului:
| Qk = f (x1 , x2 ,..., xn , Q1 , Q2 ,..., Q p ) | Qk = S + RQk

(2.26)

adic la obinerea expresiilor:


S = f ( x1 , x2 ,..., xn , Q1 , Q2 ,..., Q p ), R = f ( x1 , x2 ,..., xn , Q1 , Q2 ,..., Q p ).

(2.27)

Exist mai multe metode practice pentru rezolvarea acestei probleme. Una din metodele frecvent folosite se bazeaz pe tabelul de excitaie al bistabilului. Tabelul de excitaie al unui anumit tip de bistabil arat care trebuie s fie valorile intrrilor pentru ca bistabilul aflat ntr-o anumit stare sa treac ntr-o stare urmtoare bine precizat.
TABELUL 2.13. Q(t) Q(t+1) S 0 0 0 0 1 1 1 0 0 1 1 x

n tabelul excitaiilor pentru bistabilul RS (tabelul 2.13) se nscrie pe coloana intrrii S, respectiv R, valoarea 0 i 1, atunci cnd una dintre aceste valori este obligatorie pentru tranziia respectiv sau se scrie un x, atunci cnd valoarea uneia sau a ambelor intrri este indiferent. De exemplu, atunci cnd starea prezent a bistabitului este 0, iar starea sa urmtoare trebuie sa fie tot 0, este obligatoriu ca intrarea S s fie n starea 0, dar intrarea R poate s fie n starea 0 sau n starea 1, adic se poate scrie x, dup cum se vede n primul rnd al tabelului 2.13. Acest tabel se folosete pentru deducerea ecuaiilor intrrilor bistabilului RS, aplicat ntrun caz concret, n felul urmator : R x 0 1 0 1. se scrie ecuaia de aplicare a bistabilutui sub form de tabel de corespondene, penultima coloan fiind starea prezent a bistabilului, iar ultima starea urmtoare; 2. se adaug dou coloane corespunztoare intrrilor S i R; 3. se completeaz coloanele S i R pe baza tabelului excitaiilor pentru bistabilul RS;

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

126

4. se scriu expresiile minime pentru ecuaiile S i R, considernd pentru poziiile marcate cu x valorile cele mai convenabile (condiii nu ine cont) S i R sunt funcii de variabilele din ecuaia de aplicare. Exemplu. Se d ecuaia de aplicare a bistabilului A, de tipul RS, expresia 2.28 i se cer ecuaiile intrrilor R i S. A| = AX 1 + B X 1
TABELUL 2.14. X1 B A A| S 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 1 x 1 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 0 0
AB X1

(2.28)

R x 1 0 0 0 1 0 1

Se ntocmete tabelul 2.14 pe baza relaiei 2.28 i a tabelului 2.13. Tabelul se realizeaz, aa cum s-a artat mai sus, pe baza variabilelor funciei de aplicare (X1, B, A) cu ajutorul ecuaiei 2.28. La acest tabel se mai adaug coloanele S i R care se completeaz conform tabelului 2.13, innd cont de faptul c A reprezint starea prezent iar A| starea urmtoare. Din tabelul 2.14 rezult ecuaiile intrrilor S i R, n funcie de variabilele X1, B i A, relaia (2.29), obnute n urma minimizrii funciilor S=f(X1, B, A) i R=f(X1, B, A) cu ajutorul diagramelor Karnaugh din figura 2.18.
AB X1

00 01 11 10 0 1 1 1 x 0 0 0

00 01 11 10 x 0 0 0 0 1 1 1

0 1

Funcia S

0 1

Funcia R Figura 2.18. Minimizarea funciilor S i R.

Ecuaiile intrrilor S i R sunt: S = AB + AX 1 = A(B + X 1 ) R = AB + AX 1 = A B + X 1

(2.29)

n general, ecuaia de aplicare a unui bistabil Q se poate scrie, folosind teorema dezvoltrii, sub forma: Q| = QgQ + QhQ (2.30)

unde gQ i hQ sunt funcii boleene avnd ca variabile toate variabilele din ecuaia de aplicare a bistabilului Q cu excepia variabilei Q. Procednd la determinarea expresiilor intrrilor S i R ale unui bistabil, plecnd de la ecuaia de aplicare scris sub forma (2.30) se obin, prin intermediul tabelului 2.15, n modul artat mai sus, funciile S=f(gQ, hQ, Q) i R =f(gQ, hQ, Q), care minimizate cu ajutorul diagramelor Karnaugh din figura 2.19, au forma :

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

127 (2.31)

S = QhQ ; R = Q gQ

QhQ gQ

00 01 11 10 0 0 1 1 0 x 0 x

QhQ gQ

00 01 11 10 x x 0 0 1 0 1 0

0 1

Funcia S

0 1

Funcia R Figura 2.19. Determinarea funciilor S i R.

TABELUL 2.15. Q| = QgQ + QhQ = gQ hQ Q = S + QR 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1


Zona A AB X1 Zona A

S R 0 0 1 0 0 x 1 x x 1 0 1 x 0 0 0

Din cele prezentate mai sus rezult c ecuaiile intrrilor se pot obine uor folosind funcile auxiliare gQ i hQ (din ecuaia 2.31) care n cazul reprezentrii funciei Q' pe diagrama Karnaugh sunt date, fiecare din ele, de cte o jumtate a acestei diagrame (conform ecuaiei 2.30) i anume: funcia gQ pe jumatatea corespunztoare zonei Q, iar funcia hQ pe jumtatea corespunztoare zonei Q (figura

AB X1

00 01 11 10 0 1
hA Funcia A Fig. 2.20.a.
|

00 01 11 10 0 1 1 1 1 0 0 0

0 1

1 1

1 0
gA

0 0

0 1

Funcia A| Fig. 2.20.b.

Figura 2.20. Determinarea ecuaiilor de intrare pe baza ecuaiei de aplicare a bistabilului.

2.20.a). Din figura 2.20.a, pentru ecuaia intrrii S se caut forma minim a funciei hQ, adic se iau unitile din zona Q a diagramei iar pentru ecuaia intrrii R se caut forma minim a funciei gQ , 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 obin pentru funciile q A i hA , expresiile:
g A = B + X 1 ; hA = B + X 1

(2.32)

innd cont de expresiile (2.31) i (2.32) se obin pentru S i R aceleai expresii ca i n cazul precedent, relaia (2.29).

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

128

Avnd n vedere faptul c atunci cnd 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 ecuaia intrrii S se pot considera pe lng unitile din zona A i cele din zona A, adic toate unitile din diagrama Karnaugh pe care se reprezint ecuaia de aplicare. Din aceleai motive, pentru scrierea ecuaiei intrrii R se pot considera toate zerourile din diagram. Prin urmare, unitile din zona A reprezint condiii ,,nu ine cont" pentru scrierea expresiei lui S, iar zerourile din zona A reprezint condiii ,,nu ine cont" pentru scrierea expresiei lui R. n diagrama din figura 2.20.b csuele corespunztoare acestor condiii sunt marcate prin trasarea diagonalelor. Urmrind aceast diagram se constat c nu se pot obine pentru S i R expresii mai simple dect cele deduse anterior. De fapt n aceste completri, diagrama din figura 2.20.b corespunde n ntregime cu diagramele din figura 2.18. Circuitul basculant bistabil de tipul JK. Spre deosebire de circuital basculant bistabil RS, circuitul basculant bistabil JK admite comenzi simultane la ambele intrri, circuitul fiind astfel conceput inct atunci cnd apare un asemenea caz s-i modifice starea. Tabelul caracteristic i tabelul excitaiilor pentru un circuit basculant bistabil de tipul JK sunt date n tabelul 2.16, respectiv 2.17. Ecuaia de stare a circuitului basculant bistabil JK este dat de relaia: | (2.33) Q = Q K + QJ
TABELUL 2.16. J K Q(t+1) 0 0 Q(t) 0 1 0 1 0 1 1 1 Q(t ) TABELUL 2.17. Q(t) Q(t+1) J 0 0 0 0 1 1 1 0 X 1 1 X

QK K X X 1 0 J 0 1

00 0 1 hQ

01 0 1

11 0 0 gQ

10 1 1

Figura 2.21. Sinteza unui bistabil JK.

Circuitul basculant bistabil de tipul JK se poate construi folosind un circuit bistabil RS sincron. Se consider n acest scop ecuaia de stare a bistabihilui JK drept ecuaia de aplicare pentru bistabilul RS i se determin plecnd de aici ecuaiile intrrilor S i R. Ecuaia 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, ecuaiile intrarilor S si R: (2.34) S = QJ ; R = QK
U1A

1 3 2 2 7408 1

U3A U5A 3 1 3 2 7400 7400 Q

U7A

1 2 13 7410

U9A 12 1 3 2 7400

T
U6A U4A U2A 1 3 2 7400 7400 7408 1 3 2 1 3 /Q

T
U10A U8A 1 3 12 2 7400 7410 1 2 13

/Q

a. Figura 2.22. Circuit bistabil JK

b.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

129

Considernd circuitul bistabil RS realizat sub forma din figura 2.17 i avnd ecuaiile intrrilor (2.34), rezult pentru circuitul bistabil JK schema din figura 2.22.a. Facnd uz de proprietatea de asociativitate a funciei SI, aceast schem se poate realiza cu mai puine elemente n forma echivalent dat n figura 2.22.b. Dup cum s-a vzul n analiza fcuta asupra circuitelor sincrone, un asemenea circuit poate funciona corect numai atunci cnd durata impulsului de sincronizare T nu depete timpul de reacie al circuitului. Deducerea ecuaiilor intrrilor bistabilului JK folosit ca element de memorare ntr-un circuit secvenial sincron se poate face n acelai mod ca i n cazul circuitului bistabil RS, folosind n acest scop tabelul excitaiilor. n acest caz ns, expresiile intrrilor rezult mai simplu, prin identificarea lor cu funciile hQ i gQ din ecuaia de aplicare, relaiile (2.35) i (2.36). Astfel din :
Q| = QgQ + QhQ | Q = Q K + QJ

(2.35)

rezult:
K = gQ

J = hQ

(2.36)

Din cele artate mai sus rezult o regul practic pentru obinerea expresiilor intrrilor, avnd funcia de aplicare reprezentat pe diagrama Karnaugh i anume, pentru obinerea expresiilor intrrii J se minimizeaz funcia din zona Q a diagramei, iar pentru obinerea expresiei intrrii K se minimizeaz negata funciei din zona Q a diagramei, considernd n acest scop zerourile din aceast zon. Pentru exemplul considerat anterior, din diagrama Karnaugh pentru ecuaia de aplicare A| (fig. 2.20.a) rezult :
J = B + X 1; K = B + X1

(2.37)

Circuitul basculant bistabil de tipul T. Acest circuit basculant bistabil are o singur intrare, notat cu T, care atunci cnd trece din starea zero logic n starea unu logic cauzeaz schimbarea strii interne a bistabilului. Tabelul caracteristic al circuitului basculant bistabil de tipul T i tabelul excitaiilor sunt date n tabelul 2.18, respectiv 2.19. Ecuaia de stare a bistabilului T, rezultat din tabelul 2.18, este :
Q| = QT + QT
TABELUL 2.18 T Q(t+1) 0 Q(t) 1 Q(t ) TABELUL 2.19 Q(t) Q(t+1) T 0 0 0 0 1 1 1 0 1 1 1 0

(2.38) Q 0 T 0 0 1 1

1 1 0

Figura 2.23. Sinteza unui circuit bistabil T

hQ gQ

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

130

Se pot concepe bistabile de tipul T care s funcioneze sincron sau bistabile de tipul T care s funcioneze asincron. Pentru a obine un circuit basculant bistabil de tipul T sincron, se poate pleca de la faptul c circuitul basculant bistabil de tipul JK ii modific starea atunci cnd intrrile J i K sunt comandate simultan, de unde rezult c legnd impreun intrrile JK ale unui circuit basculant JK se obine schema unui circuit basculant bistabil de tipul T. Acesta va funciona corect cu aceeai observaie privind durata impulsului de sincronizare ca i la circuitul bistabil JK. La acelai rezultat se ajunge i dac se pornete de la ecuaia de stare a bistabilului T, care se impune s fie ecuaie de aplicare pentru un bistabil JK, relaia (2.38), reprezentat pe diagrama Karnaugh din figura 2.23. Din diagrama Karnaugh din figura 2.23 rezult, innd cont de cele artate mai sus, relaiile:
J = hA = T ; K = gA =T

(2.39)

La aceeai schem se ajunge i dac se face sinteza folosind ca element de memorie un circuit bistabil RS. Ecuaiie intrrilor unui circuit bistabil T folosit ca element de memorie ntr-un circuit secvenial se obin plecnd de la ecuaia de aplicare a bistabilului, scris pe baza teoremei dezvoltrii, n acelai mod ca i la bistabilul RS (tabelul 2.20). Din diagrama Karnaugh a funciei T (figura 2.24) rezult forma sa minim:
T = QhQ + Q g Q
TABELUL 2.20. Q| = Q g Q + QhQ = gQ hQ Q = QT + Q T 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1

(2.40)

T 0 1 1 1 0 0 1 0

QhQ gQ

00 01 11 10 0 0 1 1 1 0 1 0

0 1

Funcia T Figura 2.24. Determinarea ecuaiei intrrii pentru bistabilul T

Ecuaia intrrii T de mai sus (2.40) arat c pentru obinerea sa se consider funcia hQ i negata funciei gQ din ecuaia de aplicare a bistabilului. Avnd n vedere acest fapt se poate deduce o regul practic de obinere a expresiei minime a intrrii, atunci cnd ecuaia de aplicare este reprezentat pe diagrama Karnaugh i anume: se consider pentru scrierea expresiei intrrii T, unitile din zona Q i zerourile din zona Q a diagramei. Folosind aceast regul pentru ecuaia de aplicare dat n diagrama Karnaugh din figura 2.20.a, a exemplului prezentat anterior, rezult pentru intrarea T a bistabilului A expresia:
T = X 1 + AB + AB

(2.41)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

131

Intrare 0 T 1 3 3 1
a.

1 2 2 4 4

Ieire Z 0 1 1 0

01 1

11 2

Q1Q2 0 1

00 01 11 10 0 0 1 1 0 1 1 0

Q1Q2 0 1

00 01 11 10 1 1 0 0 0 1 1 0

4 00 b.

3 10

Funcia Q|1 c.

Funcia Q|2 d.

Figura 2.25. Sinteza unui circuit bistabil asincron de tipul T.

TABELUL 2.21. Starea Starea urmtoare Q|1Q|2 prezent pentru intrarea T Q1Q2 0 1 01 01 11 11 10 11 10 10 00 00 01 00

Pentru a concepe o schem de circuit Z bistabil T asincron, se ncepe cu tabelul primar al strilor, completat innd cont de comportarea 0 bistabilului (figura 2.25.a). Deoarece se 1 urmrete obinerea unui circuit de tipul Moore, 1 se vede, urmrind coloana ieirii Z, c numrul 0 de stri din tabelul primar al strilor nu poate fi redus. Pentru codificarea acestor patru stri sunt necesare dou variabile de stare Ql i Q2, crora li se atribuie coduri binare pe baza diagramei tranziiilor din figura 2.25.b. Cu aceast codificare rezult tabelul tranziiilor (tabelul 2.21). Din acest tabel se obin expresiile strilor urmtoare ale variabilelor de stare, Ql i Q2, care se minimizeaz cu ajutorul diagramelor Karnaugh din figura 2.25.c i 2.25.d, rezultnd :
Q1| = Q1T + Q1Q2 + Q2T
| Q2 = Q1T + Q1Q2 + Q2T

(2.42)

Factoriznd expresiile (2.42) se obine:


Q1| = Q1 T + Q2 + Q2T Q
| 2 1 2 2

( ) = Q (T + Q ) + Q T

(2.43.a) (2.43.b)

Pe baza expresiilor (2.43) se obine schema logic din figura 2.26. n vederea reducerii numrului de elemente logice se nlocuiete variabila Q 2 de la intrarea elementului 1 cu expresia obinuta prin negarea expresiei (2.43.b):
Q 2 = Q2T Q1 Q2 + T

(2.44)

adic cu conjuncia ieirilor elementelor logice 3 i 5, care se poate realiza aplicnd aceste ieiri la intrrile elementului logic 1, pe baza legii asociativitii funciei logice SI. n vederea nlocuirii elementului de negare 8, care realizeaz complementul ieirii Q|1, se scrie pe baza diagramei Karnaugh din figura 2.25.d, expresia minim a lui Q1 :
|

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

132 (2.45)

Q1 = Q1T + Q1 Q 2 + Q 2T = Q1 T + Q 2 + Q 2T
Q1
U2A 1 2

/Q1 2
3 1 2

U4A
1

U2A U4A

Q1' (Z)
/T
U1A 1 2 13

1 2

Q1' (Z)

T
U7A 1 2

U1A

U3A

/Q2 7
3

1 2

Q2

1 2

U3A 1

1 /Q2

12 2

U6A U5A U8A 1 2 1 1

U6A U5A 1 1

Q2'

/Q1 /Q2

Q2'

/Q1

a.

b.

Figura 2.26. Schema logic a unui circuit bistabil de tipul T, asincron.


|

Dup cum rezult din aceast relaie, funcia Q1 se poate obine cu elementele logice existente n schem i anume ea rezult la ieirea elementului logic 2, de unde poate fi aplicat la intrarea elementului 5. n urma acestor modificri se obine schema logic din figura 2.26.b) cu numai ase elemente logice SI-NU. Ieirea acestui circuit, Z, este identic cu Q1| . Circuitelor din figura 2.26 li se pot aduga intrri de tipul R i S la elementele logice 2, respectiv 4. Circuitul bistabil de tipul T, asincron, din figura 2.26.b, poate sta la baza proiectrii unui circuit bistabil de tipul T, sincron, care s funcioneze independent de durata impulsului de sincronizzare. n acest scop se prevede la intrare un element logic SI-NU, care realizeaz funcia 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 intrri i anume starea urmtoare este aceeai cu a intrrii D, independent de starea prezent a bistabilului. De obicei intrarerea D este sincronizat, iar circuitul este prevzut cu intrri asincrone pentru aducerea n starea 0, respectiv 1. Tabelul caracteristic i tabelul excitaiilor pentru bistabilul D sunt prezentate n tabelul 2.22, respectiv 2.23. Din tabelul caracteristic rezult ecuaia de stare a bistabilului D :

Q| = D
TABELUL 2.22. D Q(t+1) 0 1 1 1 TABELUL 2.23. Q(t) Q(t+1) D 0 0 0 0 1 1 1 0 0 1 1 1

(2.46)

Dup cum se vede din relaia (2.46), ecuaia de aplicare a bistabilului se identifiec cu ecuaia intrrii, prin urmare ecuaia intrrii se obine minimiznd ecuaia de aplicare. Pentru realizarea unui bistabil de tip D, sincron, se poate folosi fie un bistabil RS, fie un bistabil JK. Pentru determinarea expresiilor intrrilor acestora, se intocmesc tabelele 2.24, respectiv 2.25. Din tabelul 2.24 rezult c forma minim pentru intrrile R i S este :

R = D i S = D

(2.47)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE iar din tabelul 2.25 rezult c forma minim pentru intrrile J i K este :

133

K=D

J =D

(2.48) TABELUL 2.5. D Q(t) Q(t+1) J K 0 0 0 0 X 0 1 0 X 1 1 0 1 1 X 1 1 1 X 0 Pe baza expresiilor (2.47) i (2.48) se obine schema bistabilului D dat n figura 2.27.a, respectiv 2.27b, n care bistabilele RS, respectiv JK sunt reprezentate simbolic printr-un dreptunghi cu

TABELUL 2.4. D Q(t) Q(t+1) R S 0 0 0 X 0 0 1 0 1 0 1 0 1 0 1 1 1 1 0 X

intrrile i ieirile corespunztoare.


U2A U1 2 R T S Q /Q U2A U3 2 K T J Q /Q

D T

Q /Q

D T

Q /Q

a. b. Figura 2.27. Sinteza circuitului bistabil de tipul D.

Circuitele basculante bistabile de tipul ,,stpn-sclav" (master-slave). n principiu un bistabil de tipul ,,stpn-sclav", este format din dou circuite basculante bistabile dintre care primul, denumit ,,stpn" memoreaza n momentul apariiei impulsului de sincronizare starea urmtoare a bistabilului, iar cel de-al doilea denumit ,,sclav" memoreaz pe toat durata impulsului de sincronizare starea prezent, urmnd ca abia dup dispariia impulsului de sincronizare s treac n starea n care se gasete bistabilul ,;stpn" care l comand. n acest fel se asigur o funcionare corect a bistabilului independent de viteza de reacie a bistabilului, respectiv de durata impulsului de sincronizare. Aceast proprietate este important mai ales pentru bistabilele de tipul JK i T, dar i pentru bistabilele RS n cazul folosirii acestora n registre de deplasare cu un singur tact.

2.8.

Exemplificarea sintezei unui circuit logic secvenial

Pentru exemplificarea sintezei unui circuit logic secvenial vom parcurge paii descrii n paragraful 2.6. Vom considera urmtoarea problem: s se realizeze un circuit logic secvenial cu dou intrri x0 i x1 i o ieire z0. Comportarea circuitului este urmtoarea: starea iniial a circuitului (starea iniial a ieirii) este zero logic. Dac la intrare apare secvena 10 -> 11 > 01 atunci ieirea va cpta valoarea unu logic. Urmtoarea modificare a intrrii duce la trecerea ieirii n zero logic. Nici o alt secven a semnalelor de intrare nu mai produce starea unu logic la ieire. Pasul 1 (conform paragrafului 2.6). Se realizeaz tabelul de tranziii primar. Acesta are urmtorul cap de tabel:

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE Semnificaia strii Numele strii Intrri Ieire 00 01 11 10

134

Tabelul de tranziii primar se completeaz linie cu linie pe baza descrierii funcionrii circuitului. Funcionarea circuitului ncepe cu starea iniial care este de obicei starea n care se afl sistemul dup ce a fost cuplat la sursa de alimentare. Aceast stare o vom numi starea iniial i o vom nota cu Sinit. Pentru starea initial ieirea va fi zero logic. Apoi, pentru fiecare combinaie a variabilelor de intrare, vom analiza evoluia circuilului. Confonn descrierii funcionrii circuitului, o singur secven a semnalelor de intrare poate duce la activarea ieirii i prima combinaie din aceast secven este 10. Rezult c pentru combinaiile 00, 01 si 11 circuitul va rmne n starea n care se afla iar pentru combinaia 10 el va trece ntr-o stare nou. Aceasta este starea n care s-a detectat prima combinaie din secven aa nct o vom numi Detectl. Intrri Ieire 00 01 11 10 Starea iniial SInit SInit SInit SInit Detect1 0 Noua stare Detect1 se adaug tabelului primar prin adugarea unei linii suplimentare i procesul de mai sus se reia. Semnificaia strii Numele strii Semnificaia strii Numele strii SInit Intrri Ieire 00 01 11 10 SInit SInit SInit Detect1 0

Starea iniial S-a detectat nceputul Detect1 secvenei Urmtoarea combinaie din secven, aplicat la intrare, care va duce la activarea ieirii (trecerea n starea unu logic a ieirii) z0, dac se completeaz secvena cerut la intrare 10 -> 11 -> 01, este 11. Asta nseamn c dac, aflndu-ne n starea Detect1, la intrare se aplic combinaiile 00 sau 01, secvena rezultat la intrare, pna n acest moment, va fi una din urmtoarele: (10, 00) sau, respectiv (10, 01) care conform specificaiilor nu vor putea duce la activarea ieirii z0. Ca urmare, n aceste dou cazuri circuitul va trebui s se ntoarc n starea iniial pentru a relua procesul de detecie a secvenei corecte. n cazul n care combinaia la intrare este 10, rezult ca aceasta a rmas neschimbat aa nct circuitul va rmne n continuare n starea Detectl ateptnd modificarea secvenei de intrare. Circuitul va trece ntr-o stare nou doar dac la intrare se aplic combinaia 11. Aceast nou stare corespunde deteciei celei de-a doua combinaii din secvena care activeaz ieirea z0 aa nct o vom numi Detect2. leirea circuitului ramne n continuare n starea zero logic. Tabelul primar va arta astfel: Semnificaia strii Starea iniial S-a detectat nceputul secvenei S-a detectat a doua combinaie din secven Numele strii SInit Detect1 Detect2 Intrri 00 01 11 SInit SInit SInit 10 Detect1 Ieire 0 0

SInit SInit Detect2 Detect1

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

135

Raionnd n mod similar rezult c pentru combinaiile 00 i 10 circuitul revine n starea iniial, pentru combinaia 11 circuitul rmne n starea Detect2 iar pentru combinaia 01 circuitul trece ntr-o stare nou. Aceasta este starea n care a fost detectat i cea de-a treia combinaie din secvena de activare a ieirii z0 i ca urmare aceasta va fi activat. Noua stare o vom numi Detect3. Din aceast stare circuitul revine n starea iniial la oricare din combinaiile diferite de ultima combinaie recepionat, adic 0l. Cum n aceast ultim etap nu au aprut stri noi, rezult c procesul determinrii tabelului de tranziie primar, s-a ncheiat. Forma final a tabelului de tranziie primar este: Semnificaia strii Starea iniial S-a detectat nceputul secvenei S-a detectat a doua combinaie din secven S-a detectat a treia combinaie din secven (ultima) Numele strii 00 SInit SInit Detect1 SInit 01 SInit SInit Intrri 11 SInit 10 Detect1 Ieire 0 0 0 1

Detect2 Detect1 SInit SInit

Detect2 SInit Detect3 Detect2 Detect3 SInit Detect3 SInit

Din tabelul de tranziie primar se obine imediat tabelul de tranziie al circuitului: Numele strii SInit Detect1 Detect2 Detect3 00 SInit SInit SInit SInit Intrri (x0x1) Ieire z0 01 11 10 SInit SInit Detect1 0 SInit Detect2 Detect1 0 Detect3 Detect2 SInit 0 Detect3 SInit SInit 1

Pasul 2. n aceast etap se urmrete eliminarea strilor suplimentare introduse n procesul de determinare a tabelului de tranziie a circuitului. Problema realizrii unui circuit secvenial cu o anumit comportare nu are o soluie unic. Se pot construi circuite secveniale cu aceeai comportare, dar de complexiti diferite, respectiv cu pre de cost diferit. De obicei, dintre circuitele secveniale cu aceeai comportare, acela este mai simplu i realizabil cu o cheltuial mai redus care are numr mai mic de stri. Din acest motiv este important s se reduc la minimum numrul strilor din diagram, respectiv tabelul strilor care descrie comportarea circuitului secvenial. Pentru reducerea numrului de stri ale unui circuit secvenial se caut acele stri care realizeaz aceeai funcie, adic nu se poate face distincie ntre ieirile rezultate n urma aplicrii la intrrile circuitului aflat n oricare din aceste stri a aceleiai secvene de intrri. Aceste stri se numesc echivalente i pot fi nlocuite printr-o singur stare. Echivalena a dou stri se poate defini n felul urmtor: dou stri qi i qj ale aceluiai circuit secvenial A1, complet definit sau fcnd parte din dou circuite secveniale complet definite A1 i A2 se numesc echivalente, notat qi = qj, dac pentru orice secven de intrri de lungime arbitrar aplicat circuitului A1 aflat n starea qi se obine aceeai secven de ieiri ca i la aplicarea aceleiai secvene circuitului A1, respectiv A2 aflate in starea qj.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

136

Echivalena strilor unui singur circuit secvenial complet definit este o relaie de echivalen; prin urmare este reflexiv, simetric i tranzitiv i mparte mulimea strilor circuilului n clase de echivalen disjuncte. Dou circuite secveniale Al i A2 sunt echivalente, notat Al = A2, dac pentru fiecare stare qj din A2 exist o stare echivalent qi n A1 i invers, pentru fiecare stare qi din Al exist o stare echivalent qj n A2. Pasul 3. Strile automatului sunt realizate prin inermediul variabilelor de stare. Cum aceste variabile pot lua doar dou valori, rezult c pentru n stri vom avea nevoie de cel puin m variabile binare, unde 2m n. n cazul nostru n = 4 aa nct vom utiliza 2 variabile de stare pe care le vom nota cu y0 si y1. Vom alege urmtoarea codificare a strilor: SInit -> y0=0 y1=0 Detectl -> y0=0 y1=l Detect2 -> y0=1 y1=l Detect3 -> y0=1 y1=0 n general exist n! posibiliti de codificare a celor n stri. Pasul 4. nlocuind codurile de mai sus n tabelul de tranziie, obinem: x0x1 y0y1 00 01 11 10 00 00 00 00 00 01 00 00 10 10 11 00 11 11 00 10 01 01 00 00 z0 0 0 0 1

Din acest tabel putem obine diagramele Karnaugh pentru funciile de stare Y0, Y1 i a ieirii z0, corespunzoare variabilelor de stare y0 i y1. Pe baza acestor diagrame realizm minimizarea funciilor. Funcia Y0 x0x1 00 01 11 10 y0y1 00 0 0 0 0 01 0 0 1 0 11 0 1 1 0 10 0 1 0 0 Funcia Y1 y0y1 00 01 11 10 x0x1 00 01 11 10 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 y0y1 00 01 11 10 x0x1 Funcia z0 00 01 11 10 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1

Expresia funciilor obinute este:

Y0 = x 0 x1 y0 + x0 x1 y1 Y1 = x0 x1 y 0 + x0 x1 y1 z 0 = y0 y1

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 construiete tabelul de excitaie care indic valorile excitaiilor ce trebuiesc aplicate intrrilor memoriilor pentru a obine starea urmtoare dorit pentru fiecare combinaie stare actual-intrare. Aplicand regulile din paragraful 2.7.2 se obin urmtoarele tabele de excitaii:

Celule de memorie tipul D D0 x0x1 00 01 Q0Q1 00 0 0 01 0 0 11 0 1 10 0 1


R0 x0x1 Q0Q1 00 01 11 10 J0 x0x1 Q0Q1 00 01 11 10

11 10 0 1 1 0 0 0 0 0

D1 x0x1 00 01 11 10 Q0Q1 00 0 0 0 1 01 0 0 1 1 11 0 0 1 0 10 0 0 0 0 R1 x0x1 Q0Q1 00 01 11 10 J1 S1 00 01 11 10 X 1 1 X X 1 1 X X 0 0 X 0 0 1 X x0x1 Q0Q1 00 01 11 10 K1 x0x1 Q0Q1 00 01 11 10 00 01 11 10 0 0 0 0 0 0 0 0 0 X X 0 1 X 0 0

Celule de memorie de tipul RS S0 x0x1 00 01 11 10 00 01 11 Q0Q1 X X X X 00 0 0 0 X X 0 X 01 0 0 1 1 0 0 1 11 0 X X 1 0 1 1 10 0 X 0 Celule de memorie de tipul JK K0 11 x0x1 00 01 10 00 01 11 Q0Q1 0 0 0 0 00 X X X 0 0 1 0 01 X X X X X X X 11 1 0 0 X X X X 10 1 0 1

10 0 0 0 0

10 X X 1 1

x0x1 Q0Q1 00 01 11 10

00 01 11 10 0 X X 0 0 X X 0 0 X X 0 1 X X 0

00 01 11 10 X 1 1 X X 1 1 X X 0 0 X X 0 1 X

Celule de memorie de tipul T T0 x0x1 00 01 11 10 Q0Q1 00 0 0 0 0 01 0 0 1 0 11 1 0 0 1 10 1 0 1 1

T1 x0x1 00 01 11 10 Q0Q1 00 0 0 0 1 01 1 1 0 0 11 1 1 0 1 10 0 0 0 0

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

138

Pasul 7. Pe baza diagramei Karnaugh i a tabelelor de excitaie ale celulelor de memorie folosite, se obin expresiile funciilor de excitaie.

Celule de memorie de tipul D


D0 = x 0 x1Q0 + x0 x1Q1 D1 = x0 x1 Q 0 + x0 x1Q1 Celule de memorie de tipul RS R0 = x1 + x0 Q1 S 0 = x0 x1Q1 R1 = x 0 + x1Q0 S1 = x0 x1 Q 0 Celule de memorie de tipul JK J 0 = x0 x1Q1 K 0 = x1Q0 + x0 Q1 J1 = x0 x1 Q 0 K1 = x 0 x1 + x1Q0 Celule de memorie de tipul T T0 = x1Q0 + x0Q0 Q1 + x0 x1 Q1Q1 T1 = x 0Q1 + x1Q0Q1 + x0 x1 Q 0 Q1
Pasul 8. Funcia z0 x0x1 00 01 11 10 Q0Q1 00 0 0 0 0 01 0 0 0 0 11 0 0 0 0 10 1 1 1 1 Pe baza tabelului de tranziie se obine expresia funciei de ieire. Pentru toate cazurile, funcia de ieire depinde numai de starea circuitului i conform diagramei Karnaugh alturate, va avea expresia:
z0 = Q0 Q1

Pasul 9. Pe baza ecuaiilor determinate la paii 8 i 9 se traseaz schema logic a circuitului care materializeaz funciile de excitaie i cele de ieire la care se adaug i celulele de memorie corespunztoare. Schemele logice sunt date mai jos pentru fiecare tip de celul de memorie.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

139

Celule de tip D
X0
1 2 1 2 13 12 1 2

D0
D Q /Q

X1
1 2 1 2 13 12 1 2 3

1 3 2

D1
D Q /Q

Z0

1 2 13

12

Celule de tip RS

X0
1 2

1 3 2 2

R0
R Q /Q 1 3

S0
S

1 2 13

2 12

Z0

X1
1 1 1 2 2 3 2 3

R1
R Q /Q

S0
S

1 2 13

12

Celule de tip JK

X0
1 2

1 2 13 1

12

J0
J Q /Q

K0
K 3 1 2 2 3 1 1 3 2 2 3

X1
1 2

Z0

1 2 13 1

12

J1
J Q /Q

K1
K 3 1 2 2 1 3 2 3

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

140

Celule de tipul T

1 3 2

X0
1 2 1 2 13 12

T0
T Q /Q

X1
1 3 2 1 3 2 1 2 1 2 13 7408

Z0

12

T1
T Q /Q

2.9.

Analiza circuitelor logice secveniale asistat de calculator

Vom prezenta succint, n continuare, analiza circuitelor logice secveniale cu ajutorul pachetului de programe OrCAD bazndu-ne pe cele artate n paragraful 1.6, cu ajutorul limbajului Verilog, bazndu-ne pe cele artate n paragraful 1.7.2 i cu ajutorul limbajului VHDL bazndu-ne pe cele artate n paragraful 1.7.3. 2.9.1. Simularea circuitelor logice secveniale cu ajutorul aplicaiei OrCAD Pentru simularea unui circuit basculant bistabil construit cu circuite logice SAU-NU vom construi n aplicaia OrCAD Capture schema electric din figura 2.28. Se va face verificarea circuitului cu ajutorul opiunii Design Rules Check (din meniul Tools) i dup realizarea profilului de simulare similar cu cel prezentat n figura 2.29, se trece la simularea circuitului.
OFFTIME = .5uSR ONTIME = .5uS CLK DELAY = 0 STARTVAL = 0 OPPVAL = 1 U1A 2 1
V

3 74LS02

Q
V

U2A 2 OFFTIME = 1uS S ONTIME = 1uS CLK DELAY = 0 STARTVAL = 0 OPPVAL = 1 1 3


V

/Q
V

74LS02

Figura 2.28. Circuitul pentru simularea unui circuit basculant bistabil realizat cu pori SAU-NU.

Figura 2.29. Profilul de simulare.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE Rezultatul simulrii este prezentat n figura 2.30.

141

Figura 2.30. Rezultatul simulrii bistabilului RS realizat cu pori SAU-NU.

Se propune ca tem explicarea formelor de und din figura din figura 2.30. Urmtorul exemplu se refer la circuitul basculant bistabil realizat cu pori I-NU. Se realizeaz n aplicaia OrCAD Capture schema electric din figura 2.31.
OFFTIME = .5uS/S ONTIME = .5uS CLK DELAY = 0 STARTVAL = 0 OPPVAL = 1 U3A 1
V

U1A 2 1 3 2 7400 Q
V

7404

U2A OFFTIME = 1uS /R ONTIME = 1uS CLK DELAY = 0 STARTVAL = 0 OPPVAL = 1 U4A 1
V

1 3 2 2 7400 /Q
V

7404

Figura 2.32. Rezultatul simulrii circuitului din figura 2.31.

Figura 2.31. Bistabil RS cu pori I-NU

Se vor compara formele de und din figura 2.30 cu cele din figura 2.32. Simularea funcionrii unui circuit basculant bistabil sincron de tipul JK se va face cu ajutorul circuitului din figura 2.33 iar rezultatul simulrii este artat n figura 2.34.
OFFTIME = 10mS ONTIME = 10mS CLK DELAY = 0 STARTVAL = 0 OPPVAL = 1 OFFTIME = 5msS ONTIME = 5msS CLK DELAY = 0 STARTVAL = 0 OPPVAL = 1 OFFTIME = 20msS ONTIME = 20msS CLK DELAY = 0 STARTVAL = 0 OPPVAL = 1

J
V

U4A

T
V

14 1 3

J CLK CLR K

12
V

Q /Q
V

13

HI

Figura 2.33. Schema de simulare a unui circuit basculant bistabil de tipul JK.

74LS73A

Figura 2.34. Rezultatul simulrii bistabilului de tip JK

Figura 2.35. Stabilirea strii iniiale a bistabililor.

n cazul simulrii circuitelor electronice care conin circuite basculante bistabile, cu ajutorul aplicaiei Orcad PSpice AD, se efectueaz aceeai pai ce cei descrii n paragraful 1.6. n plus, se poate stabili starea iniial (la nceputul simulrii) a circuitelor basculante bistabile. Aceast stare iniial se stabilete n profilul de simulare, aa cum este artat n figura 2.35. Pentru aceasta, se selecteaz din meniul PSpice aflat n bara principal a aplicaiei OrCAD Capture, opiunea de creare a unui profil de simulare: New

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

142

Simulation Profile sau opiunea de editare a unui profil de simulare existent: Edit Simulation Profile, dup caz. n fereastra aprut, selectm Options, de aici Gate-level Simulation i apoi pentru Initialize all flip-flops to selectm valoarea zero aa cum se arat n figura 2.35. Starea iniial a bistabilelor poate fi zero, unu sau oarecare (simbolozat cu X). 2.9.2. Simularea circuitelor logice secveniale cu ajutorul Verilog HDL Pentru simularea circuitelor logice secveniale cu ajutorul limbajului Verilog vom folosi aplicaia Silos CK QN descris n paragraful 1.7.2.2. Se va simula un latch de tip D CK /Q (figura 2.36) care memoreaz datele prezentate la intrarea D Figura 2.36. Latch D sincron. la comanda semnalului de tact Ck. Programul Latch D_module.v n limbaj Verilog ce descrie funcionarea circuitului latch D sincron, este prezentat n exemplul 36.
U1

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 fiierului de test Test Bench, numit Latch D_TB.v este prezentat n exemplul 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));

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE initial begin Ck = 0; D = 0; #5 D = 1; #30 D = 0; #2 D = 1; #8 D = 0; $finish; end always #10 Ck <= ~Ck; endmodule Rezultatul simulrii este prezentat n figura 2.37.

143

Figura 2.37. Rezultatul simulrii latch-ului D sincron.

2.9.3. Simularea circuitelor logice secveniale cu ajutorul VHDL Pentru simularea circuitelor logice secveniale cu ajutorul VHDL vom folosi programul ModselSim (varianta SE PLUS 5.7f) descris n paragraful 1.7.2.2. Se construiesc fiierele pentru modelarea latch-ului D, Latch_D.vhd conform exemplului 37 i pentru testarea latch-ului, test_Latch_D.vhd, conform exemplului 38. EXEMPLUL 37. -- Entitatea LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; ENTITY D_latch IS PORT(Ck, D: IN std_logic; Q, QN: OUT std_logic); END D_latch; -- Arhitectura ARCHITECTURE Comportament OF D_latch IS BEGIN Latch: PROCESS(Ck, D) BEGIN IF (Ck='1') THEN

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE Q <= D; QN <= Not D; END IF; END PROCESS; END Comportament; EXEMPLUL 38. -- Entitatea de test LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; ENTITY Test IS END Test; -- Arhitectura asociat'a entit'a'tii de test ARCHITECTURE Test OF Test IS SIGNAL D, Q, Qn: std_logic; SIGNAL Ck: std_logic := '0'; COMPONENT Dcomp PORT(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 simulrii este prezentat n figura 2.38.

144

Figura 2.38. Rezultatul simulrii latch-ului D.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

145

Seminar
Seminar 1
1.1. Cu ajutorul tabelelor de adevr se vor verifica teorema absorbiei (relaia 0.11 din curs) i teorema de Morgan (relaia 0.12 din curs). 1.2. Se consider forma canonic normal disjunctiv a unei funcii: f3 = P1 + P3 + P5 + P7 (s.1)

s se construiasc tabelul de adevr al acestei funcii i forma canonic normal conjunctiv. 1.3. Se consider funcia: f4 = x3x1 + x2x0 S se construiasc tabelul de adevr al funciei i s se scrie forma normal disjunctiv. 1.4. S se arate c pentru forma canonic disjunctiv a unei funcii oarecare: Pi Pj = 0 pentru i j [teorema1, relaia (0.21), pagina 14 din curs]. 1.5. S se arate c pentru forma canonic disjunctiv a unei funcii oarecare: Si + Sj = 1 pentru i j [teorema2, relaia (0.22), pagina 14 din curs]. 1.6. S se demonstreze cu ajutorul axomelor si teoremele algebrei binare c relaia: xy = x x y este adevrat. (s.4) (s.3) (s.3) (s.2)

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE Rezolvare x x y = x x + y = x x + xy = xy

146

1.7. Se consider circuitul logic din figura s.1. S se analizeze dac acest circuit este combinaional. U1A
x0 x1 x2
U2A 1 3 2 7408 1 2 13 7427 3 2 7408 U3A 12

y0

x3

Figura s.1.

Rezolvare
U1A

x0 x1 x2

1 3 2 7408

A
U3A 1 2 13 7427 12

y0

U2A

x3

1 3 2

xa

B
7408

Figura s.2.

i deci circuitul nu este combinaional.

Se constat uor c numerotarea reelei conform regulii 1.1 din curs (pagina 19) nu este posibil deci vom studia dac aceast reea este combinaional. Pentru aceasta se introduce variabila secundar xa i se studiaz influena acestei variabile, cu ajutorul tabelului de adevr, asupra ieirii y0. n orma construirii tabelului de adevr se constat c ieirea y0 depinde de variabila xa

1.8. S se construiasc folosind numai pori I-NU (NAND) circuitul logic secvenial a crui ecuaie logic a ieirii este:
y0 = x3 x0 + x 2 x1

Rezolvare Folosind teorema De Morgan, obinem: y0 = x3 x0 x2 x1 inversorul se va construi cu ajutorul unei pori I-NU cu toate intrrile legate ntre ele (se va studia i exemplul de la pagina 28, figura 1.9 din curs). 1.9. Circuitul obinut la problema 1.8 reprezint un arbore boolean? Dac rspunsul este afirmativ 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 ecuaiei obinute la problema 1.9.

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

147

Seminar 2
2.1. Se d circuitul din figura s.3.
x0 x1
1 3 2 2 1 3 2 2 1 3 2 2 1 3 2 2 1 3 1 3 2 1 3 1 3 1 3

x2 x3

y0

Figura s.3.

S se analizeze dac circuitul este combinaional i dac rspunsul este afirmativ s se scrie ecuaia funciei de ieire y0 i s se realizeze un program pentru verificarea funciei obinute. Rezolvare Circuitul nu poate fi numerotat conform regulii 1.1 din curs. Se trece la analiza circuitului.
x0 x1
1 2

1 2 1 2

3 c

1 3 2

x2 x3

1 2

1 3 2

1 1 2

xa 4
3

3 1 3 2

y0

d Figura s.4.

Se introduce variabila xa i se studiaz dac ieirea depinde de aceasta. Pentru aceasta se realizeaz tabelul de adevr 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 introduc variabilele: xa, x3, x2, x1 i x0. n coloanele F pna la N inclusiv, rndul doi, se introduc formulele: - 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")

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 funcia de ieire y0 nu depinde de variabila xa i deci circuitul este combinaional. Pentru a scrie ecuaia de ieire se poate determin succesiv:
a = x1 x0 b = x3 x2

c = bx0 = x3 x2 x0
d = bx3 = x3 x2 x3

e = ac = x1 x0 x3 x2 x0 f = c + xa = x3 x2 x0 + xa g = df = x3 x2 x3 x3 x2 x0 + xa

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE


h = ge = x3 x2 x3 x3 x2 x0 + xa x1 x0 x3 x2 x0

149

y0 = gh = x3 x2 x3 x3 x2 x0 + xa x3 x2 x3 x3 x2 x0 + xa x1 x0 x3 x2 x0
Pentru ca funcia de ieire nu depinde de variabila xa putem scrie:

y0 = x3 x2 x3 x3 x2 x0 x3 x2 x3 x3 x2 x0 x1 x0 x3 x2 x0
2.2. Se dau funciile: 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 obin forma minima a acestor funcii prin metoda tabelelor Karnaugh i prin metoda Quine Mc Kluskey. Formele minime vor fi verificate cu ajutorul programului urmtor: program vizualizare_clc_4_variabile; label 01,02; type tstr=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; begin u:=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; end else if a=0 then exit; end

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

150

else if a=0 then exit; end; m:=pos('b',termeni); if m<>0 then begin if m<>1 then begin if termeni[m-1]='/' then begin if not b = 254 then exit; end else if b=0 then exit; end else if b=0 then exit; end; m:=pos('c',termeni); if m<>0 then begin if m<>1 then begin if termeni[m-1]='/' then begin if not c = 254 then exit; end else if c=0 then exit; end else if c=0 then exit; end; m:=pos('d',termeni); if m<>0 then begin if m<>1 then begin if termeni[m-1]='/' then begin if not d = 254 then exit; end else if d=0 then exit; end else if d=0 then exit; end;

ANALIZA I SINTEZA DISPOZITIVELOR NUMERICE

151

u:=1; end; begin 02: for a:=0 to 15 do termeni[a]:=''; writeln('Introduceti termenii functiei:'); for a:=0 to 15 do begin readln(mes); if mes='' then goto 01; termeni[a]:=mes; end; 01: n:=0; for d:=0 to 1 do for c:=0 to 1 do for b:=0 to 1 do for a:=0 to 1 do begin y:=0; for m:=0 to 15 do begin eval_term(a,b,c,d,termeni[m],u); y:=y or u; end; writeln('P',n,' ',d,c,b,a,'---','f4=',y); n:=n+1; end; readln(mes); if mes='q' then exit; goto 02; end. Dup lansarea programului se introduc pe rnd termenii funciei sub forma: a,b,c,d, termenii direci (a fiind termenul de rang minim: 20 i d termenul de rang maxim: 23 ) si /a, /b, /c, /d termenii negai. Dup scrierea fiecrui termen se apas tasta "ENTER". La terminarea introducerii se mai apas o dat tasta "ENTER" i pe ecran va fi afiat rspunsul funciei introduse. Dac raspunsul funciei minimizate coincide cu funcia canonic nseamn c minimizarea s-a fcut corect.