Z80 PIO Funcionamento

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 25

1

TABLE OF CONTENTS

Chapter 1. Introduction Page


1.0 Introduction.......................................... 3
1.1 Features.............................................. 3

Chapter 2. Architecture
2.0 Overview ............................................ 4

Chapter 3. Pin Description


3.0 Pin Description.................................... 6

Chapter 4. Programming the PlO


4.0 Reset................................................... 9
4.1 Loading the interrupt Vector................. 9
4.2 Selecting an Operating Mode............... 10
4.3 Setting the Interrupt Control Word........ 11

Chapter 5. Timing
5.0 Output Mode (Mode 0).......................... 12
5.1 Input Mode (Mode 1)..........................… 13
5.2 Bidirectional Mode (Mode 2)...............… 13
5.3 Control Mode (Mode 3)......................... 14

Chapter 6. Interrupt Servicing


6.0 Interrupt servicing................................. 16

Chapter 7. Applications
7.0 Extending the Interrupt Daisy Chain....... 18
7.1 I/O Device Interface............................... 18
7.2 Control interface.................................... 19

Chapter 8. Programming Summary


8.0 Load Interrupt Vector............................. 22
8.1 Set Mode............................................... 22
8.2 Set Interrupt Control.............................. 22
2
List of figures
Page
Figure 2 -1 PIO Block Diagram................................ 5
Figure 2 -2 Port I/O Block Diagram.......................... 5
Figure 3 -1 PIO Pin Functions...............................… 8
Figure 3 -2 PIO 44 - Pin PLCC Pin Arrangements.… 8
Figure 5 -1 Mode 0 (Output) Timing......................… 12
Figure 5 -2 Mode 1 (Input) Timing.........................… 13
Figure 5 -3 Port A, Mode 2 (Bidirectional) Timing..… 14
Figure 5 -4 Control Mode (Mode 3) Timing............… 15
Figure 6 -1 Interrupt Acknowledge Timing.............… 16
Figure 6 -2 Return From Interrupt Cycle................… 17
Figure 6 -3 Daisy Chain Interrupt Service..............… 17
Figure 7 -1 Method of extending the Interrupt
Priority Daisy Chain.............................… 18
Figure 7 -2 Example of I/O Interface......................… 19
Figure 7 -3 Control Mode Application.....................… 21
3
CHAPTER 1 INTRODUCTION

1.0 INTRODUCTION
O circuito Z8O Parallel I/O (PlO) é um dispositivo programável de duas portas que fornece uma
interface compatível com TTL entre dispositivos periféricos e o Z80-GPU. A CPU pode
configurar o Z8O-PIO para interagir com uma ampla gama de dispositivos periféricos sem
necessidade de outra lógica externa. Dispositivos periféricos típicos totalmente compatíveis com
o Z80-PIO incluem a maioria dos teclados, leitores de fita de papel e furadores, impressoras,
programadores PROM , etc. O Z8O-PIO é empacotado em um DIP de 40 pinos, ou um PLCC de
44 pinos, ou um OFP de 44 pinos. Versões NMOS e CMOS também estão disponíveis. As
principais características do Z80-PlO incluem.

Uma das características exclusivas do Z80-PlO que o separa de outros controladores de interface
é que toda a transferência de dados entre o dispositivo periférico e a CPU é realizada sob total
controle de interrupção. A lógica de interrupção do PIO permite o uso total das capacidades de
interrupção eficientes do Z80-CPU durante as transferências I/0. Toda a lógica necessária para
implementar uma estrutura de interrupção totalmente aninhada é incluída no PIO para que
circuitos adicionais não sejam necessários. Outra característica única do PlO é que ele pode ser
programado para interromper a CPU na ocorrência de condições de status especificadas no
dispositivo periférico. Por exemplo, o PlO pode ser programado para interromper se ocorrer
alguma condição de alarme periférico especificada. Esta capacidade de interrupção reduz a
quantidade de tempo que o processador deve gastar na sondagem do status periférico.

1.1 CARACTERÍSTICAS

• Duas portas independentes de interface periférica bidirecional de 8 bits com >Handshake=


Controle de transferência de dados.

• 'Handshake' orientado por interrupção para resposta rápida.

• Qualquer um dos quatro modos distintos de operação pode ser selecionado para uma porta,
incluindo.
- Saída de bytes
- Entrada de bytes
- Barramento bidirecional de byte (disponível apenas na porta A)
- Modo de controle de bits.
Tudo com aperto de mão controlado por interrupção

• Lógica de interrupção prioritária Daisy Chain incluída para fornecer vetorização de interrupção
automática sem lógica externa.

• Oito saídas são capazes de conduzir transistores Darlington

• Todas as entradas e saídas totalmente compatíveis com TTL

• Fornecimento único de 5 V e relógio monofásico são necessários.


4
CHAPTER 2 PIO ARCHITECTURE

2.0 OVERVIEW VISÃO GLOBAL

Um diagrama de blocos do Z80-PIO é mostrado na Figura 2-1. A estrutura interna do Z8O-PIO


consiste em uma interface de barramento Z80-CPU, lógica de controle interno, lógica de E/S da
porta A, lógica de E/S da porta B e interrupção lógica de controle. A lógica de interface de
barramento da CPU permite que o PlO faça interface diretamente com o Z8O-CPU sem
nenhuma outra lógica externa. No entanto, decodificadores de endereço e/ou buffers de linha
podem ser necessários para sistemas grandes. A lógica de controle interno sincroniza o
barramento de dados da CPU com as interfaces dos dispositivos periféricos (Porta A e Porta B).
As duas portas de E/S (A e B) são virtualmente idênticas e são usadas para fazer interface
diretamente com dispositivos periféricos.

A lógica de Port I/O é composta por 6 registradores com lógica de controle “hand-shake”
conforme mostrado na Figura 2-2. Os registros incluem um registro de entrada de dados de 8
bits, um registro de saída de dados de 8 bits, um registro de controle de modo de 2 bits, um
registro de máscara de 8 bits, um registro de seleção de entrada/saída de 8 bits e um registro
de controle de máscara de 2 bits .

O registro de controle de modo de 2 bits é carregado pela CPU para selecionar o modo de
operação desejado (saída de byte, entrada de byte, barramento bidirecional de byte ou modo de
controle de bit). Toda a transferência de dados entre o dispositivo periférico e a CPU é realizada
através dos registros de entrada e saída de dados. Os dados podem ser escritos no registrador
de saída pela CPU ou lidos de volta para a CPU a partir do registrador de entrada a qualquer
momento. As linhas de handshake associadas a cada porta são usadas para controlar a
transferência de dados entre o PIO e o dispositivo periférico.

O registro de máscara de 8 bits e o registro de seleção de entrada/saída de 8 bits são usados


apenas no modo de controle de bits. Neste modo, qualquer um dos oito dados periféricos ou
pinos do barramento de controle pode ser programado para ser uma entrada ou uma saída
conforme especificado pelo registro de seleção. O registrador de máscara é usado neste modo
em conjunto com um recurso de interrupção especial. Esse recurso permite que uma
interrupção seja gerada quando algum ou todos os pinos não mascarados atingirem um estado
especificado (alto ou baixo). O registro de controle de máscara de 2 bits especifica o estado
ativo desejado (alto ou baixo) e se a interrupção deve ser gerada quando todos os pinos não
mascarados estiverem ativos (condição AND) ou quando qualquer pino não mascarado estiver
ativo (condição OR). Esse recurso reduz a necessidade de verificação do status da CPU do
periférico, permitindo que uma interrupção seja gerada automaticamente em condições
específicas de status do periférico. Por exemplo, em um sistema com três condições de alarme,
uma interrupção pode ser gerada se qualquer uma ocorrer ou se todas as três ocorrerem.

A seção de lógica de controle de interrupção lida com todos os protocolos de interrupção da


CPU para estruturas de interrupção de prioridade aninhada. A prioridade de qualquer dispositivo
é determinada por sua localização física em uma configuração em cadeia. Duas linhas são
fornecidas em cada PLO para formar esta cadeia. O dispositivo mais próximo da CPU tem a
prioridade mais alta. Dentro de uma porta PLO as interrupções têm maior prioridade que as da
porta B. Nos modos de entrada de byte, saída de byte ou bidirecional, uma interrupção pode ser
gerada sempre que uma nova transferência de byte for solicitada pelo periférico. No modo de
controle de bit, uma interrupção pode ser gerada quando o status do periférico corresponder a
um valor programado.
5
O PIO fornece controle completo de interrupções aninhadas. Ou seja, menor prioridade os
dispositivos não podem interromper os dispositivos de maior prioridade que não tiveram sua
rotina de serviço de interrupção concluída pela UCP. Dispositivos de prioridade mais alta podem
interromper a manutenção de dispositivos de prioridade mais baixa.

Quando uma interrupção é aceita pela CPU no Modo 2, o dispositivo de interrupção deve
fornecer um vetor de interrupção de 8 bits para a CPU. Este vetor é usado para formar um
ponteiro para um local na memória do computador onde o endereço da rotina do serviço de
interrupção está localizado. O vetor de 8 bits do dispositivo de interrupção forma os oito bits
menos significativos do ponteiro indireto, enquanto o Registro I na CPU fornece os oito bits mais
significativos do ponteiro. Cada porta (A e B) possui um vetor de interrupção independente. O
bit menos significativo do vetor é automaticamente definido como 0 dentro do PIO, pois o
ponteiro deve apontar para dois isolamentos de memória adjacentes para um endereço
completo de 16 bits.

O PLO decodifica a instrução RETI (Retorno da interrupção) diretamente do barramento de


dados da CPU para que cada PlO no sistema saiba em todos os momentos se está sendo
atendido pela rotina de serviço de interrupção da CPU sem qualquer outra comunicação com a
CPU .

+5V GND

8 Data or Control
Internal Port
Logic A
Control I/O
Handshake

8
CPU Peripheral
CPU Data Bus Bus Internal Bus Interface
Interface 8 I/O
PIO Control
Lines 8
Port Data or Control
Interrupt B
Control I/O
Handshake

Interrupt Control Lines

Figure 2-1. PIO Block Diagram


6

Input/Output
Select Reg
(8 Bits)
Mode
Control
Output Enable
Reg
(2 Bits)

Data
Output
Internal Bus Reg
(8 Bits)

8 Bit
Peripheral
Data Or
Control Bus

Mask Mask
Control Data
Reg Input
Reg (8 Bits) (8 Bits)
(2 Bits) Input Data

Ready
Handshake Handshake
Interrupt Control
Requests /Stobe Lines
Logic

Figure 2-2. Port I/O Block Diagram


7

CHAPTER 3 PIN DESCRIPTION DESCRIÇÃO DO PIN

3.0 PIN DESCRIPTION

Um diagrama da configuração do pino Z8O-PIO é mostrado na Figura 3-1. Esta seção descreve
a função de cada pino.

D7 - DO Barramento de Dados Z80-CPU (bidirecional, tri-state) Este barramento é usado para


transferir todos os dados e comandos entre o Z80-CPU e o Z80-PIO. DO é o bit menos
significativo do barramento.

B/A Sel Port B ou A Select (entrada, alta ativa). Este pino define qual porta será acessada
durante uma transferência de dados entre o Z80-CPU e o Z8O-PIO. Um nível baixo neste pino
seleciona a porta A enquanto um nível alto seleciona a porta B. Freqüentemente, o bit de
endereço A0 da CPU será usado para esta função de seleção.

C/D Sel Control ou seleção de dados (entrada, alta ativa). Este pino define o tipo de
transferência de dados a ser realizada entre a UCP e o PIO. Um nível alto neste pino durante
uma gravação da CPU no PIO faz com que o barramento de dados Z80 seja interpretado como
um comando para a porta selecionada pela linha B/A Select. Um nível baixo neste pino significa
que o barramento de dados Z80 está sendo usado para transferir dados entre a CPU e o PlO
Freqüentemente, o bit de endereço Al da CPU será usado para esta função.

/CE Chip Enable (entrada, baixa ativa). Um nível baixo neste pino permite que o PIO aceite
comandos ou entradas de dados da CPU durante um ciclo de gravação ou transmita dados
para a CPU durante um ciclo de leitura. Esse sinal geralmente é uma decodificação de quatro
números de porta de E/S que abrangem as portas A e B, dados e controle.

 Relógio do sistema (entrada). O Z80-PIO usa o relógio do sistema Z80 padrão para
sincronizar certos sinais internamente. Este é um relógio monofásico.

/M1 Ciclo Um da Máquina Sinal da CPU (entrada, ativo Baixo). Este sinal da CPU é usado como
um pulso de sincronização para controlar várias operações internas do PIO. Quando /M1 está
ativo e o sinal /RD está ativo, o Z80-CPU está buscando uma instrução da memória. Por outro
lado, quando /M1 está ativo e /IORQ está ativo, a CPU está reconhecendo uma interrupção.
Além disso, o sinal /Ml tem duas outras funções dentro do Z80-PIO.

1. /M1 sincroniza a lógica de interrupção PIO.


2. Quando /M1 ocorre sem um sinal /RD ou /IORQ ativo, a lógica PIO entra em um estado de
reinicialização.

/IORQ Solicitação de entrada/saída do Z80-CPU (entrada, baixa ativa). O sinal /IORQ é usado
em conjunto com os sinais B/A Select, C/D Select, ICE e /RD para transferir comandos e dados
entre o Z80-CPU e o Z80-¬PlO. Quando /CE, /RD e /IORQ estão ativos, a porta endereçada por
B/A irá transferir dados para a CPU (uma operação de leitura). Por outro lado, quando /CE e
/IORQ estão ativos, mas /RD não está ativo, então a porta endereçada por B/A será gravada a
partir da CPU com dados ou informações de controle conforme especificado pelo sinal C/D
Select. Além disso, se /IORQ e /M1 estiverem ativos simultaneamente, a CPU está
reconhecendo uma interrupção e a porta de interrupção colocará automaticamente seu vetor de
interrupção no barramento de dados da CPU se for o dispositivo de prioridade mais alta
solicitando uma interrupção.
8
/RD Reed Cycle Status do Z80-CPU (entrada, ativo baixo). Se /RD estiver ativo, uma operação
MEMORY READ ou I/O READ estiver em andamento. O sinal /RD é usado com os sinais A/B
Select, C/D Select, /CE e /IORQ para transferir dados do Z80-PIO para o Z80-CPU.

IEl Interrupt Enable In (Entrada, alta ativa). Este sinal é usado para formar uma cadeia de
interrupção prioritária quando mais de um dispositivo acionado por interrupção está sendo
usado. Um nível alto neste pino indica que nenhum outro dispositivo de prioridade mais alta está
sendo atendido por uma rotina de serviço de interrupção da CPU.

IEO Interrupt Enable Out (Saída ativa alta). O sinal IEO é o outro sinal necessário para formar
um esquema de prioridade em cadeia. É Alto somente se o IEI for Alto e a CPU não estiver
atendendo a uma interrupção deste PIO. Assim, este sinal bloqueia a interrupção de
dispositivos de prioridade mais baixa enquanto um dispositivo de prioridade mais alta está
sendo atendido por sua rotina de serviço de interrupção de CPU.

/INT Solicitação de interrupção (saída, dreno aberto, baixa ativa). Quando /INT está ativo, o
Z80-PIO está solicitando uma interrupção do Z80-CPU.

A7-AO Port A Bus (bidirecional, tri-state). Este barramento de 8 bits é usado para transferir
dados e/ou status ou informações de controle entre a Porta A do Z80-PIO e um dispositivo
periférico. A0 é o bit menos significativo do barramento de dados da Porta A.

/ASTDB Port A Strobe Pulse from Peripheral Device (entrada, baixa ativa) O significado deste
sinal depende do modo de operação selecionado para a Porta A como segue:

1. Modo de saída: O flanco positivo deste strode é emitido pelo periférico para acusar o
recebimento dos dados disponibilizados pelo PIO.

2. Modo de entrada: O strobe é emitido pelo periférico para carregar dados do periférico no
registro de entrada da Porta A. Os dados são carregados no PIO quando este sinal está ativo.

3. Modo bidirecional: Quando este sinal está ativo, os dados do registro de saída da Parte A são
direcionados para o barramento de dados bidirecional da Porta A. A borda positiva do
estroboscópio confirma o recebimento dos dados.

4. Modo de controle: O strobe é inibido internamente.

ARDY Registrador A Pronto (saída, ativo Alto). O significado deste sinal depende do modo de
operação selecionado para a Porta A como segue:

1. Modo de saída: Este sinal fica ativo para indicar que o registro de saída da Porta A foi
carregado e o barramento de dados periférico está estável e pronto para transferência para o
dispositivo periférico.

2. Modo de entrada: Este sinal está ativo quando o registro de entrada da porta está vazio e
pronto para aceitar dados do dispositivo periférico.

3. Modo bidirecional: Este sinal está ativo quando os dados estão disponíveis no registro de
saída da Porta A para transferência para o dispositivo periférico. Neste modo, os dados são
colocados no barramento de dados da Porta A, a menos que o ASTB esteja ativo.
9
4. Modo de controle: Este sinal é desabilitado e forçado a um estado Baixo.

B7- B0 Barramento da porta B (bidirecional, tri-state). Este barramento de 8 bits é usado para
transferir dados e/ou status ou informações de controle entre a Porta B do PIO e um dispositivo
periférico. O barramento de dados da Porta B é capaz de fornecer 1,5 m @ 1,5 V para acionar
os transistores Darlington. B0 é o bit menos significativo do barramento.

/BSTB Pulso estroboscópico da porta B do dispositivo periférico (entrada. ativo baixo). O


significado deste sinal é semelhante ao de /ASTB com a seguinte exceção:

No modo bidirecional da Porta A, este sinal envia dados do dispositivo periférico para o registro
de entrada da Porta A.

BRDY Registrador B Pronto (saída, alto ativo). O significado deste sinal é semelhante ao de A
Ready com a seguinte exceção:

No modo bidirecional da Porta A, este sinal é Alto quando o registro de entrada da Porta A está
vazio e pronto para aceitar dados do dispositivo periférico.

19 15 A0
D0 14
D1 20 A1
1 13 A2
D2 12
40 A3
CPU D3 10
Data D4 39 A4
Bus 9 Port A
D5 38 A5 I/O
3 8 A6
D6 7
2 A7
D7 Z80-PIO
18
Port A/B SEL 6 ARDY
5 16 /ASTB
Control/Data SEL
27 B0
PIO 4
/Chip Enable 28
Control 37 B1
/M1
36 29 B2
/IORQ 30
35 B3
/RD 31 B4
32 Port B
26 B5 I/O
+5V 33
11 B6
GND 34
B7
25
21
BRDY
23 17 /BSTB
/INT
Interrupt 24
INT Enable In
Control 22
INT Enable Out

Figure 3-1. PIO Pin Functions


10

6 5 4 3 2 1 44 43 42 41 40

39 /RD
B//A 7
38 PB7
PA7 8
37 PB6
PA6 9
36 PB5
PA5 10
35 PB4
PA4 11
Z80-PIO 34 PB3
N/C 12
33 PB2
GND 13
32 PB1
PA3 14
31 PB0
PA2 15
30 +5V
PA1 16
29 CLK
PA0 17

18 19 20 21 22 23 24 25 26 27 28

Figure 3-2. PIO 44-Pin PLCC Pin Assignments


11
CHAPTER 4 PROGRAMMING THE PIO

4.0 RESET

O Z8O-PIO entra automaticamente em um estado de reinicialização quando a alimentação é


aplicada. O estado de redefinição executa as seguintes funções:

1 Ambos os registros de máscara de porta são redefinidos para inibir todos os bits de dados de
porta.

2. As linhas do barramento de dados da porta são definidas para um estado de alta impedância
e os sinais de “handshake” prontos estão inativos (baixo) O modo 1 é selecionado
automaticamente.

3. Os registradores de endereço do vetor não são redefinidos.

4. Ambos os flip-flops de habilitação de interrupção de porta são redefinidos.

5. Ambos os registradores de saída da porta são redefinidos.

Além do reset automático ao ligar, o PIO pode ser resetado aplicando um sinal /M1 sem a
presença de um sinal /RD ou /IORQ. Se nenhum /RD ou /IORQ for detectado durante /M1, o
PlO entrará no estado de reinicialização imediatamente após o sinal /M1 ficar inativo. O
propósito desta reinicialização é permitir que um único portão externo gere uma reinicialização
sem uma sequência de desligamento. Essa abordagem foi necessária devido à limitação da
embalagem de 40 pinos.

Uma vez que o PlO tenha entrado no estado de reset interno, ele é mantido lá até que o PIO
receba uma palavra de controle da CPU.

4.1 CARREGANDO O VETOR DE INTERRUPÇÃO

O PIO foi projetado para operar com o Z80-CPU usando a resposta de interrupção do Modo 2.
Este modo requer que um vetor de interrupção seja fornecido pelo dispositivo de interrupção.
Este vetor é utilizado pela UCP para formar o endereço para a rotina de serviço de interrupção
daquela porta. Este vetor é colocado no barramento de dados Z80 durante um ciclo de
reconhecimento de interrupção pelo dispositivo de maior prioridade solicitando serviço naquele
momento. (Consulte a seção do manual do usuário do Z80-CPU para obter detalhes sobre
como uma interrupção é atendida pela CPU). O vetor de interrupção desejado é carregado no
PIO escrevendo uma palavra de controle na porta desejada do PIO com o seguinte formato:

D7 D6 D5 D4 D3 D2 D1 D0
V7 V6 V5 V4 V3 V2 V1 0

0 in D0 Significa Esta Palavra de Controle


é um vetor de interrupção

D0 é usado neste caso como um bit sinalizador que, quando baixo, faz com que V7 a V1 seja
carregado no registrador vetorial. No momento da confirmação da interrupção, o vetor da porta
de interrupção aparecerá no barramento de dados Z80 exatamente como mostrado no formato
acima.
12
4.2 SELECTING AN OPERATING MODE SELECIONANDO UM MODO DE OPERAÇÃO

A porta A do PlO pode ser operada em qualquer um dos quatro modos distintos: Modo 0 (modo
de saída), Modo 1 (modo de entrada), Modo 2 (modo bidirecional) e Modo 3 (modo de controle).
selecionado para significado mnemônico; ou seja, 0 = Out, 1 = In, 2 Bidirecional. A Porta B pode
operar em qualquer um desses modos, exceto o Modo 2.

O modo de operação pode ser estabelecido escrevendo uma palavra de controle para o PIO no
seguinte formato:

D7 D6 D5 D4 D3 D2 D1 D0
M1 M0 X X 1 1 1 1
Mode Word X=Unused Signifies Modes Word To
Bit Be Set

Bits D7 e D0 do código binário para o modo desejado conforme tabela a seguir:

D7 D6 Mode
0 0 0 (output)
0 1 1 (input)
1 0 2 (bidirectional)
1 1 3 (control)

Os bits D5 e D4 são ignorados. Os bits D3-D0 devem ser definidos como 1111 para indicar “Set
Mode”.

A seleção do Modo 0 permite que quaisquer dados gravados no registro de saída da porta pela
CPU sejam habilitados no barramento de dados da porta. O conteúdo do registrador de saída
pode ser alterado a qualquer momento pela CPU simplesmente escrevendo uma nova palavra
de dados na porta. Além disso, o conteúdo atual do registrador de saída pode ser lido de volta
para o Z80-CPU a qualquer momento através da execução de uma instrução de entrada.

Com o Modo 0 ativo, uma gravação de dados da CPU faz com que a linha de handshake Pronto
dessa porta vá para Alto para notificar o periférico de que os dados estão disponíveis. Este sinal
permanece alto até que um estroboscópio seja recebido do periférico. A borda de subida do
strobe gera uma interrupção (se tiver sido habilitada) e faz com que a linha Ready fique inativa.
Esse aperto de mão muito simples é semelhante ao usado em muitos dispositivos periféricos.

A seleção do Modo 1 coloca a porta no Modo de entrada. Para iniciar a operação de


handshake, a CPU apenas executa uma operação de leitura de entrada da porta. Isso ativa a
linha Ready para o periférico para indicar que os dados devem ser carregados no registro de
entrada vazio. O dispositivo periférico então envia os dados para o registro de entrada da porta
usando a linha strode. Novamente, a borda ascendente do estroboscópio causa uma solicitação
de interrupção (foi habilitada) e desativa o sinal Pronto. Os dados podem ser inseridos no
registro de entrada, independentemente do estado do sinal Pronto, se for tomado cuidado para
evitar uma condição de saturação de dados.

O modo 2 é um modo de transferência de dados bidirecional que usa todas as quatro linhas
de handshake. Portanto, somente a Porta A pode ser usada para operação no Modo 2. A
operação do Modo 2 usa os sinais de handshake da Porta A para controle de saída e os
sinais de handshake da Porta B para controle de entrada. Assim, APDY e BRDY podem
estar ativos simultaneamente. A única diferença operacional entre o Modo 0 e a parte de
saída do Modo 2 é que os dados do registro de saída da Porta A são permitidos no
barramento de dados da porta somente quando /ASTB está ativo para atingir uma
capacidade bidirecional.
13

Mode 3 operation is intended for status and control applications and does not utilize the
handshake signals. When Mode 3 is selected, the next control word sent to the PlO must define
which of the port data bus lines are to be inputs and which are outputs. The format of the control
word Is shown below:

D7 D6 D5 D4 D3 D2 D1 D0
I/O7 I/O6 I/O5 I/O4 I/O3 I/O2 I/O1 I/O0

Se qualquer bit for definido como um, a linha de barramento de dados correspondente será
usada como entrada. Por outro lado, se o bit for zerado, a linha será usada como uma saída.

Durante a operação do Modo 3, o sinal de passada é ignorado e a linha Pronto é mantida


em Baixo. Os dados podem ser gravados em uma porta ou lidos de uma porta pelo Z80-
CPU a qualquer momento durante a operação do Modo 3. Ao ler uma porta, os dados
retornados à CPU serão compostos de dados de entrada das linhas do barramento de
dados da porta atribuídas como entradas, mais dados do registro de saída da porta dessas
linhas atribuídas como saídas
.

4.3 SETTING THE INTERRUPT CONTROL WORD


DEFININDO A PALAVRA DE CONTROLE DE INTERRUPÇÃO

A palavra de controle de interrupção para cada porta tem o seguinte formato

D7 D6 D5 D4 D3 D2 D1 D0
Enable AND/ High/ Mask 0 1 1 1
Int. OR Low Follows

Used in Mode 3 Only


Significa palavra de controle
de interrupção

Se o bit D7 = 1, o flip-flop de habilitação de interrupção da porta é definido e a porta pode


gerar uma interrupção. Se o bit D7 = 0, o sinalizador de habilitação é redefinido e as
interrupções não podem ser geradas Se uma interrupção estiver pendente quando o
sinalizador de habilitação for definido, ela será habilitada na linha de solicitação de
interrupção da CPU, os bits D6, D5 e D4 são usados apenas com a operação do Modo 3.
No entanto, definir o bit D4 da palavra de controle de interrupção durante qualquer modo de
operação fará com que qualquer interrupção pendente seja redefinida. Esses três bits são
usados para permitir a operação de interrupção no Modo 3 quando qualquer grupo das
linhas I/0 vai para certos estados definidos. O bit D6 (AND/OR) define a operação lógica a
ser executada no monitoramento da porta. Se o bit D6 = 1, uma função AND é especificada
e se D6=0, uma função OR é especificada. Por exemplo, se a função AND for especificada,
todos os bits devem ir para um estado especificado antes que uma interrupção seja gerada,
enquanto a função OR gerará uma interrupção se qualquer bit especificado for para o
estado ativo.

O bit D5 define a polaridade ativa da linha do barramento de dados da porta a ser


monitorada. Se o bit D5 = 1, as linhas de dados da porta são monitoradas para um estado
alto, enquanto se D6 = 0, elas serão monitoradas para um estado baixo.

Se o bit D4 = 1, a próxima palavra de controle enviada ao PlO deve definir uma máscara da
seguinte forma:
14
D7 D6 D5 D4 D3 D2 D1 D0
MB7 MB6 MB5 MB4 MB3 MB2 MB1 MB0

Only those port lines whose mask bit is zero will be monitored for generating an interrupt is high,
the forced state of Ready will prevent input register data from changing while the CPU is reading
the PIO. Ready will go High again after the trailing edge of the /IORQ as previously described.
15
CHAPTER 5 TIMING TEMPO

5.0 OUTPUT MODE (MODE 0)

A Figura 5-1 ilustra o tempo associado à operação do Modo 0. Um ciclo de saída é sempre
iniciado pela execução de uma instrução de saída pela CPU. Um pulso /WR* é gerado pelo PIO
durante uma operação de gravação de E/S da CPU e é usado para travar os dados do barramento
de dados da CPU no registro de saída das portas endereçadas (A ou B).
A borda ascendente do pulso /WR* então levanta o sinalizador Pronto após a próxima borda
descendente de  para indicar que os dados estão disponíveis para o dispositivo periférico. Na
maioria dos sistemas, a borda de subida do sinal Pronto pode ser usada como um sinal de
travamento no dispositivo periférico, se desejado.
O sinal Ready permanecerá ativo até que: (1) uma borda positiva seja recebida da linha
estroboscópica indicando que o periférico recebeu os dados, ou (2) se já estiver ativo, Ready será
forçado para baixo um e meio  ciclos após o borda inicial de /IORQ se o registro de saída da
porta for gravado.
Pronto retornará alto na primeira borda de descida de  após a borda de fuga de /IORQ. Isso
garante que Ready esteja baixo quando os dados da porta estiverem mudando.
O sinal Pronto não ficará inativo até que ocorra uma borda descendente na linha do relógio ().
O propósito de atrasar a transição negativa do sinal Pronto até depois de uma transição negativa
do clock é que isso permite um esquema de geração muito simples para o pulso estroboscópico.
Simplesmente conectando a linha Ready à linha strobe, um strobe com duração de um período de
clock será gerado sem nenhuma outra lógica necessária.
A borda positiva do pulso strode gera automaticamente uma solicitação /INT se o flip-flop de
habilitação de interrupção tiver sido definido e este dispositivo for o dispositivo de prioridade
mais alta solicitando uma interrupção.

Se o PIO não estiver em um estado de reinicialização, o registro de saída pode ser carregado
antes que o Modo 0 seja selecionado. Isso permite que as linhas de saída da porta se tornem
ativas em um estado definido pelo usuário.

/WR*

Port Output
(8 Bits)

Ready

/Strobe

/INT

/WR* = /RD . /CE . /C/D . /IORQ

Figure 5-1. Mode 0 (Output) Timing


16

5.1 INPUT MODE (MODE 1)

A Figura 5-2 ilustra o tempo de um ciclo de entrada. O periférico inicia este ciclo usando a linha
strobe após a CPU realizar uma leitura de dados. Um nível baixo nesta linha carrega dados no
registro de entrada da porta e a borda ascendente da linha estroboscópica ativa a linha de
solicitação de interrupção (/INT) se a habilitação de interrupção estiver definida e este for o
dispositivo de solicitação de prioridade mais alta.

A próxima borda descendente da linha do relógio () redefinirá a linha Pronto para um estado
inativo, significando que o registro de entrada está cheio e o carregamento adicional deve ser
inibido até que a CPU leia os dados. A CPU, no curso de sua rotina de serviço de interrupção,
lerá os dados da porta de interrupção. Quando isso ocorre, a borda positiva do sinal CPU/RD
aumentará a linha Ready com a próxima transição baixa de  indicando que novos dados
podem ser carregados no PIO. Se já estiver ativo, Ready será forçado para baixo um e meio 
períodos seguindo a borda de ataque de /IORQ durante uma leitura de uma porta PIO. Se o
usuário enviar dados estroboscópicos para o PIO somente quando estiver pronto.

/Strobe

Sample
Port Input
(8 Bits)
Ready

/INT

/RD*

/RD* = AD . CE . /C/D . IORQ

Figure 5-2. Mode 1 (Input) Timing

5
.2
17
BIDIRECTIONAL MODE (MODE 2)

Este modo é meramente uma combinação do Modo 0 e do Modo 1 usando todas as quatro
linhas de handshake. Uma vez que requer todas as quatro linhas, está disponível apenas na
Porta A. Quando este modo é usado na Porta A, a Porta B deve ser definida para o Modo de
Controle de Bit. O mesmo vetor de interrupção será retornado para uma interrupção do Modo 3
na Porta B e uma interrupção de transferência de entrada durante a operação do Modo 2 da
Porta A. A ambigüidade é evitada se a Porta B for operada em modo polling e o registro de
máscara da Porta B for definido para inibir todos os bits.

A Figura 5-3 ilustra o tempo para este modo. É quase idêntico ao descrito anteriormente para
Modo 0 e Modo 1 com as linhas de handshake da Porta A usadas para controle de saída e as
linhas da Porta B usadas para controle de entrada. A diferença entre os dois modos é que, no
Modo 2, os dados são permitidos no barramento somente quando o A strobe é Baixo. A borda
ascendente deste strobe pode ser usada para travar os dados no periférico, pois os dados
permanecerão estáveis até depois dessa borda. A parte de entrada no Modo 2 opera de forma
idêntica ao Modo 1. Observe que tanto a Porta A quanto a Porta B devem ter suas interrupções
ativadas para obter uma transferência bidirecional acionada por interrupção.

O periférico não deve transferir dados para um barramento de dados de porta enquanto /ASTB
estiver ativo. A conexão de barramento é evitada se o periférico usar /BSTB para inserir dados
de entrada no barramento. O PIO usa o nível baixo /BSTB para travar esses dados. O PlO foi
projetado com um requisito de tempo de retenção zero para os dados ao travar neste modo, de
modo que esta estrutura de gating simples possa ser usada pelo periférico. Ou seja, os dados
podem ser desabilitados do barramento imediatamente após a borda de subida do strobe.

/WR

ARDY
/ASTB

Port A Data Out Data In


Data Bus
Sample
/INT

/BSTB

BRDY

/WR* = /RD . CE . /C/D . IORQ

Figure 5-3. Port A, Mode 2 (Bidirectional) Timing


18
5.3 CONTROL MODE (MODE 3)

O modo de controle não utiliza os sinais de handshake e uma gravação ou leitura de porta
normal pode ser executada a qualquer momento. Ao gravar, os dados serão travados nos
registros de saída com o mesmo tempo do Modo 0. O ARDY será forçado para baixo sempre
que a Porta A for operada no Modo 3. O BRDY será mantido baixo sempre que a Porta B for
operada no Modo 3, a menos que a Porta A seja no Modo 2. Neste último caso, o estado de
BRDY não será afetado.

Ao ler o PIO, os dados retornados para a CPU serão compostos de dados de registro de saída
dessas linhas de dados de porta atribuídas como saídas e dados de registro de entrada dessas
linhas de dados de porta atribuídas como Entradas. O registrador de entrada conterá dados que
estavam presentes imediatamente antes da borda descendente de /RD. Consulte a Figura 5-4.

Uma interrupção será gerada se as interrupções da porta estiverem habilitadas e os dados nas
linhas de dados da porta satisfizerem a equação lógica definida pelos registradores de controle
de máscara de 8 bits e máscara de 2 bits. Outra interrupção não será gerada até que ocorra
uma mudança no estado da equação lógica. Uma interrupção do Modo 3 será gerada apenas
se o resultado de uma operação lógica do Modo 3 mudar de falso para verdadeiro. Por
exemplo, suponha que a equação lógica do Modo 3 seja uma função OR. Uma linha de dados
de porta não mascarada torna-se ativa e uma interrupção é solicitada. Se uma segunda linha de
dados de porta não mascarada se tornar ativa simultaneamente com a primeira, uma nova
interrupção não será solicitada, pois não ocorreu uma alteração no resultado da operação lógica
do Modo 3.

Se o resultado de uma operação lógica se tornar verdadeiro imediatamente antes ou durante


/M1, uma interrupção será solicitada após a borda final de /M1.

T1 T2 Tw* T3

Port
Data Word 1 Data Word 2
Data Bus
/INT
Data Match
Occurs Here
/IORQ

/RD

D7-D0 Data In

*Timing Diagram Refers to Bit Mode Read. Data Word 1 Placed On Bus

Figure 5-4. Control Mode (Mode 3) Timing


19
CHAPTER 6 INTERRUPT SERVICING SERVIÇO DE INTERRUPÇÃO

6.0 INTERRUPT SERVICING

Algum tempo depois de uma interrupção ser solicitada pelo Thin PlO, a UCP enviará um
reconhecimento de interrupção (/M1 e /IORQ). Durante esse tempo, a lógica de interrupção do
PIO determinará a porta de prioridade mais alta que está solicitando uma interrupção. (Isto é
simplesmente o dispositivo com sua entrada de Habilitação de Interrupção alta e sua Saída de
Habilitação de Interrupção baixa). Para garantir que as linhas habilitadas daisy chain se
estabilizem, os dispositivos são impedidos de alterar seu status de solicitação de interrupção
quando /M1 está ativo. O dispositivo de prioridade mais alta coloca o conteúdo de seu registro
de vetor de interrupção no barramento de dados Z80 durante a confirmação da interrupção.

A Figura 8-1 ilustra o tempo associado às solicitações de interrupção. Durante o tempo /M1,
nenhuma nova solicitação de interrupção pode ser gerada. Isso dá tempo para os sinais Int
Enable passarem por até quatro circuitos PIO. O PIO, com IEI alto e lEO baixo durante /INTA,
colocará o vetor de interrupção de 8 bits da porta apropriada no barramento de dados neste
momento.

Se uma interrupção solicitada pelo PLO for confirmada, a porta solicitante está em serviço. lEO
desta porta permanecerá baixo até que um retorno da instrução de interrupção (RETI) seja
executado enquanto IEl da parte estiver alto. Se uma solicitação de interrupção não for
confirmada, lEO será forçado a subir por um ciclo /M1 após o PlO decodificar o opcode >ED'.
Esta ação garante que a instrução RETI de 2 bytes seja decodificada pela porta PLO adequada
(Figura 6-2).

A Figura 6-3 ilustra uma sequência típica de interrupção em repouso que pode ocorrer com
quatro portas conectadas em cadeia. Nesta sequência, a Porta 2A solicita e recebe uma
interrupção. Enquanto esta porta está sendo atendida, uma porta de prioridade mais alta (1B)
solicita e recebe uma interrupção. A rotina de serviço para a porta de maior prioridade é
concluída e uma instrução RETI é executada para indicar à porta que sua rotina foi concluída.
Neste momento, a rotina de serviço da porta de prioridade mais baixa é concluída.

Last T T1 T2 Tw* Tw* T3


State

Sample
/INT INT

/IORQ /IORQ and /M1 Indicate


Interrupt Acknowledge (/INTA)

/M1

IEO

IEI

Figure 6-1. Interrupt Acknowledge Timing


20

T1 T2 T3 T4 T1 T2 T3 T4 T1

/M1

/RD

D7 - D0 ED 4D

IEI

IEO

Figure 6-2. Return From Interrupt Cycle

Highest Prioity Channel

Port 1A Port 1B Port 2A Port 2B


+ HI
HI HI HI HI
IEI IEO IEI IEO IEI IEO IEI IEO

1. Priority Interrupt Daisy Chain Before Any Interrupt Occurs.


Under Service
+ HI HI HI LO LO
IEI IEO IEI IEO IEI IEO IEI IEO

2. Port 2A Requests an Interrupt and is Acknowledged.

Under Service Service Suspended


+ HI HI LO LO
LO IEO
IEI IEO IEI IEO IEI IEO IEI

3. Port 1B Interrupts, Suspends Servicing of Port 2A.


Service Complete Service Resumed
+ HI HI HI LO LO
IEI IEO IEI IEO IEI IEO IEI IEO

4. Port 1B Servie Routine Complete, 'RETI' Issued, Port 2A Service Resumed

Service Complete
+ HI HI HI HI
HI
IEI IEO IEI IEO IEI IEO IEI IEO

5. Second 'RETI' Instruction Issuded on Completion of Port 2A Service Routine

Figure 6-3. Daisy-Chain Interrupt Servicing


21
CHAPTER 7 APPLICATIONS

7.0 EXTENDING THE INTERRUPT DAISY CHAIN


ESTENDENDO A INTERRUPÇÃO DAISY CHAIN

Sem qualquer lógica externa, um máximo de quatro dispositivos Z80-PIO podem ser
encadeados em uma estrutura de interrupção prioritária. Essa limitação é necessária para que o
status de habilitação de interrupção (IEO) ondula por toda a cadeia entre o início de /M1 e o
início de /IORQ durante um ciclo de reconhecimento de interrupção. Uma vez que o status de
habilitação de interrupção não pode mudar durante /M1, o endereço do vetor retornado à CPU é
assegurado como sendo do dispositivo de prioridade mais alta que solicitou uma interrupção.

Se mais de quatro dispositivos PIO devem ser acomodados, uma estrutura “Iook-ahead” pode
ser usada conforme mostrado na Figura 7-1. Com esta técnica, mais de trinta PlOs podem ser
encadeados usando a lógica TTL padrão.

+5V PIO PIO PIO PIO PIO PIO PIO PIO


IEI IEO IEI IEO IEI IEO IEI IEO IEI IEO IEI IEO IEI IEO IEI IEO

Z80-
Data Bus
CPU

Figure 7-1. A Method of Extending the Interrupt Priority Daisy Chain

7.1 I/O DEVICE INTERFACE

Neste exemplo, o Z80-PIO está conectado a um dispositivo terminal de E/S que se comunica
por meio de um barramento de dados bidirecional paralelo de 8 bits, conforme ilustrado na
Figura 7-2. A operação do Modo 2 (bidirecional) é selecionada enviando a seguinte palavra de
controle para a Porta A:

D7 D6 D5 D4 D3 D2 D1 D0
1 0 X X 1 1 1 1
Mode Control

Em seguida, o vetor de interrupção apropriado é carregado (consulte o Manual da CPU para


obter detalhes sobre a operação da interrupção).
22
D7 D6 D5 D4 D3 D2 D1 D0
V7 V6 V5 V4 V3 V2 V1 0

As interrupções são então habilitadas pela borda de subida do primeiro /M1 após a palavra do
modo de interrupção ser definida, a menos que /M1 defina um ciclo de reconhecimento de
interrupção. Se uma máscara segue a palavra de modo de interrupção, as interrupções são
habilitadas pela borda de subida do primeiro /M1 seguindo a configuração da máscara.

Os dados agora podem ser transferidos entre o periférico e a CPU. O tempo para esta
transferência é conforme descrito na Seção 5.0.

ARDY

/ASTB

BRDY

/BSTB

D D D D
Data Bus S R R A
Z80- Z80- T Q C V
/IORQ
CPU PIO B V
/M1 Port Data Bus
/INT
I/O
B/A C/D /CE Terminal

Address
Address Bus Bus
Decoder

Figure 7-2. Example of I/O Interface

7.2 CONTROL INTERFACE

Uma aplicação típica do modo de controle é ilustrada na Figura 7-3. Suponha que um processo
industrial deva ser monitorado. A ocorrência de qualquer condição operacional anormal deve
ser relatada a um sistema de controle baseado em Z80-CPU. A palavra de status e controle de
processo tem o seguinte formato:

D7 D6 D5 D4 D3 D2 D1 D0
Special Turn Power Halt Temp Turn Pressure Pressure
Test on Failure Process Alarm Htrs on Alarm
Power Alarm ing On System

O PIO pode ser usado da seguinte maneira. A primeira porta A é definida para operação no
Modo 3, gravando a seguinte palavra de controle na porta A.

D7 D6 D5 D4 D3 D2 D1 D0
1 1 X X 1 1 1 1
23
Sempre que o Modo 3 for selecionado, a próxima palavra de controle enviada à porta deve ser
uma palavra de seleção de E/S. Neste exemplo, desejamos selecionar as linhas de dados de
porta A5, A3. e A0 como entradas e assim a seguinte palavra de controle é escrita:

D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 0 1 0 0 1

Em seguida, o vetor de interrupção desejado deve ser carregado (consulte o manual da CPU
para obter detalhes):

D7 D6 D5 D4 D3 D2 D1 D0
V7 V6 V5 V4 V3 V2 V1 0

Uma palavra de controle de interrupção é enviada em seguida para a porta:

D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 0 0 1 1 1
Enable OR Active Mask Interrupt Control
Interrupts Logic High Follows

A palavra de máscara após a palavra do modo de interrupção é:

D7 D6 D5 D4 D3 D2 D1 D0
1 1 0 1 0 1 1 0

Agora, se um sensor colocar um nível alto na linha A5, A3 ou A0, será gerado um pedido de
interrupção. A palavra de máscara pode selecionar qualquer combinação de entradas ou saídas
para causar uma interrupção. Por exemplo, se a palavra da máscara acima fosse:

D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 1 0 1 1 0

Então uma solicitação de interrupção também ocorreria se o bit A7 (Teste Especial) do


registrador de saída fosse definido.

Suponha que as seguintes atribuições de porta sejam usadas.


E0H = Port A Data
E1H = Port B Data
E2H = Port A Control
E3H = Port B Control

Todos os números de porta estão em notação hexadecimal. Esta atribuição específica de


números de porta é conveniente, pois A0 do barramento de endereço pode ser usado como
Seleção de porta A/B e A1 do barramento de endereço pode ser usado como Seleção de
controle/dados. O Chip Enable seria a decodificação dos bits de endereço da CPU A7 a A2
(111000). Observe que, se apenas alguns dispositivos periféricos estiverem sendo usados, uma
decodificação de habilitação de chip pode não ser necessária, pois um bit de endereço de
ordem superior pode ser usado diretamente.
24

Port A
Bus

A7 Spec. Test
A6 Turn On Pwr.
Z80-CPU Z80-PIO
A5 Pwr. Fail Alm.

A4 HALT
Industrial
D7-D0
A3 Temp. Alm. Processing
System
A2 Htrs. On

A1 Press. Sys.

A0 Press. Alm.
B/A C/D /CE

Address
A15-A0
Decoder

Figure 7-3. Control Mode Application


25
CHAPTER 8 PROGRAMMING SUMMARY

8.0 LOAD INTERRUPT VECTOR VETOR DE INTERRUPÇÃO DE CARGA

V7 V6 V5 V4 V3 V2 V1 0

8.1 SET MODE MODO DE CONFIGURAÇÃO

M1 M0 X X 1 1 1 1

M1 M0 Mode
0 0 Output
0 1 Input
1 0 Bidirectional
1 1 Bit Control

Ao selecionar o Modo 3, a próxima palavra deve definir o registro =I/O:

8.2 SET INTERRUPT CONTROL DEFINIR CONTROLE DE INTERRUPÇÃO

Enable AND/ High/ Mask 0 1 1 1


Int OR Low Follows

Used in
Mode 3 Only

Se o bit "máscara segue" for alto, a próxima palavra de controle gravada na porta deve ser a
máscara:

MB7 MB6 MB5 MB4 MB3 MB2 MB1 MB0

MB = 0, Monitor bit
MB = 1, Bit de máscara de ser monitorado

Além disso, o flip-flop de habilitação de interrupção de uma porta pode ser definido ou
redefinido sem modificar o restante da palavra de controle de interrupção usando o seguinte
comando:

Enable X X X 0 0 1 1
Int.

Você também pode gostar