terça-feira, 26 de junho de 2007

VRAM de 192Kbytes com 2 chips de DRAM de PC comuns

Eu penso que é possível obter os 192Kbytes para a VRAM do MSX utilizando apenas 2 chips de DRAM comuns, de 1024x4 bytes através da seguinte configuração:


PINO DRAM SINAL VDP
A8 DRAM (ambas) /CAS0
A9 DRAM (ambas) /CAS1
/CAS /CAS0 and /CAS1 and /CASX


o AND dos sinais /CAS0, /CAS1 e /CASX pode ser obtido através de um 74HC11 ou de uma cascata de algumas portas de um 74HC08.


A ligação dos outros sinais fica assim:
SINAL VDP   PINO DRAM
D0..D3 D0..D3 DRAM 1
D4..D7 D0..D3 DRAM 2
A0..A7 A0..A7 (ambas)

No caso da DRAM de 16 bits, basta ligar o sinal /CASX na linha A8 ou A9, e ligar um dos sinais UCAS ou LCAS através de um AND do sinal /CASX com /CAS0 ou /CAS1.

Diagrama:


Placa:

quarta-feira, 20 de junho de 2007

HUB para dispositivos I2C

Eis uma foto do HUB para dipositivos I2C na porta de Joystick. O Layout é do Igor.

Este HUB comporta 4 dispositivos I2C e não atrapalha o uso do Joystick. Cada um dos 4 conectores DB9 utilizados para as estações, possui 2 pinos para designar o sub-endereço I2C, e as linhas SDA e SCL são comuns a todos.


DRAM de PC como VRAM

Recentemente utilizei um módulo de memória retirado de um PC como VRAM para um KIt MSX2.0 feito a partir do cartão de 80 colunas da EPCOM. O módulo de memória utlizado possui 16 bits, acessados 8 a 8, através de 2 sinais: UCAS e LCAS. Dessa maneira, podemos conectar os sinais d[0..7] aos sinais [d8..15], e controlar a seu acesso a partir dos sinais CAS0 e CAS1 do VDP.

Abaixo seguem algumas fotos do sistema modificado. Depois coloco mais detalhes (diagrama, placa, etc).

Vista Geral:


Vista da placa com a DRAM. Detalhe da ligação do sinal /CAS1:


Vista lateral:


Detalhe da ligação ao sinal /CAS1 (pino 60 do VDP 9938)

sexta-feira, 15 de junho de 2007

Mega-Flash

Após gastar algum tempo analisando os circuitos de chaveamento de sub-rom baseada em memória FLASH dos posts anteriores, fiquei pensando em fazer algo ao mesmo compatível com MEGAROM e que use poucos CHIPS. Daí nasceu a MEGA-FLASH:

O funcionamento é o seguinte:
O acesso às páginas 1 e 2 da MEGA-FLASH é exatamente igual ao acesso à MEGAROM, ou seja, Leitura em Memória, Escrita nos registros mapeadores (de acordo com o estado das linhas A13 e A14):

(A15) A14 A13 Endereço Página Registro
0 1 0 4000-5FFF 1.0 R0
0 1 1 6000-7FFF 1.5 R1
1 0 0 8000-9FFF 2.0 R2
1 0 1 A000-BFFF 2.5 R3


A escrita na FLASH se dá na página 0 (zero) onde acontece o espelhamento das sub-páginas 2.0 (0000-1FFF) e 2.5 (2000-3FFF), pois A14=0. Assim, todo o espaço de endereçamento para escrita pode ser selecionado a partir dos registros R2 e R3.

A grande vantagem disto é que usar apeanas o mesmo número de CIs necessários para se construir uma MEGA-ROM, ou seja, um decodificador e o(s) registro(s). Para uma MEGAFLASH de 512K, serão necessários apenas os seguintes chips:

1x AM29F040 - Flash 512K
1x 74LS138 - Decodificador
2x 74LS670 - Registro 4x4

Mas nada impede que se utilize RAM no lugar da FLASH, para fazer um dispositivo baseado em RAM



O 'Mapa' da MEGAFLASH é o seguinte:

Endereço Página Escrita Leitura
0000-1FFF 0.0 P2.0 valor (a leitura é feita pelo
2000-3FFF 0.5 P2.5 indefinido sinal CS12)
4000-5FFF 1.0 R0 P1.0
6000-7FFF 1.5 R1 P1.5
8000-9FFF 2.0 R2 P2.0
A000-BFFF 2.5 R3 P2.5
C000-DFFF 3.0 Sem Valor
E000-FFFF 3.5 Ação indefinido

Diagrama da Mega-Flash

quinta-feira, 14 de junho de 2007

Mapeador para Flash

Andei pensando numa SUB-ROM baseada em memória Flash, composta por um bloco fixo seguido de um bloco selecionável, ambos de 8Kb, localizados na página 2 (8000h a BFFFh). O primeiro bloco é sempre "mapeado" para o primeiro bloco físico da FLASH, e o segundo é selecionável via um registrador de 6 bits (para uma Flash de 512Kbytes).

A estrutura é a seguinte:


A programação da flash se dá através da escrita da sequência de comandos (de acordo com a flash) escritos na página selecionável. Uma escrita no bloco fixo (8000h-9FFFh) ativa o registrador de mapeamento.

Este circuito pode ser implementado com apenas 3 CIs mais a Flash (74LS138, 74LS00, 74LS373/574).


Outra possibilidade é um mapeador semel semelhante, mas chaveando blocos de 16K, sendo um bloco fixo na página 1 e um bloco variável na página 2: De igual forma, a escrita no bloco fixo aciona o registrador de mapeamento.



Esta segunda alternativa pode ser montada utilizando-se um 74LS32, um 74LS139 e um 74LS373/574.