Existe um microcontrolador com 16 MB de RAM?
Sim. O único que eu conheço, porém, está na família Renesas SuperH e não inclui ROM - então você precisa ter um flash externo, mas ele possui 16 MBytes de SRAM onboard.
Estou procurando escrever um emulador para o Sega Megadrive (Sega Genesis) que roda no AVR.
Não há microcontroladores SRAM de 16 MByte na família Atmel AVR. Ou em qualquer lugar da linha de produtos Atmel.
No entanto, vários dispositivos da linha Atmel AVR possuem uma interface de barramento externo que permite conectar memória adicional. Especificamente, o ATxmega128A1U pode suportar até 16 MBytes de SRAM externa.
Então, eu tenho procurado por um microcontrolador que tenha características semelhantes ao Motorola 68k que acompanha o MegaDrive.
...
Tenho certeza de que a SRAM moderna não é quase a mesma que o 68k tinha, mas é possível obter um micro AVR que corresponda ao poder de um 68k, estou vendo esse problema errado? Preciso alterar meu design para acomodar micros modernos?
Não sei se alguma fonte externa de memória será rápida o suficiente.
Ah, aqui está o problema que você está tendo.
O processador de 68k (ou seja, Motorola 68000) NÃO é um microcontrolador e NÃO possui 16 MBytes de SRAM interna.
Embora o processador tenha 32 bits internamente, devido a limitações de pinos, ele pode endereçar até 16 MBytes de memória externa, incluindo flash, sram e quaisquer dispositivos mapeados na memória.
Você não precisa de um microcontrolador com 16 MBytes de SRAM interna para emular o processador de 68k.
Existe um microcontrolador Atmel AVR de 8 bits que pode emular o processador Motorolla 68000?
Acho que sim. O ATxmega128A1U possui um barramento de memória externo do tamanho do barramento do processador de 68k e possui bastante flash e RAM que permitiriam executar uma versão em microcódigo do processador de 68k.
Ele pode rodar até 32 MHz e muitas instruções levam um ciclo, mas até o pior caso leva 5 ciclos na memória interna. A interface externa é mais lenta, mas se você escolher memória rápida, ela ainda será muito mais rápida que a de 68k.
O processador de 68k não apenas roda 4 vezes mais devagar, mas as operações mais rápidas que leva demoram pelo menos 4 ciclos de clock e muitos demoram 2 a 4 vezes mais, principalmente o acesso à memória.
Assim, mesmo com a SRAM lenta (pelos padrões atuais) (digamos, uma parte de 70nS 8MByte por menos de US $ 10), você pode usar 0 estados de espera no processador de 32MHz e executar círculos em torno dos 68k em 7MHz. Por exemplo, uma instrução de movimentação simples nos 68k que levaria 4 ciclos a 7,61 MHz leva 525 nS. Uma instrução de movimento simples semelhante no ATxmega128A1U em execução em 32MHz leva 31nS. Assim, o AVR poderia executar 16 movimentos no momento em que os 68K foram feitos com um. O 68k leva 50 ciclos para alguns tipos de interrupção, enquanto o AVR pula para a interrupção em 3 ciclos - para que o AVR possa lidar com algumas interrupções no tempo que leva o 68k para simplesmente pular em um.
Espero que você possa executar o ciclo com precisão, com um esforço cuidadoso, se aceitar alguma instabilidade, embora seja possível fazê-lo funcionar perfeitamente com a precisão do ciclo sem instabilidade, se você for meticuloso. Os processadores AVR funcionam bem com overclock moderado, então você provavelmente pode executá-lo a 38,35 MHz e ter 5 ciclos AVR por 68k clock clock.
Isso não quer dizer que seria fácil, e pode haver algumas instruções muito complicadas que levariam mais tempo no AVR do que o contrário - mas mesmo essas podem ser explicadas com um design cuidadoso.
Posso emular um Sega Genesis com um AVR de 8 bits da Atmel?
Não. O Sega Genesis possui, no coração, um processador de 68k, mas também possui um processador de som (Z80) e um processador de vídeo que você precisaria de significativamente mais recursos para emular. No diagrama abaixo, você encontrará o processador de 68k no canto superior esquerdo - observe que é uma pequena porção de tudo o que é necessário para emular um sistema Sega Genesis completo.
Assim, embora você pudesse emular prontamente o núcleo de 68k do Sega Genesis, não seria capaz de executar jogos feitos para o Genesis com apenas um microcontrolador AVR. Emular os 68k sozinho em um chip já seria bastante difícil - mesmo se você simplificasse as coisas, duvido que pudesse encaixar os três processadores em um único chip AVR de 32MHz.
No entanto, você provavelmente poderia emular esses dois chips com mais dois AVRs. Se você visou um LCD gráfico mais simples que não exigisse tempo e geração estranhos de NTSC, seria possível simplificar um pouco as coisas e talvez até colocar as duas funções em um chip separado.
Este é um projeto enorme, embora certamente não seja um projeto de fim de semana. Se você está no estágio em que se sente confortável apenas com as placas de desenvolvimento do Arduino, pode ser interessante criar um emulador simples de processador de 68k e conectar um pouco de ROM e RAM externas para acessar a memória. O ATMega do Arduino não possui uma interface de memória externa, mas você pode ajustar as linhas de E / S e emular isso também. Se você se aprofundar o suficiente no projeto para emular programas simples de 68k, pode valer a pena abandonar o arduino, usando o ambiente de desenvolvimento Atmel, e um chip AVR melhor com uma interface de barramento externa, e você pode começar a ler e executar cartuchos. Você pode até canalizar dados de vídeo e som no computador e interpretá-los no processamento - é '
Verifique se suas rotinas de emulação são portáteis e você poderá mudar para um processador melhor com facilidade o suficiente para não ficar preso.
Se o simples projeto Arduino Mega nunca chegar muito longe, você não gastou muitos recursos nesse projeto. Se você se sentir motivado a concluí-lo, mudar para um chip Atmel mais capaz não será tão avassalador.
Eu disse para tentar. Parte do que eu disse e outros disseram pode parecer intransponível, mas não nos deixe atrapalhar. Continue fazendo perguntas cada vez que encontrar um obstáculo e descobrirá que a maioria dos engenheiros gosta de um desafio e lhe dará a compreensão e a ajuda necessárias para percorrer esse caminho.
Emulação é muito divertida.