Aplicatii ale circuitelor basculante bistabile, Numaratoare, Memorii RAM ROM



Aplicatii ale circuitelor basculante bistabile


3.2.1. Numaratoare

Numaratoarele sunt circuite logice secventiale care inregistreaza numarul de impulsuri aplicate la intrare. Ele se realizeaza prin asocierea circuitelor basculante bistabile, avand rol de celule de memorie binara, cu circuite logice combinationale, care determina modul corect in care urmeaza ca numaratorul sa-si schimbe starea la fiecare nou impuls aplicat la intrare.



Clasificare

Clasificarea numaratoarelor se face dupa anumite criterii:

modul de functionare (comutare a bistabililor):

asincrone - celulele de memorie din care este construit numaratorul nu comuta simultan ci aleator;

sincrone - celulele de memorie din care este construit numaratorul comuta simultan sub actiunea unui impuls de tact aplicat simultan tuturor celulelor.

modul de modificare a starilor (continutului):

directe - isi cresc continutul cu o unitate la fiecare impuls aplicat la intrare;

inverse - continutul scade cu o unitate la fiecare impuls aplicat la intrare;

reversibile - numara direct sau invers, in functie de o comanda aplicata din exterior.

modul de codificare a informatiei

binare

binar-zecimale

modulo "p" etc.

Numaratoarele se pot realiza cu celule de memorie de tip T care realizeaza o divizare cu 2. Prin interconectarea a "n" celule de memorie se obtine un numarator cu un numar de stari distincte. Fiecarei stari ii vom asocia cate un cuvant de cod binar de lungime "n", reprezentand continutul celor "n" celule binare pentru starea data a numaratorului. Codul in care numara un numarator va fi dat de succesiunea cuvintelor de cod binar asociate starilor numaratorului.

Numarul starilor stabile distincte posibile ale unui numarator format din "n" celule binare este 2n. Daca din aceste stari se elimina "k" stari rezulta un numarator cu p = 2n - k stari distincte. Matematic, operatia realizata de numarator este o operatie modulo "p".


Definitii

Capacitatea numaratorului = numarul starilor sale distincte.

Factorul de divizare = raportul dintre numarul de impulsuri de la intrare si numarul impulsurilor de la iesire.

Observatie. Un numarator functioneaza de fapt si ca un divizor de frecventa.

Tipuri de numaratoare

1. Numarator binar asincron direct

Schema logica a numaratorului este realizata prin conectarea in cascada a bistabililor de tip JK in configuratie de bistabili de tip T:

Q0 Q1 Q2

J0 Q0 J1 Q1 J2 Q2

CLK0 CLK1 CLK2

K0 Q0 K1 Q1 K2 Q2


1 1 R


Q0, Q1, Q2, iesirile numaratorului, ne dau starea lui la un moment dat.

R este semnalul de Reset, folosit pentru aducerea numaratorului in starea initiala, la 000.

Intrarile bistabililor JK sunt toate legate la "1" logic, deci bistabilii vor comuta la fiecare impuls de tact.

Tact exterior se aplica doar pe intrarea primului bistabil.

Formele de unda pentru numaratorul binar asincron direct sunt:


CLK


Q0


Q1


Q2


Q2 0 0 0 0 1 1 1 1

Q1 0 0 1 1 0 0 1 1

Q0 0 1 0 1 0 1 0 1

Numaratorul este modulo 8, numarand direct in binar, de la 000 la 111. El basculeaza pe fronturile descrescatoare ale impulsurilor de tact.

Daca dorim sa obtinem valorile numarului in zecimal putem utiliza iesirile numaratorului, Q0, Q1, Q2, ca si intrari intr-un decodificator binar zecimal.

Dezavantajul numaratorului asincron este ca timpul de comutare, in cel mai defavorabil caz, este egal cu suma timpilor de comutare a tuturor bistabililor care il compun. Avantajul lui consta in simplitatea schemei, realizata doar cu bistabile, prin interconectari directe.

2. Numarator binar asincron invers

Schema logica a numaratorului este:

Q0 Q1 Q2

J0 Q0 J1 Q1 J2 Q2

CLK0 CLK1 CLK2

K0 Q0 K1 Q1 K2 Q2


1 1 R


Formele de unda pentru numaratorul binar asincron invers sunt:


CLK


Q0


Q1


Q2


Q2 0 1 1 1 1 0 0 0 0

Q1 0 1 1 0 0 1 1 0 0

Q0 0 1 0 1 0 1 0 1 0

Numaratorul este modulo 8, numarand invers in binar, de la 111 la 000. El basculeaza pe fronturile descrescatoare ale impulsurilor de tact.

3. Numarator binar asincron reversibil

Numaratorul binar asincron reversibil are celula de memorie de baza ca si numaratoarele asincrone anterioare, dar intre celulele de memorie se intercaleaza multiplexoare de tip 2:1 prin care se comanda sensul de numarare.

Q0 Q1 Q2

J0 Q0 A Mux J1 Q1 A Mux J2 Q2

CLK0 2:1 Y CLK1 2:1 Y CLK2

K0 Q0 B K1 Q1 B K2 Q2


1 1 R

S


Pentru S = 0 numaratorul numara direct, iar pentru S = 1 numaratorul numara invers.

4. Numarator binar sincron serie si paralel

Realizarea numaratoarelor de tip sincron are ca scop cresterea vitezei de comutare a numaratorului in ansamblu.

Functionarea acestor numaratoare este sincrona, bistabilii, de tip JK, avand intrarile de CLK legate impreuna. Pe baza tabelului de adevar se obtine logica combinationala suplimentara, care asigura functionarea corecta a numaratorului.


Nr.

Q0

Q1

Q2

Q3


















































































Schema logica pentru numaratorul binar sincron serie este:


Q0 Q1 Q2 Q3



1

S S S S

J Q J Q J Q J Q

CLK CLK CLK CLK

K Q K Q K Q K Q

R R R R


Reset


Intrarile J si K ale primului bistabil sunt legate la 1 "logic" si vor comuta bistabilul la fiecare tact (conform tabelului de adevar). Al doilea bistabil comuta doar din 2 in 2 impulsuri de tact, adica atunci cand Q0 trece din 1 in 0, deci pot fi legate la iesirea primului bistabil. Al treilea bistabil basculeaza din 4 in 4 impulsuri si va fi comandat de functia SI intre iesirile Q1 Q0, iar al patrulea bistabil comuta din 8 in 8 impulsuri si va fi comandat de functia SI intre iesirile Q2 Q1 Q0. In cazul numaratorului binar sincron de tip serie portile logice de tip SI utilizate vor fi toate cu 2 intrari, ca in schema logica anterioara.

Pentru marirea vitezei de raspuns a numaratorului se vor folosi porti logice de tip SI cu numarul de intrari necesar functiei SI implementate, ca in schema de mai jos, corespunzatoare unui numarator binar sincron paralel.


Q0 Q1 Q2 Q3



1

S S S S

J Q J Q J Q J Q

CLK CLK CLK CLK

K Q K Q K Q K Q

R R R R

CLK

Reset


Timpul de comutare al numaratorului binar sincron paralel este mai mic decat la cel serie, dar exista porti de tip SI cu un numar mai mare de intrari.

5. Numarator binar sincron reversibil

Pentru realizarea reversibilitatii numaratorului binar sincron se folosesc 2 intrari suplimentare, Count-Up (numara direct) si Count-Down (numara invers). Aceste numaratoare vor avea si iesiri pentru transport (Carry) si imprumut (Borrow), care vor permite legarea in cascada a numaratoarelor.


Sinteza numaratoarelor modulo p

Pentru a face sinteza unui numarator cu p 2n trebuie determinat numarul minim de celule de memorie binara necesare. Relatia folosita este: 2n p. Celulele de memorie se interconecteaza apoi astfel incat sa se omita (2n - p) stari. Din acest motiv exista mai multe variante posibile pentru interconectare, deci si pentru sinteza numaratorului.


Exemplu: Sinteza unui numarator modulo 5.

Pentru 2n 5 obtinem n = 3, deci vom avea 3 celule de memorie pentru numarator. Numarul starilor omise va fi 23 - 5 = 8 - 5 = 3.

Presupunem ca avem urmatoarea succesiune a starilor de numarare (ciclu de numarare):

000 001 010 011 100



Evident ca se putea alege si alta succesiune a starilor numaratorului.

Folosim pentru realizarea numaratorului bistabili de tip JK.

Se construieste un tabel cu starile actuale ale numaratorului, cu starile urmatoare si cu conditionarile intrarilor JK ale celor 3 bistabili folositi pentru sinteza. Completarea tabelului se face pe baza tabelului de excitatie al bistabilului JK sincron.

Qt Qt+1 J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0


Q2t

Q1t

Q0t

Q2t+1

Q1t+1

Q0t+1

J2

K2

J1

K1

J0

K0








x


x


x








x


x

x









x

x



x








x

x


x








x



x


x


Diagramele Karnaugh pentru cele 6 intrari ale bistabilelor ne permit determinarea functiilor pentru intrari. Starile omise se considera indiferente.

J2:

Q2  Q1Q0










x

x

x

x

J2 = Q1 Q0

K2:

Q2  Q1Q0





x

x

x

x



x

x

x

K2 = 1

J1:

Q2  Q1Q0







x

x



x

x

x

J1 = Q0

K1:

Q2  Q1Q0





x

x




x

x

x

x

K1 = Q0

J0:

Q2  Q1Q0






x

x




x

x

x

J0 = Q2

K0:

Q2  Q1Q0





x



x


x

x

x

x

K0 = 1

Schema logica pentru numaratorul modulo 5 va fi urmatoarea:


Q2 Q1 Q0



J2 Q2 J1 Q1 J0 Q0

CLK CLK CLK

1 K2 Q2 K1 Q1 1 K0 Q0

R2 R1 R0


CLK

Reset


Pentru rezolvarea completa a sintezei numaratorului modulo 5 trebuie discutata si problema starilor omise. Ce se intampla cu numaratorul daca nu are secventa de initializare sau daca ajunge cumva in una dintre starile care nu face parte din ciclul de numarare? Care va fi evolutia numaratorului?

Trebuie verificate tranzitiile numaratorului in cazul in care este intr-o stare din afara ciclului de numarare. Putem avea 2 situatii: fie numaratorul revine singur in ciclul de numarare, fie trebuie reproiectat astfel incat sa revina in ciclul de numarare.

Starile omise in exemplul dat sunt:

101 010

110 010 si din starea aceasta se revine in ciclu

111 010

Observatie. Un numarator modulo p se poate obtine folosind un numarator binar sincron. Se lasa numaratorul binar sa evolueze pana la starea p-1. La atingerea starii "p" se aplica numaratorului, printr-o logica combinationala, un impuls de stergere (pe intrarea de Reset).


Numaratoare Moebius

Numaratoarele Moebius sunt numaratoare in inel cu coada intoarsa (twisted tail ring counter).

Desi exista numaratoare de tip MSI pentru numararea binara sau a altor tipuri de secvente, exista unele cazuri in care se prefera proiectarea unor numaratoare speciale cu bistabili si porti logice.

Exemplu: un numarator cu 8 stari la care la fiecare tranzitie se modifica numai un singur bit, se poate construi utilizand urmatoarea secventa:

0

1000 8

1100 12

1110 14

1111 15

0111 7

0011 3

0001 1

Proiectarea se face si cu bistabili de tip D si cu bistabili de tip JK.

Tabelul folosit pentru sinteza numaratorului este:

Q3t

Q2t

Q1t

Q0t

Q3t+1

Q2t+1

Q1t+1

Q0t+1

D3

D2

D1

D0

J3

K3

J2

K2

J1

K1

J0

K0














x


x


x


x













x



x


x


x













x


x



x


x













x


x


x



x













x


x


x


x















x

x


x


x















x


x

x


x















x


x


x

x


Diagramele Karnaugh ne permit sa determinam valorile pentru intrarile bistabilelor D3 - D0 si J3 - K0.


D3:

Q3Q2 Q1Q0








x


x

x


x



x





x

x

x

D3 = Q0

D2:

Q3Q2 Q1Q0









x


x

x


x


x





x

x

x

D2 = Q3

D1:

Q3Q2 Q1Q0








x


x

x


x



x





x

x

x

D1 = Q2

D0:

Q3Q2 Q1Q0








x


x

x


x



x





x

x

x

D0 = Q1

J3:

Q3Q2 Q1Q0








x


x

x


x


x

x

x

x

x

x

x

x

J3 = Q0

K3:

Q3Q2 Q1Q0





x

x

x

x


x

x

x

x



x





x

x

x

K3 = Q0

J2:

Q3Q2 Q1Q0









x

x

x

x

x


x

x

x

x



x

x

x

J2 = Q3

K2:

Q3Q2 Q1Q0





x

x

x

x


x

x


x



x




x

x

x

x

K2 =Q3

J1:

Q3Q2 Q1Q0







x

x


x

x

x

x



x

x

x



x

x

x

J1 = Q2

K1:

Q3Q2 Q1Q0





x

x


x


x

x


x


x

x



x

x

x

x

K1 = Q2

J0:

Q3Q2 Q1Q0







x

x

x


x

x

x

x



x

x




x

x

x

J0 = Q1

K0:

Q3Q2 Q1Q0





x



x


x

x


x


x

x


x


x

x

x

x

K0 = Q1

Cele 2 scheme logice pentru numarator sunt:



D3 Q3 D2 Q2 D1 Q1 D0 Q0


CLK Q3 CLK Q2 CLK Q1 CLK Q0


CLK




J3 Q3 J2 Q2 J1 Q1 J0 Q0

CLK CLK CLK CLK

K3 Q3 K2 Q2 K1 Q1 K0 Q0


CLK


Observatie. Starea fiecarui bistabil este determinata de starea anterioara a bistabilului plasat in stanga sa, iar starea primului bistabil este determinata de iesirea complementara a ultimului bistabil.

Se pot construi numaratoare Moebius de orice dimensiune (ordin).

Aplicatii ale numaratoarelor Moebius

a. Se pot folosi ca si numaratoare de stare. Daca numaratorul este implementat cu bistabile JK, fiecare comutare a starii este controlata de cate o intrare diferita. Din acest motiv, modificarea oricarei stari va putea fi controlata independent, adaugand o poarta SI sau SI-NU pe intrarea respectiva (de exemplu tranzitia 0 8 este controlata de J3, tranzitia 8 12 de J2 s.a.m.d.).

b. Generatoare de ceas cu mai multe faze. Cele 8 iesiri ale numaratorului genereaza de fapt 8 semnale de ceas defazate in mod egal, cu factor de umplere de 50%. In general un numarator Moebius de n biti genereaza 2n faze de ceas.

c. Decodificarea oricarei stari se poate face printr-o poarta cu 2 intrari. Pt. a face decodificarea starii se vor urmari cei 2 biti adiacenti distincti, 1 si 0.

d. Decodificarea starilor succesive se realizeaza prin porti care au ca intrari ultimul 1 al primei stari si primul 0 al ultimei stari.


Curs 8


3.2.2. Registre

Registrele sunt circuite logice secventiale care permit stocarea si/sau deplasarea informatiei codificate binar. Ele se realizeaza din celule de memorie binara (CBB) si din circuite logice combinationale (CLC), care permit inscrierea, citirea si transferul informatiei. Capacitatea unui registru este data de numarul celulelor de memorie.

Orice informatie binara, care nu depaseste capacitatea registrului, poate fi inscrisa prin actionarea corespunzatoare a intrarilor (care depinde si ea de natura bistabilelor).

Registrele pot sa fie de mai multe tipuri: de memorie; de deplasare; combinate; universale.

Registrele de memorie memoreaza informatia binara in celule de memorie binara. In fiecare celula de memorie se memoreaza un bit de informatie. Incarcarea se poate face paralel, prin intrarile asincrone, de Set si Reset.

Registrele de deplasare sunt cele care realizeaza transferul informatiei. Transferul se poate face: stanga-dreapta; dreapta-stanga; in ambele sensuri.

La fiecare impuls de tact continutul registrului se deplaseaza cu cate o celula (in sensul stabilit). Semnalul de iesire este identic cu cel de intrare, dar intarziat cu un numar de impulsuri de tact egal cu numarul de celule de memorie din care este format registrul.

Exceptand primul bistabil, ecuatia de stare a unui registru de deplasare stanga-dreapta este data de relatia: Qi(t+1) = Qi-1(t) c (unde c = impulsul de tact).

Exemplu: Registru de deplasare stanga-dreapta cu bistabile JK MS.

Q0 Q1 Q2 Q3

SIN

J0 Q0 J1 Q1 J2 Q2 J3 Q3

CLK CLK CLK CLK

K0 Q0 K1 Q1 K2 Q2 K3 Q3

R R R R

Reset


CLK

La fiecare impuls de tact continutul bistabilului Qi se transfera in bistabilul Qi+1. In bistabilul Q0 se introduce informatia din exterior, iar continutul ultimului bistabil se pierde. Incarcarea registrului se realizeaza deci in mod serie. Initializarea registrului se face prin semnalul de Reset, care forteaza toate iesirile registrului in 0 logic.

Registrele de deplasare dreapta-stanga si reversibile se realizeaza folosind circuite logice combinationale suplimentare.

Registrele combinate sunt cele care au si functia de memorare si cea de deplasare.

Registrele universale cumuleaza toate functiile: deplasare stanga-dreapta, deplasare dreapta-stanga, incarcare serie sau paralela a informatiei, citire serie sau paralela a informatiei.

RI A B C D LI

S0


S1





D Q D Q D Q D Q

CLK                           CLK CLK CLK CLK

CLR CLR CLR CLR


CLR

Q0 Q1 Q2 Q3

Intrarile de selectie S1S0 conditioneaza modul de functionare a registrului. Avem:

S1S0 = 00 pastreaza continutul nemodificat;

S1S0 = 01 deplasare stanga-dreapta;

S1S0 = 10 deplasare dreapta-stanga;

S1S0 = 11 incarcare paralela.

Stergerea registrului se face asincron, prin semnalul CLR.


Aplicatii ale registrelor

Registrele sunt utilizate in mai multe tipuri de aplicatii, dupa functiile pe care pot sa le indeplineasca.

Registre de deplasare cu reactie

Au iesirile conectate la intrari si pot fi:

registre de deplasare in inel - continutul ultimei celule de memorie se inscrie in prima celula de memorie;

Q0 Q1 Q2 Q3

1 0 0 0

SIN 0 1 0 0

0 1 0

Q0 Q1 Q2 Q3 0 0 0 1

1 0 0 0

- registre (numaratoare) Johnson - in prima celula se introduce continutul negat al ultimei celule.

Q0 Q1 Q2 Q3

0 0 0 0

SIN 1 0 0 0

1 0 0

Q0 Q1 Q2 Q3 1 1 1 0

1 1 1 1

0 1 1 1

0 0 1 1

0 0 0 1

0 0 0 0

2. Memorie de tip FIFO (First In, First Out), primul inscris - primul citit (memorie coada)

Se realizeaza cu registre de deplasare stanga-dreapta. Numarul registrelor depinde de lungimea cuvintelor ce urmeaza a fi memorate. Capacitatea memoriei depinde de lungimea registrelor. De exemplu, daca registrele sunt de 4 biti, capacitatea memoriei este de 4 cuvinte. La fiecare impuls de tact se introduc datele pe intrarea seriala.

y1



SIN Ts

x1

y2



SIN Ts

x2

y3



SIN Ts

x3

y4



SIN Ts

x4

CLK




3. Memorie de tip LIFO (Least In, First Out), ultimul introdus - primul citit (memorie stiva)

Realizarea se face cu registre combinate. Numarul registrelor este dat de lungimea cuvantului de memorie, iar lungimea registrelor determina capacitatea de memorie.

xi

A0

A1

A1 A0

SIN Q0 yi

Q1

Q2

Q3

R CLK



A1 A0

0 1 deplasare stanga-dreapta inscriere

1 0 citire

Memoria stiva poate fi organizata si soft, in memoria de tip RAM, dar desi capacitatea acesteia poate fi mare, timpul de acces va fi si el mare.

4. Conversia serie-paralel si paralel serie a informatiei

Pentru conversia serie-paralel se face incarcarea registrului pe intrarea seriala si cu comanda de tact serie Ts si se citeste informatia pe iesiri, paralel.

Pentru conversia paralel-serie se face incarcarea paralela a informatiei, cu comanda de tact paralel Tp si apoi se deplaseaza informatia stanga-dreapta, cu comanda de tact serie Ts si se citeste serie la ultima iesire.

5. Generatoare de secvente

Generatoarele de secvente genereaza o succesiune de secvente binare (1 si 0) de lungime data (prestabilite). Lungimea secventei reprezinta numarul de biti dupa care se repeta intreaga secventa. Secventele binare pot fi:

- aleatoare, de lungime infinita;

- deterministe, de lungime finita.

Secventele binare deterministe de lungime maxima se numesc secvente pseudoaleatoare.

Realizarea generatoarelor de secvente se face cu registre in reactie cu circuite logice combinationale adecvate.



Q0 Q1 Q2

y = Q0 + Q2


S0 Q0 S1 Q1 S2 Q2

CLK CLK CLK

R0 Q0 R1 Q1 R2 Q2

CLK


Secventa pseudoaleatoare generata la iesirile Q0Q1Q2 este:



3.2.3. Memorii RAM

Memoriile de tip RAM (random access memory) sunt memorii de tip citeste-scrie, cu acces aleator. Ele nu-si pastreaza informatia dupa intreruperea tensiunii de alimentare.

Memoria este formata din nivelul de decodificare, matricea de memorie realizata cu celule de memorie binara de tip "latch" si nivelul de multiplexare.

Dimensiunea memoriei este specificata prin numarul de cuvinte si numarul de biti pe cuvant. Capacitatea memoriei este data de numarul de biti memorati in matricea de memorie.

Schema functionala de principiu a unei memorii RAM este urmatoarea:


Adresa CE sau CS (chip select)

n Decodificator


2n

n Matrice de

memorie

2n

WE (write enable)

Multiplexor


Date


Decodificatorul actioneaza pentru selectarea fiecarei celule de memorie, iar multiplexorul permite selectarea oricarei celule de memorie la intrare - iesire.

Validarea memoriei se face prin intrarea CS. Citirea memoriei se face daca WE = 1, iar scrierea memoriei se face daca WE = 0.

Datele de intrare si iesire pot sa foloseasca linii diferite sau aceeasi linie bidirectionala. Memoriile pot avea un numar diferit de cai de date (de obicei cuvinte de 1 bit sau de un numar de biti multiplu de 2).

Memoriile de tip RAM pot sa fie din punct de vedere constructiv de tip static sau dinamic. Cele dinamice sunt realizate cu condensatoare si au nevoie de reimprospatarea la diferite intervale de timp a informatiei memorate, pentru a se evita pierderea ei.

Extinderea capacitatii memoriilor se face atat prin extinderea dimensiunii cuvantului de memorie (numarul de biti din cuvant), cat si prin extinderea numarului de cuvinte ale memoriei (adresa de memorie).


Curs 9


3.3. Sinteza circuitelor logice secventiale sincrone


Circuitele secventiale sincrone trec dintr-o stare in alta la momente distincte de timp, determinate de impulsurile de tact. Intre doua impulsuri de tact starea circuitului nu se modifica.

Variabile de intrare


Generare stare noua

Calculul excitatiilor secundare

CLC


Excitatii secundare

Tact


Registru de stari

Stari interne

CL


Variabile secundare

Calculul variabilelor de iesire

CLC


CL = circuit logic general - pastreaza starea interna registru de stari (bistabili RS, D, JK, registre, memorii); poate fi circuit logic secvential cu bucla de reactie.

CLC = determina functiile de excitatie secundare care in prezenta tactului determina trecerea circuitului in alta stare se poate numi generatorul starii noi; se pot realiza cu porti logice sau cu circuite specializate (multiplexoare, decodificatoare).

Variabilele de intrare sunt in general sincrone cu impulsul de tact, dar pot fi si de tip asincron.


3.3.1. Etapele de sinteza

1. Expunerea conditiilor de functionare (descrierea comportarii circuitului).

Stabilirea modalitatii de definire a circuitului care trebuie sintetizat prin:

tabel de tranzitii;

graf de tranzitii;

organigrama;

forme de unda.

Trebuie evidentiate:

starile prin care trece circuitul;

valorile variabilelor de intrare pentru care se schimba starile;

valorile rezultate ale variabilelor de iesire.

