8
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 Controlo barr. dados Descod. e controlo Reg. de instrução Controlo de endereços Registos do 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 de endereços (16) Barramento de dados (8) /BUSRQ /BUSAK Clock Vcc Gnd /RESET /NMI /INT /WAIT /HALT /RFSH /WR /RD /IORQ /MREQ /M1 Controlo do sistema Controlo do CPU Controlo do barramento do CPU Z80 CPU FEUP / LEEC – MP (2000 / 2001) J. M. Martins Ferreira 4 Z80: Configuração de pinos A11 A12 A13 A14 A15 CLK D4 D3 D5 D6 +5 V (Vcc) D2 D7 D0 D1 /INT /NMI /HALT /MREQ /IORQ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 V (Gnd) /RFSH /M1 /RESET /BUSRQ /WAIT /BUSAK /WR /RD

Microprocessdor z80

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: