FPGARelated.com

PROM

Category: Architecture | Also known as: Programmable Read-Only Memory

A PROM (Programmable Read-Only Memory) is a type of non-volatile memory that is manufactured blank and can be written exactly once by the user, typically by blowing microscopic fusible links or antifuse elements to encode a permanent bit pattern. Once programmed, the contents cannot be erased or altered.

In practice

In early embedded and digital systems design, PROMs were the standard way to store firmware, lookup tables, and microcode without relying on the mask-programmed ROMs that required large production volumes to justify their cost. A developer would burn a PROM using a dedicated programmer (often called a PROM burner or gang programmer), verify the contents, and then solder the device into the target board. Because programming is irreversible, any firmware bug meant discarding the part entirely.

PROMs in their original bipolar fuse form (such as the classic 74S/82S series devices) have largely been displaced in new designs by EPROMs, EEPROMs, and flash memory for reprogrammable storage, though one-time-programmable storage itself remains common -- it survives as OTP flash or OTP ROM regions in many modern MCUs rather than as standalone PROM devices. For example, some STM32 and Microchip PIC variants include dedicated OTP areas used to permanently store calibration constants, chip identity, or security keys; availability varies by specific family and part number, so the datasheet should be consulted.

In FPGA and CPLD contexts, "PROM" is often used historically or commercially to refer to the configuration storage device -- historically a serial or parallel NOR-based PROM -- used to hold the bitstream that programs the device on power-up. Xilinx used the term extensively for its XC17xx and XCFxx configuration PROMs. In that context the word does not imply one-time-programmability; many such devices are actually rewritable flash or EEPROM internally, but the term stuck because of historical usage.

When microprogramming techniques are used (as discussed in "Use Microprogramming to Save Resources and Increase Functionality" and "Use a Simple Microprogram Controller (MPC) to Speed Development of Complex Microprogrammed State Machines"), a PROM or ROM is the natural backing store for the microprogram control store, mapping state or opcode fields to control signals. In that role, even a small 256x8 PROM can implement a surprisingly capable sequencer without any general-purpose CPU.

Frequently asked

What is the difference between a PROM and a ROM?
A mask ROM is programmed during fabrication by the chip manufacturer; changing the contents requires a new mask set and a production run. A PROM ships blank and is programmed once in the field using a programmer tool. Both are non-volatile and, after programming, read-only in normal operation. The PROM trades the mask ROM's low per-unit cost (at volume) for field programmability and no minimum order quantity.
Can a PROM be erased and reprogrammed?
A true fusible-link or antifuse PROM cannot be erased; programming is permanent. Devices that can be erased are called EPROMs (UV-erasable) or EEPROMs/flash (electrically erasable). The word PROM is sometimes used loosely to cover all of these, especially in FPGA configuration contexts, so it is worth checking the datasheet to determine whether a specific part is actually OTP or rewritable.
Where does OTP memory in modern MCUs relate to classic PROMs?
Many modern MCUs include a small OTP region implemented as antifuse or single-write flash cells. This region serves the same purpose as a classic PROM: storing values that must never change after production, such as factory calibration trims, hardware revision codes, or cryptographic root keys. The underlying cell technology differs from bipolar fuse PROMs, but the one-time-write constraint and the use model are the same.
Why are PROMs associated with FPGA configuration?
Most SRAM-based FPGAs lose their configuration on power-down and must be reloaded on every power-up. Historically, a dedicated serial or parallel PROM device held the bitstream and automatically streamed it into the FPGA at reset. Xilinx marketed specific families (XC17xx, XCFxx) as 'configuration PROMs' for this purpose. Despite the name, later generations of these parts used internal flash or EEPROM cells and were reprogrammable, but the 'PROM' label remained in common use.
What programming equipment is needed to program a PROM?
Classic bipolar PROMs require a device programmer that applies above-normal voltages (typically 10 V to 25 V depending on the family) to selectively blow fuse links. Universal programmers from vendors such as Elnec, Xeltek, or BP Microsystems support a wide range of PROM types. OTP regions inside modern MCUs are typically programmed through the same debug or bootloader interface (SWD, JTAG, UART, etc.) used for flash, with the OTP write sequenced by the chip's own programming logic rather than external high voltage.

Differentiators vs similar concepts

PROM vs. EPROM: An EPROM (Erasable PROM) can be erased by exposure to UV light through a quartz window on the package and then reprogrammed, while a true PROM is write-once. PROM vs. EEPROM/Flash: EEPROM and flash memory are electrically erasable and rewritable many times (typically 10,000 to 100,000 erase cycles for flash); true fusible-link or antifuse PROMs allow no erasure (note that "PROM" is sometimes used loosely in FPGA contexts to describe rewritable configuration devices -- see in_practice). PROM vs. mask ROM: A mask ROM is fixed at fabrication by the manufacturer; a PROM is blank at fabrication and programmed once by the end user or manufacturer at assembly time. In FPGA contexts, "PROM" is sometimes used informally to mean any configuration storage device, including rewritable flash parts, which can cause confusion when reading older application notes alongside modern datasheets.