PIN-OUT

O
microprocessador Z80 é um circuito integrado de tecnologia NMOS, comunicando
com o exterior por intermédio de 40 pinos.
Na
figura 1 esta representada a CPU Z80 e respectivos pinos, cujas funções
passamos a descrever
v
Função dos Pinos do Z80
A0-A15
(barramento de endereço, pinos 1-5 e 30-40). São linhas de saída (output) que
podem ter três estados (tristate): “0”, “1” e alta impedância. Este
Último estado, de flutuação em relação A CPU, é utilizado pela lógica
exterior para controlar o barramento de endereço, permitindo o acesso directo
A memória (DMA: Direct Memory Access). As 16 linhas deste barramento permitem
endereçar 65536 (212=64 k) posições de memória. o endereçamento dos portos
de entrada saída faz uso das oito linhas menos significativas (A0-A7) do
barramento de endereço, pelo que se consegue seleccionar 256 portos de entrada
ou 256 portos de saída. Durante Os períodos de refrescamento das memórias RAM
dinâmicas Os sete bits de menor ordem (Ao a 4) contém um endereço de
refrescamento.
D0-D7
(barramento de dados, pinos 7-10 e 12-15). São linhas de entrada/saída que
transmitem dados bidireccionais, isto é, dados da CPU para Os dispositivos (saída)
e dos dispositivos para a CPU (entrada). Tal como o barramento de endereços,
estas linhas podem ter três estados (tristate).
Mi (Machine Cycle One, p/no 27). E’ uma linha de saída que está activa quando se
encontra no estado “0”. Ml indica que se está a processar o ciclo de busca
(fetch) de uma instrução que está a ser executada. De notar que, quando uma
instrução cujo código da operação é constituído por dois bytes está a
ser executada, o sinal M1 será gerado por cada ciclo de fetch relativo a cada
um dos bytes do código de operação. Ml juntamente com o sinal IORQ
(activo a “0”) indica o reconhecimento de uma interrupção (interrupt).
MREQ (memory request, p/no 19). Sinal de saída que pode estar num dos três estados
(“0”, “1”, alta impediência) e é activo no estado 0”. Este sinal
indica que o barramento de endereços contém um endereço valido para sor
executada uma operação de leitura ou escrita na memória.
IOR (Input Output Request,pino 20). Sinal de saída, tristate e está activo quando
IORQ=0. IORQ indica que o byte menos significativo de barramento de endereço
contém o endereço de um porto de E/S de modo a processar-se uma operação de
escrita ou leitura nosso porto. O sinal IORQ também é gerado, conjuntamente
com o sinal M1, quando um interrupt
é reconhecido, indicando que o vector de resposta a essa interrupção podo sor
colocado no barramento de dados (ver instruções IM2, interrupção "mascaravel"
no modo 2). As operações de tomada de conhecimento de interrupções ocorrem
durante a activação do sinal Ml, enquanto as operações de entrada/saída
nunca ocorrem durante a activação do sinal Ml, logo não há
possibilidade de erro quanto a interpretação do sinal IORQ.
WR (read, pino 21). Sinal
de saída, tristate e esta activo quando WD = 0. RD indica que a CPU pretendo
extrair (br) dados da memória ou de um dispositivo de E/S. O dispositivo endereçado
deve usar este sinal para colocar a palavra de dados no barramento de dados da
CPU.
WR (write, pino 22). Sinal de saída, tristate o está activo quando WR (write, pino 22).
Sinal de saída, tristate o está activo quando WR=0. Indica que o barramento de
dados contém uma palavra que vai ser armazenada numa posição de memória
ou dispositivo de entrada/saída consoante foi activado o sinal MRFQ ou
ICRO. Alguns dispositivos do E/S da família Z80 não possuem entrada para o
sinal WR. Estes dispositivos consideram uma operação de escrita quando
o sinal IORQ está no estado “0” o RD está no estado “1”. RD=”0”
especifica uma operação de leitura.
RFSH
(refresh, p/no 28). sinal de saída, tristate o está activo quando RFSH=0. Este
sinal de controlo é utilizado no refrescamento das memórias dinâmicas.
Quando RFSH está no estado “0”, o sinal MREQ é utilizado no refrescamento
da memória dinâmica conjuntamente com as sete linhas de menor ordem de
barramento de endereços.
HALT (halt, pino 18). Este
sinal é de saída e está activo quando
HALT=0.
HALT indica que a CPU executou a instrução HALT (76 H). Então, a CPU executa
continuamente a instrução NOP de modo a permitir a actividade de
refrescamento das memórias dinâmicas. Este estado de c(paragem) (halt) só
terminará com a execução de uma interrupção, NMI ou INT (desde que tenha
sido permitida El).
WAIT
(wait, pino 24). sinal de entrada, activo quando WAIT=0. WAIT indica A CPU Z80
que o dispositivo endereçado, memória ou E/S, não se encontra pronto para a
transferência de dados. A CPU entra num estado de espera (wait) enquanto este
sinal estiver activo, permitindo sincronizar com a CPU dispositivos de
diferentes velocidades.
INT
((interrupt request, pino 16). sinal de entrada, activo quando INT=0. Este sinal
de pedido de interrupção é gerado por dispositivos de entrada/saída. Um
pedido de interrupção será considerado, no fim da execução da instrução
em vigor quando ele surgiu, se o flip-flop IFF contiver o estado de
permissão de interrupts e se o sinal BUSRQ não estiver activo. Quando a CPU
aceita a interrupção, é gerado um sinal de reconhecimento (IORQ, estando Ml
activo). A CPU pode responder a um sinal INT. de três modos diferentes conforme
foi descrito anteriormente.
(non
maskable interrupt, pino 17). sinal de entrada, activo no flanco descendente
(transição l ; 0). Esta entrada de interrupção tem prioridade superior A
entrada INT, sendo sempre aceite (finda a instrução em execução) qualquer
que seja o conteúdo do flip-flop IFF. NMI força automaticamente a CPU a
retomar o processamento (restart) na posição 0066H.
RESET
(reset, pino 26). sinal de entrada, activo quando RESET=0. Este sinal provoca o
carregamento do contador de programa (PC) com zeros1 inicializando o
processamento. A inicialização da CPU engloba as seguintes acções:
a)
carregamento do registo I com zeros;
b)
carregamento do registo R com zeros;
c)
proibição das interrupções (disable interrupts) via entrada Nt;
d)
selecção do modo 0 para futuras interrupções (IMO).
Durante
a execução do reset os barramentos do endereço e do dados encontram-se no
estado de alta impedância. Os sinais de controlo encontram-se no estado
inactivo.
BUSRQ
(bus request, pino 25). sinal de entrada, activo quando BUSRQ=0. Este sinal é
utilizado quando se pretende que Os barramentos de endereços, de dados e
sinais de controlo transitem para o estado de alta impedância. Deste modo
outros dispositivos exteriores podem controlar Os referidos barramentos (em DMA,
por exemplo). Os estados de alta impedância são atingidos logo que termine o
ciclo maquina da instrução em execução.
BUSAK
(bus acknowledge, pino 23). sinal de saída, activo quando BUSAK=0. A CPU
gera o sinal BUSAK para indicar ao dispositivo que gerou o sinal BUSRQ que o
barramento de endereço, barramento de dados os sinais de controlo foram
colocados no estado de alta impedância. então, o dispositivo exterior pode
controlar estes sinais.
(pino
6) - relógio do CPU
+5
V (pino 11), GND (pino 29) - pinos de alimentação
v
EvoIução Temporal dos Sinais do Microprocessador Z80
No
primeiro capitulo falámos da necessidade da existência de um relógio com o
fim de controlar e sincronizar as oporações efectuadas na CPU. Vamos agora ver
as formas de onda de alguns sinais em consonância com os impulsos de relógio.
A
CPU Z80 executa as instruções através da realização de certas operações básicas
elementares. Estas operações são constituídas fundamentalmente por ciclos de
busca (fetch) do código de operação, ciclos de escrita ou Leitura na memória,
ciclos de escrita ou leitura nas
unidades EIS e ciclos ligados ao reconhecimento de
interrupções. Todas as instruções são constituídas, meramente, por uma série
destas operações básicas. Cada uma destas operações prolonga-se por três a
seis períodos do relógio do sistema, podendo este intervalo de tempo ser
aumentado de forma a permitir a comunicação da CPU com dispositivos de
velocidade diferente.
Usualmente
designa-se por T o numero de ciclos que formam um período do relógio do
sistema. As operações básicas são designadas por ciclos máquina (machine
cycles), M. Na figura 2 apresenta-se o diagrama temporal de uma instrução
constituída por três ciclos maquina
(M1,
M2, M3).

