Minimig: The FPGA Amiga

My regular readers will recall that I setup my most interesting system of all, a C-One system—”the reconfigurable computer,” earlier this year. The C-One is often billed as “a super Commodore 64,” but it’s really far more. Various system “cores,” hardware descriptions written in Verilog, can be uploaded into the two FPGAs (field-programmable gate arrays) at the heart of this 65C816-based machine, allowing it to “become” the hardware described by the cores. Virtually any computer with a 16-bit (or smaller) bus can be described by the C-One. Currently available cores include the Commodore 64, Vic 20 and Amstrad 464 and 6128, with many other cores planned, including the Apple IIgs. Jeri Ellsworth designed the C-One as well as the C64 DTV, which has drawn significant press on its own.

Well, as it turns out, Jeri is not the only one with a hunger for bringing back old Commodores by way of the magical FPGA. I was browsing the forum topics over at Amiga.org when one in particular jumped out at me, started earlier this month: Amiga in an FPGA : Minimig. Assuming the post was going to be so much starry-eyed daydreaming, I began to read and was amazed and excited to discover that this was indeed nothing of the sort. It’s real. Dennis van Weeren has built an FPGA-based Amiga.

Dennis’ goal is to create a fully functional PAL OCS Amiga 500 with a few added bells and whistles. The hardware involved is a Xilinx Spartan-3 FPGA board featuring a 400K gate FPGA, 1MB SRAM, PS/2 interface, power regulators as well as three daughterboards: a processor board featuring a Motorola 68000, a small clock circuitry board, and an interface board with an MCC flashcard interface, joystick interface, and videodac and audiodac connectors. Currently the Amiga’s custom chips: OCS Agnus, Paula, and OCS Denise, as well as both CIAs, are running in the FPGA (60% of which is currently utilized).

The Minimig is still a work in progress, but as can be seen from Dennis’ uploaded photos, the machine is close to fully functional, running at full speed and able to load many games without issue. The best way to get a feel for the current state of the project is by way of the aforelinked forum thread in which Dennis himself posts frequent updates.

It’s unclear where this project will go from here. Will the Minimig become a perfect facsimilie of the Amiga 500? Will Dennis be the only one fortunate enough to call it his own? How big a market is there for this unit, if mass-produced? I can say with certainty that he would have at least one customer if the Minimig were brought to market….


Dennis responded, within his original Amiga.org forum thread, to some who suggested that the whole project is a hoax. The post serves as a nice technical overview of the system as a whole:

    To those who think this is a hoax, let me tell you some details about how minimig works:

    The idea is that minimig has the Amiga core (the custom chipset) implemented in an FPGA. The CPU and SRAM is not implemented in the FGPA. To keep things simple I have merged the Amiga chipram bus and fastram bus into a single synchronous bus running at 7.09379MHz. This makes Minimig a functional replica, not a circuit-level replica. This bus only exists inside the FPGA. To connect the RAM and CPU, 2 bridges exist that translate the internal synchronous bus to the asynchronous busses of the SRAM and CPU. Inside the FPGA, all devices (including the cia’s) connect to this synchronous bus. Because the bus run’s at twice the speed of the original Amiga chipram bus, I can allocate the odd cycles to the chipset and the even cycles to other devices. The system does not have a ROM, instead kickstart is loaded from the MMC card into the RAM. This is done by a small bootrom that does exist inside the FPGA. I currently have only 1MB of SRAM of which half is devoted to chipram and the other half to kickstart area. If you look at the picture of the complete system, you can see an additional chip that sits between the FPGA board and the MMC card, this is a PIC18LF252 microcontroller that implements the FAT16 filesystem and “emulates” a floppy drive. This is much easier and more comfortable than using a real floppy drive.

    Please understand that this is for real. It is not working perfectly yet and a lot of software stalls while loading (diskcontroller is not OK yet) but it does work. As soon as I have some more software running I will be happy to show this at a meeting or show. (I believe there is one every couple of months in Maarssen, the Netherlands)

    Dennis

This entry was posted in Amiga. Bookmark the permalink.

7 Responses to Minimig: The FPGA Amiga

  1. LouDias says:

    While this project is cool, it’s a total waste of time an effort. He should be helping port AmigaOS over to the game cube, it’s the future of computing.

  2. anon says:

    I hope the project will be succesful and converted to ASIC with hundred or GHz System-on-chip.

    Perhaps the new platform will use Freescale Coldfire cores with special circuit or emulator for the missing 68K instruction set.

  3. Anonymous says:

    I wouldve thought LouDias of all people, would understand the value of this project?

    Ironic.

    Keep it up Dennis, at least you have some chance of success.

  4. Johnno says:

    Could this project be converted to a core file for the C-One? I’d probably try to buy one then.

    Johnno

  5. Roc says:

    Hopefully you’ll release it under a free as in freedom license, in the spirit of http://www.opencores.org and the like. That would kick some serious ass, and everybody would love you forever.

  6. unsal says:

    Awesome! i would purchase such an classic-amiga in mini-itx form factor, but i prefer A1200.

  7. kaddi says:

    Hello I have fond a lot of useful and interesting files on http://newfileengine.com/

    visit and enjoy it!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>