The Intel 4004 50th anniversary computer is an FPGA based recreation of the original 4004, the first ever single chip microprocessor, together with its supporting chipset, the 4001, 4002 and 4003.
The 50th Anniversary Computer
Birth of the 4004 processor.
The 4004 had an interesting birth. It started when Busicom, a Japanese calculator company, approached the fledgling Intel, then a memory chip company, to design and fabricate a 12 chip set for their new calculator. Intel’s Ted Hoff looked at the specification and realised it would take an enormous effort and came up with a more general purpose 4 chip set that could do the job.
A proposal was made to Busicom in September 1969 and accepted the following month, October 1969. The contract was signed 4 months later in February 1970. In April of that year Intel hired Federico Faggin to produce the chip designs. The day after Federico started, Masatoshi Shima from Busicom arrived to check progress and verify the design. Busicom had expected work to have started in October 1969 when they accepted Intel’s proposal. On finding work had yet to begin there were reportedly some very agitated phone calls back to Japan. Federico Faggin noted he had the distinction of being 6 months behind schedule on the day he started.
After working 80 hour weeks, Federico received first 4004 silicon in December 1970, but it didn’t work. A contact mask had been missed in fabrication and 30% of the gates were unconnected.
New silicon arrived in January 1971 and worked. That was the birth of the 4004.
A few small issues were fixed and fully functional silicon was delivered in March 1971.
Intel 4004 die, Note Federico Faggin’s signature – the F.F in the upper right.
Busicom worked on firmware from Oct 1970 to Jan 1971. They had their calculator working by March 1971 and the Busicom 141-PF was in production by July.
Then two things happened.
- Intel realised what they had and wanted to offer the 4004 for general sale, but Busicom had exclusive rights to the chipset.
- Busicom were having financial issues.
Intel offered Busicom a discount in return for rescinding exclusivity and by May 71 had gained control of the 4004. But even then Intel were reluctant to place the 4004 on the open market. That changed soon after Intel hired a new director of marketing, Ed Gelbach. Ed came to Intel from TI and knew of TI’s microcontroller development which eventually became the TMS1000. The 4004 was placed on general sale in November 1971 at a price of $60, falling to $30 in 100 up quantities. The 4004 die measured 3x4mm and was fabricated on 2 inch wafers. Busicom went on to purchase in the region of 60k to 100k processors. In total about 1 million 4004’s were made, not many by today’s standards.
The 4004 was part of a four chip set comprising the 4001, a mask programmed 256 byte ROM. The 4002, a 320 bit self refreshing dynamic RAM organised as four banks of 16×4 indirectly addressed registers and 4×4 directly addressed registers. Lastly the 4003 I/O chip which was a 10 bit shift register. All were available in 16 pin dip packages.
Thanks to Ted Hoff, Federico Faggin, Masatoshi Shima and their teams, and unsung hero Ed Gelbach for getting it to market.
Gentlemen, you gave us the world.
About the Anniversary Computer
To mark such an important anniversary, 50 years since Intel introduced the first ever microprocessor, I decided to create an replica module.
This would not be emulated on a CPU, but run in real logic on an FPGA. The module would have to be the same 16 pin DIP with an identical pinout as the original 4004. Further, it had to have the same signals, the same way up (negative logic). I wanted to be able to put an oscilloscope or logic analyser on the pins and see the processor operating.
To go with the 4004, I needed the matching chipset.
The 4001 is a 256 byte ROM with 4 I/O lines.
The 4002 80 nibble (40 bytes) RAM with 4 output only lines.
And the 4003 10 bit shift register.
The 4003 is a fairly slow and simple shift register used for output expansion. It connects to I/O pins of the ROM or RAM and does not interact with the CPU bus. I did emulate that one with a small PIC chip.
The 4001 ROM and 4002 RAM are much more complex. They both sit on the CPU bus and decode 4004 instructions as needed for their own internal use. There are no R/W signals from the 4004. Luckily, the pinout for both 4001 and 4002 are very similar to the 4004 and the same FPGA module, with different logic, can be used for both.
A small Lattice ice40 LP1K based module achieved those goals.
To go along with the FPGA modules, I developed a motherboard, hopefully with enough toys to make the project interesting. These include 4 small relays, 20 digital I/O’s, 5 digit display, Tic tac toe board, 6 push buttons and the CPU bus brought out for expansion or just connecting an oscilloscope or logic analyser. The FPGA bit streams and 4004 program code can be loaded directly via the USB port.
So how accurately have I succeeded in recreating the 4004 chipset, what are the differences?
There’s one big difference, the original chipset used a -15v power supply and the replica uses a +3.3v supply. However the signals otherwise look the same on an oscilloscope. A logic one is the most negative voltage and a logic zero is the most positive.
The 4004 uses a 2 phase clock, which are applied to pins 6 & 7. On my replica these are generated on the FPGA itself and so are actually outputs on the replica 4004, and are used by the 4001 and 4002 chips.
The 4001 I/O lines could be input or output, but the direction is fixed along with the ROM code during fabrication. The I/O’s could also be normal or inverted and have an internal pull-up or pull-down resistors. Even the memory decoding was fixed at fabrication time, there is no chip enable signal. My replica allows the I/O direction and normal/inverted to be set at the same time a new program is loaded, but there are no pull up/down resistors. You will need to fit your own externally if required.
All of the KICAD files and software to build the Intel 4004 50th Anniversary Computer can be download as a zip, here:
4 thoughts on “Intel 4004 50th Anniversary Computer”
Just a note… Your ‘hasUserWon’, ‘isWinningMove’ and ‘isBlockingMove’ functions from the ‘TicTacToe’ folder
in the ‘Examples’ of the downloadable project files enabled me to finish a Tic-Tac-Toe game that I’ve written
running on actual i4004 hardware. Thanks.
To see details of the Tic-Tac-Toe game running on actual i4004 hardware go to:
Nice project, Jim.
I may well build something similar myself one day. I have all the “real” parts except the 4265.
Also have the 4004 test board from the cpushack museum.
Thanks. The 4265 GPIO is difficult (and expensive) to source but it’s not absolutely necessary for a functioning SBC.