24.5. Registru de deplasare


Shift Register (Registrul de deplasare) este un alt tip de circuit logic secvențial, care poate fi utilizat pentru stocarea sau transferul de date binare.

Acest dispozitiv secvențial încarcă datele prezente pe intrările sale și apoi le mișcă sau le "deplasează" la ieșirea sa, la fiecare ciclu de ceas, de unde și numele Shift Register.

Un registru de deplasare constă, în principiu, din mai multe "D-Type Data Latches" cu un singur bit, unul pentru fiecare bit de date, fie un logic "0", fie un "1" conectate împreună într-un aranjament de lanț tip serial, astfel încât ieșirea de la un Data Latch devine intrarea următorului Data Latch și așa mai departe.

Biții de date pot fi trimiși în registrul de deplasare sau în afara acestuia, în serie, adică unul după celălalt, din direcția stângă sau cea dreaptă sau toți împreună, în același timp, într-o configurație paralelă.

Numărul de Data Latch individuale necesare pentru a crea un singur registru de deplasare este de obicei determinat de numărul de biți ce vor fi stocați, cel mai frecvent fiind de 8 biți (un octet) lățime construit din opt Data Latch individuale.

Registrele de deplasare sunt utilizate pentru stocarea datelor sau pentru mișcarea datelor și, prin urmare, sunt folosite în mod obișnuit în interiorul calculatoarelor sau computerelor pentru a stoca date cum ar fi două numere binare înainte de a le aduna împreună sau pentru a converti datele dintr-un format serial în paralel sau din paralel în serial. Data Latch individuale care alcătuiesc un singur registru de deplasare sunt toate comandate de un semnal comun de ceas (Clk), făcându-le dispozitive sincrone.

IC-urile registre de deplasare sunt, în general, prevăzute cu o conexiune clear sau reset, astfel încât acestea să poată fi "SET" sau "RESET" după cum este necesar. În general, registrele de deplasare funcționează în unul din cele patru moduri diferite, cu mișcarea de bază a datelor printr-un registru de deplasare fiind:

  • Serial-in to parallel-out (SIPO) - registrul este încărcat cu date seriale, câte un bit la un moment dat, datele stocate fiind disponibile la ieșire în formă paralelă.

  • Serial-in to Serial-out (SISO) - datele sunt deplasate în serie "IN" și "OUT" în registru, câte un bit la un moment dat în direcția stângă sau dreaptă sub controlul ceasului.

  • Parallel-in to Serial-out (PISO) - datele paralele sunt încărcate simultan în registru și sunt deplasate din registru în serie câte un biți la un moment dat, sub controlul ceasului.

  • Parallel in to parallel-out (PIPO) - datele paralele sunt încărcate simultan în registru și transferate împreună la ieșirile respective de același impuls de ceas.

Efectul mișcării datelor de la stânga la dreapta printr-un registru de deplasare poate fi prezentat grafic ca:

De asemenea, mișcarea direcțională a datelor printr-un registru de deplasare poate fi spre stânga, (deplasarea stânga) spre dreapta, (deplasarea spre dreapta) stânga-IN, dar dreapta-OUT, (rotație) sau ambele deplasări stânga și dreapta în interiorul aceluiași registru făcându-l bidirecțional. În acest tutorial, se presupune că toate datele se deplasează spre dreapta (deplasarea dreapta).

Serial-in to Parallel-out (SIPO) Shift Register

4-bit Serial-in to Parallel-out Shift Register

Operațiunea este după cum urmează. Să presupunem că toate flip-flop-urile (FFA la FFD) tocmai au fost RESET (intrare CLEAR) și că toate ieșirile QA la QD sunt la nivel logic "0", adică nu există date de ieșire paralele.

Dacă un logic "1" este conectat la pinul de intrare DATA al FFA, atunci la primul impuls de ceas, ieșirea FFA și, deci, rezultatul QA va fi setat HIGH la logic "1", toate celelalte ieșiri rămânând încă LOW la logic „0“. Să presupunem acum că pinul de intrare DATA al FFA a revenit LOW din nou la logic "0", oferindu-ne un impuls de date sau 0-1-0.

Al doilea impuls de ceas va schimba ieșirea lui FFA la „0“ logic și ieșirea lui FFB și QB HIGH la logic „1“ deoarece intrarea sa D are nivel logic „1“ pe ea de la QA. Logic „1“ s-a mutat acum sau a fost „deplasat“ un loc de-a lungul registrului la dreapta, deoarece acum este la QB.

Când ajunge cel de-al treilea impuls de ceas, această valoare logic "1" se deplasează la ieșirea din FFC (QC) ș.a.m.d până la sosirea celui de-al cincilea impuls ceas care stabilește toate ieșirile QA la QD înapoi la nivel logic "0", deoarece intrarea în FFA a rămas constantă la nivel logic "0".

Efectul fiecărui impuls de ceas este de a deplasa conținutul datelor fiecărui etaj un loc spre dreapta, iar acest lucru este prezentat în tabelul următor până când valoarea completă a datelor 0-0-0-1 este stocată în registru. Această valoare de date poate fi acum citită direct din ieșirile QA la QD.

Atunci, datele au fost transformate dintr-un semnal de intrare de date serial într-o ieșire de date paralelă. Tabelul de adevăr și următoarele forme de undă arată propagarea unui logic "1" prin registru, de la stânga la dreapta, după cum urmează.

Mișcarea datelor de bază printr-un registru de deplasare

Rețineți că după terminarea celui de-al patrulea impuls de ceas, cei 4 biți de date (0-0-0-1) sunt stocați în registru și vor rămâne acolo, cu condiția ca ceasul registrului să se fi oprit. În practică, datele de intrare în registru pot consta în diferite combinații de logic "1" și "0". SIPO IC disponibile în mod obișnuit includ standardul 74LS164 cu 8 biți sau 74LS594.

Serial-in to Serial-out (SISO) Shift Register

Acest registru de deplasare este foarte similar cu SIPO de mai sus, cu excepția că (mai sus datele au fost citite direct într-o formă paralelă de la ieșirile QA la QD) de această dată datele curg direct prin registru și ies din celălalt capăt. Deoarece există doar o singură ieșire, DATA părăsește registrul de deplasare câte un bit la un moment dat într-un format serial, de aici numele SISO.

Registrul de deplasare SISO este unul dintre cele mai simple dintre cele patru configurații, având doar trei conexiuni, intrarea serială (SI) care determină ce intră în flip-flop-ul din stânga, ieșirea serială (SO) care este luată de la ieșirea flip-flop-ul din dreapta și semnalul ceasului de secvențiere (Clk). Diagrama circuitului logic de mai jos prezintă un registru de deplasare generalizat serial-in serial-out.

4-bit Serial-in to Serial-out Shift Register

Acest tip de Shift Register funcționează și ca dispozitiv de stocare temporară sau poate acționa ca un dispozitiv de întârziere pentru date, cantitatea de întârziere fiind controlată de numărul de etaje din registru, 4, 8, 16 etc. sau prin varierea aplicării impulsurilor de ceas. IC-uri disponibile în mod obișnuit includ 74HC595 8-bit Serial-in to Serial-out Shift Register cu 3 ieșiri de stare.

Parallel-in to Serial-out (PISO) Shift Register

Registrul de deplasare PISO acționează în sens invers față de SIPO de mai sus. Datele sunt încărcate în registru într-un format paralel, în care toți biții de date se introduc simultan la intrările lor, la pinii de intrare paralel PA la PD ai registrului. Datele sunt apoi citite secvențial în modul normal de deplasare dreapta de la registru la Q reprezentând datele prezente la PA până la PD.

Aceste date sunt afișate câte un bit, la un moment dat, pe fiecare ciclu de ceas într-un format serial. Este important de reținut că, cu acest tip de registru de date, nu este necesar un impuls de ceas pentru a încărca paralel registrul, deoarece el este deja prezent, dar sunt necesare patru impulsuri de ceas pentru descărcarea datelor.

4-bit Parallel-in to Serial-out Shift Register

Deoarece acest tip de registru de deplasare convertește date paralele, cum ar fi un cuvânt de date pe 8 biți, în format serial, acesta poate fi utilizat pentru a multiplexa mai multe linii de intrare diferite într-un singur flux serial DATA care poate fi trimis direct către un computer sau transmis pe o linie de comunicații. IC-urile disponibile în mod obișnuit includ 74HC166 8-bit Parallel-in/Serial-out Shift Registers.

Parallel-in to Parallel-out (PIPO) Shift Register

Modul final de operare este Parallel-in to Parallel-out Shift Register. Acest tip de registru de deplasare acționează, de asemenea, ca un dispozitiv de stocare temporară sau ca un dispozitiv de întârziere similar cu configurația SISO de mai sus. Datele sunt prezentate într-un format paralel la pinii de intrare paralelă PA la PD și apoi transferați împreună direct către pinii lor de ieșire respectivi QA la QD de același impuls de ceas. Deci, un impuls de ceas încarcă și eliberează registrul. Acest aranjament pentru încărcarea și descărcarea paralelă este prezentat mai jos.

4-bit Parallel-in to Parallel-out Shift Register

Registrul de deplasare PIPO este cel mai simplu dintre cele patru configurații, având doar trei conexiuni, intrarea paralelă (PI) care determină ceea ce intră în flip-flop, ieșirea paralelă (PO) și semnalul ceasului de secvențiere (Clk).

Similar cu registrul de deplasare SISO, acest tip de registru acționează, de asemenea, ca un dispozitiv de stocare temporară sau ca dispozitiv de întârziere de timp, cantitatea de întârziere fiind variată de frecvența impulsurilor de ceas. De asemenea, în acest tip de registru nu există interconexiuni între flip-flop-uri individuale, deoarece nu este necesară o deplasare serială a datelor.

Registru de deplasare universal

Astăzi, există multe registre de deplasare de mare viteză, bi-directionale, de tip "universal" disponibile, cum ar fi TTL 74LS194, 74LS195 sau CMOS 4035, care sunt disponibile ca dispozitive multifuncționale pe 4 biți ce pot fi utilizate fie serial-serial, deplasare la stânga, deplasare la dreapta, serial-paralel, paralel-serial sau ca un registru de date multifuncțional paralel-paralel, de unde și numele lor "Universal".

Aceste registre de deplasare universale pot efectua orice combinație de operațiuni de intrare și ieșire paralele și seriale, dar necesită intrări suplimentare pentru a specifica funcția dorită și pentru a preîncărca și reseta dispozitivul. Un registru de deplasare universal folosit în mod obișnuit este TTL 74LS194, așa cum este arătat mai jos.

4-bit Universal Shift Register 74LS194

Registrele universale de deplasare sunt dispozitive digitale foarte utile. Acestea pot fi configurate pentru a răspunde la operații care necesită o formă de stocare temporară a memoriei sau pentru întârzierea informațiilor, cum ar fi modurile de configurare SISO sau PIPO sau transferul de date dintr-un punct în altul, fie în format serial sau paralel. Registrele de deplasare universale sunt frecvent utilizate în operațiile aritmetice pentru a transfera date spre stânga sau dreapta pentru înmulțire sau împărțire.

Rezumat Registru de deplasare

  • Un simplu registru de deplasare poate fi realizat folosind numai flip-flop-uri tip-D, un flip-flop pentru fiecare bit de date.

  • Ieșirea din fiecare flip-flop este conectată la intrarea D a flip-flop-ului din dreapta.

  • Registrele de deplasare țin datele în memoria lor, care sunt deplasate la pozițiile lor necesare pe fiecare impuls de ceas.

  • Fiecare impuls de tact deplasează conținutul poziției unui registru cu un bit la stânga sau la dreapta.

  • Biții de date pot fi încărcați câte un bit la un moment dat într-o configurație de intrare serie (SI) sau pot fi încărcați simultan într-o configurație paralelă (PI).

  • Datele pot fi eliminate din registru câte un bit la un moment dat pentru o ieșire serie (SO) sau eliminate toate simultan dintr-o ieșire paralelă (PO).

  • O aplicație a registrelor de deplasare este în conversia datelor din serial în paralel sau paralel în serial.

  • Registrele de deplasare sunt identificate individual ca SIPO, SISO, PISO, PIPO sau ca un registru de deplasare universal cu toate funcțiile combinate într-un singur dispozitiv.

În următorul tutorial despre circuitele logice secvențiale, vom analiza ce se întâmplă când ieșirea ultimului flip-flop într-un registru de deplasare este conectată direct la intrarea primului flip-flop, producând un circuit cu buclă închisă care recirculă în mod constant date în buclă. Aceasta produce un alt tip de circuit logic secvențial denumit Ring Counter, care este folosit la contoare și divizoare decadice.