Documente Academic
Documente Profesional
Documente Cultură
IMPLEMENTATE N VERILOG
1. Scopul lucrrii
Descrierea structural i comportamental a celor mai simple circuite
secveniale (structurile de tip latch i bistabil) i nelegerea funcionrii lor prin testare
cu ajutorul simulatorului Veriwell.
2. Aparate necesare
- calculator compatibil Pentium
- sistem de operare Windows 95 sau superior
- programul VeriWell 2.0, produs de Wellspring Solutions, versiunea
freeware, disponibil pe Internet
3. Consideraii teoretice
Cea mai simpl structur secvenial este obinut prin introducerea unei reacii
de la ieirea unei pori I-NU cu dou intrri la una din intrrile sale. Circuitul este
prezentat n figura 3.1, iar analiza lui, prin reprezentarea funcionrii cu ajutorul
formelor de und n timp (cronograma circuitului), este realizat cu ajutorul modelului
logic asincron, care ine seam de timpul de propagare prin poart, notat cu .
O simulare Verilog a funcionrii circuitului se poate face astfel:
module wave_gen(out); // modulul are numai un port de ieire
output out;
reg enable; // intrare care nchide sau deschide bucla
endmodule
B
A
Q
A Q
= A(t) + Q(t) B
Q
t LH = t r <
Fig. 3.1 Cea mai simpl structur secvenial
1
Se poate observa c semnalul enable, dei este o intrare a circuitului, nu este
considerat ca port de intrare pentru c valoarea sa este atribuit n interiorul modulului.
Observm c ieirea circuitului i modific valoarea chiar i atunci cnd valoarea lui
enable este constant, comportament tipic circuitelor secveniale, sau cu memorie.
Acest comportament se datoreaz buclei de reacie i nu poate aprea niciodat n
cazul circuitelor combinaionale.
n general, efectul introducerii unei bucle de reacie peste un numr impar de
pori logice inversoare genereaz un comportament de astabil. Dac numrul de
inversoare este par, atunci poate aprea funcia de memorare. Cel mai simplu circuit de
memorare, care folosete numai dou pori inversoare, este elementul de memorie S R
sau latch-ul S R . Schema logic a circuitului este prezentat n figura 3.2, n dou
variante echivalente, iar tabelul tranziiilor i ecuaiile care descriu funcionarea
circuitului sunt date n figura 3.3. Descrierea Verilog a circuitului poate fi urmtoarea:
module latch(q, q_negat, s_negat, r_negat);
endmodule
endmodule
S
Q
S Q
Q
R
Q
R
Fig. 3.2 Schema logic a latch-ului S R
2
S(t) R(t) Q(t+) Q(t+) Dac t pHL t pLH = :
0 0 1 1 interzis
0 1 1 0 Q(t+2 ) = R(t+ ) + S(t) + Q(t)
1 0 0 1
1 1 Q(t) Q(t) S(t) + R(t) = 1
de propagare uor diferii prin cele dou pori, n realitate ieirile circuitului capt una
din urmtoarele combinaii: fie QQ 01 , fie QQ 10 . Datorit acestor
asimetrii din circuitul real, care nu pot fi controlate de proiectant, combinaia 00
aplicat pe intrri este interzis.
n figura 3.4 s-au reprezentat latch-ul SR cu ceas i tabelul tranziiilor pentru
acest circuit. Acest circuit funcioneaz la fel ca i cel anterior dac intrarea de ceas CL
= 1 (primul nivel de pori este deschis) i este blocat, memornd starea anterioar, dac
CL = 0. Datorit inversrii semnalelor prin nivelul de pori de la intrri, semnalele devin
acum active pe 1 logic, de unde i modificarea denumirii lor n S i R.
n figura 3.5 s-au reprezentat bistabilul de tip D (modelul circuitului CMOS
4013) i tabelul tranziiilor pentru acest bistabil. Intrarea de date D este sincron, ea
determin modificarea ieirilor numai pe frontul cresctor al ceasului, n timp ce
intrrile S i R seteaz (Q = 1) sau reseteaz (Q = 0) bistabilul, asincron, fr nicio
legtur cu ceasul, imediat ce sunt activate (prin 1 logic). Modelul Verilog al circuitului
este urmtorul:
module D_flipflop(q, q_negat, d, set, reset, clock);
endmodule
CLK D S R Q Q
S 0 0 0 0 1
D Q
1 0 0 1 0
x x 1 0 1 0
CLK Q x x 0 1 0 1
R
x x 1 1 1 1
3
Specificaia always @ indic faptul c de fiecare dat cnd se modific
semnalele din list, se execut instruciunile care urmeaz. Modificarea acestor semnale
trebuie s se fac pe frontul cresctor, dup cum sugereaz specificaia posedge.
Putem observa c modelul prezentat nu descrie i cazul atipic cnd sunt activate ambele
intrri asincrone ale bistabilului, S i R, caz n care, conform tabelului tranziiilor
bistabilului D, ambele ieiri trec n 1 logic. Modulul de testare a circuitului, poate fi cel
descris mai jos :
module test_D_flipflop;
initial $vw_dumpvars;
endmodule
input s,r,cl;
output q, q_negat;
endmodule
S S Q S Q Q S S Q Q
R R Q R Q Q R R Q Q
CL CL CLK
CLK CLK
4
Descrierea structurii master-slave se poate face folosind urmtorul model:
module master_slave(q, q_negat, set, reset, clock);
endmodule
initial $vw_dumpvars;
endmodule
4. Modul de lucru
4.1. Se lanseaz n execuie VeriWell 2.0 i se vizualizeaz fiierul
astabil_1poarta.v. Se deschide un proiect care conine numai acest fiier i se
ruleaz, verificnd c nu exist erori de compilare. Vizualizai formele de und i
explicai funcionarea circuitului. Modificai fiierul, introducnd n reacie nc dou
pori inversoare, i salvai-l cu numele astabil_3porti.v. Comentai formele de und
obinute i formulai o concluzie referitoare la efectul buclei de reacie nchis peste un
numr impar de pori inversoare.
4.3. Descriei structural latch-ul cu ceas reprezentat n figura 3.4. Testai acest
circuit folosind un semnal periodic de ceas i atribuind diferite valori logice intrrilor.
ncercai s micorai duratele semnalelor de intrare i observai ce se ntmpl dac
5
durata de activare a semnalelor scade sub 3. nlocuii toate porile din structur cu
pori SAU-NU i refacei simulrile. Explicai cum funcioneaz noul circuit, dac are
sens, i comentai rezultatele obinute.