A Device programmer, alias Chip programmer, Circuit programmer, IC programmer, or just EPROM burner, is a unit of hardware used for transferring data into programmable integrated circuits (i.e., to program nonvolatile memory), such as ROMs, EPROMs, EEPROMs, Flash Memory, GALs, PALs, PLDs, CPLDs, FPGAs, microcontrollers, and other electrically programmable devices. The programmable device is inserted into a socket on the device programmer, and its memory buffer content is transferred into the programmable device. Programmer kinds for device programmers can be a stand-alone workstation, computer-controlled, or production unit.
There are 4 common types of device programmers:
Some sources also single out (according to the device capabilities) such devices:
Early device programmers ranged the size of a shoebox and weighed several kg; some of them are still produced and find their purchasers. Present-day device programmers weigh only several hundred grams and fit in a jacket pocket. The perfect programmer integrates the advantages of a universal pocket programmer with the ability to connect several programmers to a gang programming cascade to the same PC.
Anyone who tests, repairs, or programs any electronic device that uses a memory IC (embedded code). The market for this type of equipment has grown at a large rate over the past few years and continues to grow.
What Devices are Supported and How Many?Devices supported by device programmers can be of numerous types. These include Complementary Metal Oxide Semiconductor (CMOS), Programmable Read-Only Memory (PROM), Bipolar Programmable Read-Only Memory (BPROM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), FLASH, Programmable Logic Device (PLD), Erasable Programmable Logic Device (EPLD), Complex PLD, Programmable Array Logic (PAL), Generic Array Logic (GAL), microcontrollers, and PIC series of microcontrollers. More than 6000 various programmable devices exist. Some of them are produced by a range of manufacturers, which results in about 10.000 different device names. None-the-less, programmer producers advertise with 40.000, 50.000, or even more than 60.000 supported devices - How is that possible? |
![]() |
The answer is easy: the same device is just counted a lot of times, e.g., GAL16V8 from Lattice appears up to 400(!) times in the device list of an East European programmer manufacturer. Often non-existing packages are also routinely added to the lists, such as DIL versions of devices that are not manufactured in DIL packages.
That’s why the advertised number of devices has little meaning for device programmer comparison. For better transparency, such manufacturers as EE Tools publish several device numbers for the device support list:
The device numbers advertised by programmer manufacturers are usually based on the "by variants" count, while the real number of supported algorithms is kept secret. All claim nevertheless on their websites to offer the only honest device number and lash out against the counting methods of their competitors. So it's not simple to see how many devices are really supported.
A pin driver is an electronic circuit that controls a single socket pin. It provides logic levels, programming voltages, supply voltages, pullup/pulldown resistors, ground, clock, and logical input with adjustable threshold. The pin driver is the most essential factor for a device programmer's reliability, versatility, and speed.
An important feature is low voltage support. The lower the logical output voltage, the more low-voltage devices can be reliably programmed. This becomes especially important with the arrival of low-power circuits from several manufacturers that require voltage levels down to 1.3V.
Internally the pin driver is either a specifically designed integrated circuit or built from separate components such as transistors and resistor networks. Using a special driver IC has many advantages: minimum output capacitance, low ground bounce noise, faster clock rates, better signal forms. High integration also allows the design of small, lightweight, USB- or battery-powered portable programmers.
Important device performance specifications to consider for device programmers include the number of pins, number of sockets, memory buffer, and file format supported. The number of pins is the maximum number of pins supported. The number of sockets is the number of devices that can be programmed in parallel. The memory buffer is the amount of memory embedded in the programmer. It is used to store temporarily the programmer output. File formats that can be supported include Intel Hex, Intel Extended Hex, Intel 32-bit Hex, Motorola S-Record, binary, JEDEC, ASCII, and POF.
Device programmers are often used for series production where a failure would be fatal. But also in development, you really don't want to contemplate whether a failure is caused by a design mistake or just by a poorly programmed PLD! Users rightfully expect a device programmer to be extremely reliable. Carefully designed and manufactured hardware, operation under a wide range of environmental conditions and power supplies, and extensive production tests and burn-in cycles are paramount.
Pin drivers of a reliable programmer should produce a precisely defined signal. They should be protected against electrical damage, designed to detect and survive all sorts of misuse, such as wrongly inserted circuits. If a programmer is equipped with an own microprocessor, it should contain a separate circuit for controlling and monitoring the programming voltages in case of a software fault.
Some device programmers conform with the American requirements of the Federal Communication Commission (FCC) and with the European CE Marking (Conformite Europeene or European Conformity) system, which is helpful for exports to the countries of the European Economic Area (EEA). Operating humidity and operating temperature are important environmental operating conditions to consider.