有 16MB 内存的微控制器吗?
是的。不过,我知道的唯一一个是 Renesas SuperH 系列,不包括 ROM - 所以你必须有外部闪存,但它有 16MBytes 的板载 SRAM。
我正在为在 AVR 上运行的 Sega Megadrive (Sega Genesis) 编写一个模拟器。
Atmel AVR 系列中没有 16MByte SRAM 微控制器。或 Atmel 产品线中的任何位置。
但是,Atmel AVR 系列中的一些设备具有外部总线接口,可让您连接额外的内存。具体来说,ATxmega128A1U 可以支持高达 16MBytes 的外部 SRAM。
因此,我一直在寻找与 MegaDrive 随附的摩托罗拉 68k 具有相似特性的微控制器。
...
我确信现代 SRAM 与 68k 所拥有的几乎不一样,但是我是否有可能获得与 68k 的功率相匹配的 AVR micro,我看错了这个问题吗?我是否需要更改我的设计以适应现代微型设备?
我不知道某些外部内存来源是否足够快。
啊,这就是你遇到的问题。
68k 处理器(即摩托罗拉 68000)不是微控制器,也没有 16MBytes 的内部 SRAM。
虽然处理器内部是 32 位,但由于引脚限制,它只能寻址高达 16MBytes 的外部存储器,包括闪存、sram 和任何内存映射设备。
您不需要具有 16MBytes 内部 SRAM 的微控制器来模拟 68k 处理器。
是否有可以模拟 Motorolla 68000 处理器的 Atmel AVR 8 位微控制器?
我想是这样。ATxmega128A1U 有一个与 68k 处理器总线一样大的外部存储器总线,并且有足够的闪存和 RAM,使其能够运行 68k 处理器的微码版本。
它可以运行到 32MHz,许多指令需要一个周期,但即使是最坏的情况,内部存储器也需要 5 个周期。外部接口速度较慢,但如果你选择快速内存,它仍然会比68k快很多。
68k 处理器不仅运行速度慢了 4 倍,而且其最快的操作至少需要 4 个时钟周期,而且很多需要 2-4 倍的时间,尤其是内存访问。
因此,即使是慢速(按照今天的标准)SRAM(例如,70nS 8MByte 部件,价格低于 10 美元),您也可以在 32MHz 处理器上使用 0 等待状态,并在 7MHz 运行的 68k 周围运行循环。例如,在 7.61 MHz 下需要 4 个周期的 68k 上的简单移动指令需要 525 nS。以 32MHz 运行的 ATxmega128A1U 上类似的简单移动指令需要 31nS。因此,当 68K 完成一次移动时,AVR 可以执行 16 次移动。对于某些中断类型,68k 需要 50 个周期,而 AVR 在 3 个周期内跳转到中断 - 因此 AVR 可以在 68k 简单地跳转到一个中断的时间内处理少量中断。
如果您接受一些抖动,我希望您可以通过仔细的努力使其循环准确地运行,但如果您一丝不苟,您可能能够让它在没有抖动的情况下完美地循环准确地运行。AVR 处理器在适度超频的情况下运行良好,因此您可以在 38.35MHz 下运行它,并且每 68k 时钟周期有 5 个 AVR 周期。
这并不是说这很容易,并且可能会有一些非常棘手的指令在 AVR 上花费的时间比其他方式要长 - 但即使是这些也可以通过精心设计来解决。
我可以用 Atmel 8 位 AVR 模拟 Sega Genesis 吗?
不。世嘉创世纪的核心是一个 68k 处理器,但它也有一个声音处理器 (Z80) 和一个视频处理器,你需要更多的资源来模拟。在下图中,您会在左上角找到 68k 处理器 - 请注意,它只是模拟完整 Sega Genesis 系统所需的一切的一小部分。

因此,虽然您可以轻松模拟 Sega Genesis 的 68k 内核,但您无法仅使用一个 AVR 微控制器运行为 Genesis 制作的游戏。在一个芯片上单独模拟 68k 已经足够困难了——即使你简化了一些事情,我怀疑你是否可以将所有三个处理器都安装到一个 32MHz AVR 芯片中。
但是,您可能可以用另外两个 AVR 来模拟这两个芯片。如果您的目标是一种不需要奇怪的 NTSC 时序和生成的更简单的图形 LCD,您也许可以稍微简化一些事情,甚至可以将这两种功能放在一个单独的芯片上。
不过,这是一个巨大的项目,当然不是周末项目。如果您正处于只对 Arduino 开发板感到满意的阶段,那么创建一个简单的 68k 处理器仿真器并连接一些外部 ROM 和 RAM 用于内存访问可能会很有趣。Arduino ATMega 没有外部存储器接口,但您也可以旋转 I/O 线并对其进行仿真。如果您在项目中走得足够远,可以模拟简单的 68k 程序,那么可能值得放弃 arduino,使用 Atmel 开发环境,以及具有外部总线接口的更好的 AVR 芯片,您可以开始阅读和执行墨盒。您甚至可以将视频和声音数据通过管道传输到计算机并在处理过程中对其进行解释——它
确保您的仿真程序是可移植的,并且您将能够轻松地切换到更好的处理器,而不会被卡住。
如果简单的 Arduino Mega 项目从未走得很远,那么您并没有在这个项目上浪费很多资源。如果您发现自己有动力去完成它,那么转向功能更强大的 Atmel 芯片就不会那么难了。
我说试试看。我所说的和其他人所说的有些似乎是不可克服的,但不要让我们妨碍你。每次遇到障碍时不断提出问题,您会发现大多数工程师都喜欢挑战,并且会为您提供理解并帮助您在这条道路上走得更远。
仿真很有趣。