Ex Proiect C Secvential

15
 142 143 Ci rc uit P LD tea Regislre IS fMA ext erna = l/(IStteo) Figura 4.2 . fMAX cxtcma  l Circuit Logic Combinational •• ----I> F le xi bi li ta te a p ro iec ta ri i c u c ir cu it eP LD , p ri n p os ib ili ta tea r ec on fi gu rar ii a sig ur a c alc ul ab il ita te a a ce stu i p ar am etr u atat de important (fMAX). Pentru ca lc ulul frecvent ei ma xime de lucru yom considera diteva tipuri de baza: Figura 4.1 . Fr ccv cnt a maxima intcr na fMAX fMAX = f re ve nt a interna fcNT Primul tip de proiectare es te cand ci rc uitul PLD este  olosit independent, a dic a p ro iec tu l es te im ple me nt at I ntr -u n s in gu r c ir cu it PLD P en tr u a d ec id e starea urmatoare a registrelor, stiirile logice ac tuale ale ci rcuitului trebui e sa fie stabil la intrarea registrelor inaintea unna torului tact de inscriere (figura 4.1.). Inaceste conditii pe rioa da frecventei deta ct este limitata de timpii de propagar e a semnal el or de la ie~irea registrelor la intrarea ci rc uitului logi combinational prin intermediul reactiei, la care se adauga timpii de propagare interna a circuitului logic combinationa l. Aceasta frecventa de lucru maxima fMAX , astfel real iz at a este denumitafrecvenfa de lucru in te rna ma xi ma (fMAX). Exemplul cel m ai b un p en tr u a ce st t ip d e ci rc ui t es t u n n um ar ato r b in ar ( fCNT )' Urmatoru tip de configuratie este acela in care un numar de circuite secventiale PLD sunt controlate cu acela ?it ac t deinscriere - situatia cea mai des intiilnita. In acest caz starea registrelor este transmisa extern la intrarile EXEMPLE DE PROI ECTARE CU CI RCUI TE LOG ICE SECVENTIALE , 4 4 Obiective In capitolul precedent am aratat ciiteva exemple de proiectare p en tr u circuitele logice combinationale. Daca starea logica aie ?irilor circuitelor c omb in at io na le e st e i nd ep en de nt a d e s ta re a p re ce de nt a, atunci In acest capitol s ta re a v iit oa re a c ir cu it el or t ra ta te , d ep in de d e s ta re a lo gi ca a ct ua la a i e~ ir il or . Circuitele pastreaza st ar ea logica pana la aplica re a unui nou semnal de inscrier e  tact . E le men tu l d e b aza a l a ce st or c ir cu ite n um ite secvenfiale, d up a c um b in e ~ ti m s un t c ir cu it el e b is ta bi le . U n b an c d e c ir cu it e b is ta bi le f or me aza r eg is tr e, numaratoare et c. Inaint e de a pr ezenta cateva programe care realizeaza circuite secvential e s im pl e y om d is cu ta u nel e p ro bl em e le ga te d e ci rc ui te le d ig ita le, ma jo ri ta tea proiec te lor digitale folosi nd cele doua tipuri de ci rcuite mixate . D es ig ur c a e xi sta 0 g am a l ar ga d e ci rc ui te p ro gr am ab il e PLD In care se pot implementa aceste proiecte digitale mixate . Majoritatea ci rcuitelorPLD asigura ie ?iri cu functii logice multiple (ie ?iri programabile). Totu ?i la pro iectarea circuite lor secventi ale trebui e sa consideram urmatoarele: numarul ie ?i rilor/ intrarilor; vi teza de raspuns a circuitului; consumul de put er e al circui tuluiPLD; numa rul regist relor circui tul ui PLD numarul termenil or produs continuti de PLD 4 2 Frecventa maxima de lucru P en tr u c ir cu it el e s ec ven ti al e, v ite za d e l uc ru es te p ar am et ru l es en tia l, care trebuie al es cu atentie. Majoritatea pr oi ectelor combinationale considera timpii de propagare (tm) pentru asigurarea propagarii starilor logice de la intrarea circuitel r la ie~irea acestora. La circuitele secventiale efectul semnalului de comanda a Insc rierii datelor (semnalul de tact) trebuie considerat cu atentie. Acest fapt se reflecta in fiecventa maxima de lu ru (fMAX).

Transcript of Ex Proiect C Secvential

4.

EXEMPLE DE PROIECTARE CU CIRCUITE LOG ICE SECVENTIALE ,

Flexibilitatea proiectarii cu circuitePLD, prin posibilitatea reconfigurarii asigura calculabilitatea acestui parametru atat de important (fMAX). Pentru calculul frecventei maxime de lucru yom considera diteva tipuri de baza:

4.1. ObiectiveIn capitolul precedent am aratat ciiteva exemple de proiectare pentru circuitele logice combinationale. Daca starea logica a ie!?irilor circuitelor combinationale este independenta de starea precedenta, atunci In acest capitol starea viitoare a circuitelor tratate, depinde de starea logica actuala a ie~irilor. Circuitele pastreaza starea logica pana la aplicarea unui nou semnal de inscriere (tact). Elementul de baza al acestor circuite numite secvenfiale, dupa cum bine ~tim sunt circuitele bistabile. Un banc de circuite bistabile formeaza registre, numaratoare etc. Inainte de a prezenta cateva programe care realizeaza circuite secventiale simple yom discuta unele probleme legate de circuitele digitale, majoritatea proiectelor digitale folosind cele doua tipuri de circuite mixate. Desigur ca exista 0 gama larga de circuite programabile PLD In care se pot implementa aceste proiecte digitale mixate. Majoritatea circuitelorPLD asigura ie!?iri cu functii logice multiple (ie!?iri programabile). Totu!?i la proiectarea circuitelor secventiale trebuie sa consideram urmatoarele: numarul ie!?irilor/intrarilor; viteza de raspuns a circuitului; consumul de putere al circuituluiPLD; numarul registrelor circuitului PLD; numarul termenilor produs continuti de PLD; controlul polaritatii de ie~ire.

fMAX = freventa

interna(fcNT) fMAX

Figura 4.1. Frccvcnta maxima intcrna

Primul tip de proiectare este cand circuitul PLD este folosit independent, adica proiectul este implementat Intr-un singur circuit PLD. Pentru a decide starea urmatoare a registrelor, stiirile logice actuale ale circuitului trebuie sa fie stabile la intrarea registrelor inaintea unnatorului tact de inscriere (figura 4.1.). In aceste conditii perioada frecventei de tact este limitata de timpii de propagare a semnalelor de la ie~irea registrelor la intrarea circuitului logic combinational prin intermediul reactiei, la care se adauga timpii de propagare interna a circuitului logic combinational. Aceasta frecventa de lucru maxima fMAX , astfel realizata este denumitafrecvenfa de lucru interna maxima (fMAX). Exemplul cel mai bun pentru acest tip de circuit est un numarator binar ("fCNT")' Urmatorul tip de configuratie este acela in care un numar de circuite secventiale PLD sunt controlate cu acela!?i tact de inscriere - situatia cea mai des intiilnita. In acest caz stare a registrelor este transmisa extern la intrarileelK

----I>Circuit Logic Combinational Regislre

Circuit

PLD

4.2. Frecventa maxima de lucru ,Pentru circuitele secventiale, viteza de lucru este parametrul esential, care trebuie ales cu atentie. Majoritatea proiectelor combinationale considera timpii de propagare (tm) pentru asigurarea propagarii starilor logice de la intrarea circuitelor la ie~irea acestora. La circuitele secventiale efectul semnalului de comanda a Inscrierii datelor (semnalul de tact) trebuie considerat cu atentie. Acest fapt se reflecta in fiecventa maxima de lucru (fMAX).142

IS

tea

fMAX externa

= l/(IStteo)

Figu ra 4.2. fMAX cxtcma

143

circuitului PLD ~i transmisa ~i la alte circuite PLD. Calea de propagare cea mai . lenta a semnalului define~te perioada semnalului de tact fMAX (figura 4.2), care este reciproca sumei dintre timpul de propagare de la intrarea registruluila ie~irea acestuia teo (calculat din momentul Inscrierii informatiei) ~i timpul de propagare a semnalelor externe ts (ts+teo). Reciproca sumei este frecventa maxima extern a de lucru denumita astfel "fMAX externa." Al treilea tip de proiect este acela In care calea de propagare a semnalului este "simpla". in acest caz data de intrare In registre este Inscrisa Tara aplicarea reactiei de la ie~irea registrelor (figura 4.3). Frecventa de lucl'll este limitata de suma dintre timpul de Inscriere ~i timpul de stabilizare a semnalului (tS+tH) sau timpii de trecere din/la stare a logica H respectiv L. fMAX=lI (ts + tH) sau 1/(twH + tWL)'eLK

Circuite logice combinationale Intrari de control Decodor stare dc

CLKlesiri

FigUl'a 4.4. Modelul general

a-I eircuitului

numaratol'

Registrele prezentate In model sunt controlate deacela~i semnal de tact. Je~irea bistabililor este reintrodusa la intrarea circuitului combinational pentl'll decodificarea starii urmatoare. Starea urmatoare este determinata de starea prezenta a cireuitului ~i de intrarile de control. Majoritatea cireuitelor programabile utilizeaza suma de produse pentl'll a forma decodorul de stare. Relatia dintre semnalele de control ~i bitii de stare ai unui numarator de 3 biti sunt ilustrate In figura 4.5. Numaratorul poate fi reprezentat ~i cu ajutol'lll diagramei de stari (vezi figura 4.6). Diagrama de stare este reprezentarea grafica a eircuitelor seeventiale, unde starile eircuitului sunt reprezentate prin cerculete, iar eonditia de treeere de la 0 stare la urmatoarea este reprezentata prin sageti (vezi grafuri).

fMAX

= 1/(tS+tH)

sau

l/(tWH+tWL)

Figura 4.3.

fMAX

tara rcactic

4.3.

Tipul circuitelor bistabile

Majoritatea circuitelor programabile ofera registre de tip D, dar desigur proiectele digitale pot fi realizate ~i cu bistabili S-R, J-K, T, Proieetarea eu bistabili de tip D este metoda cea mai simpla, dar unele eircuite PLD ofera posibilitatea utilizarii cireuitelor bistabile D, T, J-K sau S-R prin configurarea corespunzatoare a elementelor de ie~ire. Bistabilii configurabili In unele eazuri favorizeaza redueerea numarului de termeni produs In proiectul digital.

4.4.

Circuite numaratoare

Figura

4.5. Oiagrama

de timp al numaratorului

de trei biti

Numaratoarele sunt citcuitele seeventiale cel mai des Intalnite. Definim numiiriitoarele ea un set de reg istre, care trec printr-o secventa de stari predefinite detenninata de circuitele logice aferente. Modelul general al numaratorului sineron este ilustrat In figura 4.4.144

145

circuitului PLD ~i transrnisa ~i la alte circuite PLD. Calea de propagare cea rnai . lentil a sernnaluIui define~te perioada sernnalului de tact fMAX (figura 4.2), care este reciproca surnei dintre tirnpul de propagare de la intrarea registruluila ie~irea aeestuia teo (calculat din rnornentullnscrierii inforrnatiei) ~i tirnpul de propagare a sernnalelor externe ts (ts+teo). Reeiproca sumei este frecventa maxima extern a de lueru denumita astfel "fMAX externa." AI treilea tip de proiect este aeela In care calea de propagare a sernnalului este "simpla". in aeest caz data de intrare In registre este Inscrisa Tara apliearea reactiei de la ie~irea registrelor (figura 4.3). Frecventa de lucru este lirnitata de suma dintre timpul de Inscriere ~i tirnpul de stabilizare a semnalului (tS+tH) sau timpii de trecere din/la stare a logica H respectiv L. fMAX=1/ (ts + tH) sau l/(twH + tWL)'eLK

Circuite log ice combinationale Intrari de control Decodor stare de

eLKlesiri

Figul'a 4.4. Modelul general

a-I circuitului

numaratOi'

~ , ' , ts , "., , 'I' , , , , ,fMAX

Registrele prezentate In model sunt control ate deacela~i semnal de tact. Ie~irea bistabililor este reintrodusa la intrarea eircuitului combinational pentru decodificarea starii urmatoare. Starea urmatoare este determinata de starea prezenta a eireuitului ~i de intrariJe de control. Majoritatea cireuitelor programabile utilizeaza suma de produse pentru a forma deeodorul de stare. Relatia dintre semnalele de control ~i bitii de stare ai unui numarator de 3 biti sunt ilustrate In figura 4.5. Numaratorul poate fi reprezentat ~i eu ajutorul diagramei de stari (vezi figura 4.6). Diagrama de stare este reprezentarea grafiea a eircuitelor secventiale, unde starile circuitului sunt reprezentate prin cereulete, iar conditia de trecere de la 0 stare la urmatoarea este reprezentata prin sageti (vezi grafuri).

= 1/(tS+tH)

sau

l/(tWH+tWL)

Figura 4.3.

fMAX

flirii reactie

4.3.

Tipul circuitelor bistabile

Majoritatea circuitelor programabile ofera registre de tip D, dar desigur proieetele digitale pot fi realizate ~i cu bistabili S-R, J-K, T. Proieetarea ell bistabili de tip D este metoda eea rnai sirnpla, dar unele cireuite PLD ofera posibilitatea lltilizarii eircuitelor bistabile D, T, J-K sau S-R prin configurarea eorespunzatoare a elernentelor de ie~ire. Bistabilii eonfigurabili 'in unele cazuri favorizeaza reducerea numaruJui de termeni produs In proieetul digital.

4.4.

Circuite numaratoare

Figura 4.5. Oiagrama

de timp al numaratorului

de trci bili

NumaratoareJe sunt eircuitele seeventiale eel mai des 'intalnite. Definirn numiiriitoarele ea un set de reg istre, care tree printr-o secventa de stari predefinite determinata de cireuitele logiee aferente. Modelul general al numaratorului sineron este ilustrat In figura 4.4.144

145

@alternateQO

:=

IQO;

"(4.1)

Ql := Q1 :+: QO; Q2 : = Q2 : + : (Q1 * QO) Q3 := Q3 :+: (Q2 * Q1 * QO);

"(4.2) "(4.3) "(4.4)

Inainte insa de a prezenta programul ABEL scris pe baza acestor ecuatii minimizate, deducem ca ecuatiile log ice ullui numarator binar sunt regulare, ~i din ecuatiile 4.1-4.4 deducem forma generala a unui numarator binar de n-biti:Qn:= Qn :+: (Qn-1* Qn-2 * ... * QO); "n=l, .. N

Pentru circuitele logice PLD a carol' ie~ire este activa pe 0 ecuatiile sunt de forma:Figura 4.6. Diagl'ama de stare al ullui uumarll.tor billar de trei hili IQn

:= /[Qn

:+:

(Qn-1*

Qn-2

* ... * QO)]

4.4.1. Numaratoare binareStarea urmll.toare inceput sa realizam programul ABEL al unui numarator binar de obtinemtourmatoareleviitoare in data de to ate 4.1. Tabelul ale regi~trilor de ie~ire. ecuatii minimizate: 4 biti. Tabelastariletranzitii estefunctie in tabelul valorile actualede tranzitii prezinta ate de logice, ce deriva din tabela actllala tranzitii al numaratorului binar de patru biti TabeI4.1. Starea de de Tabelul tranzitii

Ecuatiile logice prezentate definesc un numarator binar ce numara prin incrementare. Numaratorul binar cu decrementare are forma generala:Qn := Qn :+: (/Qn-1*IQn-2

0 aPentru 01 1 0a 1 a 1 ] 1 Q2 QO Q3 Ql

II

* __ .* IQO)

Respectiv pentru numaratoarele binare cu decrementare implementate in circuite programabile cu ie~iri active pe 0 ecuatiile logice sunt de forma:IQn

:=

I[Qn

:+:

!IQn-l*

IQn-2

* ... * IQO)]

Astfel programul ABEL scris pe baza ecuatiilor 4.1-4.4 este:module count4 Title 'numarator binar de patru biti'

Declarations "declaratia semnalelor de control tact CLK PIN; CLR PIN; " declaratia semnalelor de iesire Q3 .. QO PIN istype 'reg';

= eLK

si stergere

=

CLR

Q = [Q3 .. QO];Equations " definirea semnalului de tact Q.CLK=CLK; "definirea semnalllllli de resetare/stergere asincron Q.AR=CLR; @alternate " reactia semnalelor de iesire se va realiza prin utilizarea extensiei .FB QO := IQO.FB; '(4.1) Q1 := Ql.FB :+: QO.FB; "(4.2)

Q2 := Q2.FB Q3 := Q3.FBend count4

:+::+:

(QLFB * QO.FB); (Q2.FB * QLFB * QO.FB);

"(4.3) "(4.4)

146

147

Q1-J Q1-K QO-J QO-K

:= IQ1*QO; := Q1 *QO; := IQO; := QO;

Eeuatiile logice a numaratorului binar realizat eu bistabile T sunt:Q3-T Q2-T Q1-T QO-T := Q2*Q1*QO; := Q1*QO; :=QO; := 1;

Dupa cum rezulta din eeuatiile logiee de mai sus, numarul termenilor produs este mai mie daea numaratorul este binar, realizat eu bistabili J-K sau T.

4.4.2. Numaratoare modulo nFigul"a 4.7. Rezu\tatul simuHirii nllmarlitorului binar de patru biti

Observatii:1. Utilizarea funetiilor XOR: 0 problema majora In realizarea unor astfel de numaratoare binare este utilizarea intensiva a iimctiilor logiee XOR. Struetura interna a majoritatii cireuitelor PAL este realizata din iimetii AND-OR, eu opt termeni de produs. Iar impIementarea funetiilor XOR eonsuma intensiv resursele eireuitelor programabile PAL. Unele eireuite Insa of era posibilitatea realizarii funetiilor AND-OR-XOR, deei prin utilizarea aeestor cireuite obtinem 0 implementare mai efieienta. Numaratoarelor binare eu dimensiuni mari se implementeaza In eireuitelePLD, care poseda semnalul de inhibare a taetului, ~i un semnal de ie~ire gene rat la ultima stare de numarare (carry). Aeeste semnale de depa~ire vor fi legate eu funetii AND pentru realizarea inhibarii semnalelor de tact In modulele eu biti mai semnifieativi. Seleetarea bistabililor utilizati: In implementarea preeedenta am folosit bistabili de tip D (din definirea variabilei ea 'reg' rezuita direct aeest fapt). Dar daea eireuitele PLD permit ~i utilizarea bistabililor de tip J-K, T, R-S, atunei numarul eeuatiilor logiee uneori poate seMea. Astfel numaratorul binar de patru biti realizat eu diferite tipuri de bistabili se poate realiza eu urmatoarele eeuatii In functie de tipul bistabilului: Eeuatiile logiee a numaratorului binar realizat eu bistabile J-K sunt:Q3-J Q3-K Q2-J Q2-K := := := := IQ3*Q2*Q1*QO; Q3*Q2*Q1*QO; IQ2*Q1*QO; Q2*Q1*QO;

NlImarul maxim al starilor finite prin care un numarator poate trece este denumit numar modulo. Un exemplu tipie este eel al unui numarator de n biti al earui modulo este maximum 2n. De multe ori trebuie sa introducem Intarzieri in linia depropagare a-I semnalului, pentru a indeplinii eerintele circuitelor digitale. Aeest lueru este posibil prin realizarea linilor de propagare eu timpi de acees programabilintre eireuitele coneetate. Un exemplu tipie de realizare a aeestor timpi de Intarziere este introdueerea unor stari de a~teptare (wait states), pentru a permite stabilizarea semnalelor intre diferitele elemente de memorie. Numaratoarele ~i elementele de Intarziere sunt des utilizate pentru introducerea acestor timpi de intarziere. Circuitele de numarare implementate in PLD poseda avantajul de a fi programabile ~i din punet de vedere al realizarii timpilor de intarziere necesari adaptarii corecte in eircuitele digitale. In astfel de apl ieatii unde controlul temporizarii trebuie sa fie precis de muite ori se utilizeaza numaratoare modulo diferite de 2". Alte aplicatii ale numaratoarelor modulo sunt generatoarele de semnal, ~i cireuitele de arbitraj. Exemplul pe care intention am sa-l prezentam este un numarator modulo ] O. Un astfel de exemplu este util in aplicatiile cu microprocesoare/ microcontrolere, unde avem nevoie de generarea unor ie~iri zecimale. Un llUmarator binar de patru biti poseda 16 stari finite, din care numaratorul modulo 10 utilizeaza doar 10. Pentru ca la euplarea sub tensiune numaratorul sa functioneze corect, trebuie deci sa tratam ~i acele stari care nu fae parte din ciclul de llumarare. Aeeste stari ilegale vorfi dirijate in eiclul de numarare dupa una sau doua perioade de ceas. Tabelul de tranzitie al numaratorului BCD este dat ill tabelul 4.4.

2.

3.

148

]49

Tabel 4.4. Tabelul de tranzitie al numaratorului modulo 10Starea 00 07Ql 2 122-> aetuala 010->91 00-> 8 I3 15 1 5 8 4 1 0 0I 014-> 4 9 1 06 -> 6 13 00 0 02 7 Ql-> 3 Q2 5

I

Q3

Starea viitoare

Q3 ..QO PIN istype 'reg'; Q = [Q3, Q2, Ql, QO]; Equations Q.CLK=CLK; "definirea starilor Declarations 80 = [0,0,0,0]; 81 = [0,0, 0,1] ; 82 = [0,0,1,0]; 83 = [0,0,1,1];

84

=

[0, 1,

, 0] ;

85 = [0,1,0,1]; 86 = [0,1,1,0]; 87 = [0,1,1,1]; 88 = [1,0,0,0]; 89 = [1,0,0,1]; 810 = [1,0,1,0] 811 = [1,0,1,1] 812 = [1,1,0,0] 813 = [1,1, 0, 1] 814 = [1,1, 1, 0] 815 = [1,1,1,1]

Diagrama de stari pe baza careia putem implementa programul ABEL este data in figura 4.8.

Figura 4.8. Diagrama de stare a numaratorului modulo 10 eu tratarea starilor i1egale

Solutia aleasa in implementarea numaratorului stare. Programul ABEL, a numaratorului BCD este:module bcdl Title 'bcdcount' "implementarea numaratorurului BCD prin registrii de stare

este cea a diagramei de

Declarations " definirea semnalului de tact CLK PIN; " definirea semnalelor de iesire

State_diagram State 80: GoTo 81; State 81: GoTo 82; State 82: GoTo 83; State 83: GoTo 84; State 54: GoTo 85; State 85: GoTo 86; State 86: GoTo 87; State 87: GoTo 88; state 88: GoTo 89; State 89: GoTo 80; State 810: GoTo 80; State 811: GoTo 80; State 812: GoTo 80; State 813: GoTo 80; State 814: GoTo 80; State 815: GoTo 80;

[Q3, Q2, Ql, QO]'

" sfarsit descriere masina de stare end bcdl

150

151

programul se poate serie ~i sub forma unui tabel de tranzitii:module bcd2 Title 'numarator Declarations CLK PIN; Q3 ..QO PIN istype Q = [Q3 ..QO] ; Equations Q.CLK=CLK; 1, 1]; [0, 0, Ql, 1]; [0, 0, 0, 0, 0, :> ([Q3, Q2, 0]; 0]; [0,0,0,0]; [1, 1, 0,0]; 0,1,0]; 1, :> 0, 0, 0, QO] TRUTH_TABLE 1] [0, [0,0,0,0]; 0]; bcd varianta tabel de tranzitii'

Simularea acestui program din urma dem()nstreaza functionarea corecta a numaratorului modulo 10 proiectat.

'reg';

:>

[Q3, Q2, Ql,QO])

CD2 0, 0] 1, 1, 0] 1] [1, 1, 1J [1, 1, 0, OJ [0, 1, 1] 0, 0, 1] 0,

Figura

4.9. Rezultatul simularii numaratorului moduilo 10, versiunea BCD-3

Observatii:Am demonstrat implementarea unui numarator modulo 10, 'in mod asemanator se pot realiza numaratoare eu modulo fixat ~i diferit de 10. In realizarea numaratoarelor desigur cel mai important este numarul termenilor produs utilizati (vezi eonsideratiile legate de utilizarea bistabililor J-K, T).

A treia versiune a programului implementeaza numaratorul modulo 10 eu ajutorul eeuatiilor logice, de altfel este implementarea cea mai eleganta. Pentru tratarea starilor redundante (nepermise) se introduce un semnal de resetare (~tergere):module BCD3 title 'numarator BCD varianta ecuatii logice'

4.4.3. Numarator dual BCDNumiiratorul dual BCD reprezentat in schema bloc din figura 4. 0 contine doua numiiratoare pe patru biti comandat de semnalul de tact (CLK),CEB ILDB Numarator BCDde4 bit; BCDI Buffer de intrare Q7 Q6 Q5 Q4

I

Declarations " definirea semnaJului de tact si de stergere CLK, RST PIN; " definire semnalelor de iesire Q3,Q2,Q1,QO PIN istype 'reg'; count = [Q3,Q2,Q1,QO];

D3 D2 DI

CKNumarator BCDde4 Q3 Q2 QIQO

DOEquations; " tratarea starilor ilegale prin setarea lor in 0 @deset; count.elk = CLK; "incrementeaza conti nut registru cu 1 " daca count < 9 si nu este resetat count := (count.fb + 1) & (count.fb CEA ILDA < 9)

biLi

BCDO

&

(!RST);

CLKFigura 4.10. Schema bloc a numaratornlui dual BCD

End BCD3;

152

153

respeetiv transport superior intern (CK), eu inhibarea semnalului de ceas independent (CEB, CEA), inscriere de date independenta (/LDB, /LDA), intrari de date comune (D3, D2, Dl, DO), ell ie~irile (Q7, Q6, Q5, Q4) respectiv (Q3, Q2, QI, QO). Regulile pe baza carora se va implementa numaratorul se pot deduce din figura 4.10.Dadi /LDA= Dacii /LDB=I ~i CEB=l ~i tact CY (corespunziitor => incrementare [Q7,Q6,Q5,Q4} [Q3,Q2,Q1,QO)

Q[7 ..4] .ce = CEB; "incrementeaza continut registru Cll I " daca count < 9, sau inscriere date daca LOB = I Q [7, .4] := (Q [7 ..4] .fb + 1) & (Q [7, .4] .fb < 9) & (LDB ) # D [3 ..0] & (!LDB) ; end bcdual

1 ~i BCDO= 1 ~i tact

CLK [Q3,Q2,QI,QO}

=> incrementare/numarare

= [I, I, I, 1})

Dadi

/LDA=O [Q3,Q2,Q1,QO}=[D3,D2,D1,DO} inscriere date in numiiriitor inferior Dacii /LDA=O [Q7,Q6,Q5,Q4}=[D3,D2,D1,DO} inscriere date in numiiriitor superior

Programul seris in limbajul ABEL HDL, care implementeaza circuitul prezentat este:modul.e bcdual Titl.e 'bcdual' Declarations " deelaratia semnalelor de intrare, iesire si comanda D3 .. DO PIN; D = [D3 ..DO] ; Q7 ..QO PIN istype 'reg'; Q = [Q7,. QO] ; " semnale de inhibare CEB PIN; CEA PIN; " semnale de comanda incarcare date LDB PIN; LDA PIN; " semnalc de tact extern = CLK , intern = CK CLK PIN; CK NODE; Equations " trutarea starilor ilegale @dcset; " asignarea semnalelor de ceas si inhibarc tact Q[3 ..0].clk = CLK; Q [3 . ,0] ce = CEA; "incrementare continut registru Cll I " daea count < 9, sau inscriere date daca LOA = 1 Q [3 ,,0 ] := ( Q [ 3 ',0] .fb + 1) & ( Q [ 3 ..0] .fb < 9) & (LDA) # D[3 ..0] & (!LDA); " formarea semnalului de tact intern suu transport superior CK CK = ! (Q3 & !Q2 & !Ql & QO & !CLK); Q[7. ,4] .cl.k = CK;

Figuru 4.ll.u.

Rczulutul

simuHirii ullmaratorului

dual nCD, nllmararc

pc opt biti

iucarcare

Figlll'u 4.II.b. Rezulutul simularii numaratorllJui dual nCD, dute cu LDA = 0, QI3 ..01=[I,I,I,I,] respectiv LDB=O, Q/7 .4J=/I,t,0,01

154

155

o metoda mai eficienta pentru realizarea generatoarelor de cod consUi in inserarea circuitelor de decodificare a starii viitoare ~i a circuitelor de codare inaintea registrelor. Aceasta alternativa este reprezentata in figura 4.13. Circuitul digital astfel realizat este de fapt un numarator neconventionalla care incrementarea nu este realizata intr-o forma binara. Astfel se pot implementa diferite coduri. Ne yom limita la prezentarea celor mai cunoscute cum ar fi numaratorul Gray i Johnson.Circuite combinationale

CLKlesiri

Intrari

de control

slarii viitoare Decodificare

cod I Decodificator

Circuite bistabile

Figura Figm-a 4.1l.c Rezulatul simul1i.rii numaratorului dual BCD, cu inhibarea numararii CEA=O san CEB=O

4.13. Schema bloc a numaratorului

cu decodificarea

starii urmatoare

4.4.4.1. Numarator

Gray

4.4.4. Numaratoare generatoare de cod00 0 1 J J

J 01

I

Q3

Circuitele de numarare discutate pana acum au generat secvente binare. Majoritatea circuitelor periferice necesita generarea unor secvente de control predeterminate. Aceste secvente de control pot fi realizate cu circuite logice combinationale. Circuitele combinationale pot modifica secventa de numarare, pentru a genera semnale de control cu temporizarile necesare circuitelor periferice. Metoda utilizata este ca dupa implementarea numaratorului binar sa fie realizat un codificator ale carui ie~iri sa realizeze codul necesar (vezi figura 4.12).Circultecombination ale

01 1 JJ ]I J ] 0 0 1 Cod Gra Gl G2 G3 GO Q2 QJ QO Numaratorul Gray permite generarea unei secvente de cod in care doar un singur bit 'i~iCod billal' un numaditor biti este dat 'in biti. TabelulPentru implementare numaratorului Gray pe apatru doua stari patru tabelul 4.6. trebuie realizat ~i stare intre binar de invecinate. schimba de adevar al Tabel 4.6. Generator de cod Gray 157

I

CLK

Cicuitecombination ale Iesiri

lntrari

de control Codificarea starii viitoare

Decodor

--+

~

Figura 4.12. Shema bloc a gencratorulni

de cod

156

Ecuatiile logice corespunzatoare tabelului de tranzitiiG3 = Q3;

VOl'

fi:

Q1 Q2 Q3

:+: : +:

"(4.7) "(4.8) "(4.6) "(4.5)

QO; Q1; Q2;

G3 G2 G1 GO

Q3; Q3 $ Q2 Q2 $ Q1 Q1 $ QO

end Gray

Aceste semnale de ie~ire pot fi realizate u~or utilizand un decodificator combinational lara riscul aparitiei hazardului. Programul ABEL este scris pe baza ecuatiilor de mai sus (4.5-4.8):module Gray Title 'Gray' Declarations " declararea semnalelor de tact si de stergere CLK PIN; RST PIN; " declararea semnalelor de iesire ale nllmaratoruilli Q3 ..QO PIN istype 'reg'; Q = [Q3 .. QO] ; " declararea iesirilor generatoruilli de cod Gray G3 ..GO PIN; G = [G3 .. GO] ; equations " asignarea semnallllui de tact si a semnalllllli de stergere asincrona Q.CLK = CLK; Q.ACLR '= !RST; " realizarea numaratorullli binar Q := (Q.FB+1); "realizarea generatoruIlli de cod Gray pe baza eCllatiilor (4.5-4.8)

4.4.4.2. Numarator Johnoson Numaratoruf Johnson face patte din familia circuitelor denumite ~i "numaratoare In inef". Aceste numaratoare sunt folosite in aplicatii speciale unde codul generat de numarator trebuie sa fie simetric. Circuitele PLD a carol' structura interna contine un numar minim de porti logice dar contin bistabili D sunt optime pentru realizarea numaratoarelor Johnson. Secventa de numarare a unui numarator Johnson pe patru biti este aratata in graful reprezentat in figura 4.15. Tabelul de tranzitii este dat in tabelul 4.8. Asemanator codului Gray ~i aid intre doua stari consecutive doar un singur bit ]~i schimba starea.

Observatie:In tabelul de tranzitii exista 8 stari legale ~i 8 stari ilegale. Generalizat: un numarator Johnson de n-biti va produce un modulo de 2n.

Figura 4.15. Diagrama de stlid a numlirlitorului Johnson pe patm biti

Figul'a 4.14. Rezultatul

simularii

numlirlitorului

Gray

Implementarea numaratorului este oarecum asemanatoare pentru fiecare bit, indiferent de dimensiunea numaratorului. Daca se utilizeaza bistabili D pentru implementare atunci ie~irea fieearui bistabil este eonectata la intrarea urmatorului bistabil, eu exeeptia ultimului, a earui ie~ire este coneetata la intrarea primului bistabil prin intermediul unui invertor. Un dezavantaj al nUl1laratorului este numarul ridieat al starilor ilegale. Numaratorul se poate bloca foarte u~or din cauza aeestor stari, deei la proiectarea numaratorului trebuie sa avem in vedere aceste stari i1egale.]59

158

TabeI4.8.]Q3 1 01 0 ]1 1 0 Starea Q2 Ql QO

Tabelul de tranzitii al numaratorului Johnson pe patru bitirezentli Starea viitoare

I

" alocarea semnalelor de control si comanda Q.CLK = CLK; Q.ACLR = RST; " realizarea numaratorului JohnsonQO

Q1 Q2 Q3 end

:= := := :=

/Q3;

QO Q1 Q2

johnson

Ecuatiile minimizate, eonform metodei de realizare a numaratorului prin decodifiearea anterioara a starilor (vezi figura 4.13), sunt date in programul ABEL realizat. Programul ABEL (eu eeuatiile logiee mult mai eomplexe dedit sollltia anterioara, dar eu ajutorul carora obpnem aeel~i rezultat) este:module johnsonl Title 'johnsonl' Declarations " declararea semnalului de control CLK PIN; " declararea semnale10r de iesire Q3 ..QO PIN istype 'reg'; Q = [Q3 .. QO]; Equations "utilizarea setului de operatori atIemativ @ALTERNATE "asignarea tactului Q.CLK = eLK; "ecualile logice ale numaratorului Johnson conform figurii 4.13 Q3 := Q2*Q1*QO + Q3*Q2*Ql + Q3*Q2*/Q1*/QO; Q2 := Q3*Q2*Q1 + Q2*Ql*QO + /Q3*Ql*QO; Q1 := /Q3*/Q2*QO + /Q3*Ql*QO + Q2*Ql*QO; QO := /Q3*/Q2*/Q1 + /Q3*/Q2*QO + /Q3*Q1*QO; end johnson1

uelK Figura

D

a

00

D

a

01

D

a

D

a

Q3

4.]6.

0 posibih'i

implementare

a nnmlirlitorului

Johnson

Programlll realizat pe baza tabelllilli de tranzitii 4.8 este urmatorul:module johnson Title 'numarator Johnson'

Declarations " declararea semnalelor de control si comanda tact si reset CLK PIN; RST PIN; " declararea semnalelor de iesire Q3 ..QO PIN istype 'reg'; Q = [Q3 .. QO] ; Equations " tratarea starilor ilegale @dcset " utilizarea setului de operatori altcrnativi @alternate Figura 4.17. Rczultatul simularii numaratorului Jobooson

160

161

4.5.

module

shifter ' registru eu inseriere date pare1e1, dep1asare dreapta, stanga ' serie,

Registre de deplasare

title

Registrele de deplasare sunt circuite digitale deseori utilizate ca componente primare ale sistemelor de calcul. Oarecum ele sunt Inrudite cu numaratoarele in inel (vezi realizarea numaratorului Johnson). Registrele sunt utiJizate pentru stocarea temporara a datelor sau in comunicatii de date pentru conversia date10r din informatii paralele in informatii seriale, sau invers. Functia fundamentala a registrelor este serializarea datelor, sau stocarea temporara a datelor.l15cmn"le Ilntrare e Controsenate stanga L101 lesirelintrare date para lei a a datelor 07060504 03020100 eLK senale dreapta RIO lesirelintrare date

declarations " declararea circuitului PLD in care se va implementa circuitul shifter device 'p14hS'; " alocarea semnalelor de iesire, intrare, control, si setectie mod fllnctionare Q7,Q6,Q5,Q4,Q3,Q2,Q1,QO pin 22,21,20,19,18,17,16,15

istype -reg-;D7,D6,D5,D4,D3,D2,D1,DO pin 3,4,5,6,7,8,9,10 LIO,RIO pin 1,2 istype 'com'; I1,IO,CLK pin 14,13,23 istype 'com'; " utitizarea notatiitor C si X in simularea procesuilli C=.C. ; X=.X. ; equations @alternate " asignarea semnalului de tact [Q7,Q6,Q5,Q4,Q3,Q2,Q1,QO] istype 'com',

rlI1LWlls.erial/paralel 7

.eLK = CLK;

~~-l1fRegisrtu61\

deplasare

14-----.

]e,Iire date paralela

" ecuatiile logice ale registrului de deplasare corespllnzator tabellilui 4.10 Q7:=(Q7*/I1*/IO)+(RIO*/I1*IO)+(Q6*I1*/IO)+(D7*I1*IO) Q6:=(Q6*/I1*/IO)+(Q7*/I1*IO)+(Q5*I1*/IO)+(D6*I1*IO) Q5:=(Q5*/I1*/IO)+(Q6*/I1*IO)+(Q4*I1*/IO)+(D5*I1*IO) Q4:=(Q4*/I1*/IO)+(Q5*/I1*IO)+(Q3*I1*/IO)+(D4*I1*IO); Q3:=(Q3*/Il*/IO)+(Q4*/I1*IO)+(Q2*I1*/IO)+(D3*I1*IO); Q2:=(Q2*/Il*/IO)+(Q3*/I1*IO)+(Q1*I1*/IO)+(D2*I1*IO) Q1:=(Q1*/Il*/IO)+(Q2*/I1*IO)+(QO*I1*/IO)+(D1*I1*IO); QO:=(QO*/Il*/IO)+(Q1*/I1*IO)+(LIO*Il*/IO)+(DO*Il*IO)

; ; ;

; ;

l"igllra 4.18. Diagrama

bloc a rcgistrllilli

de dcplasare

pe 8 bili "definirea vectorilor de test pentru realizarea simlilarii test_vectors ([CLK,I1,IO,RIO,LIO,D7,D6,D5,D4,D3,D2,D1,DO]-> [Q7,Q6,Q5,Q4,Q3,Q2,Q1,QO]) [C, 1,1, X, x, 1,1,1,1,1'-1, 1, 0] -> [1,1,1, 1,1, 1,1, 0] ; [C,0,0,X,X,X,X,X,X,X,X,X,X]->[1,1,1,1,1,1,1,0] ; [C,1,0,X,1,X,X,X,X,X,X,X,X]->[1,1,1,1,1,1,0,1] ; [C,1,0,X,1,X,X,X,X,X,X,X,X]->[1,1,1,1,1,0,1,1]; [C,1,0,X,1,X,X,X,X,X,X,X,X]->[l,l,1,1,0,1,1,1] ; [C, 1, O,X, 1,X,X,X,X,X,X,X,X] -> [1,1,1, 0,1,1,1,1]; [C,1,0,X,1,X,X,X,X,X,X,X,X]->[1,1,0,l,l,1,1,1] ; [C, 1, O,X, 1,X, X,X, X, X, X,X,X] -> [1,0, 1, 1, 1, 1, 1,1] ; [C,1,0,X,1,X,X,X,X,X,X,X,X]->[0,1,1,1,1,1,1,1]; [C,0,0,x,X,X,X,X,X,X,X,X,X]->[0,1,1,1,1,1,1,1]; [C,0,1,1,X,X,X,X,X,X,X,X,X]->[1,0,1,1,1,1,1,1] ; [C,0,1,1,X,X,X,X,X,X,X,X,X]~>[1,1,0,1,1,1,1,1] ; [C,0,l,l,X,X,X,X,X,X,X,X,X]->[1,1,1,0,1,1,1,1] ; [C,0,1,1,X,X,X,X,X,X,X,X,X]->[1,1,1,1,0,1,1,1] ; [C,0,1,l,X,X,X,X,X,X,X,X,X]->[1,1,1,1,1,0,1,1] ; [C,0,1,1,X,X,X,X,X,X,X,X,X]->[1,1,1,1,1,1,O,1] ; [C,0,1,1,X,X,X,X,X,X,X,X,X]->[1,1,1.1,1,1,1,0] ; [C, 0, ,X,X,X,X,X,X,X,X,X,X] -> [1,1, 1, 1, 1, 1,1,0] ; [C, 1,1, X, X, 1,0,0, 0,1,1, 0,1] -> [1,0,0, 0,1, 1, 0,1] , [C, 1, O,X, O,X,X,x,X,X,X,X,X] -> [0,0, 0, 1,1, 0, 1, 0]; [C, 0,1, O,X,X,X,X,X,X,X,X,X] ->[0, 0, 0, 0,1, 1, 0, 1]; end shifter

In exemplul urmator vom prezenta realizarea unui registru de deplasare pe opt biti. Semnalele de control II, 10 vor determina modul de functionare al registrului (vezi tabelul 4.10). In cazuJ deplasarii la dreapta sau la stanga, datele sunt reception ate la intrarea seriala LIO sau RIO. Cum ie~irile bistabililor sunt active pe toata perioada de deplasare a datelor inscrise serial, acestea VOl' fi optenabile Ia ie~irile paralele ale registrului. Tabelul de tranzitii corespunzator registrului de deplasare pe care dorim sa-I implementam este dat in tabeluI4.10. TabeI4.10. Tabelul de tranzitii al registrului de deplasare pe opt biti

0 L10 I Q4 IID40 1Q3 10Q6 0Q5 IQ7 DO D1 D5 D3 0D6 D2 incarcare paraleta Q7 Deplasarc date Ql Q3 Q6 Q4 Q5 Q4 Q2 Q5 QO Q5 QI Q3 Q6 Q2 Deplasare stanga Re!inere dreapta

I

Ecuatiile logice se pot deduce din tabeluI4.10. ~i programul ABEL este:

162

163

Figura 4.20 reprezinta schema bloc a registrului barrel.0001 0203 0405 0607

SO

SIS2

RSTOE

eLK

Figura 4.20. Schema bloc a rcgistrului

de deplasare

Barrel pc opt bifi

TabeI4.11.S2o o

Tabelul de adevar al registrului barrelso 0 1 0 I 0

Sl0 0 I 1 0

Q7D7 D6 D5 D4 D3 lnseriere deplasare deplasare deplasare deplasare deplasare deplasare denlasare paralela ell bit ell 2 bili eu 3 bili eu 4 bili ClI5 bili ell 6 hili Cll 7 biti

o o Figura 4.19 Rczultatul simullirii registrului de deplasal'e

I

!

I1 1

011 I

I

D2Dl DO

4.6.

Registre de deplasare Barrel

D realizare speciala a registrelor de deplasare sunt a~a numitii "regi,I'trii bula!"' ("barrel sh{tier"), care sunt utiliza!i adeseori pentru realizarea deplasarii datelor cu mai multe pozi!ii Intr-o singura perioada de tact. Denumirea de "barrel shifter" provine din natura functionarii registrului. Dupa cum am amintit registrul poate realiza deplasarea cu mai multe pozitii a unui singur bit. Utilizarea buffer-elor cu impedan ridicata la ie~irea registrelor este utila in cazul interfarii la bus-mile de date. Punctul de porn ire in proiectarea unui asemenea registru porne~te ~i In acest caz de la tabelul de adevar 4.11. La proiectarea unui registru barrel de opt biti este necesara definirea urrnatoarelor sernnale:

Ecua!iile logice se pot deduce u~or pe baza tabelului de tranzi!ii, ecua!ii care, de fapt sunt intrarile bistabililor continuti de registru. Intrarile acestor bistabili sunt multiplexate in func!ie de numarul deplasarilor, care depind de intrarile de control S[2 ..0]. Astfel programul ABEL realizat este:module regis2 Title 'regisitru Declarations "deelararea pinilor de control-eLK, S2, S 1, SO, OE, intrare - D7 ..DO, iesire Q7 ..QO CLK PIN; 82 .. 80 PIN; 8 = [82 .. 80]; OE PIN; D7 .. DO PIN; D = [D7 .. DO] ; Q7 ..QO PIN istype 'reg'; Q= [Q7 ..QO]; Equations "asignarea sel11l1alului de tact si de inhibare a iesirilor Q.CLK = CLK; Q.OE = !OE; BARREL'

opt intrari paralele, [D7 ..DO]; opt ie~iri paralele, [Q7 ..QO]; trei intrari de control care comanda nurnarul pozitiilor de deplasare, adica modul de lucru, [S2 ..S0]; semnal de inscriere (tactul de comanda), eLK; sernnalul de inhibare a ie~irilor, DE; semnalul de ~tergere, RST.

]64

165

THEN [DS, [D4, D7, paralela [Dl, D4] D2, D3, D7J; Q := D; DO, Dl, D6]; D4, DS] D3, D4, D3] Dl, [D2, D2] D7, D7, DO, [DO, D6, DO] [D3, DS, [D6, DS, D6, D2, "inscriere ;Dl, DO, regis2 3 eplasare "deplasare CLI1 biti plasare CLI4 biti 7 6 .:= (8==6) (8==2) (8==3) (8==7) (8==4) (8==S) WHEN Q (8==1) THEN Q := (8==0)

divizoarelor cu nUl1lar impar sunt posibiIitilti excelente pentru utilizarea circuitelor PLD. Singurul dezavantaj al acestor divizoare este ca factoru1 de umplere este diferit de 50%. Pentru a demonstra ce1e afirmate sa analizam un simplu divizor de fi'ecventa cu rata de divizare 1:5. Acest divizor se poate implementa prin utilizarea a trei bistabili. CicIuI de numarare care realizeaza divizarea cu 5 este: o -7 1 -7 2 divizorului.1 I 0

-7 3-7 4 -7

O.

TabeluI de tranzitii 4.12 ilustreaza fl,mctionarea

I

0 2trei 1 1 I 0 !InLlla patru 1 doi Tranzitia launLl Q1la zero la trei stare Q1 patru de QO de4.12. la la zero Tabelde01la doi Tabelul de tranzitii al divizorului 1:5

I

Q2

EcuatiiJe logice deduse pe baza tabelului de adevar sunt:Q2: = /Q2 * Ql * QO; Ql:= /Q2 * /Ql * QO + /Q2 QO:= /Q2

* *

"BitLlI cel mai semnificativ Ql * /QO; Ql * /QO; "Bitnlmaipnlinsemnificativ

*

/Ql

-k

/QO + /Q2

Figura 4.21. Rezultatul simularii registrului Barrel pe opt bifi Pentru simplitate datele sunt reprezentate in format hexadecimal

Circuitul divizor realizat pe baza acestor ecuatii are un factor de umplere de 20% ~i din rezultatul simularii se poate observa ca registruI Q2 se afla In starea H pentru 0 singura perioada de ceas, Q 1 se afla In stare a H pentru 2 perioade de ceas ~i asigura aceea~i frecventa divizata cu un factor de umplere de 40%. Daca dorim realizarea divizorului 1:5 cu factoru1 de umplere de 50% trebuie sa introducem un bistabilln plus sau sa divizam 0 stare 111 doua. Pentru a realiza factorul de ump1ere de 50%, prima tranzitie trebuie realizata la jumatatea starii 2 iar a doua tranzitie trebuie realizatil Ja Inceputul starii O. Prima tranzitie se poate forma prin rea1izarea functiei logice AND Intre starea 2 cu frontul negativ al semnalului de ceas iar a doua tranzitie 0 putem realiza prin decodarea starii O. Realizarea fUl1ctiei OR Intre ceJe doua functii va produce rezultatul dorit.EDGE_l = /CLK * /Q2 * Ql * /QO; EDGE_2 = /Q2 * /Ql * /QO; OUT. eLK = EDGE_l + EDGE_2; "tranzitia Intre starile 2 ~i trei " tranzifia In starea 0

4.7.

Divizoare de frecventa ,"sandard" se pot utiliza ~i ca circuite divizoare de bistabil al unui circuit PLD asigura divizarea cu doi. divizoare de frecventa cu 2, 4, 8, 16, sau puteri 2". divizoare diferite de puterile lui 2, sau realizarea

Numaratoarele frecventa - un singur Astfel se pot realiza Realizarea circuitelor 166

1l1lplel1lentarea divizorului Intr-un circuit PLD este 0 alta problema. Putem utiliza circuite PLD care nu posedil intrilri dedicate semnalului de ceas, deoarece avem nevoie de a structura care permite semnale programabile ale tactului sau permit utilizarea mai multor semnale de ceas. 167

o alta tehnica este utilizarea semnalelor de setare/resetare asincrona. Nivelullogic la intrarea semnalului SET produce la ie~irea registrului nivelul logic B, iar un nivel logic H la semnalul RESET produce la ie~irea registrului nivelullogic 1. Datorita faptului ca aceste semnale sunt asincrone este necesara realizarea temporizarilor corecte. Semnalul RESET trebuie sa ia valoarea logica H 'in starea 0 (Q2=0, QI=O ~i QO=O), iar semnalul SET vaavea valoarea logica H 'intre starea 2 ~i 3 ale numaratorului.

I

SET = /CLOCK * /Q2 * Q1 * /QO "SET la tranzilia din starea 2 -+ 3 (4.9) RESET = /Q2 * /Q1 * /QO "RESETln starea 0 (4.10)

In cazul implementarii divizorului 'intr-un circuit Xilinx FPGA in locul solutiei de a utiJiza semnalele SET, RESET yom utiliza ecuatii1e logice pentru cele doua semnale date de ecuatii1e (4.9, 4.10) pentru a forma semnalul de tact al unui registru utilizat 'in plus:OUT := /CLK * /Q2 * /Q1 * /QO + /Q2 * /Q1 * /QO;

Figlll'a 4.22. Rczllitatul

simuliirii divizorului

de frccvcntli

1:5

Aceasta implementare ne va oferi solutia dorita cu rezultatele a~teptate. Programul ABEL astfel realizat va fi:module Title fdiv5 'fdiv5 divizor 1:5 cu factor de umplere de 50%'

4.8.

Observatii ,

Declarations " dec1ararea semnalului de control ~i iesire numarator clk PIN; q2 PIN istype 'reg'; q1 PIN istype 'reg'; qO PIN istype 'reg'; " dec1ararea semnaluilli de stergere rst pin; " declararea semnalullii de iesire divizor 1:5 out PIN istype 'reg'; q= [q2 , q1 , qO] ; "dec1ararea variabilelor intermediare edge1,edge2 node; Equations "lIti1izarea setului de operatori alternativi @alternate; "asignarea tactului si a semnalului de stergere pentru numarator q.clk=clk; q.sr=rst; " ecuatiile logice ale numaratorului q2:= /q2*ql*qO; ql:= /q2*/q1*qO+/q2*q1*/qO; qO:= /q2*/q1*/qO+/q2*q1*/qO; " forl11area semnalului de control (tact) al divizorului edge1=/clk*/q2*q1*/qO; edge2=/q2*/q1*/qO; out.clk=edge1+edge2; " realizarea divizorului out:=/clk*/q2*/q1*/qO + /q2*/q1*/qO; end fdiv5

Numarul termenilor produs utilizati 'in regi~trii de deplasare sau in nUl11aratoarele generatoare de cod Gray sau Johnson cu resurse logice intensive din partea cireuitelor PLD. Utilizarea bistabililor D asigura solutia de implementare cea mai efieienta care poate fi u~or compilata in majoritatea eircuitelor PLD. Cum numaratoarele Gray sunt adeseori utilizate In aplicatii de mare viteza, circuitele PLD rapide sunt solutia optima. Registrele barrel utilizeaza intensiv resursele circuitelor PLD, numarul termenilor produs este mare. Acest lucm se poate expliea prin faptul ca fiecare intrare trebuie sa fie accesibila ]a fiecare ie~ire. Aceste circuite see pot implementa in PLD eu resurse bogate in termeni produs.

169

168