Buscar

aula23 ControladoresProgramaveis

Prévia do material em texto

Sistemas Digitais
Aula 23
Programmable System Controllers
Eduardo Peixoto
Departamento de Engenharia Ele´trica
Faculdade de Tecnologia
Universidade de Bras´ılia
1 / 24
Suma´rio
Aula 23
Conceitos de um Controlador Programa´vel
Projetando um Controlador Programa´vel
Implementando a Ma´quina de Refrigerantes no nosso Controlador
2 / 24
Programmable System Controllers
O nosso objetivo maior e´ desenvolver um controlador totalmente programa´vel, ra´pido e
fa´cil de usar.
Este dispositivo microprocessado deveria ser capaz de ser facilmente programado para
implementar um dado diagrama de estados, e deveria reagir a` condic¸o˜es de entrada em
nanossegundos.
Ale´m disso, este controlador deveria gerenciar as atividades de uma ALU, alguma
memo´ria e alguns registradores.
3 / 24
Programmable System Controllers
Um sistema programa´vel e´ um sistema onde o projetista pode controlar a operac¸a˜o do
dispositivo preenchendo uma ROM.
Ainda melhor, ele deveria permitir a programac¸a˜o em algum tipo de linguagem Assembly
de (mais) alto n´ıvel.
Finalmente, ele deveria ser modular, de forma que ele possa ser expandido facilmente.
4 / 24
Programmable System Controllers
Modelo de um Controlador Programa´vel
Program
Counter
Writable
Control
Store
Control
Inputs
Control Program Store
Control
Output
Counter
Control
5 / 24
Programmable System Controllers
O controlador deveria ser capaz de:
comec¸ar o processamento de uma posic¸a˜o arbitra´ria da memo´ria.
processar instruc¸o˜es condicionalmente ou incondicionalmente, em sequeˆncia
(contagem).
processar a pro´xima instruc¸a˜o ou desviar (branch) para outra posic¸a˜o de forma
condicional ou incondicional.
Processar uma instruc¸a˜o significa a operac¸a˜o de gerar uma sa´ıda externa e tomar uma
decisa˜o sobre qual co´digo processar em seguida, baseado na entrada atual e na operac¸a˜o
apontada pela memo´ria.
6 / 24
Programmable System Controllers
Especificamente, ele deveria ser capaz de:
Incrementar o contador de programa (PC ← PC + 1) para a pro´xima instruc¸a˜o de
forma condicional, baseado na entrada atual.
Incrementar o contador de programa (PC ← PC + 1) para a pro´xima instruc¸a˜o de
forma incondicional.
Desviar (branch) a execuc¸a˜o do programa para outro local (na˜o PC ← PC + 1) de
forma condicional.
Desviar (branch) a execuc¸a˜o do programa para outro local (na˜o PC ← PC + 1) de
forma incondicional.
Incrementar ou Desviar (branch) a execuc¸a˜o do programa de forma condicional.
Estes features formam um conjunto m´ınimo de instruc¸o˜es.
7 / 24
Arquitetura de um Controlador Programa´vel
CLOCK
ROM with STORED PROGRAM
N 2 1 0
+V
...
Outside World Inputs
Branch
Mux
Address
N 2 1 0
+V
...
Outside World Inputs
Count
Mux
Address
74161
Count
Enable
Load
CLK
CLR
D2 D1 D0
Q3 Q2 Q1 Q0
Output
Register
CLK
CLR
Branch Address
...
Control Address
...
...
Outside World Outputs
CLR
8 / 24
Programmable System Controllers
O circuito e´ bem similar ao circuito que ja´ vimos. Pore´m, o formato da ROM e´ o que
define o funcionamento total da ma´quina.
Em especial, considere o seguinte co´digo de 12 bits a seguir:
Count Mux Branch Mux Branch Address Sa´ıdas
A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Sn Sn−1 ... S0
Como ficam as instruc¸o˜es que definimos?
9 / 24
Programmable System Controllers
1) COUNT CONDITIONAL (variable): CC (variable) - (output list)
Ex: CC (START) - (LOAD)
Count Mux Branch Mux Branch Address Sa´ıdas
0 0 1 0 0 0 0 0 x x x x 0 1 0 0
↑ ↑
Enderec¸o Nunca Nunca Enderec¸o
da varia´vel faz LOAD faz LOAD da varia´vel
START LOAD
10 / 24
Programmable System Controllers
2) COUNT UNCONDITIONAL: CU - (output list)
Ex: CU
Count Mux Branch Mux Branch Address Sa´ıdas
0 0 0 1 0 0 0 0 x x x x 0 0 0 0
↑
No enderec¸o 1 Nunca Nunca Na˜o ativa
do MUX tem um faz LOAD faz LOAD nenhuma sa´ıda
1 (+5V )
11 / 24
Programmable System Controllers
3) BRANCH UNCONDITIONAL: BU (address) - (output list)
Ex: BU (6) - (0)
Count Mux Branch Mux Branch Address Sa´ıdas
x x x x 0 0 0 1 0 1 1 0 0 0 0 0
↑ ↑
Na˜o importa No enderec¸o 1 Carrega o Na˜o ativa
para o LOAD do MUX tem um enderec¸o 6 nenhuma sa´ıda
1 (+5V )
12 / 24
Programmable System Controllers
4) BRANCH CONDITIONAL: BC (variable) (address) - (output list)
Ex: BC (STOP)(3) - (0)
Count Mux Branch Mux Branch Address Sa´ıdas
0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0
↑ ↑ ↑
No enderec¸o 0 Enderec¸o Carrega o Na˜o ativa
do MUX tem um da varia´vel enderec¸o 3 nenhuma sa´ıda
0 (0V ) STOP
13 / 24
Programmable System Controllers
5) COUNT / BRANCH CONDITIONAL: CBC (variable),(variable) (address) -
(output list)
Ex: CBC (OVF ·EOT)(EOT)(0) - (LOAD,RN)
Count Mux Branch Mux Branch Address Sa´ıdas
0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1
↑ ↑ ↑ ↑ ↑
Enderec¸o da Enderec¸o Carrega o LOAD RN
varia´vel da varia´vel enderec¸o 0
OVF ·EOT EOT
14 / 24
Programmable System Controllers
E´ bem trabalhoso escrever o programa completo com instruc¸o˜es como:
CC (2) - (1)
BU (6) - (0)
...
15 / 24
Programmable System Controllers
Pore´m, alguns programas, conhecidos como ASSEMBLERs, podem ajudar no processo.
CP = 2;
LOAD = 1;
STATE D = 6;
...
CC (CP) - (LOAD)
BU (STATE D) - (0)
...
16 / 24
Programmable System Controllers
Ale´m disso, note que todas as sa´ıdas sa˜o do tipo imediatas. Sa´ıdas condicionais requerem
outros passos de programac¸a˜o (ou um hardware extra).
Finalmente, a maior limitac¸a˜o do controlador: podemos ter, no ma´ximo, duas
possibilidades para cada estado! Logo, nem todo diagrama de estados e´ poss´ıvel de
ser implementado.
Pore´m, podemos refazer o diagrama de estados de forma a adapta´-lo a` ma´quina.
17 / 24
Programmable System Controllers
A
B
C
D
E
F
G
CP
CP
CP
CP
1 1
CR
CR
PDR
PDR
S>30S=30
S<30
DP=1
CA=1
RN=1
DA=1
0000
0001
0011
0111
0101
0110
0100
Como implementar 
este estado com as 
nossas instruções?
18 / 24
Programmable System Controllers
A
B
D
E
F
G
H
CP
CP
CP
CP
1 1
CR
CR
PDR
PDR
S=30
S<30
DP=1
CA=1
RN=1
DA=1
0000
0001
0100
0110
0010
0101
0111
C
0011
S<30
S=30
19 / 24
Programmable System Controllers
A
B
D
E
F
G
�
CP
CP
CP
CP
1 1
CR
CR
PDR
PDR
S=30
S<30
DP=1
CA=1
RN=1
DA=1
0000
0001
0100
0110
0010
0101
0111
C
0011
S<30
S=30
CCBC
BC
BCBC
BU BU
CC
CC
BC
20 / 24
Programmable System Controllers
Podemos implementar o diagrama com o seguinte co´digo (antes de definir os estados):
Posic¸a˜o
na Memo´ria Instruc¸a˜o de Controle
A CC (CP )-(0)
B BC (CP )(C)-(0)
C CBC (S < 30),(S < 30)(A)-(0)
D CBC (S = 30),(S = 30)(E)-(0)
E BC (PDR)(F)-(DP)
F BU (A)-(CA)
G BC (CR)(H)-(RN)
H BU (C)-(DA)
21 / 24
Programmable System Controllers
S=30 x1
RETURN NICKELx1
S<30 x1
BRANCH MUX
3
2
1
0
0
MUX
BRANCH ADDR
3
2
1
0
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
3
2
1
0
CLOCK
x1
POP DROP READY x1
74161
COUNTER
D3
D2
D1
D0
LOAD
CLK
CLR
Q3
Q2
Q1
Q0COUNT
Enable
COUNT MUX
OUTPUTS
0en
reg
(4b)
COUNT MUX
ROM
CHANGER READY x1
DEC ACCx1
2
1
0
OUTPUTS
COIN PRESENT x1
BRANCH MUX
BRANCH ADDR
CLEAR
x1
3
2
1
0
16B ROM DA
sel
3
2
1
00
MUX
DROP POPx1
CLR ACCx1
2
1
0
22 / 24Programmable System Controllers
Uma vez definidos os estados, nosso co´digo e´:
Enderec¸o
Estado na Memo´ria Instruc¸a˜o de Controle
A 0000 CC (CP )-(0)
B 0001 BC (CP )(3)-(0)
C 0011 CBC (S < 30),(S < 30)(0)-(0)
D 0100 CBC (S = 30),(S = 30)(6)-(0)
E 0110 BC (PDR)(2)-(DP)
F 0010 BU (0)-(CA)
G 0101 BC (CR)(7)-(RN)
H 0111 BU (3)-(DA)
23 / 24
Programmable System Controllers
E temos finalmente o conteu´do da ROM:
Enderec¸o Count Mux Branch Mux Branch Sa´ıdas
Estado da Memo´ria Address Address Address CA RN DA DP
A 0000 x 0 1 0 0 0 0 0 x x x x 0 0 0 0
B 0001 x x x x 0 0 1 0 0 0 1 1 0 0 0 0
F 0010 x x x x 0 0 0 1 0 0 0 0 1 0 0 0
C 0011 x 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0
D 0100 x 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0
G 0101 x x x x 0 1 0 1 0 1 1 1 0 1 0 0
E 0110 x x x x 0 1 1 0 0 0 1 0 0 0 0 1
H 0111 x x x x 0 0 0 1 0 0 1 1 0 0 1 0
24 / 24

Continue navegando