Is there a Microcontroller with 16MB of Ram?
Yes. The only one I'm aware of, though, is in the Renesas SuperH family, and doesn't include ROM - so you have to have external flash, but it has 16MBytes of onboard SRAM.
I am looking to write a emulator for the Sega Megadrive (Sega Genesis) that runs on AVR.
There are no 16MByte SRAM microcontrolers in the Atmel AVR family. Or anywhere in the Atmel product line.
However, several devices in the Atmel AVR lineup have External Bus Interface which will allow you to connect additional memory. Specifically, the ATxmega128A1U can support up to 16MBytes of external SRAM.
So I have been searching for a Micro-controller that has similar characteristics to the Motorola 68k that shipped with the MegaDrive.
I'm sure modern SRAM is not nearly the same as whatever the 68k had, but is it possible for me to get an AVR micro that matches the power of a 68k, am I looking at this problem wrong? Do I need to change my design to accommodate modern micros?
I don't know if some external source of memory will be fast enough.
Ah, here's the problem you're having.
The 68k processor (ie, Motorola 68000) is NOT a microcontroller and does NOT have 16MBytes of internal SRAM.
While the processor is 32 bits internally, due to pin limitations it can only address up to 16MBytes of external memory, including flash, sram, and any memory mapped devices.
You don't need a microcontroller with 16MBytes of internal SRAM to emulate the 68k processor.
Is there an Atmel AVR 8-bit microcontroller that can emulate the Motorolla 68000 processor?
I think so. The ATxmega128A1U has an external memory bus as big as the 68k processor's bus, and has plenty of flash and RAM that would allow it to run a microcode version of the 68k processor.
It can run up to 32MHz, and many instructions take one cycle, but even the worst case takes 5 cycles in the internal memory. The external interface is slower, but if you choose fast memory it will still be a lot faster than the 68k.
The 68k processor not only runs 4 times slower, but the fastest operations it has takes at least 4 clock cycles, and many take 2-4 times longer, particularly memory accesses.
So with even slow (by today's standards) SRAM (say, a 70nS 8MByte part for under $10) you can use 0 wait states on the 32MHz processor and run circles around the 68k running at 7MHz. For instance, a simple move instruction on the 68k that would take 4 cycles at 7.61 MHz takes 525 nS. A similar simple move instruction on the ATxmega128A1U running at 32MHz takes 31nS. So the AVR could execute 16 moves by the time the 68K was done with one. The 68k takes 50 cycles for some interrupt types, while the AVR jumps to the interrupt in 3 cycles - so the AVR could handle a handful of interrupts in the time it takes the 68k to simply jump into one.
I expect you could run it cycle accurate with careful effort if you accept some jitter, though you might be able to get it to run perfectly cycle accurate with no jitter if you were meticulous. The AVR processors run fine with moderate overclocking, so you could probably run it at 38.35MHz and have 5 AVR cycles per 68k clock cycle.
This is not to say it would be easy, and there may be a few very tricky instructions that would take longer on the AVR than otherwise - but even these can be accounted for with careful design.
Can I emulate a Sega Genesis with an Atmel 8 bit AVR?
No. The Sega Genesis has, at its heart, a 68k processor, but it also has a sound processor (Z80) and a video processor that you would need significantly more resources to emulate. In the diagram below, you'll find the 68k processor in the upper left - note that it's one small portion of everything needed to emulate a full Sega Genesis system.
So while you could readily emulate the 68k core of the Sega Genesis, you wouldn't be able to run games made for the Genesis with just the one AVR microcontroller. Emulating the 68k alone on one chip would be hard enough- even if you simplified things I doubt you could fit all three processors into a single 32MHz AVR chip.
However, you could probably emulate those two chips with two more AVRs. If you targeted a simpler graphic LCD that didn't require weird NTSC timings and generation, you might be able to simplify things a little bit, and perhaps could even put both functions onto one separate chip.
This is a huge project, though, certainly not a weekend project. If you are at the stage where you are only comfortable with Arduino development boards, then it might be interesting to create a simple 68k processor emulator and connect a little external ROM and RAM for memory accesses. The Arduino ATMega doesn't have an external memory interface, but you can twiddle I/O lines and emulate that as well. If you get far enough along in the project to where you can emulate simple 68k programs, then it might be worth ditching arduino, using the Atmel development environment, and a better AVR chip with an external bus interface, and you can start reading and executing cartridges. You might even be able to pipe video and sound data to the computer and interpret them in processing - it'll still be too slow (the Arduino Mega is only 16MHz) but it'll at least give you a good idea of the amount of work you'd have to do to have full speed emulation, and you can start tinkering with how much effort it would be to emulate the VDP and sound processors.
Make sure your emulation routines are portable and you'll be able to switch to a better processor easily enough that you won't be stuck.
If the simple Arduino Mega project never gets very far, you haven't wasted many resources on this project. If you find yourself driven to completing it, moving to a more capable Atmel chip will not be so overwhelming.
I say give it a try. Some of what I've said and others have said may seem like this is insurmountable, but don't let us get in your way. Keep asking questions each time you run into an obstacle and you'll find that most engineers enjoy a challenge and will give you the understanding and help you need to go far down this path.
Emulation is a lot of fun.