Existe-t-il un microcontrôleur avec 16 Mo de RAM?
Oui. Le seul que je connaisse, cependant, est dans la famille Renesas SuperH, et n'inclut pas la ROM - vous devez donc avoir un flash externe, mais il a 16 Mo de SRAM intégré.
Je cherche à écrire un émulateur pour le Sega Megadrive (Sega Genesis) qui fonctionne sur AVR.
Il n'y a pas de microcontrôleurs SRAM 16 Mo octets dans la famille Atmel AVR. Ou n'importe où dans la gamme de produits Atmel.
Cependant, plusieurs appareils de la gamme Atmel AVR ont une interface de bus externe qui vous permettra de connecter de la mémoire supplémentaire. Plus précisément, l'ATxmega128A1U peut prendre en charge jusqu'à 16 Mo de SRAM externe.
Je cherchais donc un micro-contrôleur ayant des caractéristiques similaires au Motorola 68k livré avec le MegaDrive.
...
Je suis sûr que la SRAM moderne n'est pas presque la même que celle du 68k, mais est-il possible pour moi d'obtenir un micro AVR qui correspond à la puissance d'un 68k, est-ce que je regarde mal ce problème? Dois-je changer ma conception pour s'adapter aux micros modernes?
Je ne sais pas si une source de mémoire externe sera assez rapide.
Ah, voici le problème que vous rencontrez.
Le processeur 68k (c.-à-d. Motorola 68000) N'EST PAS un microcontrôleur et N'A PAS 16 Mo de SRAM interne.
Bien que le processeur soit 32 bits en interne, en raison des limitations de broches, il ne peut traiter que jusqu'à 16 Mo de mémoire externe, y compris le flash, le sram et tout périphérique mappé en mémoire.
Vous n'avez pas besoin d'un microcontrôleur avec 16 Mo de SRAM interne pour émuler le processeur 68k.
Existe-t-il un microcontrôleur Atmel AVR 8 bits qui peut émuler le processeur Motorolla 68000?
Je le pense. L'ATxmega128A1U possède un bus de mémoire externe aussi gros que le bus du processeur 68k, et a beaucoup de flash et de RAM qui lui permettraient d'exécuter une version microcode du processeur 68k.
Il peut fonctionner jusqu'à 32 MHz et de nombreuses instructions prennent un cycle, mais même le pire des cas prend 5 cycles dans la mémoire interne. L'interface externe est plus lente, mais si vous choisissez une mémoire rapide, elle sera toujours beaucoup plus rapide que le 68k.
Le processeur 68k fonctionne non seulement 4 fois plus lentement, mais les opérations les plus rapides qu'il a nécessitent au moins 4 cycles d'horloge, et beaucoup prennent 2 à 4 fois plus longtemps, en particulier les accès à la mémoire.
Ainsi, avec une SRAM encore lente (selon les normes d'aujourd'hui) (disons, une partie de 70 nS à 8 Mo pour moins de 10 $), vous pouvez utiliser 0 état d'attente sur le processeur à 32 MHz et exécuter des cercles autour du 68k à 7 MHz. Par exemple, une simple instruction de déplacement sur le 68k qui prendrait 4 cycles à 7,61 MHz prend 525 nS. Une instruction de déplacement simple similaire sur l'ATxmega128A1U fonctionnant à 32 MHz prend 31 nS. L'AVR pouvait donc exécuter 16 coups au moment où le 68K en avait terminé un. Le 68k prend 50 cycles pour certains types d'interruption, tandis que l'AVR passe à l'interruption en 3 cycles - de sorte que l'AVR pourrait gérer une poignée d'interruptions dans le temps qu'il faut au 68k pour simplement sauter en un.
Je m'attends à ce que vous puissiez l'exécuter avec un cycle précis avec un effort minutieux si vous acceptez une gigue, bien que vous puissiez l'obtenir pour fonctionner parfaitement avec un cycle précis sans gigue si vous étiez méticuleux. Les processeurs AVR fonctionnent bien avec un overclocking modéré, vous pouvez donc probablement le faire fonctionner à 38,35 MHz et avoir 5 cycles AVR par cycle d'horloge de 68k.
Cela ne veut pas dire que ce serait facile, et il peut y avoir quelques instructions très délicates qui prendraient plus de temps sur l'AVR qu'autrement - mais même celles-ci peuvent être prises en compte avec une conception soignée.
Puis-je émuler une Sega Genesis avec un AVR Atmel 8 bits?
Non. Le Sega Genesis a, en son cœur, un processeur 68k, mais il a aussi un processeur de son (Z80) et un processeur vidéo dont vous auriez besoin de beaucoup plus de ressources pour émuler. Dans le diagramme ci-dessous, vous trouverez le processeur 68k dans le coin supérieur gauche - notez qu'il s'agit d'une petite partie de tout ce qui est nécessaire pour émuler un système Sega Genesis complet.
Ainsi, bien que vous puissiez facilement émuler le noyau 68k de la Sega Genesis, vous ne pourriez pas exécuter des jeux conçus pour la Genesis avec le seul microcontrôleur AVR. Émuler le 68k seul sur une puce serait déjà assez difficile - même si vous simplifiez les choses, je doute que vous puissiez intégrer les trois processeurs dans une seule puce AVR 32 MHz.
Cependant, vous pourriez probablement émuler ces deux puces avec deux autres AVR. Si vous visiez un écran LCD graphique plus simple qui ne nécessitait pas de synchronisation et de génération NTSC étranges, vous pourriez peut-être simplifier un peu les choses, et peut-être même mettre les deux fonctions sur une puce distincte.
C'est un énorme projet, cependant, certainement pas un projet de week-end. Si vous êtes au stade où vous n'êtes à l'aise qu'avec les cartes de développement Arduino, il peut être intéressant de créer un émulateur de processeur 68k simple et de connecter un peu de ROM et de RAM externes pour les accès à la mémoire. L'Arduino ATMega n'a pas d'interface de mémoire externe, mais vous pouvez également manipuler les lignes d'E / S et émuler cela. Si vous allez assez loin dans le projet pour émuler de simples programmes 68k, alors il vaut peut-être la peine d'abandonner Arduino, d'utiliser l'environnement de développement Atmel et une meilleure puce AVR avec une interface de bus externe, et vous pouvez commencer à lire et à exécuter cartouches. Vous pourriez même être en mesure de transférer des données vidéo et audio vers l'ordinateur et de les interpréter lors du traitement - c'est ''
Assurez-vous que vos routines d'émulation sont portables et vous pourrez passer à un meilleur processeur assez facilement pour ne pas être coincé.
Si le simple projet Arduino Mega ne va jamais très loin, vous n'avez pas gaspillé beaucoup de ressources sur ce projet. Si vous vous retrouvez déterminé à le terminer, passer à une puce Atmel plus performante ne sera pas si écrasant.
Je dis de l'essayer. Certains de ce que j'ai dit et d'autres l'ont dit peuvent sembler insurmontables, mais ne nous laissons pas vous gêner. Continuez à poser des questions chaque fois que vous rencontrez un obstacle et vous constaterez que la plupart des ingénieurs aiment relever un défi et vous donneront la compréhension et l'aide dont vous avez besoin pour aller loin dans cette voie.
L'émulation est très amusante.