Intel 4004 50th anniversary computer - Page 1
Forum section: electronics / general

author: woofy
author_rank: Frequent Contributor
timestamp: December 02, 2020, 02:56:37 pm
content: I've been having fun over lockdown building an Intel 4004 computer, without using any real 4004 chips.It uses small FPGA modules to recreate the 4004 as well as the 4001 and 4002 memories.I've written a tic-tac-toe game in 4004 assembler that's played on the 3x3 RGB matrix.The project is open source, and I also hope to have a kit available in the new year.I guess the 4004's year long birthday starts now.It was 50 years ago this month (December 1970) that Federico Faggin received first 4004 silicon. Unfortunately it didn't work, a contact mask had been missed in fabrication and 30% of the gates were "flapping about in the breeze".

author: ebastler
author_rank: Super Contributor
timestamp: December 02, 2020, 07:43:26 pm
content: Neat! Could you elaborate on those "small FPGA modules" please? They have a nice form factor. What technology and package are you using there? What's the integration density and price tag? Thank you!

author: RoGeorge
author_rank: Super Contributor
timestamp: December 02, 2020, 08:35:19 pm
content: I have a 4004 made by National Semiconductor, INS4004, and keep moving it from one place to another for decades now, never powered it up.http://bitsavers.informatik.uni-stuttgart.de/components/national/_dataSheets/FIPS_dataSheet.pdfhttps://www.intel.com/content/www/us/en/history/virtual-vault/articles/the-intel-4004.html

author: schmitt trigger
author_rank: Super Contributor
timestamp: December 02, 2020, 11:39:50 pm
content: You have a nice piece of history.Put it on a nice frame and hang it on your office wall.

author: woofy
author_rank: Frequent Contributor
timestamp: December 03, 2020, 10:35:28 am
content: Quote from: ebastler on December 02, 2020, 07:43:26 pmThey use a Lattice iCE40LP1K-CM36 FPGA together with 256kB flash to hold the bitstream and in the case of the 4001's the program and configuration settings, PIC16F15325 to control programming and a 1.2v regulator.The 4001, 4002 & 4004 use the same pinout (power and signal wise) so I was able to use the same board for all three with different bitstreams.Its mounted in an IC socket with components down so I can put a chip look-a-like sticker on the top.The bitstreams are generated from verilog using yosys/nextpnr.

author: woofy
author_rank: Frequent Contributor
timestamp: December 03, 2020, 10:50:00 am
content: Quote from: RoGeorge on December 02, 2020, 08:35:19 pmNice. I've seen the Nat Semi version on ebay a couple of times over the last few months.I have an intel 4004 and a couple of 4002's that work. I used an MCS-4 Test Board fromwww.cpushack.com/mcs-4-test-boards-for-sale/to test them (and check waveforms).

author: ebastler
author_rank: Super Contributor
timestamp: December 03, 2020, 12:09:24 pm
content: Quote from: woofy on December 03, 2020, 10:35:28 amVery nice, thank you for the detail! I had not realized that the iCE40 comes in such a small package; makes for very neat "fake ICs".I take it that you have scaled the supply voltage for the whole replica computer to 3.3V or 2.5V?

author: woofy
author_rank: Frequent Contributor
timestamp: December 03, 2020, 01:06:30 pm
content: Yes, +3.3v supply rather than the -15v the real chip used.Signals on the bus are the correct way around for the real 4004 though. A logic 0 is +3.3v and a logic 1 is ground. So if you look at the signals on a 'scope you see them the same way up as the real chip. Think of the +3.3v as "ground" and the actual ground as -3.3v Vdd.That means if you look at the bus on a logic analyser, you read the 4-bit bus value as its inverted value (negative logic). Hex A (b0101) would read out as hex 5. So I included a 74HC04 on the board to give me positive logic signals that the analyser could display. These and all the real bus signals are on the 18 pin header at the back of the board.On a 'scope you will see the same signals as the real 4004, just 3.3v instead of 15v swing, but otherwise looking the same.