Proiectare Logică 2 =============================================
Capitolul 14
Registre și numărătoare
14.1 Registre 14.1.1 Prezentare generală Ca şi în cazul CLC, anumite CLS sunt oferite sub formă de
circuite integrate tipizate. Există două mari categorii de astfel de circuite şi anume registre şi numărătoare.
Se numeşte registru o colecţie de bistabile acţionate simultan şi
care permit păstrarea, redarea şi eventual deplasarea informaţiei binare.
Un bistabil împreună cu logica aferentă formează o celulă a
registrului. Numărul de celule ale registrului reprezintă lungimea
registrului. Din punctul de vedere al modului în care se realizează
încărcarea şi redarea datelor, pot fi puse în evidenţă următoarele tipuri de registre:
1) registru paralel-paralel la care informaţia este înscrisă
simultan în toate bistabilele şi poate fi citită simultan din toate bistabilele (Fig. 14.1).
Proiectare Logică 2 =============================================
Q QQQ
TACT
d0
dn-1
d2
d1
q0
qn-1
q2
q1
. . .
Fig. 14.1
2) registru paralel-serie la care informaţia este înscrisă simultan în toate bistabilele şi poate fi citită doar la ieşirea ultimului bistabil (Fig. 14.2).
QTACT
d0
dn-1
d2
d1
. . .Q QQ qn-1
Fig. 14.2
3) registru serie-paralel la care informaţia este înscrisă doar în primul bistabil şi poate fi citită simultan din toate bistabilele (Fig. 14.3).
Q
TACT
d0 . . .Q QQ
q0 qn-1q2q1
Fig. 14.3
Proiectare Logică 2 =============================================
4) registru serie-serie la care informaţia este înscrisă doar în primul bistabil şi poate fi citită doar la ieşirea ultimului bistabil (Fig.14.4).
Q
TACT
d0 . . .Q QQ q
n-1
Fig. 14.4
Observaţii! 1) Cele 4 regimuri de lucru puse în evidenţă anterior pot
coexistă în practică în cadrul aceluiaşi circuit. 2) Pentru ultimile trei regimuri, registrul trebuie să asigure
deplasarea informaţiei între celule. Din punctul de vedere al sensului deplasării prin convenţie se disting registre de deplasare dreapta (dinspre celula 0 spre celula n-1) şi registre de deplasare stânga (dinspre celula n-1 spre celula 0).
În Fig. 14.5 este prezentată în detaliu implementarea unui registru de deplasare dreapta cu încărcare paralelă realizat cu 4 CBB tip D comutabile pe front şi MUX 2. Iniţializarea conţinutului registrului se realizează asincron prin semnalul CLR#.
TACT
CLR#
CLK CLKCLKCLK
R RRR
D Q D Q D QD Q
0
1
S0
IS
0
1
S0
0
1
S0
0
1
S0
Y YYY
D0
D1
D2
D3
Q3
P/S
Fig. 14.5
Proiectare Logică 2 =============================================
/SP - semnalul de alegere a regimului de lucru; dacă /SP
=0, este selectată încărcarea paralelă; dacă /SP =1, este selectată deplasarea serie dreapta;
D0D3 - intrările pentru încărcarea paralelă a registrului; IS - intrare serie pentru deplasarea dreapta; CLR# - intrare de ştergere asincronă activă pe nivel coborât; TACT - intrare de tact activă pe frontul pozitiv; Q0Q3 – ieşiri paralele. Se observă că la un moment dat se poate realiza fie încărcarea
paralelă, fie deplasarea dreapta. În cazul general, la activarea impulsului de tact asupra
conţinutului unui registru se poate executa una dintre operaţiile:
iniţializare sincronă sau asincronă prin aducerea în starea 0 a tuturor bistabilelor;
încărcare paralelă; deplasare dreapta; deplasare stânga; blocare (nu se execută nici una dintre operaţiile
prezentate anterior iar bistabilele nu-şi modifică starea).
D DDDQ Q QQTACT
Q0 Q3Q2Q1
CLK CLKCLKCLK
Y YYYS0 S0 S0 S0
0 321 0 321 0 3210 321
0
D0Q0 0
D1Q0Q1 0
D2Q1Q2 0
D3Q3
ISDD
S1 S1 S1 S1
Q2
C0
C1
Fig. 14.6
Proiectare Logică 2 =============================================
În Fig. 14.6 este prezentată schema de principiu a unui registru de deplasare dreapta cu ştergere sincronă şi autoblocare.
D0 D3 - intrări de date paralele. ISDD - intrare serie pentru deplasarea dreapta. C1 şi C0 - semnale de selecţie a regimului de lucru, conform
specificaţiilor din tabelul de mai jos:
C1 C0 operaţie 0 0 ştergere sincronă 0 1 autoblocare 1 0 deplasare dreapta 1 1 încărcare paralelă (deplasare stânga)
Dacă se renunţă la încărcarea paralelă, prin conexiunile externe
puse în evidenţă în schema bloc din Fig. 14.7 se poate realiza deplasarea stânga. În felul acesta registrul devine un registru serie-paralel cu deplasare dreapta/stânga.
D0 D3D2D1
Q0 Q3Q2Q1
IS
C0C1
ISDD
ISDS
q0 q3q2q1
Fig. 14.7
Registrul prezentat în Fig. 14.8 permite realizarea tuturor operaţiilor prin circuitele interne. Ștergerea conţinultului bistabilelor se realizează sincron prin activarea semnalului CLR.
Alegerea celorlalte operaţii se realizează prin comenzile C1C2,
conform următorului tabel:
Proiectare Logică 2 =============================================
C1 C0 operaţie 0 0 autoblocare 0 1 încărcare paralelă 1 0 deplasare dreapta 1 1 deplasare stânga
D DDDQ Q QQTACT
Q0 Q3Q2Q1
CLK CLKCLKCLK
Y YYYS0 S0 S0 S0
0 321 0 321 0 3210 321
D0
Q0
D1
Q0
Q1
D2
Q1
Q2
D3
Q3
ISDD
S1 S1 S1 S1
Q2
C0
C1
CLR
ISDS
Q1
Q2
Q3
Fig. 14.8
14.1.2 Exemplu registru integrat
În continuare va fi prezentat registrul TTL integrat 74194. Este un registru de deplasare bidirecţional pe 4 biţi având
schema de principiu din Fig. 9.53. Se observă că bistabilele RS lucrează în regim de CBB tip D iar structurile AND-NOR formează 4 multiplexoare MUX 4.
D0 D3 - intrări de date paralele. Q0 Q3 - ieşiri de date paralele. CLOCK - intrare de tact activ pe font pozitiv.
Proiectare Logică 2 =============================================
CLEAR# - intrare de ştergere asincronă, activă pe nivel coborât.
S1 şi S0 - semnale de selecţie a regimului de lucru, conform specificaţiilor din tabelul de mai jos:
S1 S0 operaţie 0 0 autoblocare 0 1 deplasare dreapta 1 0 deplasare stânga 1 1 încărcare paralelă
SHIFT RIGHT SERIAL INPUT - intrare serie pentru
deplasare dreapta. SHIFT LEFT SERIAL INPUT - intrare serie pentru deplasare
stânga.
RCLR
QS
CK
RCLR
QS
CK
RCLR
QS
CK
RCLR
QS
CK
RCLR
QS
CK
RCLR
QS
CK
D0 D1 D2 D3
CLOCK
CLEAR#
S1
S0
Q0
Q1
Q2
Q3
SHIFT RIGHTSERIAL INPUT
SHIFT LEFT
SERIAL INPUT
Fig. 14.9 În Fig. 14.10 este prezentată o schemă de testare a registrului iar
în Fig. 14.11 rezultatul testului.
Proiectare Logică 2 =============================================
Fig. 14.10
Fig. 14.11
14.1.3 Interconectarea registrelor de deplasare
În Fig.14.12 este prezentat un registru de deplasare bidirecţional cu încărcare paralelă şi autoblocare pe 12 biţi realizat prin interconectarea a 3 registre 74194. Se observă că registrul obţinut realizează aceleaşi funcţii ca şi un singur modul, fără să fie necesară logică auxiliară.
Trebuie subliniat că indiferent câte module ar fi interconectate, întârzierile nu cresc deoarece deplasarea informaţiei se realizează printr-o singură celulă. Singura problemă rămâne asigurarea puterii
S1DSTM1
Implementation = S1
LO
S1DSTM2
Implementation = S0
S1
y3
INITN
TACTS1DSTM3
Implementation = TACT
y0
y2
S0
HI
U1
74HCT194
109
23456
15
13
11
147
12
1
S1S0
SRABCD
QA
QC
CLK
QBSL
QD
CL
R
S1DSTM4
Implementation = INITN
y1
HI
Proiectare Logică 2 ============================================= pentru comanda unui număr mare de intrări în cazul circuitelor TTL (această problemă nu apare practic la circuitele CMOS) şi a întârzierilor datorate liniilor de transmisie şi a numărului mare de intrări interconectate.
S1
S0
D1
D3
D2
D0
CK
SR
SI
SLS
I
CL
RQ
1Q
3Q
2Q
0
S1
S0
D1
D3
D2
D0
CK
SR
SI
SL
SI
CLR
Q1
Q3
Q2
Q0
S1
S0
D1
D3
D2
D0
CK
SR
SI
SL
SI
CLR
Q1
Q3
Q2
Q0
q0
q1
q 7q
11q 1
0q
9q
8q
6q
5q
4q 3
q 2
d0
d1
d 7d
11d
10d
9d
8d
6d
5d
4d 3
d 2
ISD
D
TA
CT
INIT
#
ISD
S
C0
C1
Fig. 14.12
Proiectare Logică 2 =============================================
14.1.4 Registre tampon pentru cuplare la magistrale
În multe aplicaţii este necesară păstrarea unor informaţii cu scopul de a fi disponibile un timp mai îndelungat pe o magistrală. Din această cauză ieşirile unor astfel de circuite trebuie să fie de tipul tri-state.
În continuare vor fi prezentate două registre frecvent utilizate în practică, 74HCT373 şi 74HCT374. Structura celor două registre este identică dar în timp ce în 74HCT373 elementele de memorie sunt latch-uri transparente pe durata activării impulsului validare, în 74HCT374 elementele de memorie sunt bistabile care preiau informaţia de la intrare pe frontul pozitiv al impulsului de tact. În Fig. 14.13 este prezentată schema bloc a celor două registre. În Fig. 14.14 şi Fig. 14.15 este prezentată o celulă din 74HCT373 respectiv 74HCT374. În Fig. 14.16 este prezentată schema de test a celor două registre în OrCAD iar rezultatul simulării este prezentat în Fig. 14.17.
D0 D7D6D5D4D3D2D1
Q0 Q7Q6Q5Q4Q3Q2Q1
ENABLE/CLK
OC
Fig. 14.13
Proiectare Logică 2 =============================================
OC
D
G
Q
ENABLE
...
...
...
OC
D
CK
Q
CLK
...
...
...
Q0 Q
0
D0 D0
Fig. 14.14 Fig. 14.15
Fig. 14.16
S8DSTM1
Implementation = d
d2
y4
d1
q5
y6
d5
S1DSTM3
Implementation = OC
q6
TACT/ENABLEy7
d5
S1DSTM2
Implementation = TACT/ENABLE
d6
d[7..0]
d7
OC
d3
d6
q1
y1
d0
y3
d7
d0
U1
74HCT373
111
3478
13141718
256912151619
OCC1D2D3D4D5D6D7D8D
1Q2Q3Q4Q5Q6Q7Q8Q
q0
q3
y2d2
q2
U2
74HCT374
1
3478
13141718
256912151619
11 OC
1D2D3D4D5D6D7D8D
1Q2Q3Q4Q5Q6Q7Q8Q
CLK
q7
d4
y0
d4
d3
y5
d1
q4
Proiectare Logică 2 =============================================
Fig. 14.17
În Fig. 14.18 este prezentată realizarea unei magistrale bidirecţionale cu registre 74HCT374.
Fig. 14.18
OCN1
OCN2TACT2
BUS1[7..0]
U2
74HCT374
1
347813141718
2569
12151619
11OC
1D2D3D4D5D6D7D8D
1Q2Q3Q4Q5Q6Q7Q8Q
CLK
U1
74HCT374
1
3478
13141718
256912151619
11 OC
1D2D3D4D5D6D7D8D
1Q2Q3Q4Q5Q6Q7Q8Q
CLK
BUS2[7..0]
TACT1
Proiectare Logică 2 =============================================
14.2 Numărătoare 14.2.1 Prezentare generală Se numeşte numărător un CLS care contorizează impulsurile
primite pe intrarea de tact. Ca orice alt CLS şi numărătoarele pot fi: a) sincrone; b) asincrone; c) cvasisincrone atunci când numărătoare sincrone sunt
interconectate asincron. Din punctul de vedere al modului de codificare a informaţiei la
ieşire se pun în evidenţă: a) numărătoare binare dacă informaţia este codificată binar; b) numărătoare decadice dacă informaţia este codificată
binar-zecimal. c) numărătoare în inel dacă fiecărei stări îi corespunde o
celulă de numărare care se activează numai pe durata acelei stări. Din punctul de vedere al sensului de numărare se disting: a) numărătoare directe când numărarea se face în sens
crescător; b) numărătoare inverse când numărarea se face în sens
descrescător; c) numărătoare reversibile când sensul de numărare poate fi
modificat cu ajutorul unei comenzi externe Indiferent de tipul numărătorului, la alegerea numărătorului
este necesar să fie luaţi în considerare următorii parametri:
Proiectare Logică 2 =============================================
1) Lungimea ciclului de numărare. Se spune că un numărător este numărător modulo n dacă
ciclul de numărare are n stări. 2) Rezoluţia - reprezintă intervalul de timp minim aceptat între
două impulsuri consecutive pentru ca acestea să poată fie contorizate separat. În cazul unui semnal de tact periodic, acest interval de timp este chiar perioada minimă Tmin acceptabilă pentru semnalul de tact. Pe baza acestei valori se calculează frecvenţa maximă de lucru:
fmax=1/Tmin De obicei fmax se măsoară în MHz. 14.2.2 Exemple de numărătoare integrate În continuare va fi prezentat un numărător binar sincron tip
74HCT163. Schema bloc a numarătorului apare în Fig. 14.19. Semnalele modulului au următoarele
semnificaţii: CLK - semnal de tact care comandă
contorizarea; este activ pe frontul pozitiv al impulsului de tact
CLR - comanda de ştergere sincronă, activă pe nivel coborât;
LD - comanda de încărcare paralelă sincronă, activă pe nivel coborât;
ENP, ENT - semnale de control a semnalului de tact; pentru ca numărătorul să fie activ, este necesar ca ambele semnale să fie activate (pe nivel ridicat);
Fig. 14.19 A,B,C,D - intrări de date paralele; QA,QB,QC,QD - ieşiri paralele; RCO - ieşirea de transport anticipat, activă pe nivel ridicat; se
activează atunci când numărătorul are toate ieşirile pe nivel ridicat (starea 15).
CLK
QA
ENTENP
LDCLR
QDQCQB
RCO
DCBA
Proiectare Logică 2 =============================================
În Fig. 14.20 este prezentată schema de testare a numărătorului iar în Fig. 14.21 apare un eşantion din simularea funcţionării sale. În Fig. 14.22 apare un detaliu din diagrama precedentă cu scopul de a pune în evidenţă regimurile tranzitorii la comutarea stărilor.
Fig. 14.20
Fig. 14.21
Fig. 14.22
d0
S1DSTM2
Implementation = VALID
q3q2
d3
q[3..0]
q0
INITN
S4DSTM5
Implementation = d
U1
74LS163A1
3456
210
79
1413121115
CL
R
ABCD
CLKENTENPLOAD
QAQBQCQD
RCO
d[3..0]
S1DSTM4
Implementation = INITN
TRAN
q1
S1DSTM1
Implementation = TACT
d1
INCN
TACT
S1DSTM3
Implementation = INCN
HI
VALID
d2
Proiectare Logică 2 =============================================
14.2.3 Interconectarea numărătoarelor
În cazul în care se doreşte obţinerea unui numărător modulo N cu N>16 se recurge la interconectarea serie a două sau mai multe numărătoare de tipul celui prezentat anterior. Pentru interconectare se utilizează ieşirea RCO (ripple carry output) care se conectează la intrarea de validare ENT (Enable T).
Exemplu: Să se implementeze folosind numărătoare '163 un
numărător binar modulo 256.
Pentru a obţine un numărător modulo 256 se vor interconecta serie două numărătoare ca în Fig. 14.23. Un eşantion al simulării funcţionării schemei este prezentat în Fig. 14.24. Se observă că al doilea numărător îşi modifică starea doar dacă RCO este activat, deci la fiecare 16 modificări de stare a primului numărător se produce o singură modificare de stare a celui de-al doilea.
Fig. 14.23
Fig. 14.24
TACT
S1DSTM2
Implementation = INITN
RCO2
HI
LO
U2
74LS163A
13456
210
79
1413121115
CL
RABCD
CLKENTENPLOAD
QAQBQCQD
RCO
q7
U4
74LS163A
1
3456
210
79
1413121115
CL
R
ABCD
CLKENTENPLOAD
QAQBQCQD
RCO
q[7..0]
q2
q4
S1DSTM1
Implementation = TACT
INITN
q1
RCO1
HI
q3
q5
LO
q6q0
Proiectare Logică 2 =============================================
14.2.4 Numărător modulo N
Un numărător binar modulo 2n cu comandă de încărcare sincronă sau comandă de ştergere sincronă poate fi foarte uşor transformat într-un numărător modulo N
Proiectare Logică 2 =============================================
Fig. 14.26
14.2.5 Divizoare de frecvenţă
Un divizor de frecvenţă modulo N este o schemă logică secvenţială care oferă la ieşire un semnal cu perioada de N ori mai mare decât perioada semnalului de tact.
În practică un divizor de frecvenţă seamănă cu numărător doar
că nu contează cum este codificată informaţia la ieşire ci doar raportul de divizare şi eventual factorul de umplere al semnalului la ieşire.
Schema bloc a divizorului este cea din Fig. 14.27 iar diagrama
de timp aferentă unui divizor modulo 3 este cea din Fig. 14.28.
:NTACT fN
Fig. 14.27
TACT
fN
tw
t'w
t'w(H)
t
t
Fig. 14.28
Proiectare Logică 2 =============================================
În general:
t'w=N*tw
u=t'w(H)/t'w*100%
Pentru cazul considerat u=1/3*100%=33,33%. Exemplu: Să se realizeze un divizor de frecvenţă modulo 2,4,8,16,32
utilizând un numărător tip 74LS163A. Pentru cazul considerat se va utiliza schema din Fig. 14.29. Rezultatul
simulării este prezentat în Fig. 14.30.
Fig. 14.29
Fig. 14.30
Exemplu: Să se realizeze un divizor de frecvenţă modulo 200 folosind doar două module SN74LS163A.
Se conectează la intrările de date combinaţia ce reprezintă
echivalentul binar al valorii 28-200=56. Schema este reprezentată în Fig. 14.31 iar rezultatul simulării în Fig. 14.32. Se observă că iniţializarea este
f16
f32f4f8
S1DSTM1
Implementation = TACT
LO
U2
74LS163A1
3456
21079
1413121115
CL
R
ABCD
CLKENTENPLOAD
QAQBQCQD
RCO
LO
S1DSTM2
Implementation = INITN
LOLN
f2
LO
INITN
TACT
LO
HI
HI
U3A
74LS04
12
LO
U1
74LS163A
1
3456
21079
1413121115
CL
R
ABCD
CLKENTENPLOAD
QAQBQCQD
RCO
LO
LO
Proiectare Logică 2 ============================================= realizată prin semnalul de încărcare LOAD# iar ieşirea este semnalul de transport al modulului de la rangurile superioare.
(56)(10)=00111000(2)
Fig. 14.31
Fig. 14.32
Proiectare Logică 2 =============================================
14.3 Modelarea registrelor folosind VHDL 14.3.1 Modelare registru tampon (buffer)
Fig. 14.33
Fig. 14.34
Proiectare Logică 2 =============================================
14.3.2 Modelare registru deplasare dreapta cu ștergere asincronă
Fig. 14.35
14.3.3 Modelare registru deplasare dreapta/stânga cu ștergere asincronă
Scema bloc a unui registru de deplasare dreapta/stânga cu șstergere asincronă este prezentata în Fig. 14.36
CBBsaY
iaD
oaQsaQ
iClk
iResetiPL_DH
iDL_SH
iSDD
iSDS
Fig. 14.36
Proiectare Logică 2 =============================================
Fig. 14.37
14.4 Modelarea numărătoarelor folosind VHDL
14.4.1 Modelare numărător direct modulo 64
Fig. 14.38
Proiectare Logică 2 =============================================
Fig. 14.39
14.4.2 Modelare numărător direct modulo 10
Fig. 14.40
Proiectare Logică 2 =============================================
Fig. 14.41
14.4.3 Modelare numărător invers modulo 10
Fig. 14.42
Proiectare Logică 2 =============================================
Fig. 14.43
Fig. 14.44
14.4.4 Modelare numărător decadic Johnson
Fig. 14.45
Proiectare Logică 2 =============================================
Fig. 14.46
Fig. 14.47
14.4.5 Modelare divizor de frecvență decadic
Fig. 14.48
Proiectare Logică 2 =============================================
Fig. 14.49
Fig. 14.50
Top Related