FACULDADE DE ENGENHARIA
DEPARTAMENTO DE ENGENHARIA ELECTROTÉCNICA
Engenharia Electrónica (Laboral)
Disciplina: Electrónica Digital II
Trabalho laboratorial
(Z80/Micamaster MAT980)
Discente: Coimbra, Paulo Moreira Tomo
Docentes: Doutor, Engº GJ Doho
Engº F. Zile
Eng Irzelina Gune
Maputo, Abril de 2024
Índice
Introdução ......................................................................................................................... 2
Objectivos ......................................................................................................................... 2
Materiais Utilizados.......................................................................................................... 2
Resumo Teórico................................................................................................................ 3
Procedimento/Passos.........................................................................................................5
Trabalhos realizados ..................................................................................................... 6
Conclusão e Observações ................................................................................................. 8
Referências Bibliográficas ................................................................................................ 9
1
Introdução
O presente documento tem a pretensão de apresentar o relatório do trabalho laboratorial
reaizado sobre Z80/Micamater MAT980. Onde são apresentados resultados/observações
feitas durante o trabalho laboratorial.
Objectivos
Apresentação e verificação do funcionamento do Z80;
Passagem do projecto lógico ao programa;
Compreensão e Interpretação do Micamaster MAT980;
Materiais Utilizados
Fonte de Alimentação;
Placa Micamaster MAT980.
2
Resumo Teórico
O Zilog Z80 é um microprocessador de 8 bits projectado, que foi amplamente usado,
tanto em microcomputadores desktop quanto em sistemas embarcados, centrais
telefónicas e para fins militares. O Z80, seus derivados e clones constituem uma das
famílias de UCPs mais usadas em todos os tempos e, juntamente com a família MOS
Technology 6502 dominou o mercado de microcomputadores de 8 bits de fins da
década de 1970 até meados dos anos 1980.
O Z80 conta com um conjunto de 178 tipos diferentes de instruções, divididas nas
seguintes categorias: Instruções de controle do Z80, entrada e saída, carga e de troca;,
aritméticas e lógicas, transferência e pesquisa de bloco, rotação e deslocamento de bits,
manipulação de bit, salto e sub-rotina.
O código de operação de uma instrução constitui-se de um ou mais bytes, podendo
incluir os operandos. Dentro de 8 bits é possível haver 256 instruções, entretanto 252
correspondem propriamente a instruções reais; as demais são usados como prefixos, que
obrigam o Z80 buscar no próximo byte qual instrução deve ser executada.
Arquitectura do Microprocessador Z80
A arquitectura do Z80 é frequentemente representada através do diagrama de blocos que
se ilustra na figura abaixo.
Figura 1: Arquitectura simplificada do microprocessador Z80.
Barramentos e configuração de pinos
Os 40 pinos do Z80, com a excepção dos 2 pinos de alimentação, distribuem-se
pelos três barramentos já conhecidos:
1. O barramento de endereços dispõe de 16 pinos de saída (A[0:15]), todos com
3
terceiro estado, de forma a permitir que outros dispositivos tomem conta deste
barramento (por exemplo, quando se pretende efectuar um acesso directo à
memória).
O microprocessador Z80
2. O barramento de dados inclui 8 pinos bidireccionais, também com terceiro
estado, através dos quais se processa toda a troca de informação com os
dispositivos de memória e periféricos.
3. O barramento de controlo é o que inclui o conjunto de sinais que são
específicos deste microprocessador, e que na figura 3.2 se encontram
agrupados nos sinais de controlo do sistema, de controlo do CPU e de controlo
do barramento do CPU.
Figura 2: Barramentos do microprocessador Z80.
A funcionalidade destes sinais que integram o barramento de controlo do Z80
pode ser sumariada da forma que se apresenta a seguir:
1. Sinais de controlo do sistema:
/M1: saída que indica os ciclos de leitura da memória que extraem o código da
próxima instrução a executar.
/MREQ: saída que indica que o barramento de endereços contem um endereço
válido para aceder à memória.
/IORQ: saída que indica que a metade menos significativa do barramento de
endereços contem um endereço válido para aceder a dispositivos de entrada /
saída (o Z80 distingue entre acesso à memória e acesso a dispositivos de
entrada / saída, usando para este segundo caso um espaço de endereços com
256 posições). Este sinal também é usado durante os ciclos de atendimento a
um pedido de interrupção.
/RD: saída que indica que o CPU pretende efectuar uma operação de leitura.
O microprocessador Z80
- /WR: saída que indica que o CPU pretende efectuar uma operação de escrita.
/RFSH: saída que indica que os 7 bits menos significativos do barramento de
endereços contêm um endereço de refrescamento para memórias dinâmicas
4
(tem actualmente pouco interesse, dada a evolução tecnológica das memórias
dinâmicas).
2. Sinais de controlo do CPU (os sinais /INT e /NMI serão analisados em maior
detalhe quando adiante se considerar o processamento dos pedidos de
interrupção):
/HALT: saída que indica que o CPU executou uma instrução de halt (que
suspende a execução do programa) e que aguarda um pedido de interrupção ou
uma ordem de reinicialização (reset) para retomar a actividade.
/WAIT: entrada que permite estender a duração temporal dos ciclos de acesso
a memória ou a dispositivos de entrada / saída, quando estes não forem
suficientemente rápidos para acompanharem a rapidez de funcionamento do
CPU (actualmente também com pouco interesse, pelas mesmas razões de
evolução tecnológica).
/INT: entrada que recebe pedidos de interrupção que podem ou não ser
atendidos, conforme o programa executado pelo CPU.
/NMI: entrada que recebe pedidos de interrupção que são sempre atendidos
(non-maskable interrupt).
/RESET: entrada que provoca a inicialização do CPU, forçando-o a executar a
rotina que se inicia no endereço 0000h.
3. Sinais de controlo do barramento do CPU:
/BUSREQ: entrada para solicitar ao microprocessador que coloque em alta
impedância em todos os pinos que suportam esta facilidade, de modo a
possibilitar a outro dispositivo o controlo dos barramentos de endereços, dados
e controlo.
/BUSACK: saída que indica quando o estado de alta impedância está já
presente nos pinos que suportam esta facilidade, em resposta a um pedido
para controlo externo dos barramentos.
Procedimento/Passos
Na realização da experiência após conectada a placa a fonte de alimentação, recebemos
no LCD uma mensagem “RAM OK” e de seguida com os seguintes comandos
procedemos cujo os objectivos são os seguintes:
Barramento de endereços (A0-A15): consiste em 16 linhas de saída para endereçamento
de memória ou de dispositivos de entrada e saída;
HALT: saída ativa em nível baixo, indica que o Z80 está executando instrução
HALT, e só sairá deste estado quando aceitar uma interrupção;
RESET: entrada ativa em nível baixo, reinicializa o Z80 zerando os
registradores PC, I e R e os IFF1 e IFF2, entrando no modo IM 0, deixando os
barramentos em alta impedância e tornando todos os sinais de controle de saída
em estado inativo;
+ para ir pra frente
5
- para ir pra trás
MEM: verifica os dados introduzidos na memória;
FIL: tem como função introduzir bytes num certo bloco de memória;
GO: somente clicamos esta tecla para executarmos o programa;
Botão Vermelho para resetar(se o programa congelar).
Figura 3: Z80/Micamaster
Trabalhos realizados
Programa do Slide 25 – que serviu de base para o laboratório
Endereço Código Rótulos Menm+Oper Comentários
ORG 4200h ;codigo inicia no
4200 2A 00 50 Inicio: LD HL, (5000h) ender.4200h
4203 4C LD C, H
4204 26 00 LD H, 0 ;tb pode ser ED 6B 00 50
4206 44 LD B, H ;tb pode ser ED 63 02 50
4207 09 Fim: ADD HL, BC
22 02 50 LD (5002), HL
4208
76 HALT
420B
Realizou-se duas somas, com e sem transporte que pode ser visualizado nas tabelas
abaixo.
6
Sem transporte
2A
+
11
3B
Nota:
5000h – onde guardou-se a primeira parcela a ser somada
(2A);
5001h – onde guardou-se a segunda parcela a ser somada
(11)
5002h – onde obteve-se o resultado
Com transporte
2C
+ vai 1
F2
1E
Nota:
5000h – onde guardou-se a primeira parcela a ser somada
(2C);
5001h – onde guardou-se a segunda parcela a ser somada (F2);
5002h – onde obteve-se o resultado (1E);
5003h – onde foi alocado o transporte.
7
Conclusão e Observações
Na realização do trabalho laboratorial verificou-se, como o Z80 funciona no quesito da
execução de instrução, mormente transmitiu-se o modo como os outros processadores
executam as suas instruções, uma vez que a ideia básica é a mesma para todos os
processadores. Ademais, ficou claro o porquê que todas linguagens de programação
precisam de compiladores e interpretadores, sendo que a razão é para poderem traduzir
a os mnemónicos para a linguagem máquina (língua das maquinas).
8
Referências Bibliográficas
1. J. M. Martins Ferreira. Z80 - Faculdade de Engenharia da UP (DEEC)
2. Doutor Eng. [Link]. AT 06 - 07 : Z80 - Programação Básica em Assembly
(C/o microcomputador Micamaster MAT980)