Documente Academic
Documente Profesional
Documente Cultură
Unitatea de control microprogramată sau automatul microprogramat, are semnalele de control incluse
în cuvinte binare succesive (microinstrucţiuni) stocate într-o memorie de mare viteză, inclusă în UC,
numită memorie de control. Implementarea algoritmului de control se face prin programarea conţinutului
memoriei de control. Fiecărei instrucţiuni recunoscute de automat îi corespunde o secvență de
microoperaţii generate prin citirea unei secvenţe de microinstrucţiuni din memoria de control (secventa
de microinstrucţiuni numită microprogram). Microprogramele conţinute în memoria de control formează
un interpretor al setului de instrucţiuni recunoscut de procesor.
Memorie de
Secvenţiator
microprograme
Intrări
Informaţie de B A
secvenţiere
Ieşiri
▪ Un câmp pentru definirea şi controlul tuturor acţiunilor, care trebuie realizate de automat,
corespunzător matricei A din modelul lui Wilkes.
▪ Un câmp folosit pentru determinarea adresei microinstrucţiunii următoare, corespunzător matricei
B din modelul lui Wilkes. Acest câmp constituie o intrare a unui automat finit, numit microsec-
venţiator, care determină pe baza acestei intrări şi a intrărilor automatului adresa pentru următoarea
microinstrucţiune care va fi executată.
Se observă paralelismul dintre structura unui sistem numeric şi structura automatului microprogramat,
ceea ce justifică termenul de microprogram, iar pentru cuvântul înscris în memorie, termenul de
microinstrucţiune.
I.8.2. STRUCTURI DE MICROSECVENȚIATOARE
Modul de realizare a microsecvenţiatorelor a evoluat ajungându-se la structuri complexe. Pentru
înţelegerea complexităţii unui microsecvenţiator menţionăm că acesta trebuie să permită execuţia
secvenţială a macroinstrucţiunilor, să permită execuţia salturilor condiţionate şi necondiţionate, să
permită posibilitatea apelurilor şi revenirilor din subrutine şi efectuarea de cicluri, adică să ofere
posibilitatea realizării de microprograme cu structuri asemănătoare cu programele scrise in limbaje de
programare de nivel înalt.
In fig. I.20 este prezentată structura unui microsecvenţiator, care are facilităţile enumerate mai sus.
LD FE
NB mSP
EN PUSH
TC
STIVA
D
3 2 1 0
S0 CLK
MUX mPC
S1
RESET
AND INCREMENTOR
32
AUTOMATE PROGRAMABILE vol. I
Numărătorul de bucle NB este un numărător sincron de tip count-down, care numără controlat de
semnalul de ceas (CLK) dacă este validat de semnalul EN, care este activ jos și poate fi încărcat cu o
adresă de pe intrările directe (D) pe frontul pozitiv al semnalului de ceas (CLK) această operaţie fiind
validată de semnalul LD, care este activ jos. Această facilitate este folosită, aşa cum vom vedea mai jos,
pentru executarea ciclurilor în programe. Pentru realizarea ciclurilor se poate testa semnalul TC=0, emis
de NB atunci când conţinutul său este 0.
Numărătorul de microprogram PC este alcătuit dintr-un registru şi un circuit de incrementare. Acest
circuit poate să transfere la intrarea PC valoarea Y+1. În acest fel se pot genera adrese consecutive.
Stiva F este folosită, în principal, pentru memorarea adresei de revenire în cazul lucrului cu proceduri.
Stiva are ataşat un pointer (SP) care indică ultima locaţie scrisă.
Pointerul de stivă funcţionează ca un numărător sincron bidirecţional cu intrări separate pentru controlul
operaţiilor PUSH şi al validării stivei FE (PUSH=1 și FE=0 se introduce în stivă; PUSH=0 și FE=0 se
extrage din stivă). După introducerea în stivă se crește cu o unitate SP, pentru a pregăti stiva să
primească o nouă adresă, iar înainte de extragerea din stivă se scade valoarea SP cu o unitate.
Ieşirea Y a microsecvenţiatorului reprezintă adresa pentru memoria de microprograme. De obicei ieşirile
Y ale microsecvenţiatorului sunt de tip trei stări, acest lucru este util dacă se doreşte controlul extern al
memoriei de microprograme.
I.8.3. STRUCTURA AUTOMATULUI MICROPROGRAMAT
Pentru realizarea unui automat microprogramat, microsecvenţiatorului descris mai sus i se adaugă
următoarele elemente hardware:
▪ Un registru pipe-line (RPL), pentru memorarea microinstrucţiunii, care are două ieşiri: o ieşire
normală şi o ieşire TSL, care este legată la magistrala internă de adrese. Structura câmpurilor
registrului este prezentată în fig. I.21. Partea AS este de lăţimea adresei memoriei de
microprograme şi se leagă la magistrala internă de adrese a automatului. Partea Sel Next ADD
conţine adresa pentru o memorie PROM şi pentru un lanţ de două multiplexoare MUX IN şi MUX
N (P=0 selectează ieşirea lui MUX N, iar P=1 selectează ieşirea negată). Partea OUT a registrului
reprezintă chiar ieşirile automatului. Încărcarea registrului se face pe frontul crescător al
semnalului CLK, iar validarea ieşirilor sale spre magistrala internă de adrese se face cu semnalul
OE, care este activ jos.
AS Sel Next ADD OUT
A_CMS A_MUX
A3 A2 A1 X P I2 I1 I0
33
AUTOMATE PROGRAMABILE vol. I
din două cuvinte (la adresa pară sau impară), deci două comenzi diferite spre restul structurii după
cum intrarea în automat selectată este 0 sau 1.
Alegând corespunzător conţinutul memoriei ROM-CMS se poate realiza un automat microprogramat de
performanţă mare, care permite implementarea unui set complet de instrucţiuni de adresare. Setul poate
cuprinde instrucţiuni de salt condiţionat si necondiţionat, instrucţiuni cu bucle şi subrutine, oferind o
mare flexibilitate în realizarea automatizărilor secvenţiale. Automatul este prezentat în figura I.22.
Structura este o structură sincronă de tip pipe-line. O asemenea structură suprapune execuţia
microinstrucţiunii curente cu extragerea din memoria de microprograme a instrucţiunii următoare.
Elementul cheie al acestei structuri este registrul pipe-line (RPL) plasat la ieşirea memoriei de micropro-
grame.
S0
TC 0 TC D
0
S1
1 1 MICROSECVENȚIATOR
2 LD
2
INTRĂRI
3 EN Y
MUX-I
3
ROM-CMS
4 CLK
PUSH
4
5
MEMORIE
FE DE
6 5
MICROPROGRAME
7 6 OE
I0I1I2 A0 A3-A1
RPL
P MUX-N
IEȘIRI
34
AUTOMATE PROGRAMABILE vol. I
ADRESĂ 3 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 X 1 1 1
1111 0 0 1 1 X 1 1 1
3 F
35
AUTOMATE PROGRAMABILE vol. I
ADRESĂ F D
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 1 1 1 X 1 0 1
1111 1 1 1 1 X 1 0 1
F D
ADRESĂ F 9
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 1 1 1 1 0 0 1
1111 1 1 1 1 1 0 0 1
F 9
ADRESĂ B 3
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 1 0 1 1 0 0 1 1
1111 0 0 1 1 0 0 1 1
B 3
.
Fig. I.26. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii RET
Instrucţiunea 5, CJP (Conditional Jump). Este o instrucţiune de salt condiţionat a cărei adresă se găseşte
în registrul RPL, dacă condiţia testată este îndeplinită, iar în caz contrar sursa adresei următoare este dată
de PC. De asemenea, trebuie să se realizeze saltul la adresa din registrul RPL, deci se va emite semnalul
de validare al ieşirii registrului pe magistrala de adrese şi se vor selecta, pentru generarea adresei
următoare, intrările directe. La adresa pară se va selecta, ca sursă a adresei următoare, PC. Conţinutul
celor două adrese este prezentat în fig. I.27.
36
AUTOMATE PROGRAMABILE vol. I
ADRESĂ 3 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 X 1 1 1
1111 1 1 1 1 X 1 0 1
F D
Fig. I.27. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii CJS
Instrucţiunea 6, LDNB (LoaD NB and Continue). Este o instrucţiune de încărcare necondiţionată a NB
cu o adresă din registrul pipe-line. Conţinutul celor două adrese este prezentat în fig. I.28. Instrucțiunea
trebuie plasată înaintea unei bucle FOR, care va fi executată de n+1 ori, daca se încarcă n în NB.
ADRESĂ 1 D
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 0 1 X 1 0 1
1111 0 0 1 1 X 1 0 1
1 D
. .
Fig. I.28. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii LDNB
Instrucţiunea 7, FOR ( Început de bucla FOR). Are ca efect introducerea în stivă a adresei următoare,
care se găseşte în PC. Este o instrucţiune necondiţionată, prima dintr-o buclă de program. Adresa
încărcată în stivă este chiar adresa primei instrucţiuni a ciclului. Dacă se înscrie în NB un număr n şi la
sfârşitul ciclului se execută un salt condiţionat, condiţia de test fiind semnalul TC emis de NB, la conţinut
0, atunci ciclul se va executa de n+1 ori.
Ultima instrucţiune a ciclului, cea care realizează testarea trebuie să realizeze şi scăderea cu o unitate a
conţinutului NB (vezi instrucţiunea LOOP şi NEXT). Conţinutul celor două adrese este prezentat în fig.
I.29.
ADRESĂ 3 B
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 0 1 1 1 0 1 1
1111 0 0 1 1 1 0 1 1
3 B
Fig. I.29. Conținutul memoriei ROM-CMS pentru executarea instrucțiunii FOR
Instrucţiunea 8, NEXT (Sfârşit de buclă cu adresa de salt din stivă). Este o instrucţiune de salt
condiţionat a cărui mecanism este următorul: cât timp NB nu emite semnalul TC=1 (conţinut 0), adresa
următoare va fi luată din stivă, iar în caz contrar, din PC. Condiţia testată este deci semnalul emis de
numărătorul de bucle, iar la test nereuşit trebuie decrementat conţinutul NB. Operaţia de citire din stivă
nu este însoţită de decrementarea pointerului de stivă, ceea ce permite reluarea buclei de la aceeaşi adresă.
Pentru ca aceasta să fie corect executată trebuie ca, în prealabil, registrul NB şi stiva să fie încărcate cu
37
AUTOMATE PROGRAMABILE vol. I
numărul de buclări, respectiv, adresa de început a buclei. Conţinutul celor două adrese este prezentat în
fig. I.30.
ADRESĂ 6 F
ROM-CMS S0 S1 LD EN PUSH FE OE
1110 0 1 1 0 1 1 1 1
1111 0 0 1 1 0 0 1 1
3 F
TCLK
I(k) I(k+1)
t1
Y
k k+1 k+2
MR
taMR
I(k) I(k+1) I(k+2)
38
AUTOMATE PROGRAMABILE vol. I
Diagrama începe în momentul în care registrul RPL este încărcat cu microinstrucţiunea de la adresa k.
Această încărcare se realizează, în diagramă, pe frontul crescător al impulsului de ceas. După un timp t1,
necesar propagării prin memoria ROM-CMS şi multiplexorul din microsecvenţiator, se va selecta adresa
următoare k+1, pentru memoria de microprograme, deoarece instrucţiunea este o instrucţiune CONT.
t1 = t aROM −CMS + t MUX
După timpul de acces la memoria de microprogramare (taMP), la ieşirile acesteia va apare noua
microinstrucţiune, care este I(k+1). Stabilizarea ieşirilor memoriei de microprograme trebuie să aibă loc
înainte de apariţia frontului pozitiv al impulsului de ceas. Încărcarea PC se face pe frontul crescător al
impulsului de ceas. Rezultă că perioada minimă a impulsului de
ceas trebuie să fie:
TCLK t1 + t aMP
Ea este dependentă de calitatea componentelor utilizate şi arată cât se poate urca frecvenţa ceasului pentru
ca structura să funcţioneze determinist.
I.8.5. SIMULATORUL DE AUTOMAT MICROPROGRAMAT
Pentru înţelegerea modului de funcţionare al automatelor microprogramate, precum şi pentru
vizualizarea semnalelor, atunci când acesta rulează, s-a realizat un program de simulare numit
AUTOMAT. Acesta are o interfață asemănătoare cu cea din fig. I.22.
Programul este un proces, care permite editarea interactivă a programelor precum şi vizualizarea, în
interiorul unor controale, a semnalelor din interiorul automatului microprogramat, de la intrările şi ieşirile
sale precum şi a evoluţiei acestor semnale atunci când automatul execută un program. Acesta poate fi
rulat în regim pas cu pas sau în regim continuu. În ultimul caz, o instrucţiune se execută la fiecare tic al
timerului.
Conţinutul memoriilor este afişat în controale de tip LIST BOX (Fig. I.33 ). În acestea sunt vizibile:
▪ Conţinutul memoriei de microprograme, care este afişat într-un LIST BOX intitulat MEMORIE
AUTOMAT, o linie corespunzând codurilor numerice în format HEX ale unei instrucţiuni.
Numărul total de locaţii pentru memoria de microprograme este de 64H. In timpul rulării unui
program instrucţiunea curentă este indicată printr-un dreptunghi. Introducerea unei instrucţiuni se
face prin selectarea unei linii şi apăsarea butonului MODIFICA MMP. Aceasta este încărcată într-
un control separat, unde se pot efectua modificările dorite în câmpurile instrucţiunii conform celor
descrise mai sus. Apoi se va apăsa butonul OK şi instrucţiunea este încărcată în memorie în locaţia
aleasă. Totodată este lansat şi un dezasamblor, care va ataşa rezultatul dezasamblării sub forma
unor mnemonice sugestive, în continuarea instrucţiunii. Trebuie atenție în modul de completare al
casetei, respectându-se câmpurile respective. Altfel pot avea loc erori.
39
AUTOMATE PROGRAMABILE vol. I
40
AUTOMATE PROGRAMABILE vol. I
▪ ÎNCĂRCARE PROGRAM, care permite încărcarea unui program, salvat anterior, începând de la
adresa 0 a memoriei de microprograme. Alegerea programului se face dintr-o fereastră pop-up
care se deschide la apăsarea butonului.
▪ START PROGRAM, care permite rularea programului de la adresa Y. Rularea programului se
face fie instrucțiune cu instrucțiune, fie continuu, în funcție de poziția unui comutator care poate
fi poziționat pe funcționare continuă sau pe funcționare pas cu pas. La execuția pas cu pas, după
terminarea execuţiei unei instrucțiuni se trece într-o stare de aşteptare în care se pot analiza
semnalele din automat, care sunt afișate în casete numerice poziționate în locurile
corespunzătoare. Reluarea funcționării, în acest caz se face la o nouă apăsare a butonului. La
execuția continuă intervalul între două microinstrucţiuni este stabilit prin programarea unui timer.
În cazul programului timerul este setat la 1 s.
▪ STOP PROGRAM, care permite oprirea programului.
Mai există și un buton numit RESET, care iniţializează adresa Y și SP permiţând rularea programului
de la adresa 0.
Cei interesați să lucreze cu simulatorul de automat microprogramat pot să mă contacteze prin e-mail la
adresa ioan.margineanu@yagoo.com pentru a primi programul de simulare.
Se poate imagina o extindere a programului. Această extindere ar putea pune în legătură automatul cu un
program de simulare a unui proces cu intrări și ieșiri booleene. În fereastra de simulare a automatului se
va prevedea un buton cu două poziţii, care permite funcţionarea programului independent sau în legătură
cu programul numit PROCES. Rularea independentă este recomandată atunci când se urmăreşte
înţelegerea modului de funcţionare a automatului, iar rularea în legătură cu procesul este utilă pentru
înţelegerea modului de cuplare la proces şi a interacţiunii dintre cele două sisteme.
Cele două programe comunică între ele printr-o legătură de tip client-server, cu protocol TCP/IP. ele se
pot găsi pe acelaşi calculator sau pe calculatoare diferite legate într-o reţea Ethernet. Serverul este
programul care simulează automatul, iar clientul este programul care simulează procesul.
Pentru a realiza legătura între ele trebuie mai întâi trecut butonul din fereastra principală pe poziţia Legat
la proces. Apoi se va înregistra serverul prin apăsarea unui buton. La apăsarea acestuia se va deschide o
fereastră în care utilizatorul trebuie să precizeze numărul portului pe care se vor conecta cele două
programe. Din acest moment orice modificare a ieşirilor automatului va fi transmisă de către server sub
forma unui octet. În programul PROCES va exista un buton de conectare la server și se vor preciza, la
apăsarea acestuia, numele calculatorului pe care rulează serverul și numărul portului de legătură. Acesta
va deveni verde numai după ce clientul, care este programul Proces, se va conecta la server.
I.8.6. EXEMPLE DE PROGRAME
Exemplul 1. Scrierea unei bucle
Să se scrie un program care să repete comenzile de la adresele 2, 3, 4 şi 5 de 4 ori, apoi să execute o
comandă nouă şi apoi să revină la repetarea comenzilor de la adresele 1, 2 şi 3.
Soluţie: Mediul de programare al automatului are un interpretor aşa că programul va fi dat atât în
hexazecimal cât şi cu mnemonice. Lungimea celor trei zone ale registrului RPL este de 1 octet.
0000: 03 A0 00 LDNB
0001: 00 40 00 FOR
41
AUTOMATE PROGRAMABILE vol. I
0002: 00 00 01 CONT
0003: 00 00 02 CONT
0004: 00 00 04 CONT
0005: 00 E0 08 NEXT
0006: 00 00 10 CONT
0007: 00 20 20 JP 00
42
AUTOMATE PROGRAMABILE vol. I
delimitate pe calea de rulare prin limitatoarele de poziţie C1, C2, C3, C4, C5, iar poziţiile braţ ridicat şi
braţ coborât sunt delimitate prin limitatoarele de cap de cursă S, pentru cap ridicat şi J, pentru cap coborât.
Ciclul de funcţionare trebuie să asigure deplasarea succesivă a pieselor în dreptul fiecărui post de tratare,
lăsarea acestora acolo un timp care va fi reglat prin reglarea vitezei de deplasare a conveierului.
Iniţial, în posturile de lucru se găsesc stative goale, iar în postul I un stativ care va fi încărcat. Poziţia
iniţială a conveierului va fi în postul I cu braţul jos (numerotat cu 1). Acesta se va deplasa spre dreapta
cu braţul coborât până în poziţia C4 (numerotată cu 2), unde, prin ridicarea braţului se va prelua stativul
aflat aici şi îl va deplasa în postul C5 (pozițiile 3, 4 și apoi 5), unde îl va depune în scopul descărcării.
Din această poziţie, cu braţul coborât se va deplasa în poziţia C3 (numerotată cu 6), va prelua stativul şi
îl va transporta în postul eliberat anterior de la C4. (pozițiile 7, 8 și apoi 9),
În fazele următoare se va asigura transferul stativelor între posturile C2 şi C3, C1 şi C2. In ultima parte a
ciclului, conveierul se va deplasa la poziţia C5, de unde va aduce stativul descărcat acolo în poziţia C1,
pentru reîncărcare, revenind în poziţia iniţială.
Să se scrie programul pentru automatul microprogramat, care realizează această automatizare.
C1 C2 C3 C4 C5
O- O+
V+
S
V-
I II III IV V
20 19
15 11 12 7 8 3
16 4
10 13 6 9
14 5
J
1 17 2 18
43
AUTOMATE PROGRAMABILE vol. I
C1 C 2 C3 C4 C 5 S J
0 1 2 3 4 5 6 7 L+
0 1 2 3 4 5 6 7 M
O+ O- V+ V-
44
AUTOMATE PROGRAMABILE vol. I