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" ).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