¿Hay un microcontrolador con 16 MB de RAM?
Si. Sin embargo, el único que conozco es en la familia Renesas SuperH, y no incluye ROM, por lo que debe tener una memoria flash externa, pero tiene 16 MBytes de SRAM integrada.
Estoy buscando escribir un emulador para Sega Megadrive (Sega Genesis) que se ejecuta en AVR.
No hay microcontroladores SRAM de 16 MByte en la familia Atmel AVR. O en cualquier lugar de la línea de productos Atmel.
Sin embargo, varios dispositivos en la línea Atmel AVR tienen una interfaz de bus externo que le permitirá conectar memoria adicional. Específicamente, el ATxmega128A1U puede admitir hasta 16MBytes de SRAM externa.
Así que he estado buscando un microcontrolador que tenga características similares al Motorola 68k que se envió con el MegaDrive.
...
Estoy seguro de que la SRAM moderna no es casi la misma que la que tenía el 68k, pero ¿es posible para mí obtener un micro AVR que coincida con la potencia de un 68k? ¿Estoy mirando mal este problema? ¿Necesito cambiar mi diseño para acomodar micros modernos?
No sé si alguna fuente externa de memoria será lo suficientemente rápida.
Ah, aquí está el problema que tienes.
El procesador 68k (es decir, Motorola 68000) NO es un microcontrolador y NO tiene 16 MBytes de SRAM interna.
Si bien el procesador tiene 32 bits internamente, debido a las limitaciones de los pines, solo puede direccionar hasta 16 MB de memoria externa, incluidos flash, sram y cualquier dispositivo mapeado de memoria.
No necesita un microcontrolador con 16 MBytes de SRAM interno para emular el procesador 68k.
¿Existe un microcontrolador Atmel AVR de 8 bits que pueda emular el procesador Motorolla 68000?
Creo que sí. El ATxmega128A1U tiene un bus de memoria externo tan grande como el bus del procesador 68k, y tiene suficiente memoria flash y RAM que le permitirían ejecutar una versión de microcódigo del procesador 68k.
Puede correr hasta 32MHz, y muchas instrucciones toman un ciclo, pero incluso el peor de los casos toma 5 ciclos en la memoria interna. La interfaz externa es más lenta, pero si elige una memoria rápida, seguirá siendo mucho más rápida que la 68k.
El procesador 68k no solo funciona 4 veces más lento, sino que las operaciones más rápidas que realiza requieren al menos 4 ciclos de reloj, y muchas demoran entre 2 y 4 veces más, en particular los accesos a la memoria.
Entonces, incluso con SRAM lento (según los estándares actuales) (digamos, una parte de 70 MB de 8 MB por menos de $ 10) puede usar 0 estados de espera en el procesador de 32 MHz y ejecutar círculos alrededor de los 68k que se ejecutan a 7 MHz. Por ejemplo, una simple instrucción de movimiento en el 68k que tomaría 4 ciclos a 7.61 MHz toma 525 nS. Una instrucción de movimiento simple similar en el ATxmega128A1U que se ejecuta a 32MHz toma 31nS. Por lo tanto, el AVR podría ejecutar 16 movimientos para cuando el 68K se hiciera con uno. El 68k toma 50 ciclos para algunos tipos de interrupciones, mientras que el AVR salta a la interrupción en 3 ciclos, por lo que el AVR podría manejar un puñado de interrupciones en el tiempo que le toma al 68k simplemente saltar a uno.
Espero que pueda ejecutar el ciclo con precisión con un esfuerzo cuidadoso si acepta alguna fluctuación, aunque es posible que pueda ejecutarlo con precisión de ciclo sin fluctuación si fuera meticuloso. Los procesadores AVR funcionan bien con overclocking moderado, por lo que probablemente podría ejecutarlo a 38.35MHz y tener 5 ciclos AVR por ciclo de reloj de 68k.
Esto no quiere decir que sea fácil, y puede haber algunas instrucciones muy complicadas que tomarían más tiempo en el AVR que de otra manera, pero incluso estas pueden explicarse con un diseño cuidadoso.
¿Puedo emular un Sega Genesis con un Atmel AVR de 8 bits?
No. El Sega Genesis tiene, en esencia, un procesador de 68k, pero también tiene un procesador de sonido (Z80) y un procesador de video que necesitaría significativamente más recursos para emular. En el diagrama a continuación, encontrará el procesador 68k en la esquina superior izquierda; tenga en cuenta que es una pequeña porción de todo lo necesario para emular un sistema Sega Genesis completo.
Entonces, si bien podría emular fácilmente el núcleo de 68k del Sega Genesis, no podría ejecutar juegos hechos para el Genesis con solo un microcontrolador AVR. Emular el 68k solo en un chip sería bastante difícil, incluso si simplificaste las cosas, dudo que puedas colocar los tres procesadores en un solo chip AVR de 32MHz.
Sin embargo, probablemente podría emular esos dos chips con dos AVR más. Si apuntaste a una pantalla LCD gráfica más simple que no requiriera tiempos y generación de NTSC extraños, podrías simplificar un poco las cosas e incluso podrías poner ambas funciones en un chip separado.
Sin embargo, este es un gran proyecto, ciertamente no es un proyecto de fin de semana. Si se encuentra en una etapa en la que solo se siente cómodo con las placas de desarrollo Arduino, puede ser interesante crear un simple emulador de procesador 68k y conectar un poco de ROM externa y RAM para acceder a la memoria. El Arduino ATMega no tiene una interfaz de memoria externa, pero puede cambiar las líneas de E / S y emular eso también. Si avanza lo suficiente en el proyecto donde puede emular programas simples de 68k, entonces podría valer la pena deshacerse de Arduino, usar el entorno de desarrollo Atmel y un mejor chip AVR con una interfaz de bus externa, y puede comenzar a leer y ejecutar cartuchos Incluso puede canalizar datos de video y sonido a la computadora e interpretarlos en el procesamiento:
Asegúrese de que sus rutinas de emulación sean portátiles y podrá cambiar a un mejor procesador con la suficiente facilidad como para no quedarse atascado.
Si el simple proyecto Arduino Mega nunca llega muy lejos, no ha desperdiciado muchos recursos en este proyecto. Si te ves obligado a completarlo, pasar a un chip Atmel más capaz no será tan abrumador.
Yo digo que trates. Algo de lo que he dicho y otros han dicho puede parecer que esto es insuperable, pero no dejes que nos interpongamos en tu camino. Siga haciendo preguntas cada vez que se encuentre con un obstáculo y encontrará que la mayoría de los ingenieros disfrutan de un desafío y le brindarán la comprensión y la ayuda que necesita para avanzar por este camino.
La emulación es muy divertida.