Índice:
- Suprimentos
- Etapa 1: O conceito
- Etapa 2: Requisitos
- Etapa 3: juntando tudo
- Etapa 4: Testando o circuito
- Etapa 5: Próxima etapa
- Etapa 6: o programa
- Etapa 7: Conclusão
Vídeo: 6502 Computador mínimo (com Arduino MEGA) Parte 1: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
O microprocessador 6502 apareceu pela primeira vez em 1975 e foi projetado por uma pequena equipe liderada por Chuck Peddle para a MOS Technology. Naquela época, era usado em consoles de vídeo e computadores domésticos, incluindo Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 e 64. Naquela época, era um dos mais baratos do mercado. Ele nunca foi realmente embora e agora é usado por amadores e profissionais para muitas aplicações.
A versão que estou usando é o W65C02S6TPG-14, que é feito pela Western Design Center e usa dez vezes menos energia do que o original. É especial porque não precisa funcionar a 1 MHz como o chip original. Ele pode ser executado muito mais devagar ou ser usado para passo único em um programa e até mesmo com rampa de até 14 MHz. A folha de dados do chip explica seus recursos. Outros chips 6502 não têm essa capacidade e não funcionarão dessa maneira. Os chips estão atualmente disponíveis no Ebay, bem como em outras fontes.
Suprimentos
Todas as peças usadas estão disponíveis no Ebay, AliExpress e outros.
Etapa 1: O conceito
Me inspirei em Ben Eater, que produziu uma série de vídeos no YouTube sobre o 6502 e muitos outros aspectos da construção de computadores e circuitos. O programa foi escrito originalmente por ele e eu modifiquei este e alguns de seus projetos para criar este Instructable. Outra pessoa que me inspirou foi Andrew Jacobs, que tem uma seção no GitHub onde usa um micro PIC para controlar seu 6502.
Como Ben, estou usando um Arduino MEGA para monitorar o 6502. Também estou usando o MEGA para fornecer o sinal de clock, ao contrário do Ben. No momento, não estou usando nenhum EEPROM ou RAM.
Etapa 2: Requisitos
Para construir este "computador", uma lista de itens é a seguinte:
1 x Arduino MEGA
1 x Centro de Design Ocidental W65C02S6TPG-14
1 x 74HC00N IC (Quad 2 entradas NAND gate) ou similar
1 x 74HC373N IC (trava transparente do tipo Octal D) ou semelhante
2 tábuas de pão com 830 furos (1 em uma pitada)
Vários Dupont macho - terminais e fios de ligação
2 x LEDs (usei 5 mm azul porque você pode escapar sem resistores)
1 x 12mm botão tátil momentâneo interruptor PCB montado SPST ou similar
1 x 1K resistor
2 x 0,1 uF capacitores de cerâmica
1 x 8 Vias Water Light Marquee 5mm LED vermelho (como acima) ou 8 LEDs e resistores
NOTA: Se você obtiver o kit não soldado, poderá inserir os LEDs ao contrário, para que sejam cátodos comuns. Eu prendo um cabo fly (em vez do pino) para que ele possa se conectar facilmente em outro lugar. VCC agora se torna Ground. Você pode, é claro, girar os LEDs (em um item montado) e soldá-los novamente, mas isso é muito chato! Os kits estão disponíveis no AliExpress.
Etapa 3: juntando tudo
Achei mais fácil usar os novos fios da DuPont que não foram separados de sua fita para os barramentos de endereço e dados.
Conecte o pino 9 (A0) do 6502 ao pino 52 do MEGA, pino 10 (A1) do 6502 ao pino 50 etc …
até
Conecte o pino 25 (A15) do 6502 ao pino 22 do MEGA.
16 conexões até agora.
Da mesma forma
Conecte o pino 26 (D7) do 6502 ao pino 39 do MEGA, pino 27 (D6) do 6502 ao pino 41 etc …
até
Conecte o pino 33 (D0) do 6502 ao pino 53 do MEGA.
Mais 8 conexões.
Conecte o pino 8 (VDD) a 5v no MEGA.
Um capacitor de 0,1uF conectado do pino 8 ao Gnd da placa de pão pode ser útil aqui, mas não necessário.
Conecte o pino 21 (VSS) ao Gnd no MEGA.
Os pinos 2, 4, 6, 36 e 38 podem ser ligados a 5v
Conecte o pino 37 (Relógio) ao pino 2 e pino 7 do MEGA.
Conecte o pino 34 (RWB) ao pino 3 do MEGA.
Conecte o pino 40 (Reinicializar) conforme o diagrama acima.
Etapa 4: Testando o circuito
Nesta fase, o 6502 funcionará e o programa1 pode ser usado. Se você estiver usando a marquise de 8 vias (como acima), ela pode ser inserida diretamente na placa de ensaio e o cabo da mosca conectado ao aterramento, ou você pode usar 8 LEDs e resistores. Os LEDS mostrarão o que está no barramento de dados.
Nesse estágio, seria bom definir os atrasos no Loop () para 500 ou mais, para acompanhar o que está acontecendo.
Você deve obter uma saída semelhante no Monitor Serial como o mostrado acima. Quando Reset é pressionado, o processador passa por 7 ciclos e a seguir procura o início do programa nas localizações $ FFFC e $ FFFD. Como não há endereços físicos para o 6502 ler, temos que fornecê-los do MEGA.
Na saída acima, o 6502 lê $ FFFC e $ FFFD e obtém $ 00 e $ 10 (byte baixo, byte alto) que é o início do programa em $ 1000. O processador então começa a executar o programa na localização $ 1000 (como acima). Nesse caso, ele lê $ A9 e $ 55, ou seja, LDA # $ 55 (Carregue 85 no acumulador). Novamente, como não há local de memória física, o MEGA simula o que é lido do barramento de dados.
$ 55 (85) dá o padrão binário 01010101 e quando girado 1 bit para a esquerda dá $ AA (170) 10101010.
O programa mostra que o processador está funcionando corretamente, mas logo fica um pouco entediante, então prossiga para a próxima parte.
Etapa 5: Próxima etapa
A "pilha de espaguete" acima é provavelmente algo parecido com o que você terá após esta fase.
Em seguida, você precisa adicionar os ICs 74HC373N e 74HC00N à placa de ensaio.
Infelizmente, os pinos do 373 não se alinham com o barramento de dados, portanto, precisam ser presos com fios.
Conecte 5v ao pino 20.
Conecte o aterramento ao pino 10.
Conecte o pino 33 (D0) do 6502 ao pino 3 (D0) do 74HC373N
e da mesma forma com os pinos D1 a D7.
Q0 a Q7 são as saídas e precisarão ser conectadas ao letreiro LED ou LEDs e resistores individuais.
Com o 74HC00, apenas 2 de seus portões são necessários
Conecte 5v ao pino 14.
Conecte o aterramento ao pino 7.
Conecte o pino 17 (A8) do 6502 ao pino 1 (1A) do 74HC00
Conecte o pino 25 (A15) do 6502 ao pino 2 (1B) do 74HC00
Conecte o pino 34 (R / W) do 6502 ao pino 5 (2B) do 74HC00
Conecte o pino 3 (1Y) do 74HC00 ao pino 4 (2A) do 74HC00
Conecte o pino 6 (2Y) do 74HC00 ao pino 11 (LE) do 74HC373N
Conecte o pino 11 (LE) do 74HC373N ao pino 1 (OE) do 74HC373N
Você pode conectar um LED azul a 1Y e aterrar, bem como 2Y ao aterramento, isso indicará quando o gate está ativo.
Finalmente, mude a linha no procedimento onClock do programa1 para o programa2
setDataPins (programa2 [deslocamento]);
Etapa 6: o programa
O programa 6502-Monitor contém as duas rotinas 6502 descritas acima.
O programa ainda está em desenvolvimento e um pouco desarrumado.
Ao executar o programa2, os atrasos no loop () podem ser 50 ou menos e até mesmo removidos por completo. Comentar as linhas Serial.print () também faz o 6502 funcionar mais rápido. Desconectar o pino 1 (OE) do 373 do pino 11 (LE) produz resultados diferentes. Desconectar os pinos 1 e 11 do 373 das portas NAND permite que você veja o que está no barramento de dados a cada ciclo de clock.
Pode ser necessário amarrar o OE ao aterramento em vez de deixá-lo flutuando, pois as 8 linhas de saída são desativadas se este pino ficar alto. Quando o pino LE está alto, os pinos de saída são iguais às entradas. Tirar o pino LE baixo bloqueia as saídas, ou seja, se os pinos de entrada mudam, as saídas permanecem as mesmas.
Tentei manter o programa o mais simples possível para torná-lo mais fácil de entender.
Experimentar os atrasos permite que você siga exatamente o que o 6502 está fazendo.
Abaixo estão os dois programas (ambos executados no endereço $ 1000) no 6502 Assembler:
programa1
LDA # $ 55
NOP
ROL
STA $ 1010
JMP $ 1000
O ROL gira o conteúdo do acumulador um bit à esquerda, o que significa que $ 55 agora se torna $ AA.
No código da máquina (hex): A9 55 EA 2A 8D 10 10 4C 00 10
programa 2
LDA # $ 01
STA $ 8100
ADC # $ 03
STA $ 8100
JMP $ 1005
No código da máquina (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10
No programa 2, agora há um endereço físico $ 8100, que é onde o 74HC373 está localizado no barramento de endereços.
ou seja, A15 do 6502 é 32768 ($ 8.000) e A8 é 256 ($ 0100) = 33024 ($ 8.100).
Portanto, quando o 6502 grava em $ 8100 (STA $ 8100), o R / W do 6502 está baixo e os dados no barramento de dados 6502 são travados quando o 373 LE fica baixo. Por causa do Portão 74HC00 NAND, os sinais são invertidos.
Na impressão de tela acima, a segunda gravação foi incrementada em 3 (ADC # $ 03) - passou de $ 7F para $ 82.
Na realidade, mais de 2 linhas do barramento de endereços seriam usadas para a localização específica do 373. Como este é o único endereço físico entre os 65536 possíveis, ele demonstra como o barramento de endereços funciona. Você pode experimentar diferentes pinos de endereço e colocá-lo em um local diferente. Obviamente, você precisará alterar os operandos STA para o novo local. por exemplo. Se você usou as linhas de endereço A15 e A9, o endereço seria $ 8200 (32768 + 512).
Etapa 7: Conclusão
Tentei demonstrar como é fácil colocar um 6502 em funcionamento.
Não sou um especialista neste campo, portanto, gostaria de receber quaisquer comentários construtivos ou informações.
Você é bem-vindo para desenvolver isso ainda mais e eu estaria interessado no que você fez.
Pretendo adicionar um EEPROM, SRAM e um 6522 ao projeto, bem como colocá-lo em stripboard no futuro.
Recomendado:
Como enviar arquivos grandes de computador para computador: 6 etapas
Como enviar arquivos grandes de um computador para outro: Os tamanhos dos arquivos continuam aumentando à medida que a tecnologia avança. Se você estiver em um ofício criativo, como design ou modelagem, ou apenas um amador, transferir arquivos grandes pode ser um incômodo. A maioria dos serviços de e-mail limita o tamanho máximo dos anexos em cerca de 25
6502 Minimal Computer (com Arduino MEGA) Parte 3: 7 etapas
6502 Computador mínimo (com Arduino MEGA) Parte 3: Indo ainda mais longe, agora adicionei uma trava Octal, 8 LEDs retangulares e um conjunto de resistores de 220 Ohm à placa principal. Há também um jumper entre o pino comum do array e o terra, para que os LEDs possam ser desligados. O portão 74HC00 NAND h
6502 e 6522 Minimal Computer (com Arduino MEGA) Parte 2: 4 etapas
6502 e 6522 Minimal Computer (com Arduino MEGA) Parte 2: Continuando com meu Instructable anterior, agora coloquei o 6502 em uma placa de strip e adicionei um adaptador de interface versátil 6522 (VIA). Mais uma vez, estou usando uma versão WDC do 6522, pois é uma combinação perfeita para o 6502. Não apenas esses novos c
Usando PSP como joystick de computador e, em seguida, controlando seu computador com o PSP: 5 etapas (com imagens)
Usando PSP como joystick de computador e, em seguida, controlando seu computador com o PSP: você pode fazer muitas coisas legais com o PSP homebrew, e neste tutorial eu vou te ensinar como usar seu PSP como joystick para jogar, mas também há um programa que permite usar o joystick como o mouse. Aqui estão os mater
Use SSH e XMing para exibir programas X de um computador Linux em um computador Windows: 6 etapas
Use SSH e XMing para exibir programas X de um computador Linux em um computador Windows: Se você usa Linux no trabalho e Windows em casa ou vice-versa, às vezes pode ser necessário fazer login no computador em outro local e executar programas. Bem, você pode instalar um servidor X e habilitar o encapsulamento SSH com seu cliente SSH e um