terça-feira, janeiro 31, 2017

O Kit RC2014 - Memórias

Depois do clock e processador, as memórias são provavelmente a parte mais importante de um computador. Precisamos de uma memória não volátil, para armazenar o código a ser executado quando o Z80 for ressetado. Memórias não voláteis são normalmente de apenas leitura (Rom, Prom, EProm) ou de escrita demorada (EEProm e Flash). Para as variáveis precisamos de uma memória que permita leitura e escrita rápida (Ram).


Rom

A placa ROM é onde está a memória não volátil, mapeada nos primeiros 8K do espaço de endereçamento do Z80 (0x0000 a 0x1FFF). A placa contém um 74LS32 (quatro portas OR), o chip de memória e três jumpers.


Duas portas OR são usadas para decodificar os três bits mais altos do endereço (A14, A14 e A13). Somente quando os três forem zero o OR ("ou") será zero e a memória será selecionada. Um terceiro OR detecta acessos de leitura à memória (uma vez que o Z80 usa a mesma via de endereços para memória e periféricos). A memória que vem com a placa é uma 27C512R, uma PROM (memória gravável uma única vez*) com 64K bytes (ou seja, tem entrada para endereços de A15 a A0). O Z80 vai endereçar apenas 8K (sinais A12 a A0). Os três bits restantes (A13, A14 e A15) estão ligados aos jumpers da placa.

Portanto, através dos jumpers, podemos escolher um dentre 8 blocos de 8K da memória. Na memória do kit, o primeiro bloco vem gravado com um BASIC da Microsoft; os demais blocos estão vazios.

É possível usar outros modelos de memória com esta placa. Por exemplo, uma 27C512, que é um EProm (apagável por luz ultra violeta). Vou tentar também uma 28C64, que é uma EEProm (apagável eletricamente) de 8K.

Pausa para lembrar o passado: quando eu fazia firmware para o 8080, em 1982, a EPROM usada era a 2732 (lançada em 1979), com capacidade de 4K bytes. Com seus 64K bytes, a 27512 é capaz de ocupar todo o espaço de endereçamento do Z80.

* Para ser mais exato, a 27C512R (assim como a 27C512 e a 28C64) permite sempre alterar um bit do valor "1" para o valor "0". A 27C512R não permite retornar um bit ao valor "1". A 27C512 permite retornar através de uma operação de apagamento de todo o chip, que é feito expondo o CI a luz ultra violeta). Na 28C64 a operação de apagamento é comandada por um sinal elétrico e apaga uma região pequena, permitindo que ela simule a escrita de um byte isolado (porém o tempo para isto é bem maior que a escrita em Ram).

Ram

A placa de Ram possui 32K, mapeados nos endereços 0x8000 a 0xFFFF.


Além de uma memória Ram estática 62256, esta placa possui dois integrados TTL (74LS32 e 74LS04) para seleção da memória. Um inversor do 74LS04 está ligado ao A15 para detectar a faixa de endereços. Duas portas OR são usadas para combinar os sinais de leitura e escrita com o sinal de acesso à memória.

Outra pausa para lembrar o passado: um dos hardwares para o qual eu fiz software tinha uma novíssima Ram estática com capacidade de 2K bytes. Um luxo em uma época em que era comum usar chips de memória dinâmica de 4K ou 16K x 1bit (isto mesmo, precisava de 8 chips destes para ter memória com 8 bits de largura e tempo precioso era gasto com o refresh da memória). O PC IBM original usava também estes chips de 16Kx1.

No próximo post vamos examinar a última placa do kit: a interface serial.

Nenhum comentário: