Because of my interest in some older computers and their peripherals, dealing with ROM-chip based firmware is a fact of life. Ever since purchasing a programmer to explore the contents of some of the ROMs, it came to mind that there may be cases where it may be necessary to replace such PROMs with more modern equivalents. In this posting, I explore the presently commercially available modern-day parts from four multi-national suppliers (element14, RS components, DigiKey and Mouser) and think about the factors which may need to be considered when using non-exact matches.
Disclaimer: I cannot be held responsible for anything you do and any consequences that may arise as a result of reading and using or misusing this information. The information provided may not be entirely free of errors – it is your responsibility to verify with manufacturer datasheets as to exact specifications and potential compatibility issues. The information presented is based upon a consideration of the specifications, but changes in specifications and individual circumstances may affect the applicability of the advice. The information supplied is accurate to the best of my (limited) knowledge.
Often such considerations come about when there are newer versions of firmware, sometimes modified or homebrewed to extend the capability of older machines, which you might want to try out. When it comes to older devices, there could be several good reasons to replace the chip rather than just erase a PROM and reprogram it. This may be because:
- It’s electrically failed and cannot be used anymore, but you have a backup.
- It has a known-working software on it, and you don’t want to risk any corruption from backing it up, erasing and rewriting.
- It became damaged because of mechanical damage while extracting, over-erasure or age and could not be reprogrammed correctly.
- It is a special chip with a significant label or marking which is especially worth keeping intact.
- It is a type of chip which you can’t find appropriate programmer support for.
- You don’t have an EPROM eraser and you don’t intend to buy one, or the chip was originally an OTP ROM and thus cannot be reprogrammed.
In such cases, it might make sense to seek or produce compatible replacement devices, so as to be able to have a new “plug-in” replacement.
Replacement Considerations and Strategies
In order to find an appropriate replacement, it’s often necessary to know everything there is to know about the original chip. The most important information are the manufacturer (often identified in a logo), the part number, the speed grade and the package. From this, you can look up a data sheet to verify its size, features, voltage and pin-out arrangements. A decision can be made on how to go about purchasing a replacement or producing one.
Earlier PROMs prior to JEDEC standardization typically had very cryptic, manufacturer specific model numbers with varying pin-outs depending on the manufacturer. These chips are likely to have problems with programmer support, and will inevitably be difficult to replace “like-for-like”. The strategy for these may be to find a modern (or modern-ish) equivalent which has good programmer support with similar features and make your own wiring “adapter” to rearrange the pin-out for the device.
Chips since JEDEC standardization are more “sane” and typically have a few letters prefix for the manufacturer, a series code (e.g. commonly seen “27C”), a capacity indication (512 for 512kbit/8-bit, 010 for 1024kbit/8bit or 1024 for 1024kbit/16bit), and a speed grade (-70 for 70ns, -10 for 100ns, -20 for 200ns for example). These typically will have similar performance and programming characteristics even across the vendors and are more cross-vendor compatible as well. Some of these are still available as OTP EPROMs in plastic packages with no window – so you have one chance to get it right.
With different series codes, they normally indicate different alternate technologies (e.g. 28C EEPROMs, 39C Flash) with subtly different pin-outs which may or may not be directly drop-in replaceable for read-only applications. Consulting the datasheet is probably necessary, but with eraseable parts, data retention is typically 10-100 years, whereas OTP ROMs may be more longlived.
Other parts sometimes aren’t marked with their actual part number and instead have a branding marking on them, or the firmware version. Without being able to confirm the type from other sources, or by examining the PCB, I wouldn’t advise playing with these parts in case selecting a typical type for that particular package results in the wrong pin-out selection causing damage to the chip and its contents.
Older chips often had slower cycle times, with speed grades of -10, -15, -20, -25 not uncommon. Luckily, it is unlikely to be a big problem if they are replaced with much faster -45, -55, -70, -90 parts, as the chips are asynchronous and the cycle time just represents the amount of delay from putting in a valid address to receiving the correct data output. Using a faster chip than is necessary just means the data will come out on the outputs faster and stay there until a new address is fed in. If the device isn’t optimized for the timing, there is no performance benefit, but at the same time, it’s unlikely to cause problems.
Where the price is the same, it’s often better to buy the faster part just so if you were to reuse it, as you may be reusing it in a device that demands a faster cycle time.
Because of a trend towards lower voltages in newer electronics, you will find parts with seemingly similar specs and part numbers which only differ by a letter. This letter could spell disaster, as some of these parts are commonly available for 3.3v operation rather than 5v as often used by older TTL/CMOS computer parts.
In Atmel devices, the presence of LV indicates a 3.3v part, but the presence of BV indicates a dual-voltage part which can operate on 3.3v and 5v. Parts marked with C are 5v parts. SST/Greenliant parts use L or V to denote 3.3v parts, with S denoting 5v parts. AMIC parts have an L in the numeric portion to indicate 3.3v parts. ISSI/Macronix use LV to indicate 3.3v parts.
Where traditional 27C parts are used, the voltage is pretty much guaranteed to be 5v, thus only a corresponding C or BV (Atmel) or S (SST/Greenliant) part can be used to replace it.
Packages and Pin-Outs
Older packages pre-JEDEC standardization have different pin-outs, thus looking up the pin-out from the datasheet may allow for an adapter to be made provided the features match up (e.g. latching of address and data on de-asserted /CE, tri-state outputs going High-Z on de-asserted /OE).
Post-JEDEC standardized parts have very much identical pin-outs for the same series of devices, with slight differences between series. Devices of the same packaging style generally share the same pin-out, with different capacities allocating some NC pins to further addresses. If replacing a PROM/OTP PROM with an EEPROM for example, an AT27C256R with an AT28C256:
We can see that the EEPROM uses Vpp pin for A14 (address bit 14), and trades A14 for /WE. Some work is necessary to lift the A14 pin from the chip, tie /WE to VCC externally (e.g. air-wire, as it will not be written in-system) and connect A14 input (pin 1) to the A14 output (pin 27) on the socket (e.g. another air-wire). For PLCC, the other consideration is that some pins are not-connected, and others are do not connect, so care might need to be taken to break off the DC pins in case they are connected on the receiving PCB.
In other types of replacement, say an PROM/OTP PROM with a Flash chip, for example, the AT27C010 with an SST-29SF040:
We can see this combination is unlikely to need any modification at all – the pins are all routed to their logical equivalents, where Vpp is left not connected and /PGM is connected to /WE which both serve similar purposes. As a result, it’s good to check the datasheet in case of any doubt, and potentially look at different classes of replacement devices.
Devices are commonly available in the PDIP and PLCC form factor, with the DIP easiest to solder and work with. Sometimes, your preferred device may come in PLCC only, although an adapter (e.g. the ones used with programmers) can be used if the space permits, although verification of the pin-out may be necessary.
Inevitably, you will probably come across a need for smaller devices than those available, or maybe you want to reduce your inventory on each particular pin-out style and were wondering whether it is possible to substitute a larger device in place of a smaller one (and just waste the additional space).
Indeed, this can be a possibility, but depending on how the recipient PCB treats the NC pins on the smaller part (which often become address bits on a larger device), some modification will probably be required.
If we take the SST39SF010A and SST39SF040 in the DIP package, we can see the only difference between the 1Mbit and 4Mbit package is the use of Pin 1 as A18, Pin 30 as A17, ultimately adding two high order bits to the address which multiplies the addressable space by 4 (as we expect).
If the recipient PCB was designed for the 1Mbit part and leaves Pin 1 and Pin 30 disconnected, then they will float which means that they might have an undefined logic state resulting in unusual operation or instability especially in the presence of electrical noise. Modifications will be needed to tie this to a particular logic level to select which 1Mbit slice of the 4Mbit device will be used.
If these pins were grounded by the recipient PCB, then these high order bits will take a logical 0, thus fixing the higher two bits of the address to zero, meaning that you can just drop it in after programming it as normal, and the device will only access the first 1/4 of the device.
Of course, if you have multiple ROMs you’d like to switch, you can take advantage of this as it acts as a “virtual partitioning scheme”. By wiring out the two high order bits to some switches, you can now choose four 1Mbit slices (00, 01, 10, 11 for the high order bits). When programming, you have each ROM programmed sequentially one after another. Of course, the same principle can be scaled down to smaller devices as well.
Because of performance or bus width requirements of some devices, 16-bit width devices may be required. As 16-bit reprogrammable parallel devices can be hard to find, some handywork might be necessary.
Two eight-bit width devices of half the size can be used to replace a 16-bit device as long as all the inputs (Vcc, GND, /CE, /OE, /WE) and all the address lines (A*) are connected together, and the bus supports driving a load of two chips. The output of one of the chips will be the low-order byte, and the other chip will have the high-order byte.
Modification to the ROM file will be necessary to split every odd/even byte into a separate file, and the order in which the ROMs are installed will be important otherwise you get a byte-swap.
New, New-Old-Stock, or Used?
I suppose this is where it gets tricky. How you choose to source your part will come down to what you would like. Buying new parts will ensure they are clean, free of damage, and are likely to be as reliable as they can be. Sometimes they will be more expensive as a result, and it will be more difficult to find the exact replacement part you need.
New-old-stock is very murky, as some sellers claiming to sell NOS are actually selling recycled pulls, some of which may be tested and erased, others untested with bent pins, cosmetic damage and adhesive gunk. Sometimes the price will be very good, and you will find an exact replacement part, thus making it easy and potentially safer (compared to a botched modification). If you’re more advanced, you might not mind this, especially if you can afford to get a few units.
Used parts are definitely pulls, and have the same caveats as above, but are probably coming from honest sellers. Many of the products which can only be found used may be early generation devices which you may not be able to program with modern programmers, so while it may be pin-compatible, it may not be actually “useful”. Sometimes these rarer parts are priced very highly due to their gold content and their exquisite appearances, thus it may make sense to consider modification especially where functionality and not appearance is the aim.
Replacement with different parts should be considered, especially if a reprogrammable part meets the timing requirements at a reasonable cost, as that could pay itself back if you end up making a mistake or you want to trial several variations of a ROM before settling on one.
Modern-Day Parts and Pricing
This part started off with my thoughts of buying new EPROMs with windows to photograph. Sadly, CERDIPs have been long out of supply and probably production, but I then wondered, if one wanted to purchase new parts, what options did they have? It seems the trend towards serial low-pin-count type devices, surface mount technology and lower voltage operation means that the number of inter-compatible and potentially inter-operable new devices is becoming more limited as time progresses. Still, it was worth a shot just to understand what parts are available and what the rough pricing would be.
All the following tables were sourced from AU$ pricing on element14, RS components, DigiKey and Mouser as of 23rd April 2016. Products were chosen based on having published pricing available for single quantities with single prices being quoted. Products were also chosen in PDIP/PLCC packaging with parallel asynchronous interface which is most applicable for prototyping and vintage computing use. The tables are rendered as an image, because it is otherwise problematic to format correctly for HTML.
OTP EPROMs are pretty much exclusively available from Atmel now, as most other manufacturers have long discontinued production and their inventory has sold out. As a result, it seems that OTP EPROMs may be at risk of becoming more expensive or extinct. The OTP EPROMs on the market are suitable for direct replacement of many 27C parts, for a one-shot program and replace. Generally parts in the PDIP28/PLCC32 up to PDIP40/PLCC44 are available with 16-bit devices still available and a range of speeds. Curiously, faster speeds do not cost more, so it’s probably wise to opt for them. The best prices were available from DigiKey, although it’s important to remember that free shipping is normal for all RS online orders. For element14, free delivery starts at AU$45, for Mouser at AU$65 and for DigiKey at AU$200, so it only makes sense if you’re making a large order. Unfortunately smaller devices in PDIP24 forms are not available anymore, so modification or sourcing used stock may be necessary. The prices are generally inexpensive, the cheapest 8Mbit chips are still under AU$10.
EEPROMs can be erased and reprogrammed numerous times. These devices are slower than modern OTP EPROMs, but are probably still faster than the older EPROMs they can replace. These are likely to need modifications because of address pin reallocation – check the datasheet. They generally cover the smaller end of the devices 64-1024kbits, but the prices are accordingly more expensive. A common 256kbit device is AU$10.37, whereas a 1Mbit device is an exorbitant AU$44.66. This is with the exception of the Greenliant chips which Mouser seems to have priced quite competitively. All of the devices are 8-bit width, and a majority are PLCC packaged.
Flash can also be reprogrammed like EEPROMs but internally have a different structure and are a lot more complex. However, it seems that some devices can be exchanged directly without modification in read-only applications, however, Flash mainly covers the larger devices (512kbit to 4096kbit) category. All devices are 8-bit width, and choice of packages are relatively limited with most parts being PLCC32 and many parts being 3.3v parts. Because of this, the cheapest 5v capable part in each capacity+package+speed grade is highlighted. Prices are, however, quite a bit cheaper as this technology is more recent and still in production by multiple vendors. However, as a whole, parallel interface chips are on the decline.
In this post, I did a lot of shopping around and looking at datasheets to work out just what might be possible when it comes to replacing PROMs with more modern devices. As newer surface mount technologies are in vogue, lower voltage devices are common, and serial interfaces with reduced pin counts are popular, parallel devices are slowly becoming more difficult to find. Ceramic DIPs, and hence the UV EPROM, have been extinct for a while owing to their higher cost, reducing demand, thus the closest relatives to them are the OTP EPROM. This is currently still available in a wide range to cover 256 to 8192kbits in both 8 and 16-bit bus widths but only from one manufacturer (Atmel) as of 2016.
Replacement with EEPROMs may be possible with modifications, although EEPROMs are much more costly and slower than modern EPROMs. They are still fast enough for many applications and have the benefits of being reprogrammable, although they mostly available in PLCC32 form only.
Flash devices could be used, with direct replacement a possibility, although many devices are 3.3v only, and most devices are packaged as PLCC32 chips. They are reprogrammable, and are much cheaper, however, they mostly cover the larger end of the market from 512 to 4096kbits.
Purchasing used or new-old-stock may allow you to find directly compatible parts, but one has to beware that sometimes they may be untested, not erased, or be so old that they are not compatible with modern programmers. It can be more risky, and sometimes more pricey especially for chips which are scarce or have high gold content. New parts, conversely, have the best reliability but may be more expensive than some surplus clearance items.
Like-for-like replacement can be difficult, but if you use JEDEC standardized parts, and use an equivalent or better speed grade, cross vendor compatibility should not be a major problems. It seems that other issues such as size mismatch, bus-width mismatch or pin-out mismatch can be worked on if you spare the time to build your own adapters and carefully read the datasheets.