Fig.2
O
primeiro ciclo maquina de qualquer instrução é um ciclo de busca (fetch)
que dura quatro, cinco ou seis períodos de relógio (ou mais, se o sinal WAIT
for activado). o ciclo de busca (M1) é utilizado pela CPU para obter o código
da próxima instrução que será executada. Os ciclos maquina seguintes
movimentam dados entre a CPU e a memória ou dispositivos de E/S e têm a
duração de três a cinco períodos de relógio (ou mais, se o sinal WAIT for
activado).
Antes
de se apresentarem alguns diagramas temporais correspondentes as operações básicas
que constituem Os ciclos maquina, convém apresentar as diferentes notações
que serão utilizadas nesses diagramas.
A
figura 3 ilustra as diferentes situações possíveis para Os sinais da CPU.

Fig.3
Em
3a) apresenta-se um sinal simples que toma os valores “0” e
“1” Assinalam-se também o flanco ascendente e o flanco descendente do
sinal. Uma vez que a transição de estado não é instantânea os flancos
apresentam uma certa inclinação.
Há
sinais que convém apresentar em grupos e não um por um individualmente, tal
é o caso dos sinais do barramento de endereços e do barramento de dados.
Nestes casos a representação será a da figura 3b), em que cada sinal poderá
ter o valor “0” ou “1”. Os pontos de cruzamento indicam que um ou mais
sinais mudam de nível nesses pontos.
E
também possível que um sinal possa estar flutuante, isto é, não se apresente
nem no estado “0” nem no estado c(1 (tristate: estado de alta impedância).
A representação é a da figura 3c) e d), em que as zonas tracejadas indicam o
estado flutuante.
v
Ciclo de Busca (Fetch Cycle)
Na
figura 4 representa-se o diagrama temporal do primeiro ciclo máquina (fetch
cycle). o conteúdo do contador de programa (PC) é colocado no barramento de
endereço no principio do ciclo Mi: Passado meio período o sinal MREQ é
activado (MREQ=0). O sinal RD é também activado indicando que o conteúdo da
céIuIa de memória endereçada pode ser colocado no barramento de dados. Com o
flanco ascendente do sinal de relógio correspondente ao período T3 ,a CPU 1ê
Os dados colocados no barramento de dados e extingue Os sinais RD e MREQ.
Os períodos T3 e T4 do ciclo de fetch são utilizados no refrescamento de memórias
dinâmicas e, a nível intemo, na descodificação e execução da instrução a
que corresponde este ciclo.

