Flash memories have been around long enough so that the original parts have gone obsolete. And while larger flashes could be used to replace older flashes, there are frequently differences in operating voltages, packaging, and programming algorithms which make this impractical.
Tekmos has gotten around these issues by designing an ASIC to serve as an interface between the outside system and the newer flash. Tekmos then combines the flash and our ASIC in a single package using stacked die assembly techniques. This produces as drop-in replacement for the original part that can be manufactured in any quantity.
Many older flash memories ran off of 5 volts. As the technology advanced, they switched to a 3 volt supply, but had 5 volt interfaces. Once the technology passed 130 nm, the parts became 3 volt only. To replace these parts, the Tekmos ASIC provides level translators and an internal voltage regulator.
The level translators provide the 5 volt to 3 volt translation on the address and control lines, and a bidirectional translation for the data bus. Level translators work well, but they require time to work. This time is on the order of 8 ns, and since we need to have translators on both the address and data lines, this will add about 16 ns to the Flash access time. And that sets a lower bound on how fast of a Flash we can replace. Using 55 ns flash, we produce a part that can be no faster than about 75 ns. This number will increase if we have to include additional circuitry to mimic other flash functions.
The ASIC also has to provide a 3.3 volt power supply for the flash. Flash memories have unusual power supply requirements. When they are being programmed, the supply current increases from idle to maximum in a few nanoseconds. This can be faster than a traditional voltage regulator can respond to. If that is the case, the power supply can droop, which could cause the flash to abort its write cycle, and then reduce the current draw. We address this by having a very high response speed voltage regulator which we designed. The price we pay for a quick response regulator is a limited input voltage range. Fortunately, most flash memories have a 10% tolerance on the input supply, which is well within the range of our regulator.
There are two main algorithms used to program Flash memories. These are the Intel / Micron algorithm and the Spansion / Fujitsu algorithm. In addition, really old Flash memories did not have an unlock algorithm. Instead, they used the presence of a programming voltage to initiate programming.
The best solution is to use a modern flash that has the same programming algorithm. We can tie off the upper address lines, and have a good match.
For the older chips, such as the 28F010, there are no existing Flash memories with the same programming algorithm. In those cases, we have to detect the programming cycle, and generate our own program sequence. The downside of this is that the additional circuitry in the address and data paths adds another 5 to 10 ns to the access time. Fortunately, many of the older Flash memories were slower, and so we have the margin. One possible problem with this approach is that if the programmer removes the voltage from our part at the end of the programming cycle, and our internal circuitry has not finished writing or erasing the past, then the write / erase operation can fail.
It is desirable that the sector architecture of the new part match, or at least be compatible with the sectors used in the old part. We may be able to use address mapping to match the sector sizes. For example, a 64 KB sector could be used to replace a 32 KB sector. Typically, the newer Flash memories are larger, and that allows us flexibility in mapping the sectors. Note that the presence of sector mapping circuitry will add another 5 ns to the access time.
The really older flashes used the presence of a programming voltage (typically about 12 volts) to trigger a write / erase cycle. They also used this high voltage on pin A9 to read the manufacturer's ID. This high voltage poses a problem for our ASICs, which can be damaged by voltages in excess of 5.5 volts. Our solution is to use a series resistor to limit the voltage on the chip, and then use a lateral PNP transistor to detect the presence of the programming voltage.
In some cases we must have our chip provide the original manufactures codes for part number and ID in order to maintain software compatibility. This can be done by intercepting the request, and taking over the data bus. Then we can provide whatever information is required.
Tekmos makes 5 flash replacements. These are the TK17LV040 FPGA serial programming memory, and the TK28F256, TK28F512, TK28F010, and TK28F020 parallel flashes. We have other sizes under development.
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.