Evolutia circuitului incepe intr-o stare initiala si de obicei se revine la aceasta stare, dupa ultima stare a ciclului.

2. Se codifica starile circuitului.

3. Se incearca reducerea (simplificarea) numarului de stari a circuitului, daca este posibil, incat sa se pastreze functionarea lui corecta.

4. Se decide asupra modului de implementare (registrul de stari interne).

5. Se determina functiile de excitatie si cele de iesire, daca este posibil.

6. Se studiaza problemele legate de eventualele iesiri false (hazard) sau tranzitii false.

7. Se deseneaza circuitul.

Etapa cea mai dificila este cea de codificare a starilor. In general functionarile defectuoase se datoreaza unor tranzitii gresite intre stari sau unor semnale gresite care apar la circuitul de generare a variabilelor de iesire.

Tranzitiile gresite intre stari apar datorita prezentei variabilelor de intrare asincrone (se elimina cel mai usor daca se sincronizeaza variabilele de intrare cu semnalul de tact).

Codificarea starilor se stabileste astfel incat, in orice stare, pentru toate combinatiile posibile de intrari asincrone, sa nu fie mai mult decat o singura variabila de stare dependenta de o variabila de intrare asincrona. In aceste conditii, doua stari rezultate din calea de iesire a unei intrari asincrone vor avea codificare adiacenta.

Iesirile false pot sa apara din cauza ca la trecerea dintr-o stare in alta, variabilele de stare practic nu se modifica simultan. Pentru evitarea tranzitiilor false ale iesirilor se pot folosi metodele:

se realizeaza o codificare adiacenta a starilor;

se forteaza trecerea circuitului prin stari suplimentare;

se sincronizeaza variabilele de iesire.

Observatie: Hazardul static al CLC se elimina prin proiectare (se introduc termeni redundanti, indiferenti).





3.3.2. Utilizarea organigramei in sinteza circuitelor logice secventiale sincrone

Elementele componente ale organigramei de functionare a oricarui circuit secvential sincron sunt:

- elementul de intrare (control sau decizie):

Variabile de intrare

- sincrone


var. 1


0

- asincrone


var. 1


0

- elementul de stare:

Q2Q1Q0

000


- elementul de iesire:


transfer


Configuratii elementare care unesc cele 3 elemente de baza:

A 001 tranzitie simpla:

- contor de timp

- solutionarea problemei de codificare a starilor

B 011




A stare cu iesire


Aduna


B




A stare cu decizie


I1 0


B C



A stare cu iesire si decizie


Scade

I1 0

B C



A stare cu iesire conditionata


I1 1

0 Iesire


B



A stari cu decizii multiple si iesire

0 I1 1



1

I2 C

0 1 0

I3

B Iesire



Observatii

Orice tranzitie intre 2 stari ale circuitului se face intr-un singur impuls de tact.

La un moment dat circuitul se poate gasi intr-o singura stare.

Un circuit care se gaseste la un moment dat intr-o stare data, cu un set de intrari dat, poate avea o singura stare urmatoare.


3.3.3. Sinteza circuitelor secventiale sincrone cu diferite elemente de memorie

In sinteza circuitelor secventiale sincrone se vor folosi ca elemente de memorie bistabili de tip D si JK. Implementarea registrului de stari se va realiza cu aceste tipuri de bistabile.

Exemplu: Sa se recunoasca secventa 101 in sirul de cifre binare 10101.

Graful de tranzitii are in noduri starile circuitului. Pe arce avem tranzitia dintr-o stare in alta pentru o anumita intrare, cu o anumita iesire.


0/0 1/0

1/0 0/0

Init A B C

1/1

0/0

Avem 2 variabile de stare pentru a putea codifica 2 stari (A=00, B=01, C=11). Cu x am notat intrarea, cu z iesirea. Tabelul de tranzitii este:

St St+1,z

Q1Q0 x=0 x=1

00 A A,0 B,0

01 B C,0 B,0

11 C A,0 B,1


a. Implementam registrul de stari cu bistabile de tip D.

Functiile de excitatie se deduc explicitand diagrama starilor pentru momentul t si momentul t+1. Starile se vor inlocui cu codurile lor (A=00, B=01, C=11).

St St+1 (Q1Q0)t+1 z

Q1Q0 D1D0 D1D0

x=0 x=1 x=0 x=1

00 (A) 00 (A) 01 (B) 0 0

01 (B) 11 (C) 01 (B) 0 0

11 (C) 00 (A) 01 (B) 0 1


Di = Qit ecuatia starii urmatoare


D1:

Q1Q0    x













x

x

D1 = Q1 Q0 x

D0:

Q1Q0    x











x

x


D0 = x + Q1 Q0

z:

Q1Q0    x












x

x

z = Q1 x


La trecerea din starea C in starea A se poate trece prin starea B, ceea ce nu corespunde functionarii. In mod normal se introduce o stare suplimentara pentru a rezolva situatia.

Schema pentru circuitul secvential sincron este:


D1 Q1 D0 Q0 Q1

CLK CLK Q0 D1

Q1 Q0 x

R R Q0

Init                     Q1 D0

x

CLK                   Q1 z

x


b. Implementam registrul de stari cu bistabile de tip JK.

Diagrama starilor se completeaza tinand cont de tabelul de excitatie al bistabilului JK.



Qt Qt+1 J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0


St St+1(Q1Q0)t+1 z

Q1Q0 J1K1 J0K0 J1K1 J0K0

x=0 x=1 x=0 x=1 x=0 x=1

00 (A) 00 01 0x 0x 0x 1x 0 0

01 (B) 11 01 1x x0 0x x0 0 0

11 (C) 00 01 x1 x1 x1 x0 0 1


J1:

Q1Q0    x









x

x


x

x

J1 = Q0 x

K1:

Q1Q0    x



x

x


x

x





x

x

K1 = 1

J0:

Q1Q0    x






x

x


x

x


x

x

J0 = x

K0:

Q1Q0    x




x

x







x

x

K0 = Q1 x


z:

Q1Q0    x












x

x

z = Q1 x


3.3.4. Implementarea generatorului noii stari cu multiplexoare

Pentru a realiza o implementare cu multiplexoare se scriu functiile de excitatie pentru bistabile in forma canonica (fara a se minimiza).

Se iau in considerare locatiile care sunt 1 sau care au o variabila inglobata.

x


CLC



MUX



Registru de stare



CLC


y


3.3.5. Implementarea generatorului noii stari cu decodificatoare

In cazul implementarii generatorului noii stari cu decodificatoare, la intrarea decodificatorului sunt aplicate variabilele de stare, iar la iesire sunt individualizate starile interne.


3.3.6. Implementarea generatorului noii stari cu memorii si multiplexoare

Acest tip de implementare a generatorului noii stari se utilizeaza in cazul circuitelor complexe. Se asigura o simplificare a logicii de generare a noii stari si o crestere a sigurantei in functionare.




Implementarea generatorului noii stari cu decodificatoare:

x


CLC


Registru de stari


DEC


CLC


y


Implementarea generatorului noii stari cu multiplexoare si memorii:

x


MUX


Memorie


Registru de stari


CLC


y



Curs 10


Exemplu: Sinteza unui automat (circuit secvential sincron) de raspuns la telefon. Se poate programa numarul de apeluri sonore ale soneriei telefonului dupa care incepe sa functioneze automatul. Programul automatului se incheie in conditiile: 1) dupa preluarea (inregistrarea) mesajului; 2) daca apelantul inchide; 3) daca destinatarul raspunde la telefon.

1. Determinarea functionarii - obtinerea organigramei.

Se stabileste schema bloc a automatului, cu componentele periferice aditionale necesare. Se stabilesc variabilele de intrare si iesire si caracterul lor sincron sau asincron.

Avem nevoie de:

- telefon propriu-zis (TEL);

- numarator pentru apelurile sonore ale soneriei telefonului (NRT);

- casetofon pentru redarea mesajului de intampinare (PLAY);

- casetofon pentru inregistrarea mesajului apelantului (REC).

Variabilele folosite sunt:

Sonerie: fiecare apel al soneriei telefonului provoaca decrementarea numaratorului NRT pana ce ajunge la 0. Nu este variabila a automatului.

Start: variabila de intrare asincrona, de la numarator, care determina inceperea functionarii automatului, daca numaratorul a ajuns pe 0.

StartPlay (SP), StartRecord (SR): variabile de iesire spre casetofon.

EndOfPlay (EP), EndOfRecord (ER): variabile de intrare asincrone, de la casetofon.

ApelantStop (AS): variabila de intrare asincrona de la telefon (apelantul poate inchide oricand telefonul).

DestinatarPick-Up (DPU): variabila de intrare asincrona de la telefon; apare cand destinatarul raspunde la telefon.

Init: variabila de iesire spre numarator; incarca paralel numaratorul cu valoarea stabilita pentru numarul de apeluri ale soneriei telefonului pana la intrarea in functiune a automatului.

Obs: variabilele de intrare AS si DPU genereaza semnalul de Reset pentru bistabilii interni ai automatului si opresc inregistrarea pe casetofon.

Schema bloc este:

CLK Sonerie

PL NRT TEL

Zero AS DPU

Start

Init Automat ER

SP

EP SR

PLAY REC


Organigrama automatului este:

000

A


Init

1 0

Start

B 001

SP



011 C


1 0

EP

D 010

SR

100 E


1 0

ER


2. Codificarea starilor

Pentru ca variabilele de intrare sunt asincrone este nevoie de o codificare adiacenta a starilor automatului (A,B), (C,D), (E,A) . Pentru 5 stari sunt necesare 3 variabile de stare pentru codificare. Se alege codificarea: A = 000; B = 001; C = 011; D = 010; E = 100.

Se construieste diagrama Karnaugh pentru stari, pe baza codificarii facute:

Q2  Q1Q0






A

B

C

D


E





Trebuie obtinute diagramele pentru starile urmatoare. Le vom suprapune si vom desena o singura diagrama, ingloband si variabilele de intrare. Completarea se face urmarind tranzitiile din organigrama si completand pentru fiecare stare codul starii urmatoare. Locatiile necompletate vor fi indiferente deoarece continutul lor nu poate fi atins prin functionare.


Q2  Q1Q0





00Start


01EP


ER00





Reducerea numarului de stari nu mai este posibila.

4. si 5. Registrul de stari se implementeaza cu bistabile de tip D, iar generatorul noii stari (functiile de excitatie) si iesirile cu porti logice.

a. Pentru implementarea registrului de stari cu bistabile de tip D se tine cont de ecuatia starii urmatoare a acestui tip de bistabil: Di = Qit.

Diagramele Karnaugh pentru intrarile bistabilelor vor fi:

D2:

Q2  Q1Q0










ER

x

x

x

D2 = ER Q2 + Q1 Q0

D1:

Q2  Q1Q0











x

x

x

D1 = Q0

D0:

Q2  Q1Q0





Start


EP




x

x

x

D0 = Start Q2 Q1 + EP Q0 + Q1 Q0

Diagramele iesirilor se completeaza tinand cont de organigrama si de diagrama starilor.

Init:

Q2  Q1Q0












x

x

x

Init = Q2 Q1 Q0

SP:

Q2  Q1Q0











x

x

x

SP = Q1 Q0


SR:

Q2  Q1Q0











x

x

x

SR = Q1 Q0

7. Desenarea schemei circuitului

Iesirile se realizeaza cu porti logice de tip SI:

Q2

Q1                         Init

Q0

Q2                         SP

Q1

Q0                         SR


Generarea semnalului de Reset se realizeaza cu o poarta logica SAU-NU:

Reset = AS + DPU

AS

Reset

DPU


Registrul de stari este cu bistabile de tip D:

D2 Q2 D1 Q1 D0 Q0

Clk Clk Clk

Q2 Q1 Q0

R R R

Clk

Reset


Functiile de excitatie se implementeaza cu porti logice:

Q2                                 D0

Q1

Q0

Q2

Q1                                 D2

Q0                                 D1

Start

ER

EP


b. Implementarea generatorului noii stari cu multiplexoare se poate realiza numai cu multiplexoare daca numarul intrarilor de selectie a multiplexorului este egal cu numarul variabilelor de stare. Daca numarul intrarilor de selectie este mai mic decat cel al variabilelor de stare, la intrarile selectate se vor conecta circuite realizate cu porti logice.

Se scriu termenii canonici care contin 1 sau variabile inglobate in diagrama Karnaugh.

D2 = Q2 Q1 Q0 + ER Q2 Q1 Q0

D1 = Q2 Q1 Q0 + Q2 Q1 Q0

D0 = Start Q2 Q1 Q0 + EP Q2 Q1 Q0 + Q2 Q1 Q0

Implementarea cu MUX 8:1 este:

0

0 MUX

1 8:1

D2

ER                         D2

74151


s2 s1 s0


Q2 Q1 Q0


0

1 MUX

0 8:1

D1

D1

74151


s2 s1 s0


Q2 Q1 Q0


Start

1 MUX

0 8:1

EP D0

0 D0

0 74151

0

0 s2 s1 s0


Q2 Q1 Q0


Daca implementarea s-ar realiza cu MUX 4:1 pe intrarile multiplexorului am avea iesiri din porti logice de tip SI.

c. Implementarea generatorului noii stari cu decodificatoare se face aplicand la intrarea decodificatorului variabilele de stare. La iesirile decodificatorului se obtin starile interne individualizate.

Putem scrie:

D2 = D + ER E

D1 = B + C

D0 = Start A + B + EP C

Pentru obtinerea functiilor de excitatie se vor utiliza porti logice de tip SI, SAU si NU.

Decodificatorul va fi de tip zecimal:

DCD 0 A

0 1 B D1

Q2 2 D

Q1 3 C

Q0 4 E



9


d. Implementarea generatorului noii stari cu memorii si multiplexoare permite simplificarea logicii generarii noii stari.

ROM A0 MUX 0 Start

16 x 4 A1 8:1 1 0

A2 2 0

y3 y2 y1 y0 A3 Y 3 EP

4 ER 5 0

D2 Q2 D1 Q1 D0 Q0 6 0

Clk Clk Clk s2 s1 s0 7 0



Q2Q1Q0 A3A2A1A0 y3y2y1y0 Q2Q1Q0 A3A2A1A0 y3y2y1y0

(s2s1s0)                                 (s2s1s0)

000 0000 0000 000 1000 0001

001 0001 0011 001 1001 0000

010 0010 0100 010 1010 0000

011 0011 0010 011 1011 0011

100 0100 0000 100 1100 0100

101 0101 0000 101 1101 0000

110 0110 0000 110 1110 0000

111 0111 0000 111 1111 0000

e. Implementarea circuitelor secventiale sincrone se poate realiza cu numaratoare MSI. Numaratorul va fi utilizat pentru functia de memorare si partial pentru efectuarea tranzitiilor.

Vom utiliza pentru implementare un numarator sincron (de exemplu numaratorul zecimal 74162). Bistabilii interni ai acestuia pot memora starea circuitului.

Codificarea starilor se face tinand cont de ordinea de numarare a numaratorului: A = 000; B = 001; C = 010; D = 011; E = 100.


Q2  Q1Q0






A

B

D

C


E





Vom determina functiile de numarare fN si incarcare (ramificare) fR si vom realiza implementarea lor cu multiplexoare 8:1 (de tipul 74151). Intrarile de selectie vor fi iesirile numaratorului, Q2Q1Q0. Diagramele pentru cele 2 functii vor fi:


fN:

Q2  Q1Q0






Start



EP






fR:

Q2  Q1Q0











ER





Starile urmatoare ale numaratorului trebuie specificate pentru starile din care au loc ramificari (E). D2 = Q2; D1 = Q1; D0 = Q0. In acest caz se utilizeaza incarcarea paralela a numaratorului cu valoarea prestabilita pe intrarile paralele.

Schema circuitului trebuie completata si cu logica pentru determinarea iesirilor. Iesirile Init, SP si SR corespund starilor A, B, D. Functiile de iesire sunt:

Init = Q2 Q1 Q0

SP = Q1 Q0

SR = Q1 Q0

Implementarea functiilor de iesire se poate realiza cu porti logice de tip SI sau cu un decodificator zecimal.




Circuitul secvential sincron va avea urmatoarea implementare:


0 0 En Start 0 En

0 1 MUX 1 1 MUX

0 2 8:1 EP 2 8:1

0 3 fR 1 3 fN

ER 4 Y 0 4 Y

0 5 Y 0 5 Y 0 Init

0 6 0 6 DCD 1 SP

0 7 4151 0 7 4151 2

s2 s1 s0 s2 s1 s0 0 D3 3 SR

D2 4

D1 5

D0 6

7

Q3Q2Q1Q0 7442 8

Reset MR 74162 Clk 9

LD D3D2D1D0 EN

0





Curs 11


3.4. Sisteme secventiale sincrone


Evolutia circuitelor secventiale sincrone a fost determinata de metodele de sinteza adecvate. Pentru circuitele secventiale sincrone cu numar mic de variabile de intrare si de stare se poate utiliza sinteza pornind de la grafuri sau diagrame de tranzitii (metoda studiata). Pentru circuitele cu numar mare de variabile de intrare si de stare se face o organigrama functionala care pune in evidenta direct starile interne si tranzitiile, in functie de modificarea unei singure variabile de intrare. Aceste circuite se numesc sisteme secventiale sincrone (SSS).

Structura unui sistem secvential sincron:

START

Incarcare R S1

numarator C = 0 cautarea bitilor = 1

intr-un registru de 8 biti

DA Ri = 1 NU S2



Prelucrare in functie Deplasare stanga R S3

de rangul bitului C = C - 1

(succesiune de operatii)


NU S4

C = 8


DA


STOP

Analiza figurii permite determinarea a 2 blocuri functionale:

Unitatea de executie UE - realizata cu registri, numaratoare, bistabili, CLC.

Generatorul de secvente sau unitatea de comanda UC - secventiator care opereaza asupra unitatii de executie. UC trebuie sa asigure:

- trecerea din starea Si in starea Si+1;

- intreruperi de secvente prin salt;

- bucle de asteptare.

Schema sistemului secvential complex

UC UE

Calculul secventei Stari

urmatoare

Generator

de tact                                    Unitate de

CLK executie UE

Generator de

secvente

secvente

Bloc de determinare actiune

CLK a actiunii asupra UE UE



Unitatile de comanda UC pot fi: cablate sau microprogramate. Generatorul de secvente poate deci fi realizat cablat sau microprogramat.

