Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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
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
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.
UNIVERSITATEA TEFAN CEL MARE SUCEAVA FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
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)
Figura 2.10. Bistabil de tip D cu activare: (a) circuit; (b) tabela de adevr; (c) simbolul logic
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).
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.
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
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.
15