Fig.4
A figura 5 ilustra o caso em que o dispositivo de memória
activa o sinal WAIT. Durante T2 e em todos Os períodos seguintes Tw a CPU,
no flanco descendente do sinal de relógio, verifica se o sinal WAIT está
activado. Se WAIT = 0 então outro período de espera (T~) será introduzido
pela CPU. Usando esta técnica qualquer dispositivo mais lento pode ser ligado a
CPU.

Repare-se
que o sinal M1 esta activado durante Os períodos T1 e T2 (e Os períodos T~
seguintes), períodos durante Os quais a instrução e extraída da memória.
v
Ciclos de Leitura e Escrita na Memória
Na
figura é representam-se Os diagramas temporais de leitura e escrita na memória.
Estes ciclos duram, em geral, três períodos de relógio a não ser
que o sinal WAIT seja activado pelo dispositivo exterior. Os sinais MREQ e
WD são utilizados do mesmo modo que no ciclo de busca do código da operação,
se se tratar de uma operação de leitura da memória. No caso de a operação
ser de escrita são Os sinais MREQ e WR que
serão activados. Note-se que os sinais só evoluirão , conforme mostra a
figura, se a linha WAIT estiver desactivada (WAIT = 1) durante Os flancos
descendentes do período T2 do ciclo em causa.