1) UC cablate - exista 2 posibilitati de realizare:

a. Generatorul de secvente este realizat cu un numarator programabil. Acesta numara, se opreste sau se incarca cu o noua valoare. Iesirile sale sunt decodificate de un decodificator de secvente. Se genereaza secvente care valideaza actiunile asupra elementului functional (UE).

Generator

de tact CLK



Calcul Calcul adresa Calcul adresa Calcul adresa

adresa de salt urmatoare de oprire

(conditii de (conditii (conditii de

intrerupere) urmatoare) oprire)


Adresa Load Numarare Oprire

(Salt) UE

Numarator de secventa


Decodificator Calcul

de secvente actiuni UE

CLK


b. Generatorul de secvente este realizat cu un registru de deplasare (decalaj) in care va circula un bit de 1. Fiecarei stari ii corespunde un bit din registrul de deplasare. Pozitia bitului de 1 semnalizeaza o anumita secventa. Pentru a obtine starea urmatoare registrul va fi decalat cu o pozitie sau va fi decalat in cazul saltului. Avantajul acestei variante consta in eliminarea decodificatorului de secvente.

In fiecare secventa se realizeaza o actiune sau un grup de actiuni. O actiune poate sa necesite mai multe etape. Dirijarea in cadrul secventei se realizeaza cu ajutorul generatorului de tact.

Variantele a si b de UC cablate au dezavantajul ca o modificare a functionarii presupune o modificare a secventei de lucru, deci o modificare a cablajului.

2) UC microprogramate

Generatorul de secvente trebuie sa aiba exact aceleasi functii ca si in cazul UC cablate.


Generator

de tact CLK



Calcul adresa Calcul adresa Calcul adresa

de salt urmatoare de oprire

(conditii de (conditii (conditii de

CLK intrerupere) urmatoare) oprire)


Adresa Load (Salt) Numarare Oprire

Registru de microinstructiune UE

Registru de adresa microprogram


Adresa Calcul

Memorie microprogram actiuni UE

Adresa noua Actiuni CLK




La acest mod de realizare a UC se castiga in fiabilitate deoarece se executa o singura operatie intr-o secventa, dar se pierde in viteza. Tactul actioneaza asupra registrului (numaratorului) de microprogram.


3.4.1. Principii de comanda a sistemelor secventiale sincrone

Sistemele secventiale sincrone isi modifica iesirea in functie de intrare doar in prezenta unui semnal de tact.

Functii logice de comanda. Tabele de excitatie

Generatorul de tact furnizeaza un semnal de tact de baza, care provine de la un oscilator si este un semnal periodic de durata si perioada constanta. Cu ajutorul semnalului de tact se vor genera toate semnalele de comanda necesare unui sistem secvential sincron.

In sistemele cablate, in cadrul unei secvente se pot efectua mai multe operatii. Din acest motiv este necesara dirijarea perioadei tactului pentru a stabili o succesiune a diferitelor actiuni. Pot sa apara urmatoarele situatii:

Tact suprapus

T



CLK1



CLK2


CLK3


Tact adiacent


CLK1


CLK2


CLK3


Tact neadiacent


CLK1


CLK2


CLK3


Sistemele secventiale sincrone se comanda prin functii care contin unul dintre semnalele de tact CLKi, o stare a circuitului si un semnal extern. Toate functiile de comanda care actioneaza asupra elementelor din unitatea de executie UE vor contine obligatoriu unul dintre semnalele de tact in cadrul expresiei functiei (valideaza o actiune).

Functiile logice de comanda nu tin cont de natura elementului fizic utilizat. Dupa alegerea elementelor fizice se vor grupa functiile de comanda intr-un tabel de excitatie. Tabelul de excitatie contine:

- numele elementului circuitului;

- tipul elementului;

- intrarile elementului;

- modul de comanda a intrarilor;

- functia logica corespunzatoare fiecarei intrari, scrisa sub forma simbolica.

3.4.2. Hazardul in functionarea sistemelor secventiale sincrone

Hazardul reprezinta aparitia unei modificari neprevazute si nedorite a unei stari a sistemului secvential sincron.

Hazardul poate fi:

- static - datorat propagarilor pe cai diferite a semnalelor; se manifesta prin comutari fara semnificatie logica;

- dinamic - datorat proceselor asincrone pe intrari; se manifesta prin comutari fara semnificatie logica.

Cauzele aparitiei pot fi:

- semnale parazite la functiile de excitatie;

- nerespectarea parametrilor dinamici;

- durata insuficienta a impulsului de comanda.

Metodele de evitare a hazardului:

1) Sincronizarea intrarilor asincrone


semnal

asincron

extern

CLK

tsetup thold


Exemplu. Se considera un numarator N care face o incrementare +1 la tactul CLK si un semnal extern E. Incrementarea se face la CLK E.

E                    N

CLK                     +1



E


CLK


CLK E


Se poate ca semnalul CLK E sa aiba o durata foarte scurta care va provoca o functionare gresita a numaratorului N. Se va face o sincronizare a semnalului asincron E cu ajutorul unui bistabil.

E Es +1

CBB CLK2

CLK1


Daca exista mai multe semnale asincrone, pentru realizarea sincronizarii se utilizeaza registre.

2) Automodificarea unui circuit secvential

Poate sa apara in situatii ca si urmatoarea:

f = s CLK1 CLK2 Q1 Q2

in cazul in care bistabilul al doilea, Q2, va comuta in 0.

D Q2

CLK2

s



CLK2


s CLK1 Q1 Q2                             durata foarte scurta, neutilizabila


Q2

Se face sincronizarea pentru Q2.


Q1 D Q2

s CLK2



CLK2


s Q1 Q2

Q2


3) Probleme datorate decalajului de tact (defazarea tactului)

Daca la CLK2 s Q1 Q2 avem Q3 1 si la CLK2 s Q1 avem Q2

Daca CLK2 care se aplica bistabilului 2 este in avans fata de CLK2 aplicat bistabilului 3, s Q1 Q2 0 prea repede si nu se respecta thold pentru bistabilul 3, deci Q3 nu va

J2 Q2 J3 Q3

CLK2

Q1 CLK CLK

s K2 K3




CLK2 Q1


Q2


s CLK2 Q1

tsetup thold