Upload
tiaobento
View
243
Download
0
Embed Size (px)
DESCRIPTION
Processador Z80
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
caractersticas pedaggicas e inmeras aplicaes aos longo dos (muitos) anos
Relacionar a arquitectura do microprocessador com os elementos exteriores necessrios implementao de um pequeno sistema
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 2
Arquitectura do Z80
Barramento de endereos (16 bit)
ALU
Controlobarr. dados
Descod.e
controloReg. deinstruo
Controlode endereos
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: Configurao de pinos
Barramento deendereos (16)
Barramentode dados (8)
/BUSRQ/BUSAK
Clock
Vcc Gnd/RESET
/NMI/INT
/WAIT/HALT/RFSH
/WR/RD
/IORQ/MREQ
/M1Controlo
dosistema
Controlodo
CPU
Controlo dobarramento
do CPU
Z80CPU
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 4
Z80: Configurao de pinosA11A12A13A14A15
CLKD4D3D5D6
+5 V (Vcc)D2D7D0D1
/INT/NMI
/HALT/MREQ/IORQ
123456789
1011121314151617181920
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 cdigo de instruo
CLOCK
A[0:15]
/MREQ
/RD
/M1
D[0:7]
T1 T2 T3 T4
Endereo vlido
Dadosvlidos
250 ns
mn. 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
Endereo vlido
Dadosvlidos
250 ns
mn. 50 ns
250 ns
mn. 30 ns mx. 75 ns
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 7
Ciclo de escrita em memria
CLOCK
A[0:15]
/MREQ
/WR
D[0:7]
T1 T2 T3 T4
Endereo vlido
Dados no barramento
250 ns
mn. 220 ns
mn. 80 ns mn. 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
Endereo vlido
Dados no barramento
250 ns
/RD
D[0:7] Dadosvlidos
mn. 50 ns
mx. 80 ns
mn. 60 nsmn. 30 ns
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 9
Interrupes no Z80 Quando o Z80 aceita um pedido de
interrupo pra temporariamente o que est a fazer para o atender
/NMI: Permite o pedido de interrupes no mascarveis
/INT: Os pedidos de interrupo neste pino sero atendidos se o programador o permitir
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 10
Atendimento das interrupesCd. instruo
OperandoCd. instruo
Operando
Cd. instruoOperando
reti
(continuaodo
programa)
Rotina de atendimentoda interrupo (terminacom a instruo de retorno)
Execuo do programaprincipal
Ao ser aceite um pedidode interruposuspende-se a execuodo programa principal,que temporariamentesubstitudo pela rotinade atendimento dainterrupo
Ao concluir-se oatendimento dainterrupo retoma-sea execuo doprograma principal
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 11
SP e stack quando atendida uma interrupo
IndefinidoIndefinidoIndefinido
(SP)
PCHPCL
Indefinido
(SP)
(Antes) (Depois)
Endereosdecrescentes
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 12
Pedidos de interrupo em /NMI O pedido de interrupo em /NMI (activo
transio descendente) fora a execuo da rotina de atendimento, que ter que comear no endereo 0066H
Esta rotina dever terminar com a instruo RETN, que garante a manuteno do estado imediatamente anterior ao pedido ser aceite
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 13
Pedidos de interrupo em /INT O pedido em /INT activo ao nvel lgico 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 forado no barramento de
dados uma instruo de restart No modo 1 tem lugar um salto para a rotina de
atendimento com incio em 0038H No modo 2 o endereo 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 instrues EI (enable interrupts) e DI(disable interrupts) permitem / inibem o atendimento de interrupes no pino /INT
O Z80 dispe de um flip-flop interno (IFF1), onde armazena a informao sobre a permisso ou inibio 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 interrupo 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 programao do Z80
O modelo de programao do Z80 pode representar-se por um diagrama de blocos que inclui os registos e as flags de um microprocessador
Esta informao permite-nos o desenvolvimento de programas, mesmo que no conheamos a evoluo temporal dos sinais nos pinos ou outros detalhes de funcionamento
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 17
Modelo de programao do Z80
A FB CD EH L
A FB CD EH 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 so usados com endereamento 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 instruo tem o valor 0
P/V: parity / overflow -conforme o tipo de instruoN: indica se a ltima operao foi uma adio ou uma subtracoCY: activa quando h transporte para alm 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 endereamento Imediato (immediate) - LD A,$FF / 3E FF Imediato estendido (immediate extended) -
LD HL,1000H / 21 00 10 Pgina zero modificado (modified page
zero) - RST 00H / C7 Relativo (relative) - JR Z,MARCA / 28 05 Estendido (extended) - LD HL,(1000H) /
2A 00 10FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 20
Modos de endereamento Indexado (indexed) - LD C,(IX) / DD 4E 00 Ao registo (register) - LD A,B / 78 Indirecto por registo (register indirect) -
LD A,(BC) / 0A Implcito (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 instrues Transferncia de dados de 8 bits (8-bit
load) - LD A,B / 78 Transferncia de dados de 16 bits (16-bit
load) - LD HL,1000H / 21 00 10 Troca, transferncia 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 instrues Aritmticas e lgicas para dados de 8 bits
(8-bit arithmetic and logical) -ADD A,(IY+10H) / FD 86 10
Genricas do tipo aritmtico e para controlo do CPU (general-purpose arithmetic and CPU control) - CCF / 3F
Aritmticas 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 instrues Rotao / deslocamento (rotate / shift)- RLA / 17 Manipulao 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 sada (input and output) -
IN A,(7FH) / DB 7F
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 24
Apresentao de um pequeno sistema de apoio laboratorial
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 25
Disposio dos componentes
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 26
Date: December 12, 1995 Sheet 1 of 1
Size Document Number REVA JMF / HCM 1.0
SITEMA Z80 - SD2
1
2C3100n
VCC
OUT3OUT2OUT1
D3D2D1D0
I1/CLK 1I2 2I3 3I4 4I5 5I6 6
I7 7I8 8I9 9I10 10I11 11I12 13
O1 23O2 22O3 21O4 20O5 19O6 18
O7 17O8 16O9 15
O10 14
U3
22V10
CLK/MREQ/IOREQ
A15A7A6
KEY0
D0D1D2D3D4D5D6
A0 10A1 9A2 8A3 7A4 6A5 5
A6 4A7 3A8 25A9 24A10 21A11 23
A12 2A13 26A14 1
CE 20WE 27
OE 22
Q0 11Q1 12Q2 13Q3 15Q4 16Q5 17
Q6 18Q7 19
U2
DS1230Y
A0A1A2A3A4A5A6A7
A0A1A2A3A4A5A6
A0 30
A1 31A2 32A3 33A4 34A5 35A6 36
A7 37A8 38A9 39
A10 40A11 1A12 2
A13 3A14 4A15 5
D0 14D1 15
D2 12
D3 8D4 7D5 9D6 10D7 13
M1 27
MREQ 19IORQ 20WR 22RD 21
REFSH 28
HALT 18
WAIT 24
INT 16NMI 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 2D1 4 Q1 5D2 7 Q2 6D3 8 Q3 9D4 13 Q4 12D5 14 Q5 15
D6 17 Q6 16D7 18 Q7 19
OC 1G 11
U5
74LS373
D0D1D2D3D4D5D6
B8 12B7 11B6 10B5 9B4 8B3 7
B2 6B1 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
RESET1
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
VCCVDDVEE
VCC 1
2C4100n
1
2S2
KEY0
1
2S3
KEY1
1
2S4
KEY2
1
2S5
KEY3 OUT0 OUT1
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 27
Descodificao do sistema Os endereos atribudos a cada bloco
presente esto ilustrados na tabela seguinte:
RD WR MREQ IORQ A15 A7 A6 Acesso seleccionado
0 (1) 1 (0) 0 1 0 X X Memria
- - 1 0 X 0 0 -
1 0 1 0 X 0 1 Sada analgica
1 0 1 0 X 1 0 Sadas digitais
0 1 1 0 X 1 1 Entradas digitais
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 28
PAL de descodificao: Equaes
+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 aplicao O exemplo de aplicao que aqui se ilustra
corresponde a uma situao 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/Ajp ciclo ; repete o ciclo escreve / incrementa
.end
FEUP / LEEC MP (2000 / 2001)J. M. Martins Ferreira 30
Gerao do cdigo objecto A passagem deste cdigo 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
Execuo do cdigo A execuo do cdigo objecto gerado
produz a seguinte forma de onda: