Electronic – How to get a processor design onto FPGA

cpufpga

I recently went on a long voyage of self-teaching logic design. The final product of this is a functional 16 bit CPU that works exactly as designed in a simulator. Now I've just started looking into the possibility of putting it into silicon by way of an FPGA. I know that I will have to make a lot of adjustments in the input/output arena (the real world being different to the simulation environment) and have discovered that I did my design entirely in a program that doesn't export netlists or HDL code so all I really have is a schematic.

But, assuming that I somehow get to a point where I do have a netlist or HDL code of my design, what is my next step to get it into silicon? So far from what I've read it looks like FPGA's are my solution, but looking at the Xilinx and Altera websites makes my head spin. Am I barking up the wrong tree? Basically, I'm looking for a plain English description of what the next step is for a guy with a functional schematic of a CPU. Once I know what direction to go in, I can crack the books and figure out all I need to know about how to get there. Also a note, I am on Mac OS X but I have a Window's XP box that I can plug in if I absolutely have to.

Best Answer

Congrats on your CPU design. Yes, the FPGA is definitely your next step. But you're not very clear what it is that makes your head spin. I presume it's the large number of different devices on offer. You also don't say what simulator you're using.
When you synthesize a design the synthesizer should give you a report on the resources used, like number of gates and RAM. This should give you an idea what parts are suitable for your design. Make sure you have enough headroom. Pick a part which has some extra RAM, which you'll need to execute programs on your CPU.

edit (re your comment)
You need a development system for a specific manufacturer. Altera and Xilinx are the big players, and both have their believers. Which one you choose is not that important, both have enough different parts to satisfy your needs.
If you would choose for Xilinx, it has its ISE WebPACK Design Software, which is free (large download at 3.4GB). The limitations compared to more advanced versions of the software shouldn't bother you at this time.
Next you need a development board. You need to have an idea of what FPGA you'll need to select one. If you go for Xilinx I would pick a Spartan, maybe a Spartan-6, the Virtex is already too high-end IMO. There's still a great many too choose from, mainly different in the extras on the board. You'll want a board with a bit more than a few switches and LEDs. I would look out for a keyboard connector, and a display module.
Xilinx has a number of boards, and for Xilinx FPGAs there's also Digilent, Avnet, Xess and many others.

So compare a number of boards (price will also play a part, I presume) and download the development software for the FPGA you plan to use. Synthesize your design to verify that it will fit in the chosen FPGA, and then you're ready to purchase a board around this FPGA.

I forgot to tell a bit about FPGAs. An FPGA is basically a large collection of gates with programmable connections between them, so that you can create almost any logic function/system with them. Over several generations FPGAs became more advanced and now have optimized blocks to create efficiently functions like RAM. Your development software's synthesizer creates the connection diagram between the gates. This isn't permanently stored in the FPGA, but must be loaded on power-up from an external configuration Flash memory. That's where your design will be stored. Like any other Flash memory it can be erased and rewritten a great number of times.