The M27C2001 is a type of EPROM (Erasable Programmable Read-Only Memory) chip widely used in vintage computing and embedded systems. It has a storage capacity of 2 megabits (256 KB) and can be used for storing firmware, bootloaders, and other critical programs. EPROMs like the M27C2001 were common in earlier computing systems and are still in demand for retro computing enthusiasts and hobbyists working with old hardware. This article will guide you through building a DIY EPROM programmer using the M27C2001 and some additional components.
What is the M27C2001?
The M27C2001 is a UV-erasable EPROM chip designed for storing data that does not frequently change. It requires a UV light for erasing the stored information, and a dedicated programmer for writing new data to it. Here's a brief overview of its specifications:
· Capacity: 2 megabits (256 KB) of data storage.
· Package: DIP-32 (Dual Inline Package) for easy integration on a breadboard or PCB.
· Programming Voltage: Requires a high programming voltage, typically around 12.5V.
· Access Time: Usually 70-200 ns, which is sufficient for most retro computing applications.
· UV Erasable: The chip can be erased using UV light, making it reusable.
DIY Project Overview: Building an EPROM Programmer
In this project, we will build a DIY EPROM programmer capable of programming the M27C2001. The programmer will interface with a computer via a USB or serial connection, allowing you to upload binary files to the EPROM. This project is perfect for anyone interested in retro computing or working with vintage hardware.
Materials Needed
Before starting the project, gather the following components:
1. M27C2001 EPROM Chip: The central component of this project.
2. Microcontroller (e.g., Arduino Mega): To control the programming process.
3. USB-to-Serial Adapter: For connecting the programmer to a PC.
4. Voltage Regulator (LM317): To generate the high programming voltage (12.5V) required by the M27C2001.
5. Transistors (NPN): For switching and controlling the voltage lines.
6. Capacitors: 100μF, 0.1μF (for filtering and voltage regulation).
7. Resistors: Various values (1kΩ, 10kΩ, etc.) for pull-up/pull-down and voltage divider circuits.
8. Perfboard or PCB: For assembling the components.
9. Jumper Wires: For making connections.
10. UV Eraser: Required to erase the EPROM (only needed if you want to reuse the chip).
Understanding the Circuit Design
To build a functioning EPROM programmer, you need to control the address, data, and control lines of the M27C2001. The microcontroller serves as the interface between the PC and the EPROM, handling the timing and voltage requirements during programming.
Block Diagram Overview
1. Microcontroller (Arduino Mega): Controls the address, data, and control signals to the EPROM.
2. Voltage Regulator Circuit (LM317): Generates the required programming voltage (12.5V) and operating voltage (5V).
3. USB-to-Serial Adapter: Allows the programmer to interface with the PC for uploading binary files.
4. EPROM (M27C2001): The target device for programming.
5. Transistor Switching Circuit: Controls the application of programming voltage to the EPROM.
Step-by-Step Assembly Guide
Step 1: Setting Up the Microcontroller
Start by connecting the Arduino Mega to your breadboard or perfboard. The Arduino Mega has plenty of I/O pins, which are necessary for controlling the address and data lines of the EPROM. You’ll need to control 15 address lines (A0-A14), 8 data lines (D0-D7), and a few control signals like OE (Output Enable), CE (Chip Enable), and PGM (Program Enable).
· Connect the address lines A0-A14 from the Arduino to the corresponding address pins on the EPROM.
· Connect the data lines D0-D7 from the Arduino to the EPROM’s data pins.
· Connect control signals (OE, CE, and PGM) from the Arduino to the respective EPROM pins.
Step 2: Building the Voltage Regulation Circuit
The M27C2001 requires 12.5V for programming. Since most microcontrollers, like the Arduino, operate at 5V, we need a voltage regulator (LM317) to generate this programming voltage.
· Components: LM317 voltage regulator, resistors (variable for tuning), capacitors (for filtering).
· Connections:
· Connect the LM317’s input to a 12V DC power supply.
· Use a voltage divider network to set the output voltage to 12.5V.
· Attach a capacitor across the input and output for stability.
Step 3: Integrating the Transistor Switching Circuit
To safely apply and remove the 12.5V programming voltage to the EPROM, you need to use transistors as switches. The microcontroller will control these transistors to toggle the programming voltage when needed.
· Use NPN transistors to control the 12.5V line connected to the PGM pin of the EPROM.
· The base of each transistor should be connected to the Arduino through a current-limiting resistor.
· Ensure proper connections from the collector to the programming voltage and from the emitter to the EPROM.
Step 4: Connecting the USB-to-Serial Adapter
To upload the binary files from your PC to the EPROM, you need a USB-to-serial adapter. Connect the adapter to the Arduino Mega’s TX and RX pins. This connection allows the PC software to communicate with the Arduino and control the programming process.
· Connect the TX of the USB-to-serial adapter to the RX of the Arduino, and vice versa.
· Ensure the ground connection is shared between the adapter and the Arduino.
Programming the Microcontroller
The Arduino Mega needs a program to manage the data transfer from the PC to the EPROM. This code will read the binary file data sent over the serial connection and transfer it bit by bit to the EPROM.
Here’s a simplified outline of the code:
1. Initialize Address and Data Lines: Set the Arduino pins corresponding to the address and data lines as outputs.
2. Serial Communication Setup: Initialize the serial communication with the PC.
3. Data Transfer Loop:
· Read binary data from the PC.
· Set address lines and data lines accordingly.
· Toggle the control lines (CE, OE, and PGM) to write data to the EPROM.
This code ensures that the binary data from the PC is accurately programmed onto the EPROM. You can expand the code further to verify data integrity by reading back and comparing the programmed data.
Testing the Programmer
Once the circuit is built and the code is uploaded to the Arduino Mega, it’s time to test the EPROM programmer:
1. Connect the Programmer: Attach the USB-to-serial adapter to your PC and power the Arduino.
2. Upload a Binary File: Use a serial terminal program or a custom application to send a binary file to the Arduino. The microcontroller will receive the data and write it to the EPROM.
3. Verification: Once the programming is complete, you can verify the data by reading it back and comparing it with the original file.
If the EPROM doesn’t program correctly, check the voltage levels, connections, and the timing of control signals. The M27C2001 requires precise voltage and timing control during programming, so any discrepancy can result in programming errors.
Erasing the EPROM
If you want to reuse the M27C2001 EPROM, you’ll need to erase it using UV light. EPROM erasers are available commercially, or you can build your own using a UV lamp. Expose the EPROM window to UV light for about 15-30 minutes to erase the data completely.
Enhancements and Expansions
Once you’ve built a basic EPROM programmer, you can expand and improve it in several ways:
1. Support for Multiple EPROM Types: Modify the circuit and code to support other types of EPROMs with different voltage and pin configurations.
2. Automated Verification: Add code to the Arduino program to automatically verify the programmed data against the source file.
3. Graphical User Interface (GUI): Develop a PC application with a user-friendly interface for selecting binary files, programming the EPROM, and displaying programming status and errors.
4. Battery-Powered Version: Make the programmer portable by adding a battery and boosting the circuit to provide the necessary programming voltages.
Conclusion
Building a DIY EPROM programmer using the M27C2001 is an excellent project for retro computing enthusiasts and electronics hobbyists. This project teaches essential skills in microcontroller programming, voltage regulation, and interfacing with memory chips. By experimenting with the M27C2001 and other EPROMs, you gain a deeper understanding of vintage computing and hardware programming techniques.
With a functional EPROM programmer, you can revive old computers, work on custom firmware projects, and explore other retro electronics. The skills and knowledge gained from this project can also be applied to more modern memory programming techniques, bridging the gap between vintage and contemporary electronics
Comments
participate in discussions
Please login ? to participate in the comments
New customer Start here.