Upload
justis
View
31
Download
2
Embed Size (px)
DESCRIPTION
O Z80: Exemplo de um microprocessador de 8 bits. A abordagem ao microprocessador Z80 tem por objectivos principais: Analisar uma arquitectura com boas características pedagógicas e inúmeras aplicações aos longo dos (muitos) anos - PowerPoint PPT Presentation
Citation preview
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 1
O Z80: Exemplo de um microprocessador de 8 bits• A abordagem ao microprocessador Z80
tem por objectivos principais:– Analisar uma arquitectura com boas
características pedagógicas e inúmeras aplicações aos longo dos (muitos) anos
– Relacionar a arquitectura do microprocessador com os elementos exteriores necessários à implementação de um pequeno sistema
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 2
Arquitectura do Z80
Barramento de endereços (16 bit)
ALU
Controlobarr. dados
Descod.e
controloReg. deinstrução
Controlode endereços
Registosdo CPU
Sinais de controlo (internos)
Barramento de dados (8 bit)
Sinais de controlo do CPU e sistema
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 3
Z80: Configuração de pinos
Barramento deendereços (16)
Barramentode dados (8)
/BUSRQ/BUSAK
Clock
Vcc Gnd/RESET
/NMI/INT
/WAIT
/HALT
/RFSH/WR/RD
/IORQ/MREQ
/M1
Controlodo
sistema
Controlodo
CPU
Controlo dobarramento
do CPU
Z80CPU
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 4
Z80: Configuração de pinosA11A12A13A14A15CLKD4D3D5D6
+5 V (Vcc)D2D7D0D1
/INT/NMI
/HALT/MREQ/IORQ
1234567891011121314151617181920
4039383736353433323130292827262524232221
A10A9A8A7A6A5A4A3A2A1A00 V (Gnd)/RFSH/M1/RESET/BUSRQ/WAIT/BUSAK/WR/RD
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 5
Leitura de um código de instrução
CLOCK
A[0:15]
/MREQ
/RD
/M1
D[0:7]
T1 T2 T3 T4
Endereço válido
Dadosválidos
250 ns
mín. 35 ns
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 6
Leitura de um operando
CLOCK
A[0:15]
/MREQ
/RD
D[0:7]
T1 T2 T3 T4
Endereço válido
Dadosválidos
250 ns
mín. 50 ns
250 ns
mín. 30 ns máx. 75 ns
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 7
Ciclo de escrita em memória
CLOCK
A[0:15]
/MREQ
/WR
D[0:7]
T1 T2 T3 T4
Endereço válido
Dados no barramento
250 ns
mín. 220 ns
mín. 80 ns mín. 60 ns
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 8
Ciclo de acesso a E/S
CLOCK
A[0:7]
/IORQ
/WR
D[0:7]
T1 T2 T3 T4
Endereço válido
Dados no barramento
250 ns
/RD
D[0:7] Dadosválidos
mín. 50 ns
máx. 80 ns
mín. 60 nsmín. 30 ns
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 9
Interrupções no Z80
• Quando o Z80 aceita um pedido de interrupção pára temporariamente o que está a fazer para o atender
• /NMI: Permite o pedido de interrupções não mascaráveis
• /INT: Os pedidos de interrupção neste pino serão atendidos se o programador o permitir
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 10
Atendimento das interrupçõesCód. instrução
OperandoCód. instrução
Operando
Cód. instruçãoOperando
reti
(continuaçãodo
programa)
Rotina de atendimentoda interrupção (terminacom a instrução de retorno)
Execução do programaprincipal
Ao ser aceite um pedidode interrupçãosuspende-se a execuçãodo programa principal,que é temporariamentesubstituído pela rotinade atendimento dainterrupção
Ao concluir-se oatendimento dainterrupção retoma-sea execução doprograma principal
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 11
SP e stack quando é atendida uma interrupção
IndefinidoIndefinidoIndefinido
(SP)
PCH
PCL
Indefinido
(SP)
(Antes) (Depois)
Endereçosdecrescentes
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 12
Pedidos de interrupção em /NMI• O pedido de interrupção em /NMI (activo à
transição descendente) força a execução da rotina de atendimento, que terá que começar no endereço 0066H
• Esta rotina deverá terminar com a instrução RETN, que garante a manutenção do estado imediatamente anterior ao pedido ser aceite
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 13
Pedidos de interrupção em /INT• O pedido em /INT é activo ao nível lógico 0, pode
ser atendido nos modos 0, 1 ou 2 (ou ignorado) e o retorno deve ser feito com RETI– No modo 0 deverá ser forçado no barramento de
dados uma instrução de restart– No modo 1 tem lugar um salto para a rotina de
atendimento com início em 0038H– No modo 2 o endereço será dado pelo registo I (MSB)
e pelo barramento de dados (LSB)
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 14
Permitir / inibir pedidos em /INT
• As instruções EI (enable interrupts) e DI (disable interrupts) permitem / inibem o atendimento de interrupções no pino /INT
• O Z80 dispõe de um flip-flop interno (IFF1), onde armazena a informação sobre a permissão ou inibição do atendimento a /INT
• Existe ainda um outro flip-flop deste tipo (IFF2), usado durante o atendimento em /NMI
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 15
RETN e RETI
• Durante o atendimento a /NMI deve suspender-se o atendimento a /INT, para evitar que uma interrupção de baixa prioridade possa sobrepor-se a uma de alta prioridade
• O processo de atendimento a /NMI copia IFF1 para IFF2 e coloca IFF1 em 0, pelo que o valor de IFF1 deve ser reposto no fim (e por isso o retorno de /NMI difere do de /INT)
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 16
Modelo de programação do Z80
• O modelo de programação do Z80 pode representar-se por um diagrama de blocos que inclui os registos e as flags de um microprocessador
• Esta informação permite-nos o desenvolvimento de programas, mesmo que não conheçamos a evolução temporal dos sinais nos pinos ou outros detalhes de funcionamento
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 17
Modelo de programação do Z80
A FB CD EH L
A’ F’B’ C’D’ E’H’ L’
Stack pointerProgram counterIY index registerIX index register
I R
16 bit
8 bit 8 bit 8 bit 8 bit
Apontador para a pilhaApontador de programa
IX e IY são usados com endereçamento indexado
Alternate register set (conjunto alternativo de registos)
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 18
O registo das flags
A FB CD EH L
8 bit 8 bit
S Z H P/V
N CY
S: sign - activa quando o bit mais significativo do resultado é 1Z: zero - activa quando o resultado da instrução tem o valor 0
P/V: parity / overflow - conforme o tipo de instruçãoN: indica se a última operação foi uma adição ou uma subtracçãoCY: activa quando há transporte para além do bit 7
H: half-carry - activa quando há transporte do bit 3 para o 4
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 19
Modos de endereçamento
• Imediato (immediate) - LD A,$FF / 3E FF• Imediato estendido (immediate extended) -
LD HL,1000H / 21 00 10• Página zero modificado (modified page
zero) - RST 00H / C7• Relativo (relative) - JR Z,MARCA / 28 05• Estendido (extended) - LD HL,(1000H) /
2A 00 10
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 20
Modos de endereçamento
• Indexado (indexed) - LD C,(IX) / DD 4E 00
• Ao registo (register) - LD A,B / 78
• Indirecto por registo (register indirect) - LD A,(BC) / 0A
• Implícito (implied) - CPL / 2F
• Ao bit (bit) - BIT 3,(IX+7FH) / DD CB 7F 5E
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 21
Tipos de instruções
• Transferência de dados de 8 bits (8-bit load) - LD A,B / 78
• Transferência de dados de 16 bits (16-bit load) - LD HL,1000H / 21 00 10
• Troca, transferência de blocos e pesquisa em blocos (exchange, block transfer, block search) - EX DE,HL / EB
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 22
Tipos de instruções
• Aritméticas e lógicas para dados de 8 bits (8-bit arithmetic and logical) - ADD A,(IY+10H) / FD 86 10
• Genéricas do tipo aritmético e para controlo do CPU (general-purpose arithmetic and CPU control) - CCF / 3F
• Aritméticas para dados de 16 bits (16-bit arithmetic) - ADC HL,DE / ED 5A
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 23
Tipos de instruções
• Rotação / deslocamento (rotate / shift)- RLA / 17• Manipulação ao bit (bit set, reset and test) - BIT
5,A / CB 6F• Salto (jump) - JP 20FFH / C3 FF 20• Chamada de subrotinas e retorno (call and return)
- CALL 1000H / CD 00 10• Entrada e saída (input and output) -
IN A,(7FH) / DB 7F
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 24
Apresentação de um pequeno sistema de apoio laboratorial
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 25
Disposição dos componentes
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 26
Date: December 12, 1995 Sheet 1 of 1
Size Document Number REV
A JMF / HCM 1.0
SITEMA Z80 - SD2
1
2C3100n
VCC
OUT3OUT2OUT1
D3D2D1D0
I1/CLK 1
I2 2
I3 3
I4 4
I5 5
I6 6
I7 7
I8 8
I9 9
I10 10
I11 11
I12 13
O1 23
O2 22
O3 21
O4 20
O5 19
O6 18
O7 17
O8 16
O9 15
O10 14
U3
22V10
CLK/MREQ/IOREQ
A15A7A6
KEY0
D0D1D2D3D4D5D6
A0 10
A1 9
A2 8
A3 7
A4 6
A5 5
A6 4
A7 3
A8 25
A9 24
A10 21
A11 23
A12 2
A13 26
A14 1
CE 20
WE 27
OE 22
Q0 11
Q1 12
Q2 13
Q3 15
Q4 16
Q5 17
Q6 18
Q7 19
U2
DS1230Y
A0A1A2A3A4A5A6A7
A0A1A2A3A4A5A6
A0 30
A1 31
A2 32
A3 33
A4 34
A5 35
A6 36
A7 37
A8 38
A9 39
A10 40
A11 1
A12 2
A13 3
A14 4
A15 5
D0 14
D1 15
D2 12
D3 8
D4 7
D5 9
D6 10
D7 13
M1 27
MREQ 19
IORQ 20
WR 22
RD 21
REFSH 28
HALT 18
WAIT 24
INT 16
NMI 17
RESET 26
BUSRQ 25
BUSAK 23
CLK 6
U1
Z80
/MREQ/IOREQ
/WR/RD
VCC
1 2R1 2K2
1 2R2 2K2
1 2R3
2K2 1 2
R4
2K2
1 2R5 2K2
/NMI/INT
/RESET
A8A9A10A11A12A13A14A15
D0
A7A8A9A10A11A12A13A14
/M_CS
1
2C2100n
D7
VCC
KEY1KEY2KEY3/WR/RD
OUT0DA_CS
GNDVCCQ0
/M_CS
OUT0OUT1OUT2
1 23 45 67 89 1011 1213 1415 1617 1819 20
JP1
CONECTOR
OUT3KEY0KEY1KEY2KEY3/NMI/INT 1 2
R10
2K49
Q1Q2Q3Q4Q5Q6Q7
1
2C5100n
VCC
/WR/RD
D1D2D3D4D5D6D71
2C1100n
CLKVCC
1 2
U4A
74HCT141
2C8
100p 1 2
R13
1K
13 12
U4F
74HCT14
1 2Y1
4MHz
1 2R14
1K
CLK
D0 3 Q0 2
D1 4 Q1 5
D2 7 Q2 6
D3 8 Q3 9
D4 13 Q4 12
D5 14 Q5 15
D6 17 Q6 16
D7 18 Q7 19
OC 1
G 11
U5
74LS373
D0D1D2D3D4D5D6
B8 12
B7 11
B6 10
B5 9
B4 8
B3 7
B2 6
B1 5
VR+ 14
VR- 15
IOUT 4
IOUT 2
COMP 16
VLC 1
V+
13
V-
3
U6
DAC0800
Q0Q1Q2Q3Q4Q5Q6
3
2 1
8
4U7A
TL082
5
6 7
U7B
TL082
VEE
VDD
1
2
J1SAIDA
1 2R8
10K1
2
R910K
VCC
VCC1
2
D4LED_2
1
2C6100n
1
2C7100n
VEE
VEE1
2
R112K49
1
2
R124K99
Q7
DA_CS
D7
1
2D11N4148
VCC
1
2
R1610K
VCC
1
2
R151K
1 2S1
RESET
1
2C94u7
5 6
U4C
74HCT14
11 10
U4E
74HCT14
/RESETVCC
VCC VCC
1
2
R28390R
VCC
1
2
D5LED_3
1 2R26
10K
1
2
R27390R
2
3
1Q2BC547
1 2R25
10K
2
3
1Q1BC547
OUT2
OUT3
1
2
R23390R
1
2
R24390R
1
2
D2LED_0
1
2
D3LED_11
2
R212K2
1
2
R222K2
KEY2 KEY3
VCC VCC
1
2
R192K2
1
2
R202K2
KEY0 KEY1
VCC VCC
9 8
U4D
74HCT14
1 2R18
2K2
VCC
3 4
U4B
74HCT14
VCC
1 2R17
2K2
VCC
-12V+12V
+5V1234
JP2
ALIMENTACAO
GND
VCC
VDDVEE
VCC 1
2C4100n
1
2
S2KEY0
1
2
S3KEY1
1
2
S4KEY2
1
2
S5KEY3 OUT0 OUT1
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 27
Descodificação do sistema
• Os endereços atribuídos a cada bloco presente estão ilustrados na tabela seguinte:
RD WR MREQ IORQ A15 A7 A6 Acesso seleccionado
0 (1) 1 (0) 0 1 0 X X Memória
- - 1 0 X 0 0 -
1 0 1 0 X 0 1 Saída analógica
1 0 1 0 X 1 0 Saídas digitais
0 1 1 0 X 1 1 Entradas digitais
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 28
PAL de descodificação: Equações
+L 64 C 1 IAW 123k *d:\palasm\examples\z80jmf.pds +¦ ¦¦ ¦¦EQUATIONS ¦¦ ¦¦/MEM_CS = /MREQ*IORQ*/A15 ¦¦DA_CS = MREQ*/IORQ*/WR*RD*/A7*A6 ¦¦ ¦¦OUT0 := (MREQ*/IORQ*/WR*RD*A7*/A6)*D0 + /(MREQ*/IORQ*/WR*RD*A7*/A6)*OUT0 ¦¦OUT1 := (MREQ*/IORQ*/WR*RD*A7*/A6)*D1 + /(MREQ*/IORQ*/WR*RD*A7*/A6)*OUT1 ¦¦OUT2 := (MREQ*/IORQ*/WR*RD*A7*/A6)*D2 + /(MREQ*/IORQ*/WR*RD*A7*/A6)*OUT2 ¦¦OUT3 := (MREQ*/IORQ*/WR*RD*A7*/A6)*D3 + /(MREQ*/IORQ*/WR*RD*A7*/A6)*OUT3 ¦¦ ¦¦D0.TRST = MREQ*/IORQ*WR*/RD*A7*A6 ¦¦D1.TRST = MREQ*/IORQ*WR*/RD*A7*A6 ¦¦D2.TRST = MREQ*/IORQ*WR*/RD*A7*A6 ¦¦D3.TRST = MREQ*/IORQ*WR*/RD*A7*A6 ¦¦D0 = KEY0 ¦¦D1 = KEY1 ¦¦D2 = KEY2 ¦¦D3 = KEY3 ¦¦ ¦¦ ¦¦ ¦+------------------------------------------------------------------------------+
D01
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 29
Exemplo de aplicação
• O exemplo de aplicação que aqui se ilustra corresponde a uma situação simples que gera uma onda em dente de serra
inicio .org 0h ; posiciona o codigo a partir de 0000
saida .equ 40h ; endereco do conversor D/A
inicio ld a,$00 ; comeca com o valor minimociclo out (saida),a ; escreve no D/A (saida analogica) inc a ; incrementa o valor para o D/A jp ciclo ; repete o ciclo escreve / incrementa
.end
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 30
Geração do código objecto
• A passagem deste código em assembly pelo cross-assembler gera o seguinte ficheiro .lst:
0001 00000002 0000 inicio .org 0h0003 00000004 0000 saida .equ 40h0005 00000006 0000 3E 00 inicio ld a,$000007 0002 D3 40 ciclo out (saida),a0008 0004 3C inc a0009 0005 C3 02 00 jp ciclo0010 00080011 0008 .end0012 0008
tasm: Number of errors = 0
FEUP / LEEC – MP (2000 / 2001)J. M. Martins Ferreira 31
Execução do código
• A execução do código objecto gerado produz a seguinte forma de onda: