Ben Eater has just released his latest vid, this time he's demonstrating the build of a 6502 based computer. In this build he uses a 32k x 8 EEPROM, as he did in his earlier CPU series.
This reminded me of some research I'd done for memory for my own project SPAM-1 which I've attempted to write up here.
It's fairly common to use an EEPROM in place of combinatorial logic for an ALU or control logic.
A limiting factor with these devices is the address bits width and data bits width limiting the control space. For example if I wanted to use a ROM as an 8 bit ALU then I'd probably want to have the address space of something like 21 bits (2 lots of 8 bits for the arguments, 4 bits for the ALU operation selection, 1 bit carry in) and a data bus of 16 bits to allow for the 8 bit result plus flags like Carry, Neg, Zero, Overflow and comparison bits.
One can find EPROM's that would fit that bill but these need a UV lamp, higher programming voltages etc, and so I wondered what else was out there. Also of potential concern is that EPROMs and EEPROMs are typically quite slow.
Hunting around it seems that Flash memory is quite common and a lot faster than EPROMS or even EEPROMS. There are some rather large and cheap 16 bit data width NOR Flash devices that look really interesting: https://mou.sr/2NguVcp - some up to 26 bits of address space.
I need to find a programmer that's guaranteed to program these things - which one !!?
My research for SPAM-1 includes looking for a faster alternative to the usual program memory EEPROM so 32kx8 or 64kx8 would be fine for this applications.
The EEPROM is probably around the 120ns to 140ns mark however RAMs can be faster than as 25ns read cycle.
What I found my self looking at was various forms of non volatile RAM for the program memory. For example non volatile RAM such as a FRAM or an integrated battery backed nvSRAM.
One additional potential advantage of using non vol RAM is not needing a regular EPROM programmer. Non-volatile RAM, behaves like RAM but retains the data when disconnected from power. So there's no need for a custom EEPROM programmer if you already have something like an Arduino with the 50 pin I/O (or an nano with a bunch of shift registers!) - you can use that to write to the NV RAM. Unlike an EEPROM there are no complicated JEDEC timing and control signal protocols, instead just manipulate the I/O on device like its a RAM.
Here's a scratch pad of my notes on the non-volatile RAM:
Some of the more recent devices don't come in DIP but one can use an "interposer" to adapt the chips back to DIP. Eg see these http://www.proto-advantage.com/store/interposer.php
The M48Z35Y nvRAM is 32kx8 and £12 retail https://uk.rs-online.com/web/p/nvram/1686072/
This comes in a 28 pin DIP package you can plug straight into a breadboard.
CY14B256LA-SZ45XI This 45ns nvSRAM is 32x8 and costs about £10.
It is SOIC-32 so needs an adapter to DIP-32.
A SOIC-32 to 32 pin DIP interposer can be about £5
There is a 25ns version for £2 more.
If you can find the STK16C88 then this is already in a DIP package so no soldering!!
FRAM is another special RAM type but is SMT only.
You can then pick up a SMT to DIP adapter for the FRAM for between $1 and $5, depending on your choice of FRAM.
Using this adapter you can mount the FRAM on breadboard for programming and for use in the final circuit.
So say you were running at 3.6volts then you might get one of these for £3.50 https://www.mouser.co.uk/ProductDetail/ROHM-Semiconductor/MR48V256CTAZAARL?qs=sGAEpiMZZMtsPi73Z94q0LLtWXL8TrlCrovkBv8dHEM%3D
... and use a TSOP1 adapter like this for £5, perhaps ..
If using 5v then its bit more expensive for the FRAM at £14 for a FM18W08 FRAM
The 28 pin SOIC to 28 pin DIP adapter is only £1 and the SOIC package is bigger which you might find easier to solder.