Fig.6
v
Estados do Espera on, off States)
Convém
esclarecer um pouco melhor o que se passa quando um dispositivo exterior força
com o valor (‘O’ a entrada WAIT da CPU. A CPU reconhece este sinal no flanco
descendente do período T2, libertando a lógica exterior, ou Os dispositivos de
memória, da velocidade do execução da CPU.
Se
a CPU detectar WAIT = o, no flanco descendente de T2 , inserirá períodos de espera
no ciclo máquina em execução. Assim que a CPU Z80 detectar WAIT
1, no flanco descendente de ~ (sinal de relógio), será iniciado o período
T3 e o processamento do ciclo maquina prosseguirá normalmente.
Resumindo,
a CPU inserirá estados de espera nas seguintes condições.
1
-O Z80 só reconhece o sinal WAIT no flannco descendente do ~
em
T
2-
Se WAIT = 0, o Z80 continuara a reconhecer este sinal em todos Os períodos
de espera inseridos pela CPU.
3-O
Z80 não reconhecerá o sinal WAIT fora do período T2 ou de períodos Tw (períodos
do espera).
v
CicIos do Entrada e Saída do Dados
Na
figura 7 representam-se Os diagramas temporais dos ciclos de leitura o escrita
(read e write) a partir de dispositivos de EIS.

Fig.7
Durante
as operações de E/S é introduzido, automaticamente, um estado do espera (Tw).
Este estado é necessário devido ao curto intervalo do tempo que decorre entre
a activação do sinal IRO (IORQ = 0) e o flanco descendente do período T2 do
sinal do relógio (flanco em que a CPU verifica a linha WAIT. Do outro modo o
posto E/S não teria tempo de descodificar o endereço colocado no barramento do
endereços o actuar a linha WAIT se fosse caso disso. Durante este estado de
espera (Tw) a linha WAIT é verificada pela CPU podendo o dispositivo exterior
forçar a inserção de mais períodos do espera.
Numa
operação de leitura de um dispositivo de E/S a linha RD é utilizada para
permitir ao porto endereçado a colocação dos dados no barramento do dedos.
Representamos os dois diagramas na mesma figura, embora apenas uma das operações
soja efectuada do cada vez.
v
Ciclo do Interrupção (INT)
A
figure 8 ilustra as diversas formas do onda associadas a uma operação do
interrupção. O sinal do interrupção INT é reconhecido pela CPU no flanco
ascendente do ultimo período do relógio no fim do qualquer instrução. O
sinal não será reconhecido pela CPU se o flip-flop IFF estiver num estado que
não permite interrupções ou se o sinal BUSRQ estiver activo. Se a interrupção
for aceite será gerado um ciclo especial M1. Durante este ciclo M1
(especial) o sinal IORQ é activado (em vez do usual MREQ) indicando que o
dispositivo gerador da interrupção pode colocar um vector de oito bits no
barramento de dados. Os dois períodos de espera (Tw) permitem a’ lógica
exterior decidir quanto à prioridade das interrupções. Se for necessário a lógica
exterior pode forçar mais estados de espera fazendo WAIT = 0.
v
Resposta a uma interrupção NMI
A
figura 9 apresenta o diagrama temporal dos sinais de resposta a uma
interrupção NMI (NMI = 0). Este sinal é reconhecido ao mesmo tempo que o
sinal INT, mas difere deste porque tem prioridade mais elevada e não pode ser
inibido (disable) por programação.

Fig.8
A
resposta da CPU a um interruptor NMI é semelhante a uma operação, normal, de
leitura da memória. A Única diferença reside no facto de o conteúdo do
barramento de dados ser ignorado, enquanto o PC é automaticamente armazenado
na pilha e carregado de novo com o conteúdo 0066 H, efectuando-se um salto do
processamento para esta posição de memória. Se este interruptor é utilizado
então, a rotina de serviço deve sempre principiar na posição de memória
0066 H.
v
A Instrução HALT
Quando
a instrução HALT é executada pelo microprocessador Z80, uma sequência de
instruções NOP é executada até ao momento em que a CPU recebe um pedido de
interrupção. As duas linhas de interrupção (INT e NMT) são reconhecidas
pela CPU, no flanco ascendente de 4), durante cada período T4 correspondente a
cada instrução NOP executada.

Fig.9
Este
estado de paragem (HALT) cessara logo que um pedido de interrupção seja
detectado, desencadeando-se em seguida as operações ilustradas nas figuras 8
ou 9 consoante a interrupção seja provocada pela linha INT ou pela linha NMI,
respectivamente. A figura 10 representa o diagrama temporal da instrução
HALT.

Fig.10
A
instrução HALT é recebida durante este ciclo de memória