PROJECT: You don't need a fab to build your own CPU!
Anyone can feel like Federico Faggin and on a shoestring budget design your own CPU and an embedded system to test it, on your own desk.
The first integrated CPU ever sold, the venerable Intel 4040 four bit processor, was originally designed by Intel for a Japanese calculator company named Busicom and sold in the 1971. Italian-born physicist/electrical engineer Federico Faggin lead the 4004 project.
The roots of the most important invention of the human beings, which has driven the second industrial revolution after that the steam motor driven the first one, indeed resides in the early embedded application made ever since.
Of course nowadays the things are much more simpler. You don’t have to worry about the headaches of a manual layout of a CPU using only paper and pen, neither you need a multi million dollar budget to get out only a prototype.
Moreover a lot of implementation details are gracefully hidden in very few lines of HDL language constructs. Fortunately we can now rely on an abundant variety of tools which make the things orders of magnitude simpler than they were in a not so far past, allowing even to a single person to develop a CPU; and much more, an entire embedded system, in a very short time and using no more than a desktop pc equipped with a free EDA as Xilinx ISE; a free VHDL simulator as Modelsim XE, and a cheap FPGA demo board.
That said, here’s why I’ve developed this nice contraption for my examination for 'electronic calculators 2' held by my teacher Professor Antonino Mazzeo, to whom goes all my gratitude for the freedom granted me in bringing everything I wanted as a project at the examination
It covers advanced computer organization and embedded systems in all their facets and, trust me, it worth all the efforts made during the development stage. In fact, using a simple board sold by Digilent (the Spartan-3E Starter Kit), I’ve 'built' a full functional version of the 32 bit CPU named MIC 1. This includes a simple stack processor, described in the fourth chapter of Professor Tanenbaum's Modern computer organization,(reference 1).
I have then used it to design a simple test system similar to the one present in the software simulator of the CPU founded on the book’s accompanying CD. To test the complete design, I’ve written a simple assembler program to realize a small calculator which makes multiplication and division on two operands provided by the user via an rs232 connection, and then gives the results always on the same line, using Hyper Terminal (configured for eight bit of data, no parity, one stop bit and with no control ) as the system’s standard input and standard output.