Sunteți pe pagina 1din 6

Proiectarea bistabilelor

1. RS-bistabil.

Bistabilul RS, este unul dintre cele mai simple circuite logice secvențial. Acest bistabil simplu
este în principiu un dispozitiv cu un singur bit de memorie care are două intrări, o intrare ”Setează”
dispozitivul (adică atribuie ieșirii valoarea de "1" logic) și este etichetată S și alta care "Resetează"
dispozitivul (adică atribuie ieșirii valoarea de "0" logic), etichetată cu R.
Circuitul electricc bistabilului RS pe bază la poarta NAND are feedback-ul de la ambele ieșiri la
intrările sale opuse și este utilizat în circuitele de memorie pentru a stoca un singur bit de date.
Bistabilul RS are de fapt trei ”intrări”, Set, Reset și valoarea curentă ieșirii Q în funcție de starea
curentă (sau istoria sa).
Cea mai simplă variantă de realizare a unui SR bistabil presupune conectarea împreună unei
perechi de porți NAND cu două intrări, așa cum se arată, pentru a forma un set-reset bistabil, astfel
încât să existe feedback de la fiecare ieșire către una dintre celelalte intrări a poarţii NAND. Acest
dispozitiv este format din două intrări, una numită Set, și atlă numită Reset, şi două ieșiri: directă Q
și inversată (-Q) după cum se arată mai jos.

Tabel de Adevăr pentru bistabilul RS

State S R Q !Q Description

1 0 0 1 Set Q » 1
Set
1 1 0 1 no change

0 1 1 0 Reset Q » 0
Reset
1 1 1 0 no change

Invalid 0 0 1 1 Starea interzisă

Se poate observa că atunci când ambele intrări au valori de S = "1" și R = "1", ieșirile Q și !Q pot
fi cît la nivel logic "1" atît şi la "0", şi depind de starea intrărilor S sau R care a existat inaine de
momentul, cînd au fost aplicate valori S = "1" și R = "1". Prin urmare, condiția S = R = "1" nu
schimbă starea ieșirilor Q și -Q.
Starea de intrare cînd S = "0" și R = "0" este o stare nedorită sau nevalidă și trebuie sî fie evitată.
Condiția cînd S = R = "0" duce pe ambele ieșiri Q și !Q să fie la nivelul logic "1", atunci când
aşteptăm în mod normal că !Q are valoare inversată. Consecinţele sunt că bistabilul pierde controlul
asupra la Q și !Q, şi cînd intrările se setează din nou la starea "1" logic, bistabilul devine instabil și
comută la o stare necunoscută bazată pe dezechilibru, după cum se arată în următoarea diagramă de
comutare.

După cum am văzut mai sus, bistabilul RS pe baz la porşi NAND necesită nivele de "0" logic
pentru a-lu schimba starea. Insă, putem schimba acest circuit în aşa fel ca el să fie dirijat prin
aplicarea semnalelor de intrare pozitive (de ”1” logic) prin adăugarea a porților suplimentare
NAND conectate ca invertoare la intrările S și R:

Pe lângă utilizarea porților NAND, este posibilă și construirea unui bistabil RS utilizând două
porți NOR conectate în aceeași configurație. Circuitul va funcționa în mod similar cu circuitul bazat
pe poarţi NAND de mai sus, cu excepția faptului că intrările se activeaza cu nivelul de tensiune înalt
și condiția invalidă există atunci când ambele intrări sunt la nivel de "1" logic .
În limbaj verilog bistabilul RS se modeleaza în felul următor:

module RS(R,S,Q);
input R,S;
output reg Q;

always@(R or S)
begin
if(S==1 && R==0)
Q=1;
if(R==1 && S==0)
Q=0;
if(R==1 && S==1)
Q=1'bx;
end
endmodule

Bistabilul RS cu semnal de clock

Deseori este necesar ca circuitele logice secvențiale să aibă bistabile care modifică starea numai
atunci când sunt îndeplinite anumite condiții, indiferent de starea intrărilor Set sau Reset. Prin
conectarea unei porți AND cu 2 intrări în serie, cu fiecare terminal de intrare bistabilului RS, poate
fi creat un bistabilul RS cu clock. Această intrare suplimentară este se mai numeşte "Enable" și este
prefixată cu "En". Adăugarea acestei intrări înseamnă că ieșirea Q se schimbă numai atunci când En
este în stare de ”1” logic, și poate fi folosită ca intrare de ceas (CLK), făcând pe bistabil sa fie
sensibil la care-va nivel de tensiune:

În limbaj Verilog RS cu clock se modeleaza în felul următor:


