Sunteți pe pagina 1din 15

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

LABORATOR nr. 7
Latch-uri. Bistabile. Proiectarea unui microprocesor. Scopul laboratorului
n cadrul acestei lucrri se urmresc dou obiective: 1. Prezentarea latch-urilor i a bistabilelor din VHDL. 2. Coduri VHDL pentru latch-uri i bistabile.

2. Consideraii teoretice pentru latch-uri i bistabile


2.1 Latch-uri i bistabile
Pn acum s-au studiat circuitele logice combinaionale, cu accent pe acele scheme tipice UCP-urilor i anume sumatoare n cascad i cu transport anticipat, circuitele de scdere, de deplasare i rotaii stnga/ dreapta, multiplexoare i decodificatoare adic ntr-un cuvnt Unitatea Aritmetic i logic. n continuare ne vom ndrepta atenia asupra circuitelor logice secveniale prin intermediul crora vom proiecta calea de date i unitatea de control a microprocesorului. Reamintim c ieirile circuitelor secveniale sunt dependente nu doar de intrrile lor curente (ca i la circuitele combinaionale) dar i de intrrile anterioare. Din cauza acestei necesiti de amintire a istoriei intrrilor, circuitele secveniale trebuie s conin elemente de memorie. Latch-urile i bistabilele sunt elementele principale de memorie pentru stocarea de informaie. Prin urmare, sunt blocurile de construcie fundamentale pentru toate circuitele secveniale. Un singur latch sau bistabil poate stoca doar un bit de informaie. Acest bit de informaie care este stocat n latch sau bistabil este denumit starea unui latch sau flip-flop. Prin urmare, un latch sau bistabil poate fi n una din cele dou stri: 0 sau 1. Spunem c un latch sau bistabilul i schimb starea atunci cnd coninutul acestuia se schimb din 0 n 1 i invers. Aceast valoare a strii este ntotdeauna disponibil la ieire. n consecin, coninutul unui latch sau bistabil reprezint valoarea strii i este ntotdeauna egal cu valoarea ieirii. Diferena principal dintre latch i un bistabil este aceea c pentru un latch starea sau ieirea este constant afectat de ctre intrarea sa att timp ct semnalul de validare este activ. Cu alte cuvinte, atunci cnd un latch este activat, starea sa se schimb imediat atunci cnd se schim i intrarea. Atunci cnd un latch este dezactivat, starea rmne constant, i prin urmare este memorat valoarea anterioar. Pe de alt parte, un bistabil i schimb starea doar la un front activ al semnalului de activare, cum ar fi momentul precis n care semnalul trece din 0 n 1 (definit ca frontul cresctor al semnalului), sau cnd trece din 1 n 0 (front cztor). Totui, pe durata ct semnalul de validare (ceasul) este constant, 1 sau 0, starea bistabilului rmne constant chiar dac se schimb intrarea. ntr-un sistem cu microprocesor, de obicei, dorim ca schimbrile s se fac precis la acelai moment de timp. Prin urmare, bistabilele sunt utilizate mai des dect latch-urile, din moment ce toate pot fi sincronizate s-i schimbe valoarea doar frontul activ al semnalului de validare (ceasului). Acest semnal de activare pentru bistabile este de obicei un semnal de ceas controlat global. Din punct de vedere istoric, exist patru tipuri principale de baz de bistabil: SR, D, JK i T. Diferena principal dintre ele este numrul de intrri pe care le pot avea i 1

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR cum pot fi schimbate coninuturile lor. Orice circuit secvenial propus poate fi construit utiliznd oricare dintre aceste tipuri de bistabile (sau combinaii dintre acestea). Totui, selectarea unui tip de bistabil n loc de altul poate afecta mrimea general a circuitului. Astzi, majoritatea circuitelor secveniale sunt proiectate cu bistabile de tip D din cauza uurinei 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 funcioneaz latch-urile i bistabilele. Din moment ce bistabilele sunt inima circuitelor secveniale, n proiectarea microprocesoarelor este foarte important o bun nelegere a modului cum sunt proiectate i cum funcioneaz.

2.1.1 Latch-ul de tip SR


Circuitul din figura 2.1. este denumit latch SR. n completarea celor dou ieiri Q i Q, mai sunt dou intrri S i R respectiv pentru setare i resetare. Latch-ul SR poate fi n una din cele dou stri: o stare de setare atunci cnd Q=1 sau o stare de resetare atunci cnd Q=0. Deoarece S i R sunt negate nseamn c sunt active pe 0. n figura 2.1. sunt prezentate schema circuitului utiliznd pori NAND, tabelul de adevr, simbolul i evoluia n timp a circuitului SR.

Figura 2.1. Latch SR : (a) circuit utiliznd pori NAND; (b) tabela de adevr; (c) simbolul logic; (d) evoluia n timp. Reamintim c pentru bistabilele sau latch-urile de tip SR combinaia 00 (pentru implementarea cu pori NAND sau 11 pentru implementarea cu pori NOR) este interzis. n figura 2.2. se prezint bistabilul latch SR implementat cu pori NOR.

Figura 2.2. Latch-ul SR: (a) circuit utiliznd pori NOR; (b) tabela de adevr; (c) simbolul logic.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

2.1.2 Activarea Latch-ului SR


Latch-ul SR este tot timpul sensibil la intrri. n figura 2.3. se prezint un latch cu semnal de validare. Ct timp semnalul de validare este pe 1, latch-ul este transparent, adic orice modificare a intrrilor determin modificarea ieirii n conformitate cu tabelul de adevr. Trecerea n 0 a semnalului de validare face ca ultima informaie de la ieire s fie memorat (latch zvort) att timp ct semnalul rmne pe 0. Se obine un latch cu activare. n figura 2.3. sunt prezentate schema circuitului utiliznd pori NAND, tabelul de adevr, simbolul i evoluia n timp a circuitului SR.

Figura 2.3. Latch-ul SR cu activare: (a) circuit utiliznd pori NAND; (b) tabela de adevr; (c) simbolul logic; (d) evoluia n timp. 2.1.3 Latch de tip D n figura 3-4, legnd un inversor ntre intrarea R i S se elimin situaia interzis cnd ambele intrri sunt pe 0. Se obine astfel 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. Fr prezena unei intrri de validare, bistabilul nu are aplicaii. Ca urmare, trebuie trecut la bistabilul de tip D cu validare.

Figura 2.4. Latch-ul D: (a) circuit care folosete pori NAND; (b) tabela de adevr; (c) simbolul logic.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

2.1.4 Latch-ul D cu activare


Schema din figura 2.5, care utilizeaz un multiplexor comandat de semnalul de validare E, rezolv problema zvorrii. Ct E este pe 0 bistabilul de tip D este zvort intrarea copiind ieirea, iar ct timp D este pe 1 logic bistabilul copie n mod transparent intrarea la ieire.

Figura 2.5. Latch-ul de tip D cu validare: (a) circuit care folosete pori NAND; (b) tabela de adevr; (c) simbolul logic (d) evoluia n timp.

