Can you slow down EPROM access time? UPDATE: AT28C256 is worse!? - Page 1
Forum section: electronics / projects

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 27, 2021, 05:02:34 pm
content: I'm working on some old boards that need the memory chips replaced.Originally, they had TMS27PC256 chips.https://pdf1.alldatasheet.com/datasheet-pdf/view/82578/TI/TMS27PC256.htmlI'm not sure which version chips these boards use, but the fastest option was 100ns according to the datasheet.Since those are obviously obsolete, and I would like to use a modern equivalent not "NOS" from China, I basically only have the option of an Atmel AT27C256RThere are 45ns and 70ns versions of the ATMEL EPROMs.I programmed up the 45ns version. It "works" but is unstable, causing the micro (AN80C196KB) to reset every few seconds. I programmed up some 70ns version and it is mostly stable, but not 100%.I'm thinking the old Intel micro can't handle the modern higher speed chips. Is there a good option to slow down the access time for these chips to make them stable for the Intel micro? Or did I miss a critical spec in the datasheets causing an incompatibility?Thoughts?

author: CaptDon
author_rank: Super Contributor
timestamp: January 27, 2021, 05:21:20 pm
content: You can't really slow down the access time of the chip. The fast chips are probably causing ringing on an old buss structure. About the only thing you could try is to generate a brief HOLD perhaps by using a 200ns one-shot delay or inserting 1 wait state so the processor will wait on the buss reflections to stabilize before accepting the data as valid. We have a ton of obsolete 80C186 stuff around here. Maybe I have some old stock, I'll look. I have eproms all the way back to 1702's and 2708's around here. We used to make our own boards but went outside in the '90s. Probably 50% of all the old parts stock is still here but every time someone needs a place to store their junk more of these 'obsolete' parts find their way to the trash.

author: SiliconWizard
author_rank: Super Contributor
timestamp: January 27, 2021, 05:33:29 pm
content: If ringing is your main concern, wouldn't adding resistors in series with the data signals do the trick?

author: CaptDon
author_rank: Super Contributor
timestamp: January 27, 2021, 05:34:09 pm
content: I just checked, I have 3 pcs of Intel LD27C256-120 and about 100 American Microdevices AM27C512-120 I think the 512's could go into the 256 socket if you tie the extra address line lo?? I am not sure without spending some time looking if I have any junk boards I could rob 27C256's from. I personally use our 28C256 and 28C64 eeproms. I think they are real slow at around -200ns although I forget exactly. If you have any slow 28C256's you could try them although I think you may have to hard wire the write pin hi?

author: Ian.M
author_rank: Super Contributor
timestamp: January 27, 2021, 05:39:17 pm
content: Subject to the CPU or MCU not using dynamic logic, you can slow the bus accessing ordinary EPROMs like the AT27C256R right down to DC though you may encounter data retention problems if you cycle it slower than 2 nHz at elevated temperature!However that needs to be done by the processor - its *NOT* something that can be done at the EPROM socketYou need a comprehensive datasheet with bus timing diagrams for the AN80C196KB MCU. Its likely that it samples the data bus after the instant /CE or /OE goes back high or one of the address lines changes, and the faster EPROM's data hold time is too short for the data to still be valid at the sampling point. It could also be due to differences in output drive strength and/or logic levels. Once you've established what's going on, *if* its a timing problem you *may* be able to patch in a monostable to stretch one of the control signals to hold the data for longer. If however its an address line changing early, or signal level/strength incompatibilities that cant be alleviated by a simple pullup you are most likely S.O.L!Adding series resistors to reduce ringing is a PITA, best done on a daughterboard if you aren't certain it will be effective. Also your probing technique needs to be exemplary, especially minimal length grounding, and you probably need a high bandwidth active probe to be reasonably certain any ringing isn't an artifact of your probing technique, and that the probe isn't damping the glitch you are looking for.

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 27, 2021, 05:43:30 pm
content: Quote from: SiliconWizard on January 27, 2021, 05:33:29 pmI was hoping for something simple like this, but I've never ran into nor considered this issue before, so my knowledge is lacking in this case.The board is simple enough to re-design to add resistors to the data lines (or just cut traces on a board for prototyping purposes), but I don't have access to the original source code to change anything there.

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 27, 2021, 05:45:47 pm
content: Quote from: CaptDon on January 27, 2021, 05:34:09 pmI was looking at the 28C256's, and the pinout is different. Since I can re-design a board, this could be an option. The 27C256's are EPROM, so there is no writing done on the PCB. I could butcher one in for prototyping reasons. I have 3 boards I can sacrifice to make this project work.ETA: Looking at the pinouts again, the only difference is on the 27c chip, pin 2 is VPP (not used on the board, but tied to +5v) and pin 31 is A14. On the 28C chip, pin 2 is A14 and pin 31 is Write Enable (not needed here). One trace cut and jumper should work, at least for testing purposes perhaps?Is it generally OK to use an EEPROM to replace an EPROM, using the same bin?

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 27, 2021, 07:16:00 pm
content: The plot thickens...I found an example that I have which is running ST M27C256B-70C1https://media.digikey.com/pdf/Data%20Sheets/ST%20Microelectronics%20PDFS/M27C256B.pdf70ns access time on this chip.

author: james_s
author_rank: Super Contributor
timestamp: January 27, 2021, 08:00:53 pm
content: I would start by scoping the data lines to see what is actually going on. I have never encountered an issue where a memory chip was too fast, the access time is just the fastest you can expect the data to be ready, not the speed at which the device must be accessed. I suppose ringing is possible, the slower chips may have also had a much slower slew rate in the signals, but access time and the slew rate of the output devices are not necessarily tied.You *do* have adequate power supply decoupling on the EPROM?

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 27, 2021, 08:24:26 pm
content: Quote from: james_s on January 27, 2021, 08:00:53 pmYes. The boards work fine, I'm refurbishing them. New caps, clean up, etc., and some have faulty EPROMs. I would like to replace all EPROMs as part of the standard work.

author: srb1954
author_rank: Super Contributor
timestamp: January 27, 2021, 08:52:44 pm
content: Quote from: james_s on January 27, 2021, 08:00:53 pmEarly in my career (43 years ago) the firm I was working for encountered an issue with memory chips that appeared to be too fast.They had an in-house designed uC system that originally ran fine with 450ns access time RAM chips that were originally available. When the RAM manufacturer upgraded the access time to 250ns the uC started behaving unreliably with data being corrupted in multiple RAM addresses.After a lot time running RAM test programs and a lot of head-scratching it was found that there were some glitches on some of the address lines due to noise coupling between address lines on the system back-plane. These glitches were ignored by the original slow RAMs but the newer RAM chips were fast enough to respond to these glitches modifying data in additional locations to the intended one.I didn't work on the fix but I believe it involved a redesign of the CPU board to change the address bus drivers and add damping resistors to slow the edge rise times. A lot of extra decoupling was also added throughout.

author: james_s
author_rank: Super Contributor
timestamp: January 27, 2021, 09:54:30 pm
content: Quote from: Rat_Patrol on January 27, 2021, 08:24:26 pmI strongly advise against the shotgun method of replacing parts that are not defective just as a matter of course. I have seen many times where somebody creates new problems where there were none to begin with. You might refresh the code in the EPROMs by reading and then re-writing without erasing first if they are getting up there in age, I have fixed devices that were starting to have problems by doing that but there is not really any reason to replace the chips unless you encounter a specific type with a high failure rate. Don't just blindly replace the caps either, maybe some electrolytics depending on the type and age, but make sure you use good quality and appropriately selected parts.

author: dmendesf
author_rank: Frequent Contributor
timestamp: January 27, 2021, 10:06:27 pm
content: If you have a 50+MHz scope just probe the memory lines and compare rise times of old and new chips. Add series resistors as needed to make them similar. Use a short ground path for the ground (no alligator probe).

author: Doctorandus_P
author_rank: Super Contributor
timestamp: January 28, 2021, 01:04:46 am
content: Quote from: james_s on January 27, 2021, 09:54:30 pmIndeed. Data retention is usually guaranteed for somewhere between 10 and 20 years. A data bit in an eprom is just a bunch of electrons stored in a capacitor. It's quite amazing those things work at all, and that those same electrons stay in their capacitor for 20 years.

author: m k
author_rank: Super Contributor
timestamp: January 28, 2021, 09:09:43 am
content: Quote from: Rat_Patrol on January 27, 2021, 07:16:00 pmManual page 8 says that 27C256-10 output enable (_G) time is 55ns max and for 27C256-20 it's 75ns max.Comparing A0 and _G(OE) should give a hint how late read is happening.My guess is that the whole output enable cycle happens clearly inside of an address.Keep in mind that the thing is most likely edge triggered.Means that MCU ROM read is not happening again, after _G + MCU access time, before next _G.Manual page 9, read cycle is misleading.Check tv(A) data valid time from earlier page.

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 28, 2021, 02:58:46 pm
content: Quote from: m k on January 28, 2021, 09:09:43 amSoftware and MCU to ROM interaction is not my strong suit, so if you have any advice as to the best course of action here, I'd be extremely appreciative!

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 28, 2021, 05:06:07 pm
content: Just tried an AT28C256, and it is far worse. As soon as the board was powered up, it would just start rebooting constantly.After about 10 seconds of this, it did stabilize long enough to run a task, and it did that....before it started rebooting right away.So I would say it is certainly a chip incompatibility.

author: james_s
author_rank: Super Contributor
timestamp: January 28, 2021, 09:57:32 pm
content: Have you looked at the bus with a scope yet or are we still just guessing? There is no substitute for measurement.I would advise just finding some old stock EPROMs to replace any that are defective and going with that. Otherwise just refreshing the bits in the existing chips is likely to get you another 20 years out of most of them. They fade over time.

author: m k
author_rank: Super Contributor
timestamp: January 30, 2021, 10:50:20 am
content: Quote from: Rat_Patrol on January 28, 2021, 05:06:07 pmDo the measurings.Is there a socket, is it good?

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 30, 2021, 09:45:34 pm
content: Quote from: m k on January 30, 2021, 10:50:20 amNO sockets, these are soldered directly to the board.I'll get back to this project late this week, hopefully, then I'll probe some boards with the scope, see what it shows.

author: james_s
author_rank: Super Contributor
timestamp: January 30, 2021, 10:45:19 pm
content: No socket? That's very unusual for EPROMs. Is there space to install a socket?

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: January 31, 2021, 04:13:01 pm
content: Quote from: james_s on January 30, 2021, 10:45:19 pmSort of. The caps are stupid close to the pads, it would be close.

author: HB9EVI
author_rank: Frequent Contributor
timestamp: January 31, 2021, 06:49:01 pm
content: what clock speed is the system running at?I'm using an AT28C256 on my Z80 board clocked at 6.144MHz - and that's working reliably

author: james_s
author_rank: Super Contributor
timestamp: February 01, 2021, 06:40:23 pm
content: Quote from: Rat_Patrol on January 31, 2021, 04:13:01 pmTry a machined pin socket, the plastic body on those is elevated slightly so there's a bit of clearance. I don't like to solder EPROMs, they have to be removed for programming and heat also reduces the data storage time.

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: February 01, 2021, 07:08:02 pm
content: Quote from: HB9EVI on January 31, 2021, 06:49:01 pm12MHz, regulated internally by the 80c196KB

author: HB9EVI
author_rank: Frequent Contributor
timestamp: February 01, 2021, 10:42:24 pm
content: well, the AT28C256 has a read access time of 150ns; so at about 6.6MHz clock rate it'll be too slowans my guess would be, it's not going to be different with the other ones named here in the thread

author: m k
author_rank: Super Contributor
timestamp: February 02, 2021, 05:45:25 pm
content: Manual offers 8 and 12MHz oscillators /2 for clocks.How it goes, first ALE and a bit later CE/OE and then next clock reads?If CE/OE is next clock then 3rd clock reads.

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: February 04, 2021, 05:33:17 pm
content: I do have some NOS chips on order, will see if those work.I also bought some (probably counterfeit, who knows) n80C196kb chips from Aliexpress, and to my amazement they worked fine with the new ATMEL eproms! The date code on these Chinese chips are 2003. So that was interesting.

author: james_s
author_rank: Super Contributor
timestamp: February 07, 2021, 12:35:06 am
content: Quote from: Rat_Patrol on February 01, 2021, 07:08:02 pmI just looked at the datasheet for the 80c196KB and it shows it as using an external crystal. "Regulated internally" suggests an internal RC oscillator which this part does not appear to have.If the microprocessors work at all they are very unlikely to be counterfeit. They're probably just surplus parts.

author: Rat_Patrol
author_rank: Frequent Contributor
timestamp: February 09, 2021, 10:43:21 pm
content: Quote from: james_s on February 07, 2021, 12:35:06 amThere is only 1 external crystal, and it is on the opposite side of the board feeding a processor. Unless the 80c is getting a clock signal from it, the datasheet I read shows internal 12Mhz operation, which makes sense with the board.So far, my Chinese micros have been 100% (small sample size of about 15 right now, going through testing), so I'm a happy camper there.

author: CaptDon
author_rank: Super Contributor
timestamp: February 10, 2021, 02:44:24 am
content: 6.144mhz, that's a blast from the past!!! I bought a real Intel SDK-85 kit and that is the frequency they run the 8085 at. I think that frequency divides down perfectly for hardware UART clock generation but the SDK-85 monitor program used the SID and SOD pins as a software UART. I did successfully get my software UART timing loops to work perfectly at 4800-8-N-1 to decode NMEA strings and transmit test strings. 4800 was the limit however for the ability to do a soft UART. At 9600 you just can't get the timing close enough to be reliable. 2 no-ops is too long, 1 no-op is too short, etc.! I also re-wrote the monitor program to run the 8251 hardware UARTs. That makes for a much better system!! Those SDK-85 and SDK-86 units bring a fortune on Ebay. I have built at least 5 cloned units and even wrote my own tiny monitor from scratch!! Probably around 600 bytes!!!