Documente Academic
Documente Profesional
Documente Cultură
Proiectarea automatelor
microprogramabile
1.1 INTRODUCERE
1
1.2 IPOTEZE DE LUCRU
Vom considera, într-o primă etapă, exemplul unui comparator pentru două
cuvinte binare de câte doi biţi. Sistemul este de tip combinaţional dar
organigrama (Figura 1.1) sugerează faptul că ea este parcursă în timp, adică
secvenţial. Ne putem imagina un sistem secvenţial sincron care, la fiecare
semnal de ceas, interpretează un bloc al organigramei şi execută instrucţiunea pe
care acest bloc o conţine (instrucţiune de test sau de asignare). Execuţia unei
instrucţiuni de test determină citirea unei intrări, în timp ce execuţia unei
asignări conduce la furnizarea unei ieşiri. Spunem că testarea şi asignarea
constituie două primitive din specificaţia sistemului.
Cele două cuvinte binare sunt A A1 A0 şi B B1 B0 . Studiul organigramei din
Figura 1.1 ne conduce la concluzia că, după ce s-a determinat ieşirea
( A B, A B sau A B ) pentru o anumită intrare dată ( A1 , B1 , A0 , B0 )
comparaţia se opreşte. În mod normal, procesul trebuie să se reia considerând
alte intrări, iar organigrama trebuie să conţină căi de revenire în momentul iniţial
cu luarea în considerare a altor variabile, după cum se arată în Figura 1.2.
Execuţia organigramei complete, adică determinarea valorii Z pentru o
anumită intrare, necesită cel mult 5 semnale de tact (se efectuează o singură
primitivă la un impuls de tact) şi cel puţin 3. De exemplu, pentru A1 B1 A0 B0 ,
rezultatul este [] şi sunt necesare cinci semnale de tact.
Z pp COMP( A, B )
A1
1
COMP( Ak , Bk )(k 0)
sp
B1 B1
2 3
A0
4
S
S B0 B0 S
6 7
> = <
2
Z COMP( A, B )
A1
0
B1 B1
1 2
A0
3
B0 B0
4 5
> = <
6 7 8
3
4. Realizarea hardware a sistemului care se poate utiliza pentru execuţia
microprogramului (sistem secvenţial hardware).
Conţinutul fiecărui element de test sau asignare trebuie să fie codificat în
binar, scris în memorie la o adresă dată şi, în final, executat de un automat
secvenţial proiectat pentru acest scop. Realizarea în memorie a unui element
presupune execuţia unei microinstrucţiuni de test sau asignare.
Microinstrucţiunea de test (Figura 1.3) este definită printr-o adresă ADR şi o
variabilă de test xi ; fiecare asemenea microinstrucţiune are o intrare şi două
ieşiri care conduc la următoarele instrucţiuni de executat: una la ADR1 , când
xi 1, cealaltă la ADR 2 , când xi 0 . Acest proces poate fi scris sub formă
simbolică (mnemonică):
ADR
ADR REG ← OUT
xi
4
ADR L1
0 IF A1 THEN 1 ELSE 2
1 IF B1 THEN 3 ELSE 6
2 IF B1 THEN 8 ELSE 3
3 IF A0 THEN 4 ELSE 5
4 Fig. 1.5 Microprogramul L1 pentru
IF B0 THEN 7 ELSE 6
un comparator binar.
5 IF B0 THEN 8 ELSE 7
6 DO REG ← [>] GO TO 0
7 DO REG ← [=] GO TO 0
8 DO REG ← [>] GO TO 0
xi i i1 i0 Z OUT2:0
A1 0 0 0 [>] 1 0 0
B1 1 0 1 [=] 0 1 0
2 1 0 [<] 0 0 1
A0
B0 3 1 1
5
T=1
1 0 3 2 1 0 3 2 1 0
T=0 − − −
3 2 1 0 2 1 0
6
1.5 REALIZARE HARDWARE:INTERPRETOR
PENTRU LIMBAJUL L1
Sistemul secvenţial sincron care execută cele două tipuri de instrucţiuni ale
limbajului L1 se numeşte maşină de decizie binară sau interpretor pentru
limbajul L1, pe scurt INT 1. Pentru că, în plus, el conţine o memorie ce
recunoaşte cele două primitive ale limbajului, acest sistem va fi un sistem
microprogramabil.
O astfel de maşină este cea din Figura 1.11 care conţine următoarele
elemente:
− o memorie program (la acest exemplu conţine 16 cuvinte de câte 11 biţi
fiecare) compatibilă cu formatul celor două instrucţiuni IF, …, DO.... Această
memorie poate fi de tip RAM sau ROM; dacă este de tip ROM, atunci
comportarea ei este pur combinaţională şi poate fi descrisă prin ecuaţia
7
REG 4
ADR
MUX2
CK LD=T'
1 T
ADR REG
1 0
0 00 CLR'
0 01 ADR+ REG+
10
0 11 y 1 0 MUX1
x0 1 00
01
x1 1 10
xi
x2 1 11
x3 1 4
4 4
T
10 9 8 7 4 3 0
OUT10:0
ADR3:0
IF... 1 i1:0 ADR13:0 ADR03:0
L1
DO... 0 – ADR+3:0 OUT3:0
ROM
INT1
Din tabelul operaţiilor se obţine tabelul de adevăr (Figura 1.13) care indică
valorile pentru y (comanda pentru MUX1) şi LD (comanda pentru REG) ca
funcţii de T (codul operaţiei) şi xi (variabila de test).
În continuare, se obţin expresiile (simplificate) pentru y şi LD ca funcţii
de T şi xi .
8
y T xi (1.8)
LD T (1.9)
Schema logică din Figura 1.14 (DMUX şi operatori OR) se obţine din
arborele binar de decizie din Figura 1.1, în felul următor:
− fiecare element de test este implementat cu un DMUX care are o singură
variabilă de selecţie (acea variabilă care este testată la instrucţiunea respectivă);
− fiecare legatură dintre două elemente ale organigramei este realizată
hardware sub forma unei conexiuni fizice (un conductor);
− fiecare convergentă de k săgeţi este implementată sub forma unei porţi
OR care are k intrări;
− terminalul de intrare în schema logică este cablat la 1.
9
Z 1
A1
1 0
B1 B1
1 0 1 0
COMP( Ak , Bk )(k 0)
1 OR
A0 1 0
B0 B0
1 0 1 0
1 1 1
G E L
Ieşirile celor trei porţi OR din Figura 1.14 sunt realizări ale celor trei funcţii
logice G , E , L , care constituie comparatorul pentru două cuvinte binare de câte
doi biţi. O analiză a acestei scheme logice va conduce la expresii logice
echivalente cu funcţiile care implementează acest tip de comparator.
B Implementarea cu DMUX cu selecţie multiplă
În cazul particular când toate elementele de test operează la fiecare nivel cu
aceeaşi variabilă, se poate obţine o realizare echivalentă cu cea din Figura 1.14,
în care un anumit număr de demultiplexoare cu o singură variabilă de selecţie se
pot înlocui printr-un singur DMUX cu mai multe variabile de selecţie. Se obţine
schema logică din Figura 1.15.
C Implementarea cu multiplexoare
Dualitatea dintre DMUX şi MUX sugerează posibilitatea de realizare a unei
structuri echivalente cu cele anterioare cu ajutorul MUX. Aceasta se poate face
pornind de la următoarele reguli:
− fiecare element de test se implementează printr-un MUX cu o intrare de
selecţie (de adresă).
10
Z
1
A1 1 1 0 0
B1 0 1 0 1
Fig. 1.15 Implementarea cu
A0 demultiplexoare cu selecţie multiplă.
1 1 0 0
B0 0 1 0 1
G E L
Organigrame liniare
11
3 Z G, E , L
A1 1 0
COMP( Ak , Bk )(k 0)
B1 B1
1 0 1 0
Zk
A0 1 0
B0 B0 1 0
1 0
3 Z k 1 3 3
Q Q2 Q1 Q0
p=6 H p=6 H
12
În Figura 1.19 este reprezentat semnalul de ceas H : fiecare tranziţie pozitivă
H 0 1 determină schimbarea din starea curentă Q în starea următoare Q .
Prin organigramă liniară vom înţelege o realizare software directă a
diagramei de stări, care conţine instrucţiuni de test şi de asignare din limbajul
L1. În Figura 1.20 este prezentată o organigramă liniară pentru numărătorul
modulo 6; se poate verifica faptul că fiecare stare a grafului de stări (adică
fiecare cerc din Figura 1.18) generează o instrucţiune de asignare şi fiecare
tranziţie de la starea curentă Q la cea următoare Q implică două teste
succesive asupra variabilei de ceas H , conform Figurii 1.19.
Putem atribui o câte o adresă (hexazecimal) ADR 00...11 fiecărei
instrucţiuni din Figura 1.20, după care putem obţine programul scris în limbajul
L1 pentru numărătorul considerat (Figura 1.22).
Fiecare program din acest capitol va fi evaluat prin calculul a doi parametri
care exprimă respectiv costurile temporale şi pe cele spaţiale; primul este dat de
numărul c al instrucţiunilor din program şi determină necesarul de memorie, al
doilea este reprezentat de numărul d al instrucţiunilor care trebuie executate
între două fronturi pozitive ale variabilei de ceas H , adică, pe durata unui ciclu
de ceas. Aceşti doi parametri depind de numărul p al stărilor numărătorului.
Din Figura 1.20 găsim:
c( p) 3 p , (1.10)
d ( p) constant 3 . (1.11)
000
Q2 Q1 Q0 Q2 Q1 Q0
101 001 0 0 0 0 0 1
0 0 1 0 1 0
0 1 0 0 1 1
0 1 1 1 0 0
100 010 1 0 0 1 0 1
1 0 1 0 0 0
011
TH
1
Fig. 1.19 Semnal de ceas H:
t
0
pentru comanda numărătorului. t t
13
00 000 Q2 Q1Q0
SP
H H
01 02
03
001
H H
04 05
d=3
06 010
H H
07 08
09
011
H H
0A 0B Q3
0C 100
H H
0D 0E
101
0F
H H
10 11
Acum, putem defini un factor de merit pentru program sub forma produsului
c d ; pentru exemplul nostru:
14
În cele ce urmează vom presupune că perioada TCLK a ceasului intern CLK al
maşinii de decizie binară din Figura 1.11 este întotdeauna mai mic decât
perioada TH a oricărui ceas extern H ; adică, în toate cazurile
d TCLK TH . (1.13)
15
H
D
CK
Q
Q0(=000)
D
CK
Q
Q1(=001)
D
CK
Fig. 1.21 Implementarea cu bistabile D Q
a numărătorului descris în Figura 8.21.
Q2(=010)
D
CK
Q
Q3(=011)
D
CK
Q
Q4(=100)
D
CK
Q
Q5(=101)
ADR L1
00 DO REG ← 000 GO TO 01
01 IF H THEN 01 ELSE 02
02 IF H THEN 03 ELSE 02
03 DO REG ← 001 GO TO 04
04 IF H THEN 04 ELSE 05
05 IF H THEN 06 ELSE 05
06 DO REG ← 010 GO TO 07
07 IF H THEN 07 ELSE 08
08 IF H THEN 09 ELSE 08
09 DO REG ← 011 GO TO 0A
0A IF H THEN 0A ELSE 0B
0B IF H THEN 0C ELSE 0B
0C DO REG ← 100 GO TO 0D
0D IF H THEN 0D ELSE 0E
0E IF H THEN 0F ELSE 0E
0F DO REG ← 101 GO TO 10
10 IF H THEN 10 ELSE 11
11 IF H THEN 00 ELSE 11
16
Tabelul iniţial de stări din Figura 1.18 se transformă într-o diagramă
Karnaugh, ca în Figura 1.24. Prezenţa variabilelor "don't care" pentru
Q2 Q1Q0 110, 111 conduce la simplificarea expresiilor logice; arborele de
decizie pentru Q , reprezentat în Figura 1.25 este minimal. Combinarea acestui
arbore cu subprogramul SP conduce la organigrama din Figura 1.25, care este o
posibilă realizare a Figurii 1.23; SP apare o singură dată dar această
simplificare s-a obţinut pe seama utilizării a cinci instrucţiuni de test în arbore.
În Figura 1.26 este prezentat programul corespunzător Figurii 1.25.
Pentru cazul general al unui numărător cu p stări vor exista p instrucţiuni de
asignare şi p 1 instrucţiuni de test în arborele minimal şi două instrucţiuni de
test în subprogram; aşadar numărul total de instrucţiuni este
c( p) 2 p 1 . (1.14)
000 SP
H
001 Q ?
H
010
011
100
101
Q2
17
SP
H
1
Fig. 1.25 Arborele minimal de decizie
pentru numărătorul modulo şase.
2 H
Q2 Q Q 1 (mod 6)
3
Q1
4
Q0 Q0 Q0
7 6 5
Q2 Q1 Q0
000 101 100 011 010 001
0 C B A 9 8
ADR L1
0 DO REG ← 000 GO TO 1
1 IF H THEN 1 ELSE 2
2 IF H THEN 3 ELSE 2
3 IF Q2 THEN 7 ELSE 4
4 IF Q1 THEN 6 ELSE 5
5 IF Q0 THEN 9 ELSE 8
6 IF Q0 THEN B ELSE A
7 IF Q0 THEN 0 ELSE C
8 DO REG←001 GO TO 1
9 DO REG←010 GO TO 1
A DO REG←011 GO TO 1
B DO REG←100 GO TO 1
C DO REG←101 GO TO 1
d ( p) 3 log 2 p , (1.15)
18
unde x înseamnă cel mai mic întreg mai mare sau egal cu x . Se obţine
factorul de merit
1 Q Q 1 (mod 6)
Q
INC
Q2 1 0 =
Q Q 1
(mod 6)
Q1 1 0
REG
H
Q0 Q0
Q0 1 0 1 0 1 0 Q
Q Q Q
Q2 Q1 Q0
19
20