module RS_CK(R,S,Q,CK);
input R,S;
input CK;
output reg Q;
always@(R or S or CK)
begin
if(CK==1)
begin
if(S==1 && R==0)
Q=1;
if(R==1 && S==0)
Q=0;
if(R==1 && S==1)
Q=1'bx;
end
endmodule
Bistabilul D
Unul dintre principalele dezavantaje ale bistabilului SR pa bază la NAND este că este interzisă
condiția cînd la intrarări se aplică valori SET = "0" și RESET = "0".
Pentru a evita acest lucru, între intrările "SET" și "RESET" poate fi conectat un invertor, pentru a
produce un alt tip de circuit bistabil cunoscut sub numele de bistabil de tip D.
Bistabilul de tip D este unul din cele mai importante bistabile cu clock, deoarece asigură că
intrările S și R nu sunt niciodată egale cu ”1” logic în același timp. Bistabilul de tip D este construit
pe baza la bistabilul RS cu un invertor conectat între intrările S și R şi are o singură intrare D (date).
Această intrare de date, numită D, este folosită în locul semnalului "set", iar invertorul este
utilizat pentru a genera intrarea "reset" complementară:

Un simplu bistabil RS are două intrări, una pentru "SET" și una pentru "RESET". Prin conectarea
unui invertor (NOT gate) la bistabil RS putem seta şi reseta bistabilul folosind doar o intrare, ca
acum cele doua semnale de intrare se completeaza reciproc. Acest complement evită contrazicerea
inerentă de blocare RS atunci când ambele intrări sunt în starea de ”0” logic, deoarece această stare
nu mai este posibilă.
Această singură intrare se numește intrare "DATA". Dacă această intrare de date este menținută la
”1” logic, bistabilul se setează și atunci când este ”0” logic, se resetează. Cu toate acestea, acest
lucru ar fi mai degrabă inutil, deoarece ieșirea bistabilului se va schimba întotdeauna la fiecare
impuls aplicat la intrare de date.
Pentru a evita acest lucru, o intrare suplimentară numită "Clock" sau "Enable" este utilizată
pentru a izola intrarea de date de la circuitul de control după păstrarea datelor dorite. Efectul constă
în fapt că valoarea de intrare D este copiată la ieșirea Q numai când intrarea ceasului este activă (în
starea de ”0” logic).
Bistabilul D va stoca și va transmite orice nivel de logică aplicat la intrare D, atâta timp cât
intrarea de clock este în stare de ”1” logic. Dacă intrarea de clock este în ”0” logic, intrările "set" și
"reset" ale bistabilului sunt ținute la nivelul de "1" logic. Cu alte cuvinte, ieșirea este "blocată" sau
la "0" logic, sau la "1" logic.

Tabel de Adevăr pentru bistabilul de tip D

Clk D Q !Q Description

Memory
↓»0 X Q Q
no change

↑»1 0 0 1 Reset Q » 0

↑»1 1 1 0 Set Q »
Implementarea în Verilog Bistabilului de tip D

module D_bist(D,CK,Q);
input D,CK;
output reg Q;

always@(D or CK)
begin
if(CK==1)
Q=D;
end
endmodule

Bistabilul D de tip Master-Slave

Bistabilul de tip D poate fi îmbunătățit prin adăugarea unui al bistabil RS la ieșirea sa, care va fi
activat cu semnalul de clock complementar, astfel creind un "bistabil de tip Master-Slave". Pe
frontul positiv a semnalului de clock (LOW-HIGH) primul bistabil, "master" activează intrarea D,
în timp ce bistabilul de ieșire este dezactivat.

Pe frontul negariv a semnalului de ceas (HIGH-to-LOW) este activat al doilea bistabil "slave", care
se transmite la ieșirea datele de la primului circuit principal. Datele apar la ieșirea circuitului pe
frontul negativ a impulsului de clock. "Bistabile D Master-Slave" pot fi construite prin cascadarea
împreună a doua bistabile cu faze de ceas opuse:

În limbaj Verilog Bistabilul D Master Slave de modeleaza în felul următor:

module FLIP_FLOPD(Din, Ck, Q);


input Din, Ck;
output reg Q;

always@(negedge Ck)
begin
Q = Din;
end
endmodule
Mersul lucrării:

1. Descriţi în limbaj Verilog bistabilul de tip RS.


2. Descriţi un testbench pentru bistabilul de tip RS şi testaţi-l.
3. Sintetizaţi bistabilul de tip RS.
4. Descriţi în limbaj Verilog bistabilul de tip RS cu clock.
5. Descriţi un testbench pentru bistabilul de tip RS cu clock şi testaţi-l.
6. Sintetizaţi bistabilul de tip RS cu clock.
7. Descriţi în limbaj Verilog bistabilul de tip D.
8. Descriţi un testbench pentru bistabilul de tip D şi testaţi-l.
9. Sintetizaţi bistabilul de tip D cu clock.
10. Descriţi în limbaj Verilog bistabilul de tip D Master Slave.
11. Descriţi un testbench pentru bistabilul de tip D Master Slave şi testaţi-l.
12. Sintetizaţi bistabilul de tip D Master Slave cu clock.

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