A simple 64k to 1Mbit ByteWide EPROM Emulator by Stefan Huebner, October 1998 I designed this circuit due to the urgent need for a cheap EPROM emulator completely from components I found on my bench. I do not have the time to write a detailed documentation, so I only describe the main features: - EPROM types that can be emulated: 2764, 27128, 27256, 27512, 27010 - Access time less than 100ns (if built correctly) - Operates with HCMOS, HCTMOS and LS-TTL Target systems - Emulates a standard Centronics-compatible printer at the host computer side. No special upload software is required, only a computer with a Centronics compatible parallel port running an OS able to send binary files without adding control characters - Power monitoring of the target system prevents unwanted current draw from address/data bus drivers of the target as well as the emulator - Low power consumption - without LEDs less than 30mA ! - Power supply either from the target system or from an external, 9 to 15 volts unregulated DC source - positive and negative logic RESET outputs to the target system Brief circuit description ------------------------- The circuit itself is quite simple. On start up, the RUN LED is on and the emulator waits for input data from the parallel port. Parallel data transmission starts with the negative edge of the /STR (/STROBE) signal. U2A gets triggered, latches the parallel input data (U1), pulls the RAM /WE signal to low level and assigns an active BUSY signal to the host. U3A is triggered as well to bring the system into PROGRAM mode (the target data/address drivers are switched into high-Z-state, the data/address path to the RAM is enabled and the RESET signal becomes active). 5us later, BUSY returns to inactive (low) state, the data is written to the RAM by raising /WE and the address counter (U5,6) receive one clock signal. U2B is triggered at this moment, telling the host that the emulator acknowledges the reception of the byte sent. After /ACK returned to inactive (high) state, the host may send the next byte by clocking /STR. As long as the break between two bytes does not exceed 1 second the system remains in PROGRAM mode; a break longer than this one second indicates that the host has finished the data transmission and the emulator is set to RUN mode. To generate a 0.5 sec RESET pulse, the target power must be on AND the emulator must switch to RUN mode. Since the RESET outputs are active during the whole time the emulator is in PROGRAM mode, the target system may remain powered during program upload and allows the emulator to be supplied from the target. In RUN mode, the address counters are set to zero and the data and address drivers to the target are enabled while the internal data/address path is set to high-Z-state. The five-pole switch allows to select the desired EPROM type by simply disabling the higher address lines. I have added a few features to protect the emulator and especially the target system and to prevent unexpected behaviour during program upload and undefined power states. First of all, RESET is hold active during programming to prevent the target from "reading" of the disconnected program memory. Then I built two comparators around a LM358 to enable the data driver to the target only when the target Vcc is higher than 4.5 volts. In my first tests I had the problem that random high bits at the data bus allowed enough current to flow into the target's data bus to raise the voltage at the EPROM socket's Vcc pin above the TTL "high" threshold. With the comparators and the 10mA load (R31) I did not have any problems of this kind anymore. A few of the target socket lines are protected to Vcc via 1k and a 1N4148. I am using the emulator on a MCS51 evaluation board that allows to program EPROMs on-board, so I wanted to protect the emulator against accidently applied EPROM programming voltage. The RESET outputs are boosted with discrete push-pull configurations and protected against short circuits with 47 ohms series resistors. Building this emulator correctly -------------------------------- I have wire-wrapped the prototype on a single evalution board and connected the target system via 1/2 meter of strip cable. This worked with a CMOS controller of the 68xx series running at 4 MHz, but not with NMOS versions even at lower clock rates. I cut the strip cable to a length of 1/4 meter which made the emulator working fine even with a Dallas 80C320 at 14 MHz. What I learned from that is that the shortest possible connection to the target is the most important thing to prevent run-time problems. I tried the same circuit without any cable between the data and address drivers and the target and got the thing running with a controller card that even refuses to work with 120ns EPROMs. If you would like to use the emulator for higher speed applications, I recommend to put the following components on a small separate PCB: U9, U10, U11, U13, U14 and U18. This PCB should be provided with wire-wrap DIP sockets on its bottom size to connect directly to the target system. Eventually you may want to made a sandwich of two PCBs and/or use SMD components to make it small enough to fit in any target's EPROM socket. It's up to you ! The cable used to connect this PCB to the rest of the circuit, preferably a 34 pin strip cable, may then be one meter of length or even longer. Another speed up can be reached by using a faster RAM, for example a standard 8x128k, 15 or 20ns Cache SRAM which should have the same pinout in 99.9%. Maybe you would also like to try even faster bus drivers - ACT devices for U9, 10, 11, 14 and 18 for example. The end... ---------- This circuit can be used in two ways: either to build a simple EPROM emulator in a short time with very standard components or as a kind of inspiration for own ideas. Nothing else. No Nobel Prize, nothing. [Disclaimer] I do not guarantee for anything concerning the circuit. Build and use it at your own risk ! I am not to be made responsible for damages resulting from the use of this circuit nor is it my obligation to help you getting the circuit running. Anyway, if you have any problems you can send me an e-mail and I will try to help you as soon as I have the time to do so. Legal ? ------- You may build this circuit or use the ideas realized herein for your own projects as long as you are doing this for your PRIVATE, for NON-COMMERCIAL or EDUCATIONAL purposes. If you would like to use it for COMMERCIAL purposes, please contact me via e-mail for further details. Reproduction of the schematics for this circuit is only allowed in UNALTERED form together with this text for NON-COMMERCIAL purposes only. This includes private as well as commercial program/schematics collections, CD ROMs, web sites and so on as long as NO FEE is charged for my work. Have fun ! Stefan Huebner, October 26, 1998 Contact: Internet e-mail: webmaster@engcyclopedia.de WWW: www.engcyclopedia.de FAX: +49 40 7220353