2.1.5 Ceasul
Latch-urile sunt cunoscute i ca sensibile pe nivel (sau transparente) deoarece ieirile lor sunt afectate de ctre intrri att timp ct acestea sunt validate. Starea lor de memorie se poate schimba pe durata ct semnalul de validare este activ. ntr-un circuit al calculatorului, totui, nu dorim ca starea memoriei s se schimbe ct timp semnalul de validare este activ. De fapt, am dori s sincronizm toate schimbrile strii pentru a se ntmpla la un moment de timp precis i la intervale regulate. Pentru a se ndeplini acest lucru sunt necesare dou lucruri: 1) un semnal de sincronizare i 2) un circuit de memorie care s nu fie sensibil pe nivel. Un semnal de ceas este pur i simplu un semnal rectangular aa cum este prezentat n figura 2.6. Vom numi frontul semnalului de ceas, atunci cnd i schimb valoarea din 0 n 1, un front cresctor (rising edge). Invers, frontul descresctor (falling edge) al ceasului este frontul cnd semnalul se schimb din 1 n 0. Vom folosi simbolul pentru a arta frontul cresctor i pentru frontul descresctor. ntr-un circuit al calculatorului, poate fi folosit fie frontul cresctor fie frontul descresctor al ceasului ca un semnal de sincronizare pentru a scrie data ntr-un element de memorare. Acest front al semnalului se refer la frontul de activare a ceasului. n toate exemplele noastre, vom utiliza frontul cresctor al ceasului ca un front de activare. Prin urmare, la fiecare front cresctor, data va fi nchis sau stocat n elementul de memorare. Un ciclu de ceas dureaz ntre un front cresctor i urmtorul front cresctor sau de la un front cztor la urmtorul front cztor de ceas. Viteza ceasului, msurat

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR n heri (Hz) este numrul ciclilor pe secund. Tipic, viteza ceasului pentru un microprocesor din sistemele embedded (nglobat) funcioneaz n jurul frecvenei de 20 MHz, n timp ce un microprocesor pentru un calculator personal (PC) funcioneaz pn la 2-3 GHz i chiar mai sus. O 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 ct de repede poate produce un circuit rezultate valide. De exemplu, un circuit combinaional cu dou nivele va avea rezultate valide la ieire mult mai repede dect poate scoate un ALU. Bineneles, vom dori ca viteza ceasului s fie ct mai rapid cu putin, dar poate fi att de rapid nct s funcioneze i circuitul cel mai lent. Figura 2.6. prezint o descriere VHDL a unui circuit divizor al ceasului care divide un ceas de 25 MHz pn la 1 Hz.

Figura 2.6. Semnalul de ceas


LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Clockdiv IS PORT ( Clk25Mhz: IN STD_LOGIC; Clk: OUT STD_LOGIC); END Clockdiv; ARCHITECTURE Behavior OF Clockdiv IS CONSTANT max: INTEGER := 25000000; CONSTANT half: INTEGER := max/2; SIGNAL count: INTEGER RANGE 0 TO max; BEGIN PROCESS BEGIN WAIT UNTIL Clk25Mhz'EVENT and Clk25Mhz = '1'; IF count < max THEN count <= count + 1; ELSE count <= 0; END IF; IF count < half THEN Clk <= '0'; ELSE Clk <= '1'; END IF; END PROCESS; END Behavior;

Figura 2.7. Descrierea comportamental VHDL a unui circuit divizor de ceas.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

2.1.6 Bistabile de tip D


Din nefericire pentru latch, un bistabil nu este sensibil pe nivel, ci este triggerat pe front. Cu alte cuvinte, data se stocheaz ntr-un bistabil doar la un front activ al ceasului. Un bistabil de tip D activ pe front se obine prin legarea n serie a unui ir de latch-uri de tip D. n figura 2.8. se prezint un bistabil de tip D activ pe front pozitiv, obinut prin conectarea n serie a dou latch-uri de tip D. Semnalul de ceas Clk este conectat la intrarea E 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 cnd Clk =0 deoarece inversorul activeaz latch-ul MASTER. Ieirea masterului QM copie datele de pe intrare. Totui, semnalul de la QM nu poate trece ctre ieirea principal Q, deoarece al doilea latch (denumit latch slave) este dezactivat cnd Clk=0. Atunci cnd Clk=1, latch-ul master este dezactivat (zvort) dar latch-ul slave este activat astfel nct ieirea de la lach-ul master, QM, este transferat ctre ieirea principal Q. Lach-ul slave se activeaz atunci cnd Clk=1 dar coninutul se schimb doar la un front cresctor al ceasului, deoarece odat ce Clk este pe 1, latch-ul master este dezactivat iar intrarea latch-ului slave, QM, va fi constant. Prin urmare, cnd Clk=1 i latch-ul slave este activat, ieirea principal Q nu se va schimba deoarece nu este schimbat intrarea QM. Circuitul prezentat n figura 2.8. (a) este numit bistabil cu front pozitiv deoarece ieirea principal Q de pe latch-ul slave se schimb doar la frontul cresctor al ceasului. Dac latch-ul slave este activat cnd ceasul este pe 0 (de ex., cu ieirea invertorului conectat la intrarea E al latch-ului slave), atunci ne vom referi la un bistabil cu front triggerat negativ. Circuitul este denumit i la bistabil de tip D masterslave deoarece se utilizeaz n circuit dou latch-uri de tip D. Triunghiul mic de pe intrarea de ceas simbolizeaz c bistabilul este activ pe front. Prezena unui cerc n faa triunghiului ne-ar spune c bistabilul este activ pe front negativ. Reamintim c denumirea Q reprezint starea curent, Qnext starea urmtoare (viitoare) i Q` reprezint negatul lui Q.

Figura 2.8. Bistabil de tip D triggerat pe front pozitiv master-slave: (a) circuit utiliznd latch-uri de tip D; (b) tabela de operaii; (c) simbolul logic; (d) evoluie n timp.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 2.9. Comparaie a unui latch, cu un bistabil triggerat pe front pozitiv i un bistabil triggerat pe front negativ: (a) circuit; (b) evoluie n timp n figura 2.9. se compar un latch (a), un bistabil activ pe front pozitiv (b) i un bistabil activ pe front negativ (c)

2.1.7 Bistabil de tip D cu activare


n figura 2.10. se prezint circuitul, tabela de adevr i simbolul bistabilului de tip D cu activare.

Figura 2.10. Bistabil de tip D cu activare: (a) circuit; (b) tabela de adevr; (c) simbolul logic

2.1.8 Intrri asincrone


Bistabilele i schimb strile doar la un front cresctor sau un front descresctor pe baza unui semnal de ceas de sincronizare. Multe circuite necesit iniializarea bistabilelor la o stare cunoscut care este independent de semnalul de ceas. Sunt denumite circuite secveniale asincrone, circuitele secveniale care i schimb strile oricnd intervine o schimbare la valorile de la intrare i acest lucru se petrece independent de ceas. Pe de alt parte, circuitele secveniale sincrone, schimb strile doar la frontul activ al semnalului de ceas. De obicei, intrrile asincrone, sunt disponibile att pentru

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR latch-uri ct i pentru bistabile i sunt utilizate fie pentru a seta sau fie pentru a terge coninutul elementului de stocare independent de ceas. Figura 2.11. prezint latch-ul i bistabilul de tip D cu intrri asincrone de setare/ resetare active pe 0 precum i simbolurile asociate.

Figura 2.11. Elementul de memorare cu intrri asincrone: (a) Latch-ul D cu set i clear active pe 0; (b) simbolul logic pentru (a); (c) bistabil de tip D activ pe front cresctor cu set i clear active pe 0; (d) simbolul logic pentru (c).

2.1.9 Descrierea unui bistabil


Circuitele combinaionale pot fi descrise fie printr-o tabel de adevr fie printr-o ecuaie boolean. Pentru descrierea operaiei unui bistabil sau a unui circuit secvenial, n general, se utilizeaz o tabel caracteristic, o ecuaie caracteristic, o diagram a strii sau un tabel de excitaie, aa cum se va prezenta n continuare. a. Tabela caracteristic O tabel caracteristic specific funcionarea comportamental a unui bistabil. Este o versiune simplificat a tabelei de operaii a bistabilului prin listarea doar a schimbrii strii la frontul activat al ceasului. Tabela cu semnale de intrare a bistabilului i starea curent (Q) sunt prezentate n coloanele de intrare iar starea urmtoare (next) (Qnext) este prezentat n coloana de ieire. ntotdeauna Qnext trebuie s fie inversat n raport cu Qnext , astfel nu va mai fi necesar s-l includem n coloana de ieire. Semnalul 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 exist. Mai departe, din moment ce toate schimbrile strii pentru un bistabil (de ex., schimbrile la Q next)

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR apar datorit unui front activ al ceasului, nu este necesar s prezentm situaiile din tabela de adevr atunci cnd ceasul ia o valoare constant. Tabela caracteristic pentru un bistabil de tip D este prezentat n figura 2.12. (a). Are dou coloane de intrare (semnalul de intrare D i starea curent Q) i o coloan de ieire pentru Qnext. Din tabela caracteristic pentru un bistabil de tip D prezentat n figura 2.12.(a), vedem c sunt doar dou rnduri unde Q next este afectat n timpul frontului cresctor al ceasului. Prin urmare, sunt doar dou rnduri inserate n tabela caracteristic. Tabela caracteristic este utilizat n analiza circuitelor secveniale pentru a rspunde ntrebrii care este urmtoarea stare, Qnext, cnd se d starea curent, Q, i semnalele de intrare (D n cazul bistabilului de tip D). b. Ecuaia caracteristic Ecuaia caracteristic este o ecuaie boolean simpl care este derivat direct din tabela caracteristic. La fel ca i tabela caracteristic, ecuaia caracteristic specific starea urmtoare a bistabilului, Qnext, ca o funcie a strii curente, Q, i semnalele de intrare. Tabela caracteristic a bistabil-ului de tip D are doar un miniterm 1, care rezult din simpla ecuaie caracteristic pentru un bistabil de tip D prezentat ca n figura 2.12. (b). c. Diagrama de stare O diagram de stare este un grafic cu noduri i arce direct conectate la noduri, aa cum este prezentat n figura 2.12. (c). Diagrama de stare schieaz grafic operarea unui bistabil. Nodurile sunt etichetate cu strile bistabilului iar arcele sunt etichetate cu semnalele de intrare care cauzeaz trecerea de la o stare a bistabilului la alta. Figura 2.12. (c) ne prezint o diagram de stare pentru un bistabil de tip D. Are dou stri, Q=0 i Q=1, care corespund celor dou valori pe care un bistabil le poate avea. Modul de lucru al bistabilului de tip D este astfel nct dac se afl n starea 0 se va schimba n starea 1 doar dac intrarea D este 1; altfel, dac intrarea D este 0, atunci va rmne n starea 0. De aceea, exist un arc etichetat cu D=1 care pornete de la starea Q=0 la Q=1 i un al doilea arc etichetat cu D=0 care pornete de la starea Q=0 napoi la ea. Similar, atunci cnd un bistabil este n starea 1 se va schimba n starea 0 dac intrarea D este 0; altfel, va rmne n starea 1. Aceste dou condiii corespund celor dou arce rmase care pleac din starea Q=1 n diagrama de stare.

Figura 2.12. Descrierea unui bistabil de tip D: (a) tabela caracteristic; (b) ecuaia caracteristic; (c) diagrama de stare; (d) tabelul de excitaie.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR d. Tabela de excitaie Tabela de excitaie este ca o imagine n oglind al tabelei caracteristice prin schimbarea coloanei(-elor) semnalului de intrare cu coloana de ieire (Qnext). Tabela de excitaie ne arat c intrrile bistabilului trebuie s fie capabile s se schimbe din starea curent a bistabilului n urmtoarea stare dorit. Cu alte cuvinte, tabela de excitaie rspunde ntrebrii ce ar trebuie s fie intrarea bistabilului atunci cnd se d starea curent n care este bistabilul i urmtoarea stare la care dorim s mearg bistabilul. Acest tabel este folosit n sinteza circuitelor secveniale. Figura 2.12. (d) prezint tabela de excitaie pentru un bistabil de tip D. Dup cum se poate observa, acest tabel poate fi obinut direct din diagrama de stare. De exemplu, folosind diagrama de stare a bistabilului din figura 2.12.(c), dac starea curent este Q=0 i vom dori ca urmtoarea stare s fie Qnext =0, atunci intrarea trebuie s fie 0 aa cum arat eticheta arcului care pornete din starea 0 napoi la ea nsi. Pe de alt parte, dac starea curent este Q=0 i dorim ca urmtoarea stare s fie Q next=1, atunci intrarea D trebuie s fie 1.

2.1.10 VHDL pentru latch-uri i bistabile


a. Introducerea elementului de memorare VHDL nu are niciun obiect explicit pentru definirea unui element de memorare. n schimb semantica limbajului permite ca semnalele s fie interpretate ca un element de memorare. Cu alte cuvinte, elementul de memorare este declarat n funcie de cum sunt asignate aceste semnale. Se consider codul VHDL din figura 2.13. Dac Enable este 1, atunci Q ia valoarea lui D; altfel, Q ia valoarea 0. n acest cod, Q i asigneaz o valoare pentru toate ieirile posibile din testul cu condiia IF. Cu aceast construcie, este realizat un circuit combinaional.
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;

Figura 2.13. O descriere simpl VHDL a circuitului combinaional Dac ndeprtm ELSE i linia de cod din ELSE, ca n figura 2.14, atunci vom avea o situaie pentru care nu este asignat nici o valoare lui Q dac Enable nu este 1. Punctul cheie aici este c semantica VHDL stipuleaz c n cazurile n care codurile nu 10

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR specific o valoare a semnalului, semnalul ar trebui s-i memoreze valoarea curent. Cu alte cuvinte, semnalul trebuie s-i memoreze valoarea curent iar pentru a face asta este necesar un element de memorare. b. Codul VHDL pentru un latch de tip D cu activare n figura 2.14. este prezentat codul VHDL pentru un latch de tip D cu activare. Dac Enable este 1, atunci Q ia valoarea lui D. Totui, dac Enable nu este 1, codul nu specific ce ar trebui s fie Q; prin urmare, Q i memoreaz valoarea curent prin utilizarea elementului de memorare. Acest cod produce un latch i nu un bistabil, deoarece Q urmeaz D att timp ct Enable este 1 i nu doar pe frontul activ al semnalul Enable. Lista procesului senzitiv include att D ct i Enable, deoarece una dintre aceste semnale poate produce o schimbare la valoarea de ieire Q.
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;

Figura 2.14. Codul VHDL pentru un latch de tip D cu activare c. Codul VHDL pentru un bistabil de tip D
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 Clock'EVENT AND Clock = '1' THEN Q <= D; END IF; END PROCESS; END Behavior;

Figura 2.15. Codul VHDL comportamental pentru un bistabil triggerat cu front pozitiv utiliznd o condiie IF.

11

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR Figura 2.15. prezint un cod VHDL comportamental pentru un bistabil de tip D triggerat cu front pozitiv. Singura diferen de aici este aceea c Q urmeaz dup D doar la frontul cresctor al ceasului i este specificat aici prin condiia Clock EVENT AND Clock=1. Atributul EVENT specific orice schimbare n calificarea semnalului Clock. De aceea, atunci cnd se ntmpl acest lucru iar rezultatul valorii Clock este 1, avem, de fapt, o condiie pentru un front pozitiv sau cresctor al ceasului. Din nou, codul nu specific ce i este asignat lui Q atunci cnd condiia IF este false, prin urmare se solicit utilizarea elementului de memorare. De notat c i lista procesului senzitiv conine doar semnalul de ceas, deoarece este singurul semnal care poate produce o schimbare la ieirea Q. O alt cale de a descrie un bistabil este s utilizm o condiie WAIT n loc de condiia IF aa cum se prezint n figura 2.16. Atunci cnd execuia ajunge la linia WAIT, se oprete pn cnd condiia din linia WAIT devine true. Atunci cnd este folosit ntr-un bloc de tip al procesului pentru sintez, condiia WAIT, trebuie s fie prima condiie care este folosit ntr-un proces. De notat c de asemenea lista senzitiv a procesului este omis, deoarece condiia WAIT implic lista senzitiv care conine doar semnalul de ceas.
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;

Figura 2.16. Codul VHDL comportamental pentru un bistabil de tip D triggerat pe frontului negativ utiliznd o condiie WAIT. Alternativ, putem scrie o descriere un cod VHDL structural pentru un bistabil de tip D triggerat pe front pozitiv, aa cum se prezint n figura 2.17. Acest cod VHDL se bazeaz pe un circuit bistabil de tip D triggerat pe front pozitiv, aa cum a fost prezentat n figura 2.11. (c). n figura 2.18. este prezentat trasarea simpl pentru un bistabil de tip D triggerat pe front pozitiv. n trasare, nainte de primul front cresctor al ceasului la timpul 100 ns, ambii Q i Q (QN) sunt nedefinite deoarece nu a fost nimic memorat nc n bistabil. Imediat dup acest front al ceasului cresctor de la 100 ns, Q ia valoarea lui D iar QN ia inversul. La 200 ns, D se schimb n 1 dar Q nu urmeaz imediat D dar este uitat pn la urmtorul front cresctor al ceasului de la 300 ns. La acelai timp, QN sare la 0. La 400 ns, din nou Q urmeaz urmtorul front al ceasului cresctor la 500 ns.

12

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
-- 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; -- 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;

13

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR - continuare programCOMPONENT 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;

Figura 2.17. Codul VHDL structural pentru un bistabil de tip D triggerat pe front pozitiv

Figura 2.18. Trasare simpl pentru un bistabil D triggerat pe front pozitiv.

d. Codul VHDL pentru un bistabil de tip D cu Activare i Set i Clear asincron Figura 2.18. prezint un cod VHDL pentru un bistabil de tip D triggerat pe front pozitiv, cu semnal de activare pe 1 si cu semnale asincrone pentru setare i resetare. Cele dou intrri asincrone sunt verificate independent de evenimentul de ceas. Atunci cnd fie Set fie Clear sunt 1 (activat), Q este imediat setat pe 1 sau respectiv 0, indiferent de ceas. Dac Enable este 1, atunci Q urmeaz D pe un front cresctor al ceasului; altfel, Q i pstreaz coninutul anterior. Figura 2.19. prezint o trasare simulat pentru bistabil. De notat c n trasare atunci cnd Set sau Clear este activat (la 100ns i respectiv 200 ns) Q se schimb imediat. Totui, atunci cnd Enable este activat la 400ns, Q nu urmeaz D pn cnd nu apare frontul cresctor al ceasului la 500ns. Similar, atunci cnd D sare de la 0 la 600 ns, Q nu se schimb imediat dar sare la urmtorul front cresctor la 700ns. La 800ns, cnd D se schimb n 1, Q nu urmeaz schimbarea dect la urmtorul front cresctor de la 900ns, deoarece acum Enable este din nou activ.

14

UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
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;

Figura 2.19. Codul VHDL pentru un bistabil de tip D triggerat pe un front pozitiv cu semnal activare pe 1 i intrri asincrone pentru set i clear.

Figura 2.20. Simularea trasrii pentru un bistabil de tip D triggerat pe un front pozitiv cu semnal activare pe 1 i intrri asincrone pentru set i clear.

4. Desfurarea lucrrii
1. Se studiaz latch-urile i bistabilele. 2. Se vor testa funcionarea programelor pentru exemplele date.

TEM: Se vor scrie exemple VHDL pentru bistabilele de tip SR, JK i T.

15