2. circuite logice 2.10. numărătoare şigasner/fi2_arhitectura...regiştri de deplasare un...
TRANSCRIPT
Copyright Paul GASNERCopyright Paul GASNER
2. Circuite logice2. Circuite logice2.10. Numărătoare şi 2.10. Numărătoare şi
regiştriregiştri
Copyright Paul GASNERCopyright Paul GASNER 2
IntroducereIntroducereContoarele sau numărătoarele (counters) sunt circuite secvenţiale specialeValoarea la ieşire este incrementată cu 1 la fiecare tactDupă un număr de incrementări, ieşirea contorului revine la 0La un contor pe doi biţi stările sunt:
Stare curentă Next StateA B A B0 0 0 10 1 1 01 0 1 11 1 0 0
00 01
1011
1
11
1
Copyright Paul GASNERCopyright Paul GASNER 3
Counter pe 2 biţiCounter pe 2 biţiIeşirile numărătorului sunt 00, 01, 10 şi 11Circuitul are o singură intrare X:
X=0 – la fiecare ciclu ieşirea este incrementată cu 1X=1 – la fiecare ciclu ieşirea este decrementată cu 1
Sunt 4 stări posibile, deci sunt necesare două flip-flop
00 01
1011
Copyright Paul GASNERCopyright Paul GASNER 4
Diagrama logicăDiagrama logicăDiagrama logică şi tabela de stări completă:
00 01
1011
0
0
0
10 1
1
1
Stare curentă Inputs Next StateQ1 Q0 X Q1 Q00 0 0 0 10 0 1 1 10 1 0 1 00 1 1 0 01 0 0 1 11 0 1 0 11 1 0 0 01 1 1 1 0
Copyright Paul GASNERCopyright Paul GASNER 5
Intrările în flip-flop tip D şi ecuaţiiIntrările în flip-flop tip D şi ecuaţiiValoarea de intrare este chiar starea următoare dorită pentru flip-flopEcuaţiile finale se obţin după simplificare
Stare curentă Inputs Next StateQ1 Q0 X Q1 Q00 0 0 0 10 0 1 1 10 1 0 1 00 1 1 0 01 0 0 1 11 0 1 0 11 1 0 0 01 1 1 1 0
Q00 1 0 1
Q1 1 0 1 0X
Q01 1 0 0
Q1 1 1 0 0X
D1 = Q1 ⊕ Q0 ⊕ X
D0 = Q0’
Copyright Paul GASNERCopyright Paul GASNER 6
Circuitul finalCircuitul finalQ0' poate fi preluat direct de la ieşirea circuitului FFDacă Reset=1, contorul numără în mod normalDacă Reset=0, contorul trece imediat în starea 00
Copyright Paul GASNERCopyright Paul GASNER 7
Intrările în flip-flop tip JKIntrările în flip-flop tip JK
Se utilizează tabela de excitareQ(t) Q(t+1) J K
0 0 0 x0 1 1 x1 0 x 11 1 x 0
Stare curentă Inputs Next State Flip flop inputsQ1 Q0 X Q1 Q0 J1 K1 J0 K00 0 0 0 1 0 x 1 x0 0 1 1 1 1 x 1 x0 1 0 1 0 1 x x 10 1 1 0 0 0 x x 11 0 0 1 1 x 0 1 x1 0 1 0 1 x 1 1 x1 1 0 0 0 x 1 x 11 1 1 1 0 x 0 x 1
Copyright Paul GASNERCopyright Paul GASNER 8
Ecuaţiile intrărilor în flip-flopsEcuaţiile intrărilor în flip-flops
Se caută ecuaţiile pentru cele 4 intrări în FFSe obţine:
J1 = K1 = Q0' X + Q0 X'J0 = K0 = 1
Stare curentă Inputs Next State Flip flop inputsQ1 Q0 X Q1 Q0 J1 K1 J0 K00 0 0 0 1 0 x 1 x0 0 1 1 1 1 x 1 x0 1 0 1 0 1 x x 10 1 1 0 0 0 x x 11 0 0 1 1 x 0 1 x1 0 1 0 1 x 1 1 x1 1 0 0 0 x 1 x 11 1 1 1 0 x 0 x 1
Copyright Paul GASNERCopyright Paul GASNER 9
Counter cu flip-flop tip JK ni RSCounter cu flip-flop tip JK ni RSni RS ↔ intrările directe RS sunt neinversate, adică active-susDacă Reset=0, counterul numără normalDacă Reset=1 counterul se resetează la 00 imediat
Copyright Paul GASNERCopyright Paul GASNER 10
Stări neutilizateStări neutilizateDe obicei, la 2n stări sunt necesare n FF; uneori există stări neutilizateDe exemplu, un numărător de la 0(000) la 5(101)
Stare curentă Next StateQ2 Q1 Q0 Q2 Q1 Q00 0 0 0 0 10 0 1 0 1 00 1 0 0 1 10 1 1 1 0 01 0 0 1 0 11 0 1 0 0 01 1 0 ? ? ?1 1 1 ? ? ?
001
010
011
100
101
000
Copyright Paul GASNERCopyright Paul GASNER 11
Stări neutilizate...Stări neutilizate...Pentru a obţine un circuit cât mai simplu, stările neutilizate se marchează ca indiferenteDacă circuitul ajunge din întâmplare în una dintre stările neutilizate 110 sau 111, comportamentul său depinde de exact ceea ce este înscris în starea indiferentă
001
010
011
100
101
000Stare curentă Next StateQ2 Q1 Q0 Q2 Q1 Q00 0 0 0 0 10 0 1 0 1 00 1 0 0 1 10 1 1 1 0 01 0 0 1 0 11 0 1 0 0 01 1 0 x x x1 1 1 x x x
Copyright Paul GASNERCopyright Paul GASNER 12
...sau utilizate...sau utilizatePentru a obţine un o funcţionare sigură, trebuie completate explicit şi stările indiferenteChiar dacă circuitul ajunge din întâmplare într-o stare neutilizată, el va trece într-o stare utilizatăDe exemplu contor cu iniţializare
Stare curentă Next StateQ2 Q1 Q0 Q2 Q1 Q00 0 0 0 0 10 0 1 0 1 00 1 0 0 1 10 1 1 1 0 01 0 0 1 0 11 0 1 0 0 01 1 0 0 0 01 1 1 0 0 0
001
010
011
100
101
000
111110
Copyright Paul GASNERCopyright Paul GASNER 13
NumărătoareNumărătoareNumărător minimal pe 4 biţi: numără de la 0000 la 1111 (0 la 15) – doar incrementare cu 1 la fiecare cicluNumărător complet pe 4 biţi:
incrementare şi decrementare – UP resetare asincronă la 0000 – CLR=0 setare la orice valoare dorită prin D3...D0 şi LD=0 intrare activare activ-jos EN counter out CO – normal 1, iar când numărătorul trece de valoarea maximă devine 0
Copyright Paul GASNERCopyright Paul GASNER 14
Numărător pe 8 biţiNumărător pe 8 biţiNumărătorul pe 8 biţi poate fi obţinut din două numărătoare pe 4 biţi
contorul de jos conţine cei 4 biţi mai puţin semnificativicând contorul de jos atinge 1111, CO trece în 0 şi activează celălalt contor timp de o perioadă
Contoarele partajează semnalele de ceas şi de resetare (clear)Afişoarele sunt cifre hexa
Copyright Paul GASNERCopyright Paul GASNER 15
Numărător pe 4 biţi cu limitareNumărător pe 4 biţi cu limitareCând CO trece în 0, numărătorul este forţat să înregistreze valoarea 0110 (D3...D0), după care trece în regim normal de numărareIntervalul de numărare este 0110 – 1111
Copyright Paul GASNERCopyright Paul GASNER 16
Numărător pe 4 biţi cu limitareNumărător pe 4 biţi cu limitareCând numărătorul atinge valoarea 1100, poarta NAND forţează trecerea la valoarea 0000Intervalul de numărare este 0000 – 1100
Copyright Paul GASNERCopyright Paul GASNER 17
Numărătoare. ConcluziiNumărătoare. ConcluziiFuncţia de bază a numărătorului este de incrementare, dar se pot efectua şi alteleToate procesoarele conţin un program counter (PC)
un program constă dintr-o listă de instrucţiuniPC este asociat listei de instrucţiuni şi asigură execuţia instrucţiunii curente PC se incrementează cu 1 după execuţia fiecărei instrucţiuni şi asigură execuţia instrucţiunii următoare
Copyright Paul GASNERCopyright Paul GASNER 18
Regiştri. IntroducereRegiştri. Introducere
Circuitele flip-flop sunt limitate la un singur bitStocare de biţi multipli se realizează cu regiştriUtilizarea imediată este stocarea temporară a datelor în procesor
Copyright Paul GASNERCopyright Paul GASNER 19
Componente de bazăComponente de bazăCea mai simplă modalitate de construcţie a unui registru este de a combina mai multe FFExemplu: registru de bază pe 4 bits impementat cu flip-flop D
Copyright Paul GASNERCopyright Paul GASNER 20
Funcţia de stocareFuncţia de stocareBiţii D3...D0 sunt copiaţi la ieşire Q3...Q0 la fiecare ciclu de ceasEste necesară o nouă funcţie “load”, activată prin intrarea LD, care:
LD = 0 – registrul păstrează la ieşire valoarea curentăLD = 1 – registrul stochează valoarea de la D3...D0
L D Q ( t + 1 )0 Q ( t )1 D 3 - D 0
Copyright Paul GASNERCopyright Paul GASNER 21
Implementarea stocării paraleleImplementarea stocării paraleleSe poate insera o poartă pe intrarea de ceas:
dacă LD=1, porturile de activare C ale FF sunt în 1 şi FF îşi vor păstra starea (valoarea curentă) deoarece nu mai există front crescător dat de CLKdacă LD=0, semnalul CLK ajunge la FF şi la fronturile pozitive ele vor stoca valoare D3...D0
Copyright Paul GASNERCopyright Paul GASNER 22
Clock gatingClock gatingAceastă implementare se numeşte clock gating, deoarece semnalul de ceas trece printr-o poartă
apare problema de sincronizare de la latch, LD trebuie să fie 1 exact o perioadă de ceasîntârziere de la poarta ORîntr-un circuit complex, semnalul de ceas ajunge la momente de timp diferite la componente amplasate la diferite distanţesemnalul de ceas poate fi deformat
Copyright Paul GASNERCopyright Paul GASNER 23
Stocarea paralelăStocarea paralelăEste preferabilă modificarea intrărilor în FF tip D
dacă LD=0, intrările în FF sunt chiar valorile de la ieşire Q3...Q0 şi deci valorile stocate se păstreazădacă LD=1, intrările FF sunt D3...D0 şi noile valori vor fi încărcate (stocate)
Copyright Paul GASNERCopyright Paul GASNER 24
Regiştri de deplasareRegiştri de deplasareUn registru de deplasare (shift register) îşi „deplasează” biţii la ieşire la fiecare ciclu de ceas
SI este intrarea prin care se încarcă un nou bitDacă la momentul t starea este:
SI = 1Q0-Q3 = 0110
următoarea stare va fiQ0-Q3 = 1011
iar valoarea curentă a lui Q3 se pierde
Q0(t+1)= SIQ1(t+1) = Q0(t)Q2(t+1)= Q1(t)Q3(t+1)= Q2(t)
Copyright Paul GASNERCopyright Paul GASNER 25
Direcţia de deplasareDirecţia de deplasareÎn acest caz, biţii se deplasează spre dreapta
Dacă se consideră că cel mai semnificativ bit este Q3 iar cel mai puţin semnificativ este Q0, registrul execută deplasarea spre stânga
Q0(t+1)= SIQ1(t+1) = Q0(t)Q2(t+1)= Q1(t)Q3(t+1)= Q2(t)
Q0...Q3 curent SI Q0...Q3 nextXABCD XABC
Q3...Q0 curent SI Q3...Q0 nextXDCBA CBAX
Copyright Paul GASNERCopyright Paul GASNER 26
Registru de deplasare cu încărcare paralelăRegistru de deplasare cu încărcare paralelăLa registrul normal cu încărcare paralelă se modifică intrările în multiplexoare:
dacă LD=0, intrările în FF sunt SIQ0Q1Q2, deci registrul va executa deplasarea la următorul front pozitiv de ceasdacă LD=1, intrările FF sunt D3...D0 şi noile valori vor fi încărcate în registrul de deplasare
Copyright Paul GASNERCopyright Paul GASNER 27
Regiştri de deplasare. AplicaţiiRegiştri de deplasare. AplicaţiiConversie serial-paralel la transmisia de date
de exemplu comunicaţia dintre un mouse serial (RS-232 sau USB) şi computer
serial
computer
Copyright Paul GASNERCopyright Paul GASNER 28
Regiştri. AplicaţiiRegiştri. AplicaţiiÎntr-un procesor, regiştrii stochează date pentru ALU
date de intrare pentru ALUrezultate ale calculelor ALU
Regiştrii nu sunt RAM şi ocupă suprafaţă foarte mare din chipCache L1 şi L2 sunt RAM foarte rapid
CPU GPR's Size L1 Cache L2 CachePentium 4 8 32 bi ts 8 KB 512 KBAthlon XP 8 32 bi ts 64 KB 512 KBAthlon 64 16 64 bi ts 64 KB 1024 KBPowerPC 970 (G5) 32 64 bi ts 64 KB 512 KBItanium 2 128 64 bi ts 16 KB 256 KBMIPS R14000 32 64 bi ts 32 KB 16 MB
Copyright Paul GASNERCopyright Paul GASNER 29
Regiştri. ConcluziiRegiştri. ConcluziiRegiştrii sunt dispozitive speciale pentru stocarea de cuvinte pe mai mulţi bitsVariante:
stocare paralelăregiştri de deplasare stânga sau dreaptanumărătoarele !!!
Au funcţii de bază înconversie serial-paralelCPU