Memória do computador Z80 explicada
Anteriormente, vimos o que era o processador Z80, o que seus sinais de controle externos fazem e como ele carrega instruções externamente para execução. Embora todos os processadores sejam diferentes, todos têm as mesmas bases que usam, sendo uma dessas bases a memória.
A memória em um computador é uma área onde as informações podem ser armazenadas para uso posterior. A memória pode ser usada para armazenar instruções para a CPU executar, bem como dados para a CPU manipular. O Z80 é uma CPU von Neumann, o que significa que as instruções e os dados são armazenados no mesmo espaço de memória (ou seja, ambos são acessados usando o mesmo barramento). Saiba tudo sobre a memória do computador Z80!
Conteudo
Memória paralela
Antes de podermos começar a utilizar a memória em nosso computador Z80 simples, primeiro precisamos aprender o que é memória paralela, como ela funciona e os tipos de memória paralela existentes. A memória paralela é a memória cujos dados armazenados são acessados em um único ciclo. Por exemplo, um chip de memória de 8 bits armazena números de 8 bits, e o barramento de dados que permite que o mundo externo carregue e salve os números armazenados pode acessar todos os 8 bits ao mesmo tempo em paralelo. A memória serial, no entanto, só permite que um bit de um número seja acessado por vez e, portanto, um chip de memória serial de 8 bits exigiria um mínimo de oito ciclos para acessar um único número.
Em um chip de memória, os dados são armazenados em uma grande tabela com cada entrada na memória tendo um endereço único. Cada endereço pode ser acessado usando os pinos de entrada de endereço dos chips de memória, e os pinos de entrada de endereço representam um número binário. A tabela abaixo mostra a palavra “HELLO!!!” armazenados na memória e como cada personagem tem seu próprio local de memória exclusivo.
Endereço | Conteúdo de dados |
0 | H |
1 | E |
2 | eu |
3 | eu |
4 | O |
5 | ! |
6 | ! |
7 | ! |
Os chips de memória paralela têm três sinais de controle, uma entrada de endereço e um barramento de dados.
- WE – Habilitar Gravação. Quando este pino vai de alto para baixo, o número atualmente presente no barramento de dados é salvo no local de endereço igual aos pinos de endereço
- OE – Habilitação de Saída. Quando este pino vai de alto para baixo, o número armazenado na localização do endereço igual aos pinos de endereço é enviado para o barramento de dados
- CS – Seleção de Chip. Se este pino estiver baixo, o chip de memória poderá ser lido e gravado. Se este pino estiver alto, o chip de memória está desabilitado e não pode ser acessado
Memória Paralela – Como salvar dados
Para salvar dados em um chip de memória, o seguinte ciclo precisa ser feito (alto significa 5V, baixo significa 0V)
- Comece com os pinos WE, OE e CS tão altos
- Defina o local do endereço que precisa ser salvo para usar os pinos de endereço
- Defina os pinos de dados para os dados que precisam ser salvos
- Defina CS para 0V
- Defina WE para 0V <- Aqui é onde os dados são salvos
- Definir WE para 5V <- Concluído
Memória Paralela – Como ler dados
- Para ler dados de um chip de memória, o seguinte ciclo precisa ser feito (alto significa 5V, baixo significa 0V)
- Comece com os pinos WE, OE e CS tão altos
- Defina o local do endereço que precisa ser carregado usando os pinos de endereço
- Defina CS para 0V
- Defina OE para 0V <- Os dados aparecem imediatamente nos pinos de dados
- Leia os dados do barramento de dados
- Definir OE para 5V <- Concluído
Tecnologias de memória
Múltiplas tecnologias de memória, todas com suas próprias vantagens e desvantagens. Mas todas as memórias caem na memória volátil ou não volátil. As memórias voláteis são aquelas que esquecem suas informações quando são desligadas enquanto as memórias não voláteis lembram seus dados armazenados mesmo quando não há energia.
Memória volátil
DRAM significa memória dinâmica de acesso aleatório e é uma das tecnologias de memória mais baratas. Cada bit na memória é um único transistor e capacitor onde o capacitor armazena carga elétrica que representa um 1 ou 0. Embora esta memória seja barata, ela rapidamente esquece seus dados mesmo quando alimentada, o que significa que a DRAM requer ciclos de atualização especiais. Em nosso computador Z80, evitaremos completamente essa memória, pois não é a mais fácil de usar.
SRAM significa RAM estática e é a tecnologia de memória mais rápida disponível. Cada bit nesta memória é uma trava SR, o que significa que não há necessidade de ciclos de atualização. No entanto, eles são mais caros que a DRAM, mas essa é a memória que usaremos para nossa RAM.
Memória não volátil
EPROM significa memória somente leitura programável eletricamente e lembra o que quer que tenha sido programado (mesmo quando não há energia). No entanto, estas memórias só podem ser programadas uma vez (a menos que tenha uma janela de vidro, caso em que pode ser apagada com luz UV). Esta memória é arcaica e não será utilizada.
EEPROM significa memória somente leitura programável apagável eletricamente. Esta memória é como EPROM, exceto que pode ser apagada usando eletricidade. Esta é a memória que usaremos como nossa ROM, pois é simples de usar e fácil de reprogramar. No entanto, só leremos a partir dessa memória, pois esses chips só podem lidar com cerca de 10.000 ciclos de gravação antes de parar de funcionar.
A memória FLASH é uma tecnologia de memória comum encontrada em unidades de estado sólido e cartões de memória USB. Essa memória é um pouco complexa de usar, pois essas tecnologias geralmente exigem leituras e gravações feitas em blocos.
RAM vs ROM em um computador
Nosso computador terá duas seções de memória conhecidas como ROM e RAM. A seção ROM do nosso computador conterá o código do programa que o computador começa a executar quando inicializa. A seção RAM do nosso computador será usada para armazenar variáveis e outros dados que podem mudar durante a operação. No entanto, um computador Z80 pode executar programas mantidos na RAM, e um carregador de inicialização simples pode pré-carregar a RAM com um programa antes que o Z80 seja ligado.
Como o Z80 começa a executar o código no endereço 0 quando é lançado, nossa ROM deve estar localizada no endereço 0. O Z80 tem um endereço de 16 bits, o que significa que ele pode acessar no máximo 64 KB de memória e, assim, manter as coisas simples , dividiremos nossa memória pela metade sendo a primeira ROM e a segunda RAM. Assim, nossa ROM será de 32KB com um intervalo de endereços entre 0 e 16383, enquanto a RAM ficará entre 16834 e 65536. Esses números não são os mais agradáveis de usar, então a partir de agora usaremos hexadecimal (0 a F). Portanto, nosso endereço de memória tem o seguinte padrão:
Faixa de memória | Memória |
0x0000-0x7FFF | ROM |
0x8000-0xFFFF | RAM |
Gerenciamento de memória
Então agora sabemos como queremos que nossa memória seja dividida, mas como conseguir isso? Neste caso, podemos usar o 74139 que é um chip decodificador que recebe duas entradas de endereço, um sinal de habilitação e produz quatro linhas de seleção. Se conectarmos apenas o 74139 ao A15, o 74139 selecionará o chip ROM para endereço menor que 0x7FFF e selecionará a RAM para endereço maior que 0x8000. Para descobrir o porquê, pesquise a tabela verdade para o 74139 e consulte o ciclo de memória Z80.
Nosso sistema
Se incluirmos a memória em nosso esquema, obteremos o seguinte layout.
Conclusão
Quando nosso sistema inicializar, o Z80 começará a ler as instruções contidas na ROM e poderá usar a RAM para armazenar informações. No entanto, nossa ROM está vazia e por isso no próximo projeto vamos aprender como fazer um programador EEPROM para colocar informações na ROM para escrever nossos primeiros programas Z80!