8 votos

Hay un Microcontrolador con 16MB de Ram?

Esta es mi situación:

Como un proyecto personal, estoy buscando para escribir un emulador de la Sega Megadrive (Sega Genesis) que se ejecuta en AVR. Por lo que he estado buscando un Micro-controlador que tiene características similares a las de Motorola 68k que se entregan con la MegaDrive. Sin embargo, he notado que las especificaciones para el 68k en comparación con la mayoría de los aficionados de micros. Estoy eligiendo AVR frente a BRAZO porque me gusta la arquitectura, y pensó que sería un buen reto.

M68K:
32-bit CPU
16-bit data bus
Up to 20 MHz
16 MB RAM
No I/O ports

Aquí es las especificaciones para un Arduino Leonardo:

Input Voltage (recommended) 7-12V
Input Voltage (limits)  6-20V
Digital I/O Pins    20
PWM Channels    7
Analog Input Channels   12
DC Current per I/O Pin  40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory    32 KB (ATmega32u4) of which 4 KB used by bootloader
SRAM    2.5 KB (ATmega32u4)
EEPROM  1 KB (ATmega32u4)
Clock Speed 16 MHz
Length  68.6 mm
Width   53.3 mm
Weight  20g

Este parece bastante típico para el extremo inferior moderno micros. Nunca veo la ram consigue mucho en el mbs.

Ahora, estoy seguro de que la moderna SRAM no es casi lo mismo que cualquiera que sea el 68k tenido, pero es posible para mí para conseguir un AVR micro que coincide con la potencia de un 68k, estoy mirando este problema mal? ¿Necesito cambiar mi diseño para acomodar moderno micros?

No sé si alguna fuente externa de la memoria será lo suficientemente rápido.

18voto

Matt McMinn Puntos 6067

Aunque el Motorola 68000 y la Sega Genesis son bastante antiguo (a principios de la década de 1980), no vas a encontrar una de gama baja (es decir, 8 bits) AVR que se puede emular el juego completo de la máquina.

El Sega Genesis corrió a 7.61 MHz y tenía 72KB de RAM (más de 64 kb de RAM de vídeo). Sin embargo, el juego de los programas de residido en la ROM, por lo que tendrá una memoria RAM adicional para mantenerlos (a menos que usted planea ser capaz de conectar los cartuchos originales de alguna manera). La mayoría de juegos de cartuchos fueron menores de 4 MB, pero hay al menos un juego (Pier Solar, lanzado en 2010) que tiene un 8 MB de ROM.

Además, el sistema de seguro que debe de haber incluido una ROM del sistema, que actuó como una especie de ejecutivo y también habría proporcionado un común biblioteca de e/S para los cartuchos (que no puedo encontrar ninguna referencia a lo grande este fue). Usted va a tener que buscar la ROM (o imágenes ROM) para aquellos y los copia en la memoria RAM también (o agregar una sección de ROM a su sistema).

OMI usted va a querer utilizar un microcontrolador de 32 bits. Si usted va a utilizar los cartuchos originales, además de un programa de la ROM, y no necesita MB de RAM, que se puede utilizar con la mayoría de cualquier microcontrolador de 32 bits que tiene suficiente espacio para el emulador. Si se van a descargar los cartuchos y el sistema de imagen de la ROM en la memoria RAM, a continuación, en orden a obtener 8 MB de RAM o más, usted va a necesitar un microcontrolador que tiene un bus de memoria externa (no puede obtener 8 MB en el mismo chip como el microcontrolador).

Dado que se quiere meter con AVR, sugiero un procesador como el AT32UC3A3256, que tiene 256 KB de memoria Flash, 128 KB de RAM, y corre a 84 MHz. El gotcha es que es un 144 pin de la superficie de montaje del dispositivo, que va a ser difícil de soldar.

Sin embargo, hay un kit de evaluación para este procesador de Elemento 14 por sólo $31.25. Así que usted no tiene que preocuparse acerca de la soldadura. Además, la junta tiene 8 MB de memoria RAM externa, así que usted puede cargar un cartucho en la memoria RAM.

enter image description here

Sólo para el registro, todavía creo que usted debe considerar la Raspberry Pi, funcionando a 700 MHz con 512 MB de RAM para un poco menos que el costo de desarrollo de la junta anterior. Correr a esa velocidad, no va a tener problemas con la emulación de las 68000 código y realizar e/S a la velocidad correcta.

Si usted ve el AVR o Raspberry Pi ruta, además de para el 68000 de la Sega Genesis también se incluye un Zilog Z80 y varios de propósito especial chips, incluyendo la Yamaha YM2612 y Texas Instruments SN76489A. El Z80 se utiliza para controlar el sonido y también proporcionar compatibilidad hacia atrás con las versiones anteriores de Sega Master System. El chip de Yamaha fue una FM sintetizador de sonido y el de TI chip fue un Generador de Sonido Programable (esta máquina tenía un montón de opciones de sonido). También hubo una exposición Virtual del Procesador (VDP). Usted probablemente puede omitir el sonido (lo que significa que usted no necesita preocuparse por el Z80 o la Yamaha o TI chips), pero usted tendrá que emular el hardware de gráficos.

Un par de recursos:

EASy68K -- Editor/Montador/Simulador para el 68000. Código abierto, por lo que usted debería ser capaz de sacar a la 68K de simulación de código

El ciclón 68000 -- emulador para el microprocesador 68000, escrito en ARM de 32 bits de la asamblea. Sólo es útil si usted decide utilizar la Raspberry Pi

Por último, si usted no está familiarizado con el 68000 conjunto de instrucciones, plan de pasar semanas (o más) para convertirse en un experto. Una gran cantidad de su depuración será hacia abajo en el emulador de nivel, tratando de averiguar por qué una sección de 68000 código en el cartucho de juego no se ejecuta correctamente. (Lo que significa que usted probablemente querrá ser capaz de establecer un breakpoint virtual de las instalaciones en el cartucho de código.) Usted también necesitará un desensamblador, por lo que no tienen que lidiar con el código máquina; aquí está la fuente.

12voto

duskwuff Puntos 1570

No va a suceder.

La mayor microcontrolador en el ATmega línea con soporte para memoria externa es la ATmega1284, pero esto sólo en lo que tiene de 8 KB de SRAM interna, y puede direccionar hasta 64 KB de memoria externa. Esto no va a ser suficiente para emular el Génesis, que tenía 72 KB de RAM y otra de 64 KB de memoria de vídeo. Podría ser posible para implementar el acceso a la memoria adicional a través del banco de conmutación, pero esto haría que acceder a la memoria del AVR muy costoso.

Hay algunas partes en el ATmega línea con más SRAM interna, como la ATmega1284 (16 KB), pero estos no admiten la memoria externa. Cuento largo, corto, al dirigirse a más de 64 KB de la memoria RAM de un ATmega es bastante difícil.

(No estoy seguro de donde se obtuvo la cifra de 16 MB. El 68000 no tiene memoria interna a todos, además de los registros; la cantidad de memoria en un 68000 sistema pueden variar dramáticamente.)

Además, el 68000 de la CPU en el Génesis se ejecuta en el 7,6 MHz. Emulando esta en un 16 MHz AVR no va a ser posible -, mientras que el regulador de la velocidad de reloj es cierto que un poco más alto, el 68000 es una CPU de 32 bits, así que emulando a uno de sus instrucciones se requieren, con frecuencia, mucho más de una instrucción en el AVR. (Incluso una simple adición probablemente requiera de una docena de instrucciones).

Si quieres emular el Génesis, le recomiendo que busque su lugar en microcontroladores ARM.

11voto

Federico Builes Puntos 1940

Hay un Microcontrolador con 16MB de Ram?

Sí. El único que conozco, sin embargo, es en la Renesas SuperH de la familia, y no incluye ninguna ROM - así que tienes que tener flash externo, pero ha 16MBytes de memoria SRAM.

Estoy buscando a escribir un emulador de la Sega Megadrive (Sega Genesis) que se ejecuta en AVR.

No hay 16MByte SRAM microcontrolers en el Atmel AVR de la familia. O en cualquier lugar en el Atmel línea de productos.

Sin embargo, varios dispositivos en el Atmel AVR formación Externa Interfaz de Bus que te permite conectar memoria adicional. Específicamente, el ATxmega128A1U puede soportar hasta 16MBytes de SRAM externa.

Por lo que he estado buscando un Micro-controlador que tiene características similares a las de Motorola 68k que se entregan con la MegaDrive.

...

Estoy seguro de que la moderna SRAM no es casi lo mismo que cualquiera que sea el 68k tenido, pero es posible para mí para conseguir un AVR micro que coincide con la potencia de un 68k, estoy mirando este problema mal? ¿Necesito cambiar mi diseño para acomodar moderno micros?

No sé si alguna fuente externa de la memoria será lo suficientemente rápido.

Ah, aquí está el problema que estamos teniendo.

El procesador 68k (es decir, el Motorola 68000) NO es un microcontrolador y NO tiene 16MBytes de SRAM interna.

Mientras que el procesador es de 32 bits internamente, debido a pin limitaciones que sólo puede direccionar hasta 16MBytes de memoria externa, incluyendo flash, sram, y cualquier asignados a la memoria de los dispositivos.

Usted no necesita un microcontrolador con 16MBytes de SRAM interna para emular el procesador 68k.

Hay un Atmel AVR de 8 bits del microcontrolador que se puede emular el Motorolla procesador 68000?

Yo así lo creo. El ATxmega128A1U tiene una memoria externa de autobús tan grande como el procesador 68k del autobús, y tiene un montón de flash y RAM que le permitan ejecutar una versión de microcódigo del procesador 68k.

Puede ejecutar hasta 32MHz, y muchas instrucciones de tomar un ciclo, pero incluso en el peor de los casos tarda de 5 ciclos en la memoria interna. La interfaz externa es más lento, pero si usted elige memoria rápida que todavía va a ser mucho más rápido que el de 68k.

El procesador 68k, no solo se corre 4 veces más lento, pero la más rápida de operaciones, toma al menos 4 ciclos de reloj, y muchos toman de 2 a 4 veces más de tiempo, particularmente accesos a la memoria.

Así que incluso con lento (por estándares de hoy) SRAM (es decir, un 70 ns 8MByte parte por menos de $10) puede utilizar 0 estados de espera en la 32MHz procesador y correr en círculos alrededor de la 68k ejecutando en 7MHz. Por ejemplo, un simple movimiento de la instrucción en el 68k que llevaría a 4 ciclos en 7.61 MHz toma 525 nS. Un simple similar mover la instrucción en el ATxmega128A1U corriendo a 32MHz toma 31nS. Así que el AVR podría ejecutar 16 mueve por el tiempo que el 68 fue hecho con uno. 68 k lleva el 50 ciclos para algunos tipos de interrupción, mientras que el AVR salta a la interrupción en 3 ciclos - de modo que el AVR podría manejar un puñado de interrupciones en el tiempo que tarda el 68k simplemente saltar en uno.

Espero que usted podría ejecutar el ciclo precisa con un cuidadoso esfuerzo si acepta alguna fluctuación, aunque usted puede ser capaz de conseguir que se ejecute a la perfección el ciclo precisa sin jitter si se meticulosa. El AVR procesadores se ejecuta bien, con moderada overclocking, por lo que probablemente se podría ejecutar en 38.35 MHz y 5 AVR ciclos por 68k ciclo de reloj.

Esto no es decir que sería fácil, y puede haber algunos muy complicado instrucciones que tardaría más en el AVR, de lo contrario -, pero incluso estos pueden ser explicados con un diseño cuidado.

Puedo emular un Sega Genesis con un Atmel AVR de 8 bits?

No. El Sega Genesis, en su corazón, un procesador 68k, pero también tiene un procesador de sonido (Z80) y un procesador de vídeo que usted necesita significativamente más recursos para emular. En el diagrama a continuación, usted encontrará el procesador 68k en la parte superior izquierda de la nota que es una pequeña parte de todo lo necesario para emular un total de Sega Génesis del sistema.

enter image description here

Así, mientras que usted fácilmente podría emular el 68k núcleo de la Sega Genesis, usted no será capaz de ejecutar juegos hechos para la Génesis con un solo microcontrolador AVR. Emulando el 68k sola en un chip sería bastante difícil - incluso si usted simplificado las cosas dudo que podría caber los tres procesadores en un solo 32MHz chip AVR.

Sin embargo, usted probablemente podría emular los dos chips con dos más AVRs. Si usted mira una simple pantalla gráfica LCD que no requieren extraño NTSC y horarios de generación, usted podría ser capaz de simplificar un poco las cosas, y tal vez incluso podría poner ambas funciones en un chip.

Este es un proyecto enorme, aunque, ciertamente, no es un proyecto de fin de semana. Si usted está en la etapa en la que sólo están cómodos con Arduino placas de desarrollo, entonces podría ser interesante crear un sencillo procesador 68k emulador y conectar un poco externo de memoria RAM y ROM de accesos a la memoria. El Arduino ATMega no tiene una memoria externa de la interfaz, pero se puede juguetear con líneas de e/S y emular así. Si te alejas lo suficiente a lo largo del proyecto donde se puede emular simple 68k programas, entonces puede ser vale la pena amaraje arduino, utilizando el Atmel entorno de desarrollo y un mejor chip AVR con un bus externo de la interfaz, y usted puede comenzar a leer y ejecución de los cartuchos. Usted podría incluso ser capaz de tubería de vídeo y sonido de datos para el ordenador y los interpretan en el procesamiento - que va a ser todavía demasiado lento (el Arduino Mega es sólo 16MHz) pero al menos le dará una buena idea de la cantidad de trabajo que tendría que hacer para tener completa la velocidad de la emulación, y usted puede comenzar a juguetear con cuánto esfuerzo sería para emular el VDP y los procesadores de sonido.

Asegúrese de que sus rutinas de emulación son portátiles y usted será capaz de cambiar a un mejor procesador, más que suficiente de que usted no será atrapado.

Si el simple Arduino Mega proyecto nunca llega muy lejos, no has perdido muchos recursos en este proyecto. Si usted se encuentra impulsado a finalizarlo, para pasar a una más capaz chip Atmel no va a ser tan abrumadora.

Yo digo que darle una oportunidad. Algunos de los que he dicho y que otros han dicho, puede parecer que esto es insuperable, pero no nos deja en su camino. Sigue haciendo preguntas cada vez que se ejecuta en un obstáculo y usted encontrará que la mayoría de los ingenieros de disfrutar de un desafío y le dará la comprensión y la ayuda que necesita ir muy lejos por este camino.

La emulación es un montón de diversión.

6voto

jns Puntos 449

Ninguna de las otras respuestas han mencionado que usted podría conseguir un chip que se ejecuta el m86k conjunto de instrucciones de forma nativa: el Coldfire de la serie. Una serie de instrucciones que se han eliminado; si no es demasiado utiliza con frecuencia que podría ser emulado por la captura de la "instrucción no válida" interrupción.

Sin embargo, usted todavía necesita para emular la Yamaha YM7101 procesador de vídeo y Yamaha YM2612 procesador de sonido. Usted podría tratar de construir software emulaciones en un mucho más rápido DSP, o construir una versión FPGA de ellos. Posiblemente, basado en FPGA emulaciones de la Megadrive.

1voto

Jeremy Ruten Puntos 59989

Hay un Microcontrolador con 16MB de Ram?

Estoy bastante seguro de que no hay procesadores con 16 MB de chip de memoria RAM.

El "16 MB de RAM" que se menciona en algunas descripciones de las 68000 aluden a los 24 bits del bus de direcciones externo que podría, en teoría, dirección de un máximo de hasta 2^24 bytes = 16 MB de memoria RAM externa. Mi entendimiento es que la gran mayoría de los sistemas que utilizan el 68000 conecte mucho menos de 16 MB de memoria RAM externa.

En particular, la Sega Mega Drive (también conocido como el Sega Genesis) ha 72kB de RAM y 64 kB de RAM de vídeo. Que es externoRAM. Ni su Motorola 68000 , ni sus Zilog Z80 tiene ningún chip de la RAM o la memoria caché.

Sugiero crear un segundo, independiente de la pregunta con un título que describa lo que realmente quiero saber, pero dejar esta pregunta como un canónica pregunta acerca de la RAM del microcontrolador para ayudar a las muchas, muchas personas que están engañar por "16 MB de RAM", que significa el máximo teórico externo DRAM en algunos procesadores, mientras que "2.5 KB de RAM" significado físico real en el chip de memoria SRAM incluidos en otros procesadores.

(*) Algunos de muy alta gama de procesadores producidos después del 2006 tiene 16 MB o más de un chip de memoria caché, pero los procesadores que se requieren más memoria RAM externa, así, si usted realmente necesita 16 MB de RAM, vas a necesitar de 16 MB de RAM externa de una manera o de otra.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X