Gibt es einen Mikrocontroller mit 16 MB RAM?
Ja. Das einzige, das mir bekannt ist, gehört zur Renesas SuperH-Familie und enthält kein ROM. Sie müssen also über einen externen Flash-Speicher verfügen, verfügen jedoch über 16 MByte integrierten SRAM.
Ich möchte einen Emulator für den Sega Megadrive (Sega Genesis) schreiben, der auf AVR läuft.
In der Atmel AVR-Familie gibt es keine 16-MByte-SRAM-Mikrocontroller. Oder irgendwo in der Atmel-Produktlinie.
Einige Geräte in der Atmel AVR-Reihe verfügen jedoch über eine externe Busschnittstelle, über die Sie zusätzlichen Speicher anschließen können. Insbesondere kann der ATxmega128A1U bis zu 16 MByte externen SRAM unterstützen.
Daher habe ich nach einem Mikrocontroller gesucht, der ähnliche Eigenschaften wie das mit dem MegaDrive gelieferte Motorola 68k aufweist.
...
Ich bin mir sicher, dass der moderne SRAM nicht annähernd mit dem 68k identisch ist, aber ist es mir möglich, ein AVR-Mikro zu erhalten, das der Leistung eines 68k entspricht. Betrachte ich dieses Problem falsch? Muss ich mein Design ändern, um moderne Mikros aufzunehmen?
Ich weiß nicht, ob eine externe Speicherquelle schnell genug ist.
Ah, hier ist das Problem, das du hast.
Der 68k-Prozessor (dh Motorola 68000) ist KEIN Mikrocontroller und verfügt NICHT über 16 MByte internen SRAM.
Während der Prozessor intern 32 Bit groß ist, kann er aufgrund von Pin-Einschränkungen nur bis zu 16 MByte externen Speicher adressieren, einschließlich Flash, RAM und allen Geräten mit Speicherzuordnung.
Sie benötigen keinen Mikrocontroller mit 16 MByte internem SRAM, um den 68k-Prozessor zu emulieren.
Gibt es einen Atmel AVR 8-Bit-Mikrocontroller, der den Motorolla 68000-Prozessor emulieren kann?
Ich glaube schon. Der ATxmega128A1U verfügt über einen externen Speicherbus, der so groß ist wie der Bus des 68k-Prozessors, und über ausreichend Flash und RAM, sodass eine Mikrocode-Version des 68k-Prozessors ausgeführt werden kann.
Es kann bis zu 32 MHz laufen und viele Anweisungen benötigen einen Zyklus, aber selbst im schlimmsten Fall dauert es 5 Zyklen im internen Speicher. Die externe Schnittstelle ist langsamer, aber wenn Sie sich für einen schnellen Speicher entscheiden, ist dieser immer noch viel schneller als der 68k.
Der 68k-Prozessor läuft nicht nur viermal langsamer, sondern die schnellsten Vorgänge dauern mindestens viermal, und viele dauern zwei- bis viermal länger, insbesondere Speicherzugriffe.
Mit einem selbst langsamen (nach heutigen Maßstäben) SRAM (z. B. einem 70-ns-8-MByte-Teil für weniger als 10 US-Dollar) können Sie 0 Wartezustände auf dem 32-MHz-Prozessor verwenden und Kreise um die 68-KByte mit 7 MHz laufen lassen. Zum Beispiel benötigt ein einfacher Bewegungsbefehl auf dem 68k, der 4 Zyklen bei 7,61 MHz benötigt, 525 nS. Eine ähnliche einfache Bewegungsanweisung auf dem ATxmega128A1U mit 32 MHz dauert 31 ns. Der AVR konnte also 16 Züge ausführen, bis der 68K mit einem fertig war. Der 68k benötigt für einige Interrupt-Typen 50 Zyklen, während der AVR in 3 Zyklen zum Interrupt springt. Der AVR kann also eine Handvoll Interrupts in der Zeit verarbeiten, die der 68k benötigt, um einfach in einen zu springen.
Ich gehe davon aus, dass Sie es mit sorgfältiger Anstrengung zyklusgenau ausführen können, wenn Sie etwas Jitter akzeptieren. Wenn Sie jedoch akribisch sind, können Sie es möglicherweise ohne Jitter perfekt zyklusgenau ausführen. Die AVR-Prozessoren funktionieren einwandfrei mit mäßigem Übertakten, sodass Sie sie wahrscheinlich mit 38,35 MHz betreiben und 5 AVR-Zyklen pro 68-KB-Taktzyklus haben können.
Dies bedeutet nicht, dass es einfach wäre, und es kann einige sehr knifflige Anweisungen geben, die auf dem AVR länger dauern würden als sonst - aber selbst diese können mit sorgfältigem Design berücksichtigt werden.
Kann ich eine Sega Genesis mit einem Atmel 8-Bit-AVR emulieren?
Nein. Der Sega Genesis verfügt im Kern über einen 68k-Prozessor, aber auch über einen Soundprozessor (Z80) und einen Videoprozessor, für deren Emulation Sie erheblich mehr Ressourcen benötigen würden. In der folgenden Abbildung finden Sie den 68k-Prozessor oben links. Beachten Sie, dass dies ein kleiner Teil von allem ist, was zur Emulation eines vollständigen Sega Genesis-Systems erforderlich ist.
Während Sie also problemlos den 68k-Kern des Sega Genesis emulieren könnten, könnten Sie keine Spiele für den Genesis mit nur einem AVR-Mikrocontroller ausführen. Es wäre schwierig genug, die 68k alleine auf einem Chip zu emulieren - selbst wenn Sie die Dinge vereinfachen würden, bezweifle ich, dass Sie alle drei Prozessoren in einen einzigen 32-MHz-AVR-Chip einbauen könnten.
Sie könnten diese beiden Chips jedoch wahrscheinlich mit zwei weiteren AVRs emulieren. Wenn Sie auf ein einfacheres Grafik-LCD abzielen, für das keine seltsamen NTSC-Timings und -Erzeugungen erforderlich sind, können Sie die Dinge möglicherweise ein wenig vereinfachen und möglicherweise sogar beide Funktionen auf einen separaten Chip übertragen.
Dies ist jedoch ein riesiges Projekt, sicherlich kein Wochenendprojekt. Wenn Sie sich in einem Stadium befinden, in dem Sie nur mit Arduino-Entwicklungsplatinen vertraut sind, kann es interessant sein, einen einfachen 68k-Prozessoremulator zu erstellen und ein kleines externes ROM und RAM für Speicherzugriffe anzuschließen. Der Arduino ATMega verfügt nicht über eine externe Speicherschnittstelle, aber Sie können auch E / A-Leitungen drehen und diese emulieren. Wenn Sie im Projekt weit genug kommen, um einfache 68k-Programme zu emulieren, lohnt es sich möglicherweise, Arduino mithilfe der Atmel-Entwicklungsumgebung und eines besseren AVR-Chips mit einer externen Busschnittstelle loszuwerden, und Sie können mit dem Lesen und Ausführen beginnen Patronen. Möglicherweise können Sie sogar Video- und Audiodaten an den Computer weiterleiten und bei der Verarbeitung interpretieren.
Stellen Sie sicher, dass Ihre Emulationsroutinen portabel sind und Sie problemlos auf einen besseren Prozessor umsteigen können, damit Sie nicht hängen bleiben.
Wenn das einfache Arduino Mega-Projekt nie weit kommt, haben Sie nicht viele Ressourcen für dieses Projekt verschwendet. Wenn Sie sich dazu getrieben fühlen, wird es nicht so überwältigend sein, auf einen leistungsfähigeren Atmel-Chip umzusteigen.
Ich sage, probieren Sie es aus. Einige von dem, was ich gesagt habe und andere gesagt haben, scheinen unüberwindbar zu sein, aber lassen Sie sich nicht von uns in die Quere kommen. Stellen Sie jedes Mal Fragen, wenn Sie auf ein Hindernis stoßen, und Sie werden feststellen, dass die meisten Ingenieure eine Herausforderung genießen und Ihnen das Verständnis und die Hilfe geben, die Sie benötigen, um diesen Weg weit zu gehen.
Emulation macht viel Spaß.