2
\$\begingroup\$

Given the Verilog description of a chip, what are the steps necessary to implement it in hardware and how would a person DIY something like this?

For a specific reference. I was looking at the wikipedia webpage for MMIX that says:

Hardware implementations

As of July 2010, no known hardware implementations of the MMIX instruction set architecture exist. However, the fpgammix project implements MMIX in Verilog, making it possible to implement using a field-programmable gate array.

How can one go from the Verilog of MMIX to the actual hardware using a home setup? (I have no idea what a field-programmable gate array is)

\$\endgroup\$
8
\$\begingroup\$

From your description, I'm getting the hint you are looking to physically construct the HW with discrete components from a Verilog description so I'll address this first:

Taking on the task to build your own hardware really isn't a useful or practical task to take on. The reason is because your understanding in microcontroller hardware and architecture won't be that much greater if you can physically construct the hardware or architecture. Also, it would get so tedious in doing even trivial things. Constructing HW physically also has no functional benefit.

enter image description here

Above is an example of a single "NAND" gate constructed physically. I'm showing this as an example. You would need 5 components simply to accomplish the most primitive logic.

If you are interested in building HW, you should make your HW designs through FPGAs (the field programmable gate arrays you mentioned). There are plenty of development boards that hobbyists can interface with. These boards can help you get started in HW design very quickly.

An FPGA is (for sake of simplicity) an "empty" microcontroller, with no architecture or hardware. You design the hardware through some sort of design environment, and the design gets uploaded to the FPGA. This is a great hobbyist style FPGA board that I've personally used:

Mercury Nova FPGA

\$\endgroup\$
  • 1
    \$\begingroup\$ Constructing physical hardware has practical, useful benefits (e.g. ASICs). It is not a tedious and trivial exercise. An FPGA is not an "empty" microcontroller. You can simplify your answer so that the reader can understand, but do not simplify so much that what you are saying is incorrect. \$\endgroup\$ – travisbartley Jun 17 '13 at 1:10
  • \$\begingroup\$ @travis When I said physically constructing HW, I meant with actual discreet transistors and resistors. Obviously you could send your design to a foundry to construct an ASIC, however this is also impractical for a "diy-er". In regards to the "empty" microcontroller, you are merely arguing semantics. For a beginner, my description is fine. \$\endgroup\$ – Nick Williams Jun 17 '13 at 4:02
  • 5
    \$\begingroup\$ Saying a microcontroller is not the same as an FPGA is not arguing semantics. Its an objective fact. \$\endgroup\$ – travisbartley Jun 17 '13 at 4:11
  • \$\begingroup\$ I'm quite sure that the drawing is a NAND gate actually. \$\endgroup\$ – Victor Oct 6 '15 at 22:16
  • 1
    \$\begingroup\$ @Victor Fixed it, lol \$\endgroup\$ – Nick Williams Oct 7 '15 at 12:51
3
\$\begingroup\$

A Field Programmable Gate Array (FPGA) is a network of transistors that can be reconfigured using software. It can be arranged in to countless configurations (for example a CPU that can handle MMIX instructions). See this Wikipedia link for more detail.

The 2nd option for a DIY person making chips is a Application-specific integrated circuit (ASIC). You provide the layout to a manufacturer and they will create a custom chip that is hard coded to do what you wanted it to do. See this Wikipedia link for more detail on ASICs

I have not worked much with ASICs so I don't know if you can use Verilog to get a ASIC created, but FPGA's are not expensive and for a DIY project more likely to be useful to you (and are re-useable if you ever decide to go to a different project). Currently Xilinx and Altera are the two biggest creators of FPGAs and they both offer development kits to program them. The price for the development kits can seem fairly high but remember FPGAs can be re-programmed as many times as you want so you will only ever need to buy one, also 3rd party kits are often cheeper than the first party kits (See Nick Williams' answer for a example of one)

\$\endgroup\$
  • 2
    \$\begingroup\$ Due to price, ASICs are not really an option for DIY. Bought in lots of 1000 or more they might be more affordable than FPGAs, but the set-up charges run in the $10,000's and up. \$\endgroup\$ – The Photon Jun 17 '13 at 0:50
  • \$\begingroup\$ Mentioning ASICs makes this answer more general and informative. But yes, the price and overall impracticality of making an ASIC for the question should at least be mentioned. Regarding using Verilog, it can be used to make an ASIC, as can VHDL or C code if you have the right tools. \$\endgroup\$ – travisbartley Jun 17 '13 at 4:37
  • \$\begingroup\$ If the OP was interested in learning about making a mass market chip, information about ASICs is very important. Also, he could perform DIY ASIC design without actually having the chip fabricated. There are open design libraries that can be found. \$\endgroup\$ – travisbartley Jun 17 '13 at 4:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.