Sunteți pe pagina 1din 17

UNIVERSITATEA TEFAN CEL MARE SUCEAVA

FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR


LABORATOR nr. 7
VHDL. Latch-uri. Bistabile.
Proiectarea unui microprocesor.
1. Scop! !"#or"$or!%
n cadrul acestei lucrri se urmresc dou obiective:
1. Prezentarea latch-urilor i a bistabilelor din VHDL.
!. "oduri VHDL pentru latch-uri i bistabile.
&. T'or%' V(DL
). Con*%+'r",%% $'or'$%c' p'n$r !"$c-.r% /% #%*$"#%!'
3.1 Latch-uri i bistabile
P#n acum s-au studiat circuitele lo$ice combina%ionale& cu accent pe acele
scheme tipice '"P-urilor i anume sumatoare (n cascad i cu transport anticipat&
circuitele de scdere& de deplasare i rota%ii st#n$a) dreapta& multiple*oare i
decodi+icatoare adic (ntr-un cuv#nt 'nitatea ,ritmetic i lo$ic. n continuare ne vom
(ndrepta aten%ia asupra c%rc%$'!or !o0%c' *'c1'n,%"!' prin intermediul crora vom
proiecta c"!'" +' +"$' i n%$"$'" +' con$ro! " 2%croproc'*or!%..
-eamintim c ieirile circuitelor secven%iale sunt dependente nu doar de intrrile lor
curente .ca i la circuitele combina%ionale/ dar i de intrrile anterioare. Din cauza acestei
necesit%i de amintire a istoriei intrrilor& circuitele secven%iale trebuie s con%in elemente
de memorie.
Latch-urile i bistabilele sunt elementele principale de memorie pentru stocarea de
in+orma%ie. 3r%n r2"r'4 *n$ #!ocr%!' +' con*$rc,%' 5n+"2'n$"!' p'n$r $o"$'
c%rc%$'!' *'c1'n,%"!'. 'n sin$ur latch sau bistabil poate stoca doar un bit de in+orma%ie.
,cest bit de in+orma%ie care este stocat (n latch sau bistabil este denumit starea unui latch
sau +lip-+lop. Prin urmare& un latch sau bistabil poate +i (n una din cele dou stri: 0 sau 1.
1punem c un latch sau bistabilul (i schimb starea atunci c#nd con%inutul acestuia se
schimb din 0 (n 1 i invers. ,ceast valoare a strii este (ntotdeauna disponibil la ieire.
n consecin%& con%inutul unui latch sau bistabil reprezint valoarea strii i este
(ntotdeauna e$al cu valoarea ieirii.
Di+eren%a principal dintre latch i un bistabil este aceea c pentru un latch starea
sau ieirea este constant a+ectat de ctre intrarea sa at#t timp c#t semnalul de validare
este activ. "u alte cuvinte& atunci c#nd un latch este activat& starea sa se schimb imediat
atunci c#nd se schim i intrarea. ,tunci c#nd un latch este dezactivat& starea rm#ne
constant& i prin urmare este memorat valoarea anterioar. Pe de alt parte& un bistabil
(i schimb starea doar la un +ront activ al semnalului de activare& cum ar +i momentul
precis (n care semnalul trece din 0 (n 1 .de+init ca +rontul cresctor al semnalului/& sau
1
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
c#nd trece din 1 (n 0 .+ront cztor/. 2otui& pe durata c#t semnalul de validare .ceasul/
este constant& 1 sau 0& starea bistabilului rm#ne constant chiar dac se schimb
intrarea.
ntr-un sistem cu microprocesor& de obicei& dorim ca schimbrile s se +ac precis
la acelai moment de timp. Prin urmare& bistabilele sunt utilizate mai des dec#t latch-urile&
din moment ce toate pot +i sincronizate s-i schimbe valoarea doar +rontul activ al
semnalului de validare .ceasului/. ,cest semnal de activare pentru bistabile este de obicei
un semnal de ceas controlat $lobal.
Din punct de vedere istoric& e*ist patru tipuri principale de baz de bistabil: SR4 D4
67 /% T. Di+eren%a principal dintre ele este numrul de intrri pe care le pot avea i cum
pot +i schimbate con%inuturile lor. 3rice circuit secven%ial propus poate +i construit utiliz#nd
oricare dintre aceste tipuri de bistabile .sau combina%ii dintre acestea/. 2otui& selectarea
unui tip de bistabil (n loc de altul poate a+ecta mrimea $eneral a circuitului. ,stzi&
ma4oritatea circuitelor secven%iale sunt proiectate cu bistabile de tip D din cauza uurin%ei
(n utilizarea lor. De aceea& ne vom concentra (n principal doar pe bistabile de tip D.
n acest capitol& vom vedea cum sunt proiectate i cum +unc%ioneaz latch-urile i
bistabilele. Din moment ce bistabilele sunt inima circuitelor secven%iale& (n proiectarea
microprocesoarelor este +oarte important o bun (n%ele$ere a modului cum sunt
proiectate i cum +unc%ioneaz.
).1.1 L"$c-.! +' $%p SR
"ircuitul din +i$ura 5-1 este denumit !"$c- SR. n completarea celor dou ieiri 6 i
67& mai sunt dou intrri 17 i -7 respectiv pentru setare i resetare. Latch-ul 1- poate +i (n
una din cele dou stri: o stare de setare atunci c#nd 681 sau o stare de resetare atunci
c#nd 680. Deoarece 1 i - sunt ne$ate (nseamn c sunt active pe 0.
n +i$ura 5-1 sunt prezentate schema circuitului utiliz#nd por%i 9,9D& tabelul de
adevr& simbolul i evolu%ia (n timp a circuitului 1-.
F%0r" ).1 L"$c- SR 8 9": c%rc%$ $%!%;<n+ por,% NAND= 9#: $"#'!" +' "+'1>r= 9c:
*%2#o!! !o0%c= 9+: '1o!,%" ?n $%2p.
&
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
-eamintim c pentru bistabilele sau latch-urile de tip 1- combina%ia 00 .pentru
implementarea cu por%i 9,9D sau 11 pentru implementarea cu por%i 93-/ este interzis.
n +i$ura 5-! se prezint bistabilul latch 1- implementat cu por%i 93-.
F%0r" ).&. L"$c-.! SR8 9": c%rc%$ $%!%;<n+ por,% NOR= 9#: $"#'!" +' "+'1>r= 9c:
*%2#o!! !o0%c.
).1.& Ac$%1"r'" L"$c-.!% SR
Latch-ul 1- este tot timpul sensibil la intrri. n +i$ura 5-5 se prezint un latch cu
semnal de validare. "#t timp semnalul de validare este pe 1& latch-ul este transparent&
adic orice modi+icare a intrrilor determin modi+icarea ieirii (n con+ormitate cu tabelul
de adevr. 2recerea (n 0 a semnalului de validare +ace ca ultima in+orma%ie de la ieire s
+ie memorat .latch zvor#t/ at#t timp c#t semnalul rm#ne pe 0. 1e ob%ine un latch cu
activare.
n +i$ura 5-5 sunt prezentate schema circuitului utiliz#nd por%i 9,9D& tabelul de
adevr& simbolul i evolu%ia (n timp a circuitului 1-.

F%0r" ).). L"$c-.! SR c "c$%1"r'8 9": c%rc%$ $%!%;<n+ por,% NAND= 9#: $"#'!" +'
"+'1>r= 9c: *%2#o!! !o0%c= 9+: '1o!,%" ?n $%2p.
)
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
).1.) L"$c- +' $%p D
n +i$ura 5-:& le$#nd un inversor (ntre intrarea -7 i 17 se elimin situa%ia interzis
c#nd ambele intrri sunt pe 0. 1e ob%ine ast+el un bistabil de tip D. Dup cum se poate
observa acest bistabil copie valoarea intrrii la ieire i are proprietatea de memorare
dac intrarea nu se schimb. ;r prezen%a unei intrri de validare& bistabilul nu are
aplica%ii. "a urmare& trebuie trecut la bistabilul de tip D cu validare.

F%0r" ).@. L"$c-.! D8 9": c%rc%$ c"r' 5o!o*'/$' por,% NAND= 9#: $"#'!" +' "+'1>r= 9c:
*%2#o!! !o0%c.
).1.@ L"$c-.! D c "c$%1"r'
1chema din +i$ura 5-<& care utilizeaz un multiple*or comandat de semnalul de
validare =& rezolv problema zvor#rii. "#t = este pe 0 bistabilul de tip D este zvor#t
intrarea copiind ieirea& iar c#t timp D este pe 1 lo$ic bistabilul copie (n mod transparent
intrarea la ieire.
F%0r" ).A. L"$c-.! +' $%p D c 1"!%+"r'8 9": c%rc%$ c"r' 5o!o*'/$' por,% NAND= 9#:
$"#'!" +' "+'1>r= 9c: *%2#o!! !o0%c 9+: '1o!,%" ?n $%2p.
@
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
).1.A C'"*!
Latch-urile sunt cunoscute i ca sensibile pe nivel (sau transparente) deoarece
ieirile lor sunt a+ectate de ctre intrri at#t timp c#t acestea sunt validate. 1tarea lor de
memorie se poate schimba pe durata c#t semnalul de validare este activ.
ntr-un circuit al calculatorului& totui& nu dorim ca starea memoriei s se schimbe
c#t timp semnalul de validare este activ. De +apt& am dori s sincronizm toate schimbrile
strii pentru a se (nt#mpla la un moment de timp precis i la intervale re$ulate. Pentru a
se (ndeplini acest lucru sunt necesare dou lucruri: 1/ un semnal de sincronizare i !/ un
circuit de memorie care s nu +ie sensibil pe nivel.
'n semnal de ceas este pur i simplu un semnal rectan$ular aa cum este
prezentat (n +i$ura 5->. Vom numi +rontul semnalului de ceas& atunci c#nd (i schimb
valoarea din 0 (n 1& un front cresctor (rising edge). ?nvers& frontul descresctor
(falling edge) al ceasului este +rontul c#nd semnalul se schimb din 1 (n 0. Vom +olosi
simbolul pentru a arta +rontul cresctor i pentru +rontul descresctor. ntr-un circuit al
calculatorului& poate +i +olosit +ie +rontul cresctor +ie +rontul descresctor al ceasului ca un
semnal de sincronizare pentru a scrie data (ntr-un element de memorare. ,cest +ront al
semnalului se re+er la +rontul de activare a ceasului. n toate exemplele noastre vom
utili!a frontul cresctor al ceasului ca un front de activare. Prin urmare& la +iecare
+ront cresctor& data va +i (nchis sau stocat (n elementul de memorare.
'n ciclu de ceas dureaz (ntre un +ront cresctor i urmtorul +ront cresctor sau
de la un +ront cztor la urmtorul +ront cztor de ceas. Viteza ceasului& msurat (n her%i
.Hz/ este numrul ciclilor pe secund. 2ipic& viteza ceasului pentru un microprocesor din
sistemele embedded .(n$lobat/ +unc%ioneaz (n 4urul +recven%ei de !0 @Hz& (n timp ce un
microprocesor pentru un calculator personal .P"/ +unc%ioneaz p#n la !-5 AHz i chiar
mai sus. 3 perioad de ceas este timpul pentru un ciclu de ceas .secunde pe ciclu/& prin
urmare este doar inversul vitezei ceasului.
Viteza ceasului este determinat de c#t de repede poate produce un circuit
rezultate valide. De e*emplu& un circuit combina%ional cu dou nivele va avea rezultate
valide la ieire mult mai repede dec#t poate scoate un ,L'. Bine(n%eles& vom dori ca
viteza ceasului s +ie c#t mai rapid cu putin%& dar poate +i at#t de rapid (nc#t s
+unc%ioneze i circuitul cel mai lent.
;i$ura 5-> prezint o descriere VHDL a unui circuit divizor al ceasului care divide
un ceas de !< @Hz p#n la 1 Hz.

F%0r" ).B. S'2n"!! +' c'"*
A
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
F%0r" ).7. D'*cr%'r'" co2por$"2'n$"!> V(DL " n% c%rc%$ +%1%;or +' c'"*.
).1.B B%*$"#%!' +' $%p D
Din ne+ericire pentru latch& un bistabil nu este sensibil pe nivel& ci este tri$$erat pe
front. "u alte cuvinte& data se stocheaz (ntr-un bistabil doar la un +ront activ al ceasului.
'n bistabil de tip " activ pe front se ob%ine prin le$area (n serie a unui ir de latch-uri de
tip D. n +i$ura 5-B se prezint un bistabil de tip D activ pe +ront pozitiv& ob%inut prin
conectarea (n serie a dou latch-uri de tip D. 1emnalul de ceas Clk este conectat la
intrarea = ale celor dou latch-uri: unul direct i unul printr-un invertor.
Primul latch este denumit latch principal (master). Latch-ul master este activat
atunci c#nd Clk 80 deoarece inversorul activeaz latch-ul @,12=-. ?eirea masterului
6@ copie datele de pe intrare. 2otui& semnalul de la 6@ nu poate trece ctre ieirea
principal 6& deoarece al doilea latch .denumit latch slave/ este dezactivat c#nd Clk=0.
,tunci c#nd Clk81& latch-ul master este dezactivat .zvor#t/ dar latch-ul slave este activat
ast+el (nc#t ieirea de la lach-ul master& 6@& este trans+erat ctre ieirea principal 6.
Lach-ul slave se activeaz atunci c#nd "lC81 dar con%inutul se schimb doar la un +ront
cresctor al ceasului& deoarece odat ce "lC este pe 1& latch-ul master este dezactivat iar
intrarea latch-ului slave& 6@& va +i constant. Prin urmare& c#nd "lC81 i latch-ul slave
este activat& ieirea principal 6 nu se va schimba deoarece nu este schimbat intrarea
6@.
B
LIBRARC IEEE=
USE IEEE.STDDLOGICD11B@.ALL=
ENTITC "locCdiv IS P3-2 .
"lC!<@hz: IN STDDLOGICD
"lC: OUT STDDLOGIC/D
END "locCdivD
ARC(ITECTURE Behavior OF "locCdiv IS
CONSTANT ma*: INTEGER :8 !<000000D
CONSTANT hal+: INTEGER :8 ma*)!D
SIGNAL count: INTEGER RANGE 0 TO ma*D
BEGIN
3ROCESS
BEGIN
EAIT UNTIL "lC!<@hzFEVENT and "lC!<@hz 8 E1ED
IF count F ma* T(EN
count F8 count G 1D
ELSE
count F8 0D
END IF=
IF count F hal+ T(EN
"lC F8 E0ED
ELSE
"lC F8 E1ED
END IF=
END 3ROCESS=
END BehaviorD
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
"ircuitul prezentat (n +i$ura 5-B .a/ este numit bistabil cu +ront pozitiv deoarece
ieirea principal 6 de pe latch-ul slave se schimb doar la +rontul cresctor al ceasului.
Dac latch-ul slave este activat c#nd ceasul este pe 0 .de e*.& cu ieirea invertorului
conectat la intrarea = al latch-ului slave/& atunci ne vom re+eri la un bistabil cu front
triggerat negativ. "ircuitul este denumit i la bistabil de tip D master-slave deoarece se
utilizeaz (n circuit dou latch-uri de tip D.
2riun$hiul mic de pe intrarea de ceas simbolizeaz c bistabilul este activ pe +ront.
Prezen%a unui cerc (n +a%a triun$hiului ne-ar spune c bistabilul este activ pe +ront ne$ativ.
-eamintim c denumirea 6 reprezint starea curent& 6ne*t starea urmtoare .viitoare/ i
6H reprezint ne$atul lui 6.

F%0r" ).G B%*$"#%! +' $%p D $r%00'r"$ p' 5ron$ po;%$%1 2"*$'r.*!"1'8 9": c%rc%$
$%!%;<n+ !"$c-.r% +' $%p D= 9#: $"#'!" +' op'r",%%= 9c: *%2#o!! !o0%c= 9+: '1o!,%' ?n
$%2p.

F%0r" ).H. Co2p"r",%' " n% !"$c-4 c n #%*$"#%! $r%00'r"$ p' 5ron$ po;%$%1 /% n
#%*$"#%! $r%00'r"$ p' 5ron$ n'0"$%18 9": c%rc%$= 9#: '1o!,%' ?n $%2p
7
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
n +i$ura 5-I se compar un latch .a/& un bistabil activ pe +ront pozitiv .b/ i un
bistabil activ pe +ront ne$ativ .c/
).1.7 B%*$"#%! +' $%p D c "c$%1"r'
n +i$ura 5-10 se prezint circuitul& tabela de adevr i simbolul bistabilului de tip D
cu activare.
F%0r" ).1I. B%*$"#%! +' $%p D c "c$%1"r'8 9": c%rc%$= 9#: $"#'!" +' "+'1>r= 9c:
*%2#o!! !o0%c
).1.G In$r>r% "*%ncron'
Bistabilele (i schimb strile doar la un +ront cresctor sau un +ront descresctor
pe baza unui semnal de ceas de sincronizare. @ulte circuite necesit ini%ializarea
bistabilelor la o stare cunoscut care este independent de semnalul de ceas. 1unt
denumite circuite secven%iale asincrone circuitele secven%iale care (i schimb strile
oric#nd intervine o schimbare la valorile de la intrare i acest lucru se petrece independent
de ceas.
Pe de alt parte& circuitele secven%iale sincrone& schimb strile doar la +rontul
activ al semnalului de ceas. De obicei& intrrile asincrone& sunt disponibile at#t pentru
latch-uri c#t i pentru bistabile i sunt utilizate +ie pentru a seta sau +ie pentru a ter$e
con%inutul elementului de stocare independent de ceas.
;i$ura 5-11 prezint latch-ul i bistabilul de tip D cu intrri asincrone de setare)
resetare active pe 0 precum i simbolurile asociate.
G
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
F%0r" ).11. E!'2'n$! +' 2'2or"r' c %n$r>r% "*%ncron'8 9": L"$c-.! D c *'$ /%
c!'"r "c$%1' p' I= 9#: *%2#o!! !o0%c p'n$r 9":= 9c: #%*$"#%! +' $%p D "c$%1 p' 5ron$
cr'*c>$or c *'$ /% c!'"r "c$%1' p' I= 9+: *%2#o!! !o0%c p'n$r 9c:.
).1.H D'*cr%'r'" n% #%*$"#%!
"ircuitele combina%ionale pot +i descrise +ie printr-o tabel de adevr +ie printr-o
ecua%ie boolean. Pentru descrierea opera%iei unui bistabil sau a unui circuit secven%ial& (n
$eneral& se utilizeaz o tabel caracteristic& o ecua%ie caracteristic& o dia$ram a strii
sau un tabel de e*cita%ie& aa cum se va prezenta (n continuare.
a. #abela caracteristic
3 tabel caracteristic speci+ic +unc%ionarea comportamental a unui bistabil.
=ste o versiune simpli+icat a tabelei de opera%ii a bistabilului prin listarea doar a
schimbrii strii la +rontul activat al ceasului. 2abela cu semnale de intrare a bistabilului i
starea curent .6/ sunt prezentate (n coloanele de intrare iar starea urmtoare .ne*t/
.6ne*t/ este prezentat (n coloana de ieire. ntotdeauna 6ne*t7 trebuie s +ie inversat (n
raport cu 6ne*t & ast+el nu va mai +i necesar s-l includem (n coloana de ieire. 1emnalul de
ceas& de asemenea& nu este inclus (n tabel deoarece este un semnal care nu dorim s-l
schimbm. ntotdeauna se presupune c semnalul de ceas e*ist. @ai departe& din
moment ce toate schimbrile strii pentru un bistabil .de e*.& schimbrile la 6ne*t/ apar
H
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
datorit unui +ront activ al ceasului& nu este necesar s prezentm situa%iile din tabela de
adevr atunci c#nd ceasul ia o valoare constant.
2abela caracteristic pentru un bistabil de tip D este prezentat (n +i$ura 5-1! .a/.
,re dou coloane de intrare .semnalul de intrare D i starea curent 6/ i o coloan de
ieire pentru 6ne*t. Din tabela caracteristic pentru un bistabil de tip D prezentat (n +i$ura
5-1!.a/& vedem c sunt doar dou r#nduri unde 6ne*t este a+ectat (n timpul +rontului
cresctor al ceasului. Prin urmare& sunt doar dou r#nduri inserate (n tabela caracteristic.
2abela caracteristic este utilizat (n analiza circuitelor secven%iale pentru a
rspunde (ntrebrii care este urmtoarea stare& 6ne*t& c#nd se d starea curent& 6& i
semnalele de intrare .D (n cazul bistabilului de tip D/.
b. $cua%ia caracteristic
$cua%ia caracteristic este o ecua%ie boolean simpl care este derivat direct
din tabela caracteristic. La +el ca i tabela caracteristic& ecua%ia caracteristic speci+ic
starea urmtoare a bistabilului& 6ne*t& ca o +unc%ie a strii curente& 6& i semnalele de
intrare. 2abela caracteristic a bistabil-ului de tip D are doar un miniterm 1& care rezult
din simpla ecua%ie caracteristic pentru un bistabil de tip D prezentat ca (n +i$ura 5-1! .b/.
c. "iagrama de stare
3 diagram de stare este un $ra+ic cu noduri i arce direct conectate la noduri&
aa cum este prezentat (n +i$ura 5-1! .c/. Dia$rama de stare schi%eaz $ra+ic operarea
unui bistabil. 9odurile sunt etichetate cu strile bistabilului iar arcele sunt etichetate cu
semnalele de intrare care cauzeaz trecerea de la o stare a bistabilului la alta. ;i$ura 5-1!
.c/ ne prezint o dia$ram de stare pentru un bistabil de tip D. ,re dou stri& 680 i 681&
care corespund celor dou valori pe care un bistabil le poate avea. @odul de lucru al
bistabilului de tip D este ast+el (nc#t dac se a+l (n starea 0 se va schimba (n starea 1
doar dac intrarea D este 1D alt+el& dac intrarea D este 0& atunci va rm#ne (n starea 0.
De aceea& e*ist un arc etichetat cu D81 care pornete de la starea 680 la 681 i un al
doilea arc etichetat cu D80 care pornete de la starea 680 (napoi la ea. 1imilar& atunci
c#nd un bistabil este (n starea 1 se va schimba (n starea 0 dac intrarea D este 0D alt+el&
va rm#ne (n starea 1. ,ceste dou condi%ii corespund celor dou arce rmase care
pleac din starea 681 (n dia$rama de stare.

F%0r" ).1&. D'*cr%'r'" n% #%*$"#%! +' $%p D8 9": $"#'!" c"r"c$'r%*$%c>= 9#: 'c",%"
c"r"c$'r%*$%c>= 9c: +%"0r"2" +' *$"r'= 9+: $"#'!! +' 'Jc%$",%'.
1I
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
d. #abela de excita%ie
#abela de excita%ie este ca o ima$ine (n o$lind al tabelei caracteristice prin
schimbarea coloanei.-elor/ semnalului de intrare cu coloana de ieire .6ne*t/. 2abela de
e*cita%ie ne arat c intrrile bistabilului trebuie s +ie capabile s se schimbe din starea
curent a bistabilului (n urmtoarea stare dorit. "u alte cuvinte& tabela de e*cita%ie
rspunde (ntrebrii ce ar trebuie s +ie intrarea bistabilului atunci c#nd se d starea
curent (n care este bistabilul i urmtoarea stare la care dorim s mear$ bistabilul.
,cest tabel este +olosit (n sinteza circuitelor secven%iale. ;i$ura 5-1! .d/ prezint tabela de
e*cita%ie pentru un bistabil de tip D. Dup cum se poate observa& acest tabel poate +i
ob%inut direct din dia$rama de stare. De e*emplu& +olosind dia$rama de stare a bistabilului
din +i$ura 5-1!.c/& dac starea curent este 680 i vom dori ca urmtoarea stare s +ie
6ne*t 80& atunci intrarea trebuie s +ie 0 aa cum arat eticheta arcului care pornete din
starea 0 (napoi la ea (nsi. Pe de alt parte& dac starea curent este 680 i dorim ca
urmtoarea stare s +ie 6ne*t81& atunci intrarea D trebuie s +ie 1.
&.1.1I V(DL p'n$r !"$c-.r% /% #%*$"#%!'
a. &ntroducerea elementului de memorare
VHDL nu are niciun obiect e*plicit pentru de+inirea unui element de memorare. n
schimb semantica limba4ului permite ca semnalele s +ie interpretate ca un element de
memorare. "u alte cuvinte& elementul de memorare este declarat (n +unc%ie de cum sunt
asi$nate aceste semnale.
1e consider codul VHDL din +i$ura 5-15. Dac Enable este 1& atunci 6 ia valoarea
lui DD alt+el& 6 ia valoarea 0. n acest cod& 6 (i asi$neaz o valoare pentru toate ieirile
posibile din testul cu condi%ia ?;. "u aceast construc%ie& este realizat un circuit
combina%ional.
F%0r" ).1). O +'*cr%'r' *%2p!> V(DL " c%rc%$!% co2#%n",%on"!
11
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY no_memory_element IS PORT (
D, Enable: IN STD_LOGIC;
Q: OUT STD_LOGIC);
END no_memory_element;
ARCHITECTURE Behavior OF no_memory_element IS
BEGIN
PROCESS(D, Enable)
BEGIN
IF Enable = '1' THEN
Q <= D;
ELSE
Q <= '0';
END IF;
END PROCESS;
END Behavior;
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
Dac (ndeprtm =L1= i linia de cod din =L1=& ca (n +i$ura 5-1:& atunci vom avea
o situa%ie pentru care nu este asi$nat nici o valoare lui 6 dac =nable nu este 1. Punctul
cheie aici este c semantica VHDL stipuleaz c (n cazurile (n care codurile nu speci+ic o
valoare a semnalului& semnalul ar trebui s-i memoreze valoarea curent. "u alte
cuvinte& semnalul trebuie s-i memoreze valoarea curent iar pentru a +ace asta este
necesar un element de memorare.
b. 'odul ()"L pentru un latch de tip " cu activare
n +i$ura 5-1: este prezentat codul VHDL pentru un latch de tip D cu activare. Dac
Enable este 1& atunci 6 ia valoarea lui D. 2otui& dac Enable nu este 1& codul nu
speci+ic ce ar trebui s +ie 6D prin urmare& 6 (i memoreaz valoarea curent prin
utilizarea elementului de memorare. ,cest cod produce un latch i nu un bistabil&
deoarece 6 urmeaz D at#t timp c#t Enable este 1 i nu doar pe +rontul activ al semnalul
Enable. Lista procesului senzitiv include at#t D c#t i Enable& deoarece una dintre aceste
semnale poate produce o schimbare la valoarea de ieire 6.
F%0r" ).1@. Co+! V(DL p'n$r n !"$c- +' $%p D c "c$%1"r'
c. 'odul ()"L pentru un bistabil de tip "

1&
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY D_flipflop IS PORT (
D, Clock: IN STD_LOGIC;
Q: OUT STD_LOGIC);
END D_flipflop;
ARCHITECTURE Behavior OF D_flipflop IS
BEGIN
PROCESS(Clock) este utilizata lista senzitiva
BEGIN
IF ClockEVENT AND Clock = '1' THEN
Q <= D;
END IF;
END PROCESS;
END Behavior;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY D_latch_with_enable IS PORT (
D, Enable: IN STD_LOGIC;
Q: OUT STD_LOGIC);
END D_latch_with_enable;
ARCHITECTURE Behavior OF D_latch_with_enable IS
BEGIN
PROCESS(D, Enable)
BEGIN
IF Enable = '1' THEN
Q <= D;
END IF;
END PROCESS;
END Behavior;
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
F%0r" ).1A. Co+! V(DL co2por$"2'n$"! p'n$r n #%*$"#%! $r%00'r"$ c 5ron$
po;%$%1 $%!%;<n+ o con+%,%' IF.
;i$ura 5-1< prezint un cod VHDL comportamental pentru un bistabil de tip D
tri$$erat cu +ront pozitiv. 1in$ura di+eren% de aici este aceea c 6 urmeaz dup D doar
la +rontul cresctor al ceasului i este speci+icat aici prin condi%ia JClock =V=92 ,9D
"locC8717K. ,tributul 7=V=92 speci+ic orice schimbare (n cali+icarea semnalului Clock. De
aceea& atunci c#nd se (nt#mpl acest lucru iar rezultatul valorii Clock este 1& avem& de
+apt& o condi%ie pentru un +ront pozitiv sau cresctor al ceasului. Din nou& codul nu
speci+ic ce (i este asi$nat lui 6 atunci c#nd condi%ia ?; este +alse& prin urmare se solicit
utilizarea elementului de memorare. De notat c i lista procesului senzitiv con%ine doar
semnalul de ceas& deoarece este sin$urul semnal care poate produce o schimbare la
ieirea 6.
3 alt cale de a descrie un bistabil este s utilizm o condi%ie L,?2 (n loc de
condi%ia ?; aa cum se prezint (n +i$ura 5-1>. ,tunci c#nd e*ecu%ia a4un$e la linia L,?2&
se oprete p#n c#nd condi%ia din linia L,?2 devine true. ,tunci c#nd este +olosit (ntr-un
bloc de tip al procesului pentru sintez& condi%ia L,?2& trebuie s +ie prima condi%ie care
este +olosit (ntr-un proces. De notat c de asemenea lista senzitiv a procesului este
omis& deoarece condi%ia L,?2 implic lista senzitiv care con%ine doar semnalul de ceas.

F%0r" ).1B. Co+! V(DL co2por$"2'n$"! p'n$r n #%*$"#%! +' $%p D $r%00'r"$ p'
5ron$!% n'0"$%1 $%!%;<n+ o con+%,%' EAIT.
,lternativ& putem scrie o descriere un cod VHDL structural pentru un bistabil de tip
D tri$$erat pe +ront pozitiv& aa cum se prezint (n +i$ura 5-1M. ,cest cod VHDL se
bazeaz pe un circuit bistabil de tip D tri$$erat pe +ront pozitiv& aa cum a +ost prezentat (n
+i$ura 5-11 c.
n +i$ura 5-1B este prezentat trasarea simpl pentru un bistabil de tip D tri$$erat
pe +ront pozitiv. n trasare& (nainte de primul +ront cresctor al ceasului la timpul 100 ns&
ambii 6 i 67 .69/ sunt nede+inite deoarece nu a +ost nimic memorat (nc (n bistabil.
?mediat dup acest +ront al ceasului cresctor de la 100 ns& 6 ia valoarea lui D iar 69 ia
1)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY D_flipflop IS PORT (
D, Clock: IN STD_LOGIC;
Q: OUT STD_LOGIC);
END D_flipflop;
ARCHITECTURE Behavioral OF D_flipflop IS
BEGIN
PROCESS nu este utilizata lista senzitiva daca se foloseste WAIT
BEGIN
WAIT UNTIL ClockEVENT AND Clock = '0'; - triggerarea frontului negativ
Q <= D;
END PROCESS;
END Behavior;
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
inversul. La !00 ns& D se schimb (n 1 dar 6 nu urmeaz imediat D dar este uitat p#n la
urmtorul +ront cresctor al ceasului de la 500 ns. La acelai timp& 69 sare la 0. La :00
ns& din nou 6 urmeaz urmtorul +ront al ceasului cresctor la <00 ns.

1@
-- definirea unei operatii a unei porti NAND cu 2 intrari
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY NAND_2 IS PORT (
I0, I1: IN STD_LOGIC;
O: OUT STD_LOGIC);
END NAND_2;
ARCHITECTURE Dataflow_NAND2 OF NAND_2 IS
BEGIN
O <= I0 NAND I1;
END Dataflow_NAND2;
-- definirea unei operatii structurale a unui latch SR
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SRlatch IS PORT (
SN, RN: IN STD_LOGIC;
Q, QN: BUFFER STD_LOGIC);
END SRlatch;
ARCHITECTURE Structural_SRlatch OF SRlatch IS
COMPONENT NAND_2 PORT (
I0, I1 : IN STD_LOGIC;
O : OUT STD_LOGIC);
END COMPONENT;
BEGIN
U1: NAND_2 PORT MAP (SN, QN, Q);
U2: NAND_2 PORT MAP (Q, RN, QN);
END Structural_SRlatch;
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
- con$%n"r' pro0r"2.
Figura 3-17. Codul VHDL structural pentru un bistabil de tip D triggerat pe front pozitiv
1A
-- definirea unei operatii a unei porti NAND cu 3 intrari
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY NAND_3 IS PORT (
I0, I1, I2: IN STD_LOGIC;
O: OUT STD_LOGIC);
END NAND_3;
ARCHITECTURE Dataflow_NAND3 OF NAND_3 IS
BEGIN
O <= NOT (I0 AND I1 AND I2);
END Dataflow_NAND3;
-- definirea unei operatii structurale a unui bistabil de tip D
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY positive_edge_triggered_D_flipflop IS PORT (
D, Clock: IN STD_LOGIC;
Q, QN: BUFFER STD_LOGIC);
END positive_edge_triggered_D_flipflop;
ARCHITECTURE StructuralDFF OF positive_edge_triggered_D_flipflop IS
SIGNAL N1, N2, N3, N4: STD_LOGIC;
COMPONENT SRlatch PORT (
SN, RN: IN STD_LOGIC;
Q, QN: BUFFER STD_LOGIC);
END COMPONENT;
COMPONENT NAND_2 PORT (
I0, I1: IN STD_LOGIC;
O: OUT STD_LOGIC);
END COMPONENT;
COMPONENT NAND_3 PORT (
I0, I1, I2: IN STD_LOGIC;
O: OUT STD_LOGIC);
END COMPONENT;
BEGIN
U1: SRlatch PORT MAP (N4, Clock, N1, N2); -- set latch
U2: SRlatch PORT MAP (N2, N3, Q, QN); -- output latch
U3: NAND_3 PORT MAP (N2, Clock, N4, N3); -- reset latch
U4: NAND_2 PORT MAP (N3, D, N4); -- reset latch
END StructuralDFF;
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
F%0r" ).17. Tr"*"r' *%2p!> p'n$r n #%*$"#%! D $r%00'r"$ p' 5ron$ po;%$%1.
d. 'odul ()"L pentru un bistabil de tip " cu *ctivare i +et i 'lear asincron
;i$ura 5-1B prezint un cod VHDL pentru un bistabil de tip D tri$$erat pe +ront
pozitiv& cu semnal de activare pe 1 si cu semnale asincrone pentru setare i resetare.
"ele dou intrri asincrone sunt veri+icate independent de evenimentul de ceas. ,tunci
c#nd +ie Set +ie Clear sunt 1 .activat/& 6 este imediat setat pe 1 sau respectiv 0& indi+erent
de ceas. Dac Enable este 1& atunci 6 urmeaz D pe un +ront cresctor al ceasuluiD alt+el&
6 (i pstreaz con%inutul anterior. ;i$ura 5-1I prezint o trasare simulat pentru bistabil.
De notat c (n trasare atunci c#nd Set sau Clear este activat .la 100ns i respectiv !00 ns/
6 se schimb imediat. 2otui& atunci c#nd Enable este activat la :00ns& 6 nu urmeaz D
p#n c#nd nu apare +rontul cresctor al ceasului la <00ns. 1imilar& atunci c#nd D sare de
la 0 la >00 ns& 6 nu se schimb imediat dar sare la urmtorul +ront cresctor la M00ns. La
B00ns& c#nd D se schimb (n 1& 6 nu urmeaz schimbarea dec#t la urmtorul +ront
cresctor de la I00ns& deoarece acum Enable este din nou activ.
F%0r" ).1G. Co+! V(DL p'n$r n #%*$"#%! +' $%p D $r%00'r"$ p' n 5ron$ po;%$%1 c
*'2n"! "c$%1"r' p' 1 /% %n$r>r% "*%ncron' p'n$r *'$ /% c!'"r.
1B
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY d_ff IS PORT (
Clock: IN STD_LOGIC;
Enable, Set, Clear, D: IN STD_LOGIC;
Q: OUT STD_LOGIC);
END d_ff;
ARCHITECTURE Behavioral OF d_ff IS
BEGIN
PROCESS(Clock,Set,Clear)
BEGIN
IF (Set = '1') THEN
Q <= '1';
ELSIF (Clear = '1') THEN
Q <= '0';
ELSIF (Clock'EVENT AND Clock = '1') THEN
IF Enable = '1' THEN
Q <= D;
END IF;
END IF;
END PROCESS;
END Behavioral;
UNIVERSITATEA TEFAN CEL MARE SUCEAVA
FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
F%0r" ).1H. S%2!"r'" $r"*>r%% p'n$r n #%*$"#%! +' $%p D $r%00'r"$ p' n 5ron$
po;%$%1 c *'2n"! "c$%1"r' p' 1 /% %n$r>r% "*%ncron' p'n$r *'$ /% c!'"r.
@. D'*5>/r"r'" !cr>r%%
1. 1e studiaz latch-urile i bistabilele.
!. 1e vor testa +unc%ionarea pro$ramelor pentru e*emplele date.

TEM8
1e vor scrie e*emple VHDL pentru bistabilele de tip 1-& NO i 2.
17

S-ar putea să vă placă și