You are on page 1of 7

EPROM programmer

an affordable byte-writer
Design by A. Rijfkogel The design of the versatile EPROM programmer described in this article which was among the winning entries of our 1996/97 Software for Electronics Competition. Since then, a suitable circuit board has been designed, and the software was tweaked here and there in cooperation with the author. The result is a circuit which may be connected to the printer port on any modern PC, and enables the DIL versions of the popular EPROM series 27(C)64, 27(C)128, 27(C)256 and 27(C)512 to be programmed.

Main specifications Despite rapid developments in competing technologies, EPROMs are still widely used in computer and microprocessor systems. EPROMs allow data and programs to be stored in a quasi-permanent memory for at least ten years. After being

programmed, the memory may be read out as if it were a mask-programmed ROM. If the code in the EPROM needs to be modified or updated, for example, to add new features to a system, the device may be erased by exposing it to intense ultra-violet light for half an hour or so. Next, the EPROM may be re-programmed. Programming systems for EPROMs are commercially available. In addition to the programming hardware, these units often contain an editor which allows the contents of the EPROM to be modified. Unfortunately, the cost of such a readymade system often exceeds the budget of individual hobbyists and even that of small companies. Fortunately, there is an alternative way to tackle EPROM programming and editing. The programmer described in this article enables anyone with reasonable construction skills to build his/her own system. Any reasonably up-to-date PC of the 486 or Pentium class should have an advanced bidirectional printer port which may be programmed to function as an EPP (Enhanced Parallel Port) or ECP (Enhanced Communication Port). Thanks to the enhanced printer port, which has been supplied as a standard feature on PCs produced during the past few years, bidirectional communication is possible, allowing a PC to drive external hardware in a simple and efficient way. The software developed for the programmer employs the EPP on your PC, and runs under Windows 3.1, Windows 3.11 or Windows 95. In addition to the relevant programming algorithms, the software also comprises an editor for text as well as data. ABOUT EPROMS An EPROM (Erasable Programmable Read Only Memory) is a memory component which allows digital information to be stored quasi-permanently with the aid of a programming algorithm and a programming voltage. The timing diagram pertaining to the elementary structure of an intelligent programming routine as used to 'burn' an EPROM is shown in Figure 1. First, the desired address is placed on the address bus, and the programming voltage, Vpp (12.5 V), is switched on. Next, the data to be programmed is placed on the data bus. The actual programming is started by applying a 1-ms pulse to the /E (enable) input of the EPROM. Next, the data are read back from the EPROM (/OE and /E active), and compared against the data to be programmed. If the two datawords are different, another 1-ms pulse is applied to the device. This procedure may be repeated up to 20 times. When the EPROM has copied the data correctly, a series of additional programming pulses is given. The number of additional pulses is equal to that applied before (see also the flow diagram in Figure 2). Figure 1. This timing diagram shows the order in which various signals and voltages have to be applied for an EPROM to be loaded with data. Figure 2. Flow diagram showing an algorithm which allows EPROMs to be

programmed intelligently. Several variants exist of this basic programming method. Some manufacturers, for example, use a supply voltage of 6V instead of 5V during programming, while others recommend a maximum of 25 1-ms pulses. Still other variants employ a programming pulse with a length of 0.1ms. In practice, the programming algorithm appears to be less critical than suggested by the manufacturers, although, of course, proper operation of an EPROM is only guaranteed if the maker's particular variant of the programming algorithms has been applied in the strictest way! In practice, things are not as strict as suggested by the datasheets: for example, even the older 50-ms types may often be programmed successfully using 1-ms pulses. In any case, they are not damaged. The most important difference between intelligent and conventional programming algorithms is the length of the programming pulse. With 'older' EPROMs, a pulse with a fixed length of 50ms was generated to ensure that the data was stored properly in the chip. Later, as EPROMs got a much larger storage capacity, intelligent programming algorithms appeared on the scene, allowing the programming time to be cut drastically. CIRCUIT DESCRIPTION The circuit diagram of the EPROM programmer is shown in Figure 3. The 8243 is a chip not used before in Elektor Electronics circuits. The 8243 (from Intel) is an Input/Output Expander designed for the MCS-48 family of microcontrollers. The chip, whose internal diagram is shown in Figure 4, offers four 4-bit I/O ports. Four 2bit port control commands are available: read, write, ORLD and ANLD. The coding of these commands and the addresses they affect are listed in Table 1. Figure 3. Circuit diagram of the EPROM programmer. This byte-writer is designed for connection to an EPP-mode printer port as available on most modern PCs. Figure 4. Architecture of Intel's 8243 input/output expander. Tabelle 1. 8243 command and address encoding Because P23 is connected to ground, the registers contained in IC1 may only be read and written. The logic-operator commands, ORLD and ANLD, are not used either. The /INIT line of the Centronics bus selects between reading and writing, while /strobe and /autofeed are responsible for the register selections. Port inputs P20 through P23 have a double function. The functional mode is determined by the level at the PROG input. The instruction code and the port address are stored in the chip on the high-to-low transition of the level applied to the PROG input. A low-tohigh transition at this pin causes data applied to pinsP20 through P23 to be copied. With a read instruction, the command applied to pins P20 through P23 is latched

internally, and then executed. The selected output port (P4, P5, P6 or P7) goes tristate, and reads the data applied to the pins. These data re-appear at pins P20 through P23, which are programmed to act as outputs (and no longer as inputs) while PROG is held low. The read command is terminated by a low-to-high transition at the PROG input. At any time, only three bits are used of the four ports P4, P5, P6 and P7. These port outputs carry out different tasks in the circuit -- more about them further on. Buffers IC2, IC3 and IC4 are connected to the printer port via the data inputs. Because changing the data direction of IC2 may involve a short delay, and is not guaranteed when the supply is switched on, eight 100-Ohm resistors are connected in series with the Apins of this IC. The data inputs have pull-up resistors. Address buffers IC3 and IC4 are used to store the EPROM address. IC2 buffers the 8-bit wide data exchanged between the programmer and the PC. The buffer outputs are connected directly to the EPROM to be programmed. The storing of address information is controlled by drive signals at port pinsP70 and P71, while the direction control is handled by I/O line (output) P40. Furthermore, P40 controls the enabling of the /OE signal (read/write) for the EPROM. The enabling of IC2 is carried out by means of port line P41. The 1-ms programming pulse is generated by IC6a, an integrated monostable multivibrator. This IC is set to non-retriggerable mode (/Q connected to-T) using a monotime of 1ms. Via the /ACK line, the computer checks if the monotime has elapsed. The start pulse which ensures the generation of the programming pulse originates from pinP62 of IC1. The other two inputs of port 6, P60 and P61, determine the voltage level (GND, Vcc or 12.5V) to be applied to pin 22 of the EPROM. The actual switching over is handled by open-collector buffers in IC7, transistors T1 and T2, and a number of resistors. The last section of the circuit to be discussed here is the power supply. It is based on an inexpensive mains adapter with a nominal direct output voltage of 12V. In practice, such an adapter will easily supply 15V. Diode D3 acts as a polarity reversal protection, while IC9, an LM317, drops the voltage to a stabilized 12.5V. Next, IC8 steps the voltage down to 5V for the logic ICs. New ports, new ways BUILDING THE PROGRAMMER The artwork of the double-sided through-plated printed circuit board designed for the EPROM programmer is shown in Figure 5. The size of the board is such that it may be fitted in an ABS enclosure type HP-BC from PacTec. The four moulded pillars in the corners of the case have to be cut off almost entirely, so that the board can be 'sunk' into the case. A small part of the moulded pillars has to be left intact. If not, the screws used to fix the cover can not be secured properly. Figure 5. Copper track layout (two sides) and component mounting plan. At the

centre of the board is a ZIF socket which accepts the EPROM to be programmed. Because of the recessed mounting of the board, Centronics connector K1 is neatly positioned in the centre of the side panel. Next, mount the connector and the PCB terminal block (K2) on the board, and cut the required clearances in the case. The clearance for K1 should enable the connector to protrude. For K2, drill two small holes through which the supply wires are passed. Fit all the parts on to the board, but none of the ICs, except IC8 and IC9. Connect the mains adapter, and check that there is a voltage of at least 15V across C10. Next, measure the voltage across C9 (this should be 12.5V), and that across C7 (5V). These two voltages should be accurate within 0.25V. If necessary, the voltage of 12.5V may be changed a little by changing the value of R24. If the voltages are correct, you may fit the ICs on the board, except, of course, the EPROM to be programmed. Use a Centronics extension cable (1 x D25 plug, 1 x D25 socket) to connect the EPROM programmer to the LPT1 port on your PC. LPT1 should be the port with base address 378H.

Figure 6. Screendump of the Windows application software used with this project. The software operates under Windows 3.1, 3.11 and 95. THE CONTROL SOFTWARE

The control software written for the EPROM programmer may be found on the CDROM called Electronics Software 96-97, in the subdirectory NL\01. The actual name of the control software is prommer.exe, and the CD-ROM may be obtained from the Publishers under order code 976003-1 (see Readers Services page). Before you use the software, make sure that the BIOS reports SPP/EPP mode or EPP mode enabled for the parallel port at 378H. If necessary, change to SPP/EPP using the computer's BIOS setup program. On older computers, the mode may not be available, in which case you have to buy a separate EPP printer port insertion card. Next, copy the program prommer.exe from the CD-ROM to a suitably named subdirectory on the hard disk, and launch it in the usual way. The software first checks for the presence of the hardware. To verify the presence and proper functioning of the interface, the software first sends a short pulse to the Centronics port, via IC1 (the 8243) and resistor R10. If the programmer board is not detected, an error report appears ('no hardware'). If everything is all right, the message 'bidirectional mode' appears. This means that the circuit is ready for use. The message 'bidirectional mode' is used because software is also suitable for an unidirectional version of programmer which uses modified hardware. The circuit diagram of this version may be found on the Competition CDROM, along with the copper track layout of the associated printed circuit board (not available ready-made through our Readers Services). (970010)

Figure 7. Our prototype of the EPROM programmer. Figure 8. Pin-outs of the 27(C)64, 27(C)128, 27(C)256 and 27(C)512 EPROMs. COMPONENTS LIST Track layout (component side) Track layout (copper side)