Documente Academic
Documente Profesional
Documente Cultură
1. Registre de deplasare
În electronica digitală, registrul este privit ca o entitate capabilă să memoreze informaţii binare la
nivel de cuvânt (de 4, 8, 16 sau chiar 32 de biţi).
Există două modalităţi de încărcare a informaţiei binare întru-un registru:
- încărcare paralelă – toţi biţii sunt încărcaţi simultan;
- încărcare serială – biţii sunt încărcaţi pe rând, unul câte unul, până la terminarea acestora;
Încărcarea serială presupune deplasarea informaţiei (cu o poziţie la fiecare bit nou introdus),
motiv pentru care aceste circuite sunt denumite registre de deplasare.
În cazul automatelor programabile:
- registrul este realizat prin legarea convenabilă a unor relee interne (biţi din memoria
internă a automatului);
- registrele cu încărcare paralelă sunt folosite pentru stocarea temporară de informaţii
(operanzi, rezultate parţiale, transfer de date, etc.).
- registrele de deplasare pot fi folosite, spre exemplu, pentru urmărirea în timp a statusului
pieselor de pe o bandă rulantă. Ulterior, pe baza informaţiilor din registru, în alte puncte
de lucru de pe bandă, se pot realiza acţiuni asupra pieselor cu anumite caracteristici.
Un registrul de deplasare (Shift Register) dispune de următoarele intrări:
- o intrare seriala de date – permite introducerea de date pe prima poziţie a registrului;
- o intrare de comandă a deplasării conţinutului registrului, similară intrării de ceas de la
registrele logice. Deplasarea informaţiei din registru se face cu o poziţie la fiecare
tranziţie FalseTrue a acestei intrări;
- o intrare de ştergere a conţinutului registrului.
Modul de încărcare a unui registru de deplasare pe 4 biţi este ilustrat în figura 1
AP – Curs 12 Page 1 of 15
Registrele de deplasare pot fi de trei feluri:
- registre de deplasare spre dreapta (Shift Right Register) – deplasarea informaţiei se face
de la bitul cu pondere cea mai mare spre bitul cu ponderea cea mai mică (figura 2.a);
- registre de deplasare spre stânga (Shift Left Register) – deplasarea informaţiei se face de
la bitul cu ponderea cea mai mică spre bitul cu ponderea cea mai mare (figura 2.b);
- registre de deplasare circulare (Circulating Shift Register) – deplasarea se face spre
stânga, în circuit închis. O secvenţă de biţi este repetată la nesfârşit (figura 2.c);.
Fig. 2: Deplasarea informaţiei pentru: a) registru de deplasare spre dreapta (de la MSB spre LSB);
b) registru de deplasare spre stânga (de la LSB spre MSB); c) registru circular;
AP – Curs 12 Page 2 of 15
Pentru ambele instrucţiuni trebuie specificate următoarele elemente:
- File - adresa grupului de biţi ce urmează a fi supus deplasării.
Se foloseşte o adresă de fişier şi nu una de cuvânt deoarece instrucţiunile de shiftare pot
opera pe un număr mare de biţi, amplasaţi în mai multe cuvinte cu adrese succesive.
Biţii din ultimul cuvânt al fişierului ce nu au fost prinşi în zona de acţiune a instrucţiunii
de shiftare, nu mai pot fi utilizaţi în alte scopuri.
- Bit Address – specifică adresa sursei de informaţie binară ce urmează a fi încărcată serial
în registrul de deplasare.
- Control – specifică o adresă unică în care este depusă o structură de date necesară pentru
buna funcţionare a instrucţiuni de shiftare. Această structură de date conţine 3 locaţii de
memorie după cum urmează:
o Status Word – este un cuvânt din Control Table, în care găsim o serie de biţi de
tip flag ce indică modul în care se desfăşoară operaţia de shiftare:
Enable Bit (EN) – are valoarea 1 pe toată durata de activare a instrucţiunii
de shiftare;
Done (DN) – devine 1 după ce toţi biţii din registru au fost deplasaţi cu o
poziţie; Bitul este resetat automat la dezactivarea instrucţiunii de shiftare;
Error Bit (ER) – devine 1 dacă apar erori in executarea instrucţiunii (spre
exemplu introducerea unui număr negativ în registrul Lenght);
Unload Bit (UB) – copiază starea logică a bitului ce iese din registru ca
urmare a deplasării. Informaţia de pe acest bit se va pierde la următoarea
activare a instrucţiunii.
o Lenght – specifică lungimea registrului, exprimată în biţi.
o Position
AP – Curs 12 Page 3 of 15
Deoarece discutăm despre o instrucţiune de deplasare spre stânga, deplasarea trebuie să se facă
de la LSBMSB. În consecinţă, informaţia de la senzor este introdusă în registru pe poziţia LSB
a registrului, adică la adresa B3:10/0.
AP – Curs 12 Page 4 of 15
Din ultimele două figuri se poate vedea că registrul de deplasare ocupă două locaţii de memorie:
locaţia B3:50 este ocupată complet iar locaţia B3:51 este ocupată parţial. Biţii neocupaţi din
adresa B3:51 nu mai pot fi folosiţi în alte scopuri.
De această dată avem o instrucţiune de deplasare spre dreapta, deplasarea trebuie să se facă de la
MSB LSB. În consecinţă, informaţia de la senzor este introdusă în registru pe poziţia MSB a
registrului, adică la adresa B3:51/7.
AP – Curs 12 Page 5 of 15
2. Stive FIFO (First In Last Out)
Stivele de tip FIFO (Firt In, First Out) operează pe principiul “primul venit – ultimul plecat”.
Stivele de tip FIFO (First In, First Out) pot fi privite ce operaţii de shiftare cu execuţie la nivel
de cuvânt. Modul de operare al stivei FIFO este prezentat în figura 7.
Din punct de vedere al reprezentării, pentru fiecare din cele două operaţii cu stiva, există blocuri
funcţionale distincte aşa cum se poate vedea în figura 8 pentru cazul automatelor Allen-Bradley.
AP – Curs 12 Page 6 of 15
Fig. 8: Modul reprezentare a operaţiilor de încărcare/descărcare a stivei – cazul automatelor Allen-Bradley
AP – Curs 12 Page 7 of 15
Utilizarea în pereche a instrucţiunilor FFL, FFU
Pentru implementarea unei stive FIFO complet funcţională este nevoie de utilizarea în pereche a
instrucţiunilor FFL şi FFU şi utilizarea în comun a parametrilor mai importanţi. În exemplul din
figura 9 se poate remarca că ambele instrucţiuni au aceeaşi dresă de început (FIFO=#N7:12), au
aceeaşi lungime (Lenght=10) şi au acelaşi registru de control (Control=R6:0).
Fig. 9: Utilizarea instrucţiunilor FFL, FFU pentru implementarea unei stive FIFO – cazul automatelor Allen-Bradley
Referitor la funcţionarea schemei din figura 9 se pot face următoarele observaţii:
- Stiva este organizată în memoria automatului începând cu adresa #N7:12 şi are lungimea
de 10 locaţii;
- Operaţiile de depunere a datelor în stivă (încărcarea stivei) sunt determinate de tranziţia
False True a intrării A. După fiecare depunere, conţinutul registrului Position este
crescut cu o unitate. Informaţia introdusă în stivă este preluată de la adresa N7:10.
- Operaţiile de extragere a datelor din stivă (descărcarea stivei) sunt determinate de
tranziţia False True a intrării B. După fiecare extragere, conţinutul registrului Position
este scăzut cu o unitate. Informaţia extrasă din stivă este depusă de la adresa N7:11.
După fiecare extragere din stivă, se realizează şi o deplasare în sus, cu o poziţie, a
conţinutului stivei.
AP – Curs 12 Page 8 of 15
3. Stive LIFO (Last In First Out)
Stivele de tip LIFO (Last In, First Out) operează pe principiul “primul venit – primul plecat”.
Din punct de vedere funcţional, putem spune că:
- stivele FIFO pot fi privite ca nişte containere cu depozitare a produselor pe orizontală;
- stivele LIFO pot fi privite ca nişte containere cu depozitarea produselor pe verticală.
Din punct de vedere al implementării stivelor LIFO se pot face următoarele precizări:
- se folosesc două blocuri funcţionale: unul pentru operaţia de încărcare, celălalt pentru
descărcarea stivei;
- cele două instrucţiuni trebuie folosite în pereche aşa cum se arată în exemplul din figura
10;
- parametrii specifici stivelor LIFO sunt similari celor prezentaţi la stivele FIFO;
Fig. 10: Utilizarea instrucţiunilor LFL, LFU pentru implementarea unei stive LIFO (automate Allen-Bradley)
AP – Curs 12 Page 9 of 15
4. Secvenţiatoare mecanice (Sequencer Time )
Instrucţiunile de tip Sequencers au avut ca scop implementarea unor funcţii asigurate de sisteme
mecanice capabile să genereze secvenţe de comenzi repetitive.
Din punct de vedere funcţional, aceste sisteme mecanice sunt similare celor folosite la cutiile
muzicale. Un astfel de mecanism este format din mai multe discuri ce sunt aşezate pe un singur
ax şi sunt rotite de un motor. Pe fiecare disc sunt amplasate o serie de excrescenţe care au ca rol
închiderea contactelor electrice amplasate în dreptul discurilor (vezi schema de principiu din
figura 11).
AP – Curs 12 Page 10 of 15
- SQI (Sequencer Input)- este o instrucţiune de intrare care citeşte starea unui registru de
intrare, în momente succesive de timp, şi compară aceste informaţii cu cele existente într-
un fişier de tip sequencer.
- SQC (Sequencer Compare)- este o instrucţiune de ieşire ce compară datele dintr-un
fişier cu cele dintr-un secvenţiator.
- SQL (Sequencer Load)- este o instrucţiune de intrare ce permite încărcarea de la un
modul de intrare a informaţiei din tabelul secvenţiatorului.
AP – Curs 12 Page 11 of 15
Aplicaţie 1: Semaforizarea unei intersecţii cu două căi
Pentru comanda celor 6 lămpi, necesare celor două semafoare, se folosesc 6 ieşiri dintr-un modul
de ieşire discret, amplasat la adresa O:2. Modul de conectare a lămpilor la modulul de ieşire se
poate deduce din figura de mai jos.
Având în vedere că în funcţionarea semafoarelor apar 4 etape distincte şi că aceste etape trebuie
repetate la nesfârşit, se poate imagina o schemă de control pe baza unei instrucţiuni de tip
sequencer. Pentru aceasta, în Sequencer File trebuie să trecem starea logică a lămpilor pentru
fiecare din cele 4 etape/paşi, iar apoi trebuie să mai adăugăm etapa starting point, în care toate
ieşirile sunt inactive.
Din aceste considerente tragem concluzia că Sequencer File trebuie să aibă organizarea 5 locaţii
de memorie de câte 6 biţi fiecare.
Dacă ţinem cont de modul în care operează instrucţiunea SQO, constatăm că, în fiecare pas,
instrucţiunea va direcţiona spre modulul de ieşire toţi cei 16 biţi ai locaţiei de memorie, în loc
să transmită doar cei 6 biţi necesari pentru comanda lămpilor.
Acest mod de lucru este deranjant atunci când, la ieşirile modulului digital, în afara lămpilor,
mai sunt conectate şi alte elemente, deoarece acestea pot fi influenţate în funcţionare de
informaţia transmisă prin cei 10 biţi.
AP – Curs 12 Page 12 of 15
Pentru a bloca influenţa celor 10 biţi asupra ieşirilor modulului O:2, este necesar să folosim
facilitatea de mascare oferită de instrucţiunea SQO. Mai precis, în registrul Mask trebuie să
trecem valoarea 003Fh=0000 0000 0011 11112 , pentru a bloca cei 10 biţi să ajungă la ieşire.
Pe de altă parte, este evident că avem o aplicaţie de tip Time Driven deoarece trecerea
secvenţiatorului de la un pas la altul se face după expirarea unor perioade prestabilite de
timp.
Utilizarea unui singur timer pentru comanda secvenţiatorului este posibilă numai dacă durata
de activare a celor 3 culori este egală. Pentru această situaţie, schema de conectare este
prezentată în figura 13.
Dacă se doreşte stabilirea unor constante de timp diferite, schema anterioară, bazată pe un
singur timer nu mai poate fi folosită. Pentru astfel de situaţii, o soluţie elegantă ar fi utilizarea
unui al doilea secvenţiator în care să trecem duratele de activare pentru fiecare pas al
secvenţiatorului iniţial. O astfel de schemă prezentată în figura 15.
AP – Curs 12 Page 13 of 15
Fig. 13: Modul de conectare a două secvenţiatoare pentru realizarea constantelor diferite de timp
AP – Curs 12 Page 14 of 15
Temă
AP – Curs 12 Page 15 of 15