Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] EPROM Programmer to program 2716

Status
Not open for further replies.

vreg

Member level 4
Joined
Oct 16, 2012
Messages
70
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Activity points
1,935
Hi can someone help me with this question

Design a 8051 based EPROM Programmer to program 2716.The EPROM can be programmed by applying 25V at VPP and 5V at OE pin. Initially all data of EPROM will be 1’s and the user should make the bits zero selectively. Before the EPROM location is programmed it must be checked for whether it is empty (data in location must be FFH if the location is empty) The 8- bit parallel data is applied to the data pins of EPROM. The address for the EPROM is to be provided. To program the address of each location to be programmed should be stable for 55ms.When address and data are stable, a 50ms active high pulse is applied to CE input. (Note: the normal system bus of the processor cannot be used for providing address/data/CE during the process of programming)

How do you keep the address of each location to be programmed stable for 55ms?
How do you provide a 50ms active high pulse ?
 

The 2716 is a very old device!

You need to think in terms of how to connect to the EPROM, it has 8 data lines and 10 address lines so you need 18 connections plus CE and OE making 20 digital connections in total. You also need VPP which will come from a 25V regulated voltage source and another signal to turn it on and off. First question: do you have enough pins available on the 8051 do do all that?

As to the timings, these are all simple delays, you set the data and address pins to the state you want the drive the other lines high and low with appropriate delays between transitions.

My approach would be to utilize the fact that addresses are sequential so if you make your 8051 produce a reset and clock signal to an external 10-bit binary counter you can connect the couter outputs to the EPROM address lines and set the address you want by resetting the count then clocking it to get the address you need. For example, to set EPROM address 123 you reset the address counter (so you know it's starting from zero) and clock it 123 times. This method also makes it easy to do the blank check because all you do is drive OE and CE low, reset the counter and read the data pins. Then clock the counter 2048 times, reading the data pins after each clock pulse and confirming it is FFH.

To program it, follow the sequence you described but first set the address in the counter. Remember that each time you clock the counter you move to the next EPROM address so you don't have to reset it and count again for each new address.

Brian.
 

WOW!

I actually published a design to do this on an Acorn Atom ermm... Oh *** now i'm showing my age ...1 or 2years ago... honest? ;-)
 

123jack - I think you are confusing years and decades :lol:

I think I've still got a box of 2716s somewhere, probably some 2708s too.

Brian.
 

The 2716 is a very old device!

You need to think in terms of how to connect to the EPROM, it has 8 data lines and 10 address lines so you need 18 connections plus CE and OE making 20 digital connections in total. You also need VPP which will come from a 25V regulated voltage source and another signal to turn it on and off. First question: do you have enough pins available on the 8051 do do all that?

As to the timings, these are all simple delays, you set the data and address pins to the state you want the drive the other lines high and low with appropriate delays between transitions.

My approach would be to utilize the fact that addresses are sequential so if you make your 8051 produce a reset and clock signal to an external 10-bit binary counter you can connect the couter outputs to the EPROM address lines and set the address you want by resetting the count then clocking it to get the address you need. For example, to set EPROM address 123 you reset the address counter (so you know it's starting from zero) and clock it 123 times. This method also makes it easy to do the blank check because all you do is drive OE and CE low, reset the counter and read the data pins. Then clock the counter 2048 times, reading the data pins after each clock pulse and confirming it is FFH.

To program it, follow the sequence you described but first set the address in the counter. Remember that each time you clock the counter you move to the next EPROM address so you don't have to reset it and count again for each new address.

Brian.

Hi, thanks for your reply

I'm using a AT89C51 microcontroller for this application.
From your reply, I'm assuming that mere software delays in the program code (or using the internal timers of 8051) would suffice to keep the address/CE pulses at the required value for the specified duration.

However, I'm a bit confused about the need of a counter to access each location. Wouldn't it be enough to store the starting address, 0000h in the register dptr and use it to check any memory location by outputting the address first through port0(AD0-AD7) and port2(AD8-AD10) and then comparing the data received on port0 (AD0-AD7) with FFH.

Something like this:
Code:
again: mov p0, dpl
mov p2, dph

clr vpp
clr ce
clr oe

;delay to be inserted - give time to the eprom to respond with data at memloc @dptr

mov p0, #0ffh	;set p0 as input port
mov a, p0
setb oe
setb ce
cjne a, #0ffh, continue1

...

continue1:	inc dptr
		jmp again
Note that I'm using a keypad for the user to enter data values at any empty location and an LCD display for the user interface.
 

Sorry, the last time I did any programming with 8051 was around 20 years ago, in fact it might even have been an 8031 it was so long ago I can't remember.

Yes, as long as you have enough port pins you can do it that way. The 2716 is a very small EPROM by todays standards so you should be able to do it by allocating port pins to all the EPROM pins. It gets more complicated if you move to bigger EPROMS because you run out of port pins, that's why the counter method may be more appropriate as it only needs two pins for any address range. You can also do it by writing the EPROM address into latches.

The delays are fixed in the 2716 programming algorithm so all you need to do is make your own delay routine, either in software or by using a hardware timer. In larger EPROMs the algorithm is quite different and the delays much shorter but repeated during write-read-verify cycles until the data is confrmed to be stored correctly. It is often faster to program a modern 2M bit EPROM than a 2K bit 2716 !

Brian.
 
  • Like
Reactions: vreg

    vreg

    Points: 2
    Helpful Answer Positive Rating
Thanks a lot for the info, really helpful.
 

The data and address need only be stable for 2uS before the programming pulse, during the programing pulse and 2uS after the programing pulse. The normal way to generate the address lines is to use a 4040 and supply it with a clock and reset line.
I hope this helps.
 

That's the counter method I suggested vreg followed. From distant memories, the 2716 was made by Texas Instruments, Intel, Motorola and Thomson-CSF and they had slightly different programming requirements although using the slowest would work for the faster types as well.

I just looked in my stocks and even found a 1708 EPROM, even older!

Brian.
 

betwixt - 2708 I can do - 1708 would be before my time with computers - I would still have been messing with things that go bang or have very long wavelengths then.
...see I'm only a youngster really....;-)
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top