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. 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. Teorie VHDL
3. Consideraii teoretice pentru latch-uri i bistabile
3.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

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
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 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.

3.1.1 Latch-ul de tip SR


Circuitul din figura 3-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 3-1 sunt prezentate schema circuitului utiliznd pori NAND, tabelul de
adevr, simbolul i evoluia n timp a circuitului SR.

Figura 3-1 Latch SR : (a) circuit utiliznd pori NAND; (b) tabela de adevr; (c)
simbolul logic; (d) evoluia n timp.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
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 3-2 se prezint bistabilul latch SR implementat cu pori NOR.

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

3.1.2 Activarea Latch-ului SR


Latch-ul SR este tot timpul sensibil la intrri. n figura 3-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 3-3 sunt prezentate schema circuitului utiliznd pori NAND, tabelul de
adevr, simbolul i evoluia n timp a circuitului SR.

Figura 3-3. Latch-ul SR cu activare: (a) circuit utiliznd pori NAND; (b) tabela de
adevr; (c) simbolul logic; (d) evoluia n timp.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
3.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 3-4. Latch-ul D: (a) circuit care folosete pori NAND; (b) tabela de adevr; (c)
simbolul logic.

3.1.4 Latch-ul D cu activare


Schema din figura 3-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 3-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.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

3.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 3-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 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 3-6 prezint o descriere VHDL a unui circuit divizor al ceasului care divide
un ceas de 25 MHz pn la 1 Hz.

Figura 3-6. Semnalul de ceas


5

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
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 3.7. Descrierea comportamental VHDL a unui circuit divizor de ceas.

3.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 3-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.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
Circuitul prezentat n figura 3-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 master-slave 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, Q next starea urmtoare (viitoare) i
Q` reprezint negatul lui Q.

Figura 3-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.

Figura 3-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
7

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

n figura 3-9 se compar un latch (a), un bistabil activ pe front pozitiv (b) i un
bistabil activ pe front negativ (c)

3.1.7 Bistabil de tip D cu activare


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

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

3.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
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 3-11 prezint latch-ul i bistabilul de tip D cu intrri asincrone de setare/
resetare active pe 0 precum i simbolurile asociate.

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3-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).

3.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 Q next 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) apar

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
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 3-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
3-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, Q next, 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, Q next, 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 3-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 3-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 3-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 3-12. Descrierea unui bistabil de tip D: (a) tabela caracteristic; (b) ecuaia
caracteristic; (c) diagrama de stare; (d) tabelul de excitaie.

10

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 (Q next). 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 3-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 3-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 Qnext=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 3-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.
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYno_memory_elementISPORT(
D,Enable:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
ENDno_memory_element;
ARCHITECTUREBehaviorOFno_memory_elementIS
BEGIN
PROCESS(D,Enable)
BEGIN
IFEnable='1'THEN
Q<=D;
ELSE
Q<='0';
ENDIF;
ENDPROCESS;
ENDBehavior;

Figura 3-13. O descriere simpl VHDL a circuitului combinaional

11

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
Dac ndeprtm ELSE i linia de cod din ELSE, ca n figura 3-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 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 3-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.
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYD_latch_with_enableISPORT(
D,Enable:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
ENDD_latch_with_enable;
ARCHITECTUREBehaviorOFD_latch_with_enableIS
BEGIN
PROCESS(D,Enable)
BEGIN
IFEnable='1'THEN
Q<=D;
ENDIF;
ENDPROCESS;
ENDBehavior;

Figura 3.14. Codul VHDL pentru un latch de tip D cu activare


c. Codul VHDL pentru un bistabil de tip D
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYD_flipflopISPORT(
D,Clock:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
ENDD_flipflop;
ARCHITECTUREBehaviorOFD_flipflopIS
BEGIN
PROCESS(Clock)esteutilizatalistasenzitiva
BEGIN
IFClockEVENTANDClock='1'THEN
Q<=D;
ENDIF;
ENDPROCESS;
ENDBehavior;

12

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
Figura 3-15. Codul VHDL comportamental pentru un bistabil triggerat cu front
pozitiv utiliznd o condiie IF.
Figura 3-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 3-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.
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYD_flipflopISPORT(
D,Clock:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
ENDD_flipflop;
ARCHITECTUREBehavioralOFD_flipflopIS
BEGIN
PROCESSnuesteutilizatalistasenzitivadacasefolosesteWAIT
BEGIN
WAITUNTILClockEVENTANDClock='0';triggerareafrontuluinegativ
Q<=D;
ENDPROCESS;
ENDBehavior;

Figura 3-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 3-17. Acest cod VHDL se
bazeaz pe un circuit bistabil de tip D triggerat pe front pozitiv, aa cum a fost prezentat n
figura 3-11 c.
n figura 3-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

13

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
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.
definireauneioperatiiauneiportiNANDcu2intrari
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYNAND_2ISPORT(
I0,I1:INSTD_LOGIC;
O:OUTSTD_LOGIC);
ENDNAND_2;
ARCHITECTUREDataflow_NAND2OFNAND_2IS
BEGIN
O<=I0NANDI1;
ENDDataflow_NAND2;
definireauneioperatiistructuraleaunuilatchSR
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYSRlatchISPORT(
SN,RN:INSTD_LOGIC;
Q,QN:BUFFERSTD_LOGIC);
ENDSRlatch;
ARCHITECTUREStructural_SRlatchOFSRlatchIS
COMPONENTNAND_2PORT(
I0,I1:INSTD_LOGIC;
O:OUTSTD_LOGIC);
ENDCOMPONENT;
BEGIN
U1:NAND_2PORTMAP(SN,QN,Q);
U2:NAND_2PORTMAP(Q,RN,QN);
ENDStructural_SRlatch;

14

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR
- continuare programdefinireauneioperatiiauneiportiNANDcu3intrari
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYNAND_3ISPORT(
I0,I1,I2:INSTD_LOGIC;
O:OUTSTD_LOGIC);
ENDNAND_3;
ARCHITECTUREDataflow_NAND3OFNAND_3IS
BEGIN
O<=NOT(I0ANDI1ANDI2);
ENDDataflow_NAND3;
definireauneioperatiistructuraleaunuibistabildetipD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYpositive_edge_triggered_D_flipflopISPORT(
D,Clock:INSTD_LOGIC;
Q,QN:BUFFERSTD_LOGIC);
ENDpositive_edge_triggered_D_flipflop;
ARCHITECTUREStructuralDFFOFpositive_edge_triggered_D_flipflopIS
SIGNALN1,N2,N3,N4:STD_LOGIC;
COMPONENTSRlatchPORT(
SN,RN:INSTD_LOGIC;
Q,QN:BUFFERSTD_LOGIC);
ENDCOMPONENT;
COMPONENTNAND_2PORT(
I0,I1:INSTD_LOGIC;
O:OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTNAND_3PORT(
I0,I1,I2:INSTD_LOGIC;
O:OUTSTD_LOGIC);
ENDCOMPONENT;
BEGIN
U1:SRlatchPORTMAP(N4,Clock,N1,N2);setlatch
U2:SRlatchPORTMAP(N2,N3,Q,QN);outputlatch
U3:NAND_3PORTMAP(N2,Clock,N4,N3);resetlatch
U4:NAND_2PORTMAP(N3,D,N4);resetlatch

Figura 3-17. Codul VHDL structural pentru un bistabil de tip D triggerat pe front pozitiv

15

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3-17. 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 3-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 3-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.
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYd_ffISPORT(
Clock:INSTD_LOGIC;
Enable,Set,Clear,D:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
ENDd_ff;
ARCHITECTUREBehavioralOFd_ffIS
BEGIN
PROCESS(Clock,Set,Clear)
BEGIN
IF(Set='1')THEN
Q<='1';
ELSIF(Clear='1')THEN
Q<='0';
ELSIF(Clock'EVENTANDClock='1')THEN
IFEnable='1'THEN
Q<=D;
ENDIF;
ENDIF;
ENDPROCESS;

Figura 3-18. 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.

16

UNIVERSITATEA TEFAN CEL MARE SUCEAVA


FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

Figura 3-19. 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.

17

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

  • Floarea Lacrimilor
    Floarea Lacrimilor
    Document2 pagini
    Floarea Lacrimilor
    betta55
    Încă nu există evaluări
  • Dormi
    Dormi
    Document1 pagină
    Dormi
    betta55
    Încă nu există evaluări
  • Dormi
    Dormi
    Document1 pagină
    Dormi
    betta55
    Încă nu există evaluări
  • Calatorie
    Calatorie
    Document2 pagini
    Calatorie
    betta55
    Încă nu există evaluări
  • Reintegrarea
    Reintegrarea
    Document1 pagină
    Reintegrarea
    betta55
    Încă nu există evaluări
  • Atributul
    Atributul
    Document1 pagină
    Atributul
    betta55
    Încă nu există evaluări
  • Fragmente Citat
    Fragmente Citat
    Document1 pagină
    Fragmente Citat
    betta55
    Încă nu există evaluări
  • Frunzele
    Frunzele
    Document1 pagină
    Frunzele
    betta55
    Încă nu există evaluări
  • Calatorie
    Calatorie
    Document2 pagini
    Calatorie
    betta55
    Încă nu există evaluări
  • Fisa
    Fisa
    Document1 pagină
    Fisa
    betta55
    Încă nu există evaluări
  • Minciuna
    Minciuna
    Document1 pagină
    Minciuna
    betta55
    Încă nu există evaluări
  • Predicatul
    Predicatul
    Document1 pagină
    Predicatul
    betta55
    Încă nu există evaluări
  • Culori Calde Reci
    Culori Calde Reci
    Document1 pagină
    Culori Calde Reci
    betta55
    Încă nu există evaluări
  • Educatie
    Educatie
    Document1 pagină
    Educatie
    betta55
    Încă nu există evaluări
  • Basm
    Basm
    Document1 pagină
    Basm
    betta55
    Încă nu există evaluări
  • Fictiunea
    Fictiunea
    Document1 pagină
    Fictiunea
    betta55
    Încă nu există evaluări
  • Activitati
    Activitati
    Document1 pagină
    Activitati
    betta55
    Încă nu există evaluări
  • Searle
    Searle
    Document1 pagină
    Searle
    betta55
    Încă nu există evaluări
  • Intrebari
    Intrebari
    Document1 pagină
    Intrebari
    betta55
    Încă nu există evaluări
  • Fidse
    Fidse
    Document6 pagini
    Fidse
    betta55
    Încă nu există evaluări
  • Orar
    Orar
    Document1 pagină
    Orar
    betta55
    Încă nu există evaluări
  • Sănătate Fizică, Emoţională Şi Socială
    Sănătate Fizică, Emoţională Şi Socială
    Document2 pagini
    Sănătate Fizică, Emoţională Şi Socială
    betta55
    Încă nu există evaluări
  • 0 Caprioara
    0 Caprioara
    Document2 pagini
    0 Caprioara
    betta55
    Încă nu există evaluări
  • Laborator 7 JH
    Laborator 7 JH
    Document8 pagini
    Laborator 7 JH
    betta55
    Încă nu există evaluări
  • Proiect 5
    Proiect 5
    Document18 pagini
    Proiect 5
    Vasile Gurlan
    Încă nu există evaluări
  • Capri Oara
    Capri Oara
    Document1 pagină
    Capri Oara
    betta55
    Încă nu există evaluări
  • New Microsoffhj
    New Microsoffhj
    Document1 pagină
    New Microsoffhj
    betta55
    Încă nu există evaluări
  • Exercitii
    Exercitii
    Document1 pagină
    Exercitii
    betta55
    Încă nu există evaluări
  • Tet
    Tet
    Document1 pagină
    Tet
    betta55
    Încă nu există evaluări