The Nexys2-based prototype of the forthcoming redesign of my USB MegaDrive DevKit seems to work!

There is a custom PCB which plugs into the MegaDrive cartridge slot, and the Nexys2 FPGA board plugs into that, and draws its power from the MegaDrive. The custom PCB is pretty simple, it contains three 16-bit level converters for converting the MegaDrive's 5V signals to the 3.3V signals needed by the FPGA. Despite being simple, it was pretty difficult to make because it has 0.5mm-pitch chips placed over vias.
The game loads over Hi-Speed USB into the Nexys2's onboard CellularRAM whilst the MegaDrive is held in RESET. When the MegaDrive is released from RESET, the bus is taken from the USB controller and given to the MegaDrive, which begins executing the code.
One interesting problem I've noticed is that the sampled "Sega" song ditty at the start of Sonic the Hedgehog is corrupt - it comes out as white noise. My guess is that the samples are being read directly from the cartridge memory by the Z80 somehow, and during those cycles the 68000's !AS line (which my memory controller uses to time its state transitions) is not strobing, so the Z80 is reading garbage samples. This is just a guess though, I need to do further investigation.
Update: My theory was correct. The Z80 read cycles don't seem to strobe !AS like 68000 read cycles do. I eliminated !AS from the memory controller logic and now it works fine.
The VHDL needs a lot of tidying, and I need to implement the bus arbitration logic to allow USB and MegaDrive memory reads and writes to be interleaved seamlessly by the memory controller, and then I need to work on a DMA controller for doing efficient reads from an SD-card.