Jump to content
atrax27407

2764 adapter for a TMS2564

Recommended Posts

I have encountered a rather obscure problem. It seems that some of the earlier TI devices (i.e., Percom FDC, Hexbus, etc.) used the 28-pin package of the TMS2564 as their DSR EPROM of choice. The problem appears when one needs to replace the EPROM. The TMS2564 is an "out-of-production" item and can be difficult to source (ex. my usual large volume US supplier only had 21 of them in stock). The 2764 is readily available and less expensive as well. The other problem is that the TMS2564 is a 25V chip and beyond the capabilities of most modern USB EPROM programmers.

 

As a result of this dilemma, I have been in conversation with FARMERPOTATO and KSARUL  in an effort to develop an adapter that would allow a 2764 EPROM to be plugged into a TMS2564 socket. I wonder if any of the hardware gurus in the community have any suggestions? I have attached the data sheets for each chip and the proposals from FARMERPOTATO and KSARUL for your information. Oh yes, there is an error in the pin outs for the TMS2564 in that Pin #17 should be O6 instead of A6. All 2764 EPROMs have identical pin outs. Unfortunately, neither of the two solutions worked satisfactorily. Any solution would be greatly appreciated.

TI TMS2764.pdf TI TMS2564.pdf 2564-2764 Karsrul.pdf 2764 to TMS2564 FarmerPotato.pdf

Edited by atrax27407
  • Like 1

Share this post


Link to post
Share on other sites

I made these up a long time ago and got prototypes, but the guy who asked for them disappeared.  It looks like my idea most closely matches FarmerPotato's.  Happy to send a PCB or two for testing.  They are just sitting here...  But, I think you can just rewire the CE and OE of FP's idea and test. What was the issue with the previous attempts?

 

1208436061_2564AdapterPCB.png.07c03a82829bfae60ead0b660b043616.png

  • Like 2

Share this post


Link to post
Share on other sites

Apparently, the chip (2764) was not recognized as a TMS2564. When the adapter constructed from either of the schematics was placed into the TMS2564 socket, it simply didn't work even though the DSR was a byte-for-byte duplication of the original working DSR.

Share this post


Link to post
Share on other sites
56 minutes ago, atrax27407 said:

Apparently, the chip (2764) was not recognized as a TMS2564

Are you using a TL866 or some variation of?  There is a "Check ID" checkbox in the GUI that verifies that the chip is the correct type.  Unchecking the box may allow you to program the 2764. From the manual

 

Quote

4.2.1.5 Check ID 
Many chips have a chip inside the Identification (ID), the content is generally composed 
of two or more bytes, the first byte is usually the manufacturer code (Manufacture ID), 
followed by the chip type or chip capacity.  Different chip, ID will be different, the 
function of this option is to prevent incorrect chip into.  This option checks the chip ID 
before reading or writing to the chip. If it continues correctly, this function is optional. 
Operation will be aborted if the ID error.  The default option is enable . 

 

Share this post


Link to post
Share on other sites

Does the unit under test have a working 2564 to verify operation, or are you trying to bring a dead unit to life with this adapter?

 

If the latter, I say we find a working unit and 2564 to test some things out...  It might be that the control signals need to be fed into a '138 (I do this for the 6540 adapter) to better approximate timing.

Share this post


Link to post
Share on other sites

Yes, the unit involved is a working Percom FDC with the original DSR which is what I programmed into the 2764 byte-for-byte from a direct DSR dump. It works fine with the original TMS2564 installed.

 

When I started this adapter project, I used a "triple stack" of 28-pin sockets. The bottom one is designated as the target (in this case the TMS2564) which plugs into the board. The middle one is a filler, and the top socket is the 2764 with the appropriate pins bent out to accommodate the switched address lines, etc.

 

I have some fine gauge wire that I insert into the bottom socket at the correct pin locations (it is a machine socket). The filler socket is plugged in, pin-for-pin and the friction effectively locks each wire in place. This completely eliminates half of the solder joints in the project.

 

All that remains is to solder the wires from the bottom socket to the required bent out pins on the top socket. That, in essence switches all of the address lines and others that need to be switched from the bottom socket to the top.With all of the wires soldered in place, the board should "see" the 2764 in the top socket as a TMS2564 with all of the signals on the appropriate pins. The problem is that, right now, it doesn't. Needless to say, it has caused me considerable "heartburn".

 

Once I have a "proof of concept" working, I solder together a stacked socket to work on my TL866. Obviously, the TL866 will NOT do a 25V chip. That is one of the reasons that I started this project in the first place - 2764s are readily available, fairly cheap and can be programmed with most USB EPROM programmers.

 

Once I can get a working adapter, I will try my next experiment. It is a little known fact that the TMS2532, which is another nominal 25V chip, can be easily and successfully programmed at 21V  with the appropriate adapter on the TL866C/A. It is extremely tolerant of low voltage programming. If the production mask for the TMS2564 is similar to its "little brother" the TMS2532, it might be possible to program them with the TL866 at 21V as well. Could be interesting!

Edited by atrax27407

Share this post


Link to post
Share on other sites
8 hours ago, atrax27407 said:

Yes, the unit involved is a working Percom FDC with the original DSR which is what I programmed into the 2764 byte-for-byte from a direct DSR dump. It works fine with the original TMS2564 installed.

 

When I started this adapter project, I used a "triple stack" of 28-pin sockets. The bottom one is designated as the target (in this case the TMS2564) which plugs into the board. The middle one is a filler, and the top socket is the 2764 with the appropriate pins bent out to accommodate the switched address lines, etc.

 

I have some fine gauge wire that I insert into the bottom socket at the correct pin locations (it is a machine socket). The filler socket is plugged in, pin-for-fin and the friction effectively locks each wire in place. This completely eliminates half of the solder joints in the project.

 

All that remains is to solder the wires from the bottom socket to the required bent out pins on the top socket. That, in essence switches all of the address lines and others that need to be switched from the bottom socket to the top.With all of the wires soldered in place, the board should "see" the 2764 in the top socket as a TMS2564 with all of the signals on the appropriate pins. The problem is that, right now, it doesn't. Needless to say, it has caused me considerable "heartburn".

 

Once I have a "proof of concept" working, I solder together a stacked socket to work on my TL866. Obviously, the TL866 will NOT do a 25V chip. That is one of the reasons that I started this project in the first place - 2764s are readily available, fairly cheap and can be programmed with most USB EPROM programmers.

 

Once I can get a working adapter, I will try my next experiment. It is a little known fact that the TMS2532, which is another nominal 25V chip, can be easily and successfully programmed at 21V  with the appropriate adapter on the TL866C/A. It is extremely tolerant of low voltage programming. If the production mask for the TMS2564 is similar to its "little brother" the TMS2532, it might be possible to program them with the TL866 at 21V as well. Could be interesting!

 

I went over all the pins again and realized that PGM* is not the same (aside from being on a different pin). On the 2564, PGM* is LOW to read data, on the 2764 PGM* is HIGH to read data. You shouldn't try to program using the stackup; even if it works, it won't verify. You should just program it the way it wants to be, as a 2764, no stackup.

 

So if you built my pinout, I didn't get PGM* right, so that might be your issue.

 

Ksarul's adaptor just wires the 2764 PGM* to VCC, so it can work as a ROM, but you couldn't program through the stackup. I'm not sure what I'm seeing on Brain's schematic. The other Ksarul did is to short S1* and S2* leads into one G*.. Does that work? more about that later.

 

On the 2564

2 S1* HIGH to disable outputs, LOW to enable

27 S2* ditto

22 PD/PGM* HIGH to power down, LOW to program or read

20 A11

23 A12

26 VCC 

 

On the 2764

22 G* HIGH to disable, LOW to enable outputs

20 E* HIGH to power down, LOW to enable chip

27 PGM* is HIGH to read, LOW to program.

23 A11

2  A12

26 NC, but should be shorted to 28 VCC like on Ksarul's.

 

There is an expectation that the chip come out of power down mode (E* goes low) before outputs are enabled (G* goes low). But that doesn't matter here.

 

So a better mapping for use as a replacement in a card might be

2564       |    2764
2 S1*      | 22 G* 
27 S2*     | NC, or put 22 G* here but not in both
22 PD/PGM* | 20 E*
20 A11     | 23 A11
23 A12     | 2 A12
26 VCC     | 26 NC, 27 PGM*, 28 VCC

 

 

I see on Ksarul's adaptor that he wired the 2764 PGM* to VCC. That should work for reading.

 

The difficulty here is that the 2564 has three lines that must be low to read the chip. The 2764 has two low, one high select. Without adding an inverter gate.. you can force the 2764's PGM* pin high, and choose 2 of 3 of the 2564's (S1*, S2*, PGM*) to connect to the 2764's (G*, E*) but you have to leave one unconnected! You can't short two of the 2564 pins together. It really depends on how the original board wired the 2564, as for which two you should pick. Maybe one is non-essential, maybe not! (EDIT: I see Ksarul did just short two pins together. IF this produces an OR function, great, if not, uhoh.)

 

For something like an RS232 DSR, it might not even matter if you just short E* and G* to ground and PGM* to VCC, and let the EPROM drive the data bus all the time. Because the card should have a 74LS245 data bus transceiver on that. 

 

But if the card is a disk controller, it uses the DSR space to write and read to the controller chip too. So you really need to check how the card wired up S1* and S2* and PGM* to be sure what kind of adaptor you need. If you're lucky, S1* and S2* are shorted together, so your adaptor could pick either one. (I looked at Thierry's site, he doesn't have precise info on how the TI card ROMs are selected.)

 

Unless I'm missing an easy way out of this, I think the answer is, you need to look at the schematic of the card in question to see how to build an adaptor.

 

OR, you add a NOT gate to the adaptor; you can make one from a transistor and two resistors.

Edited by FarmerPotato

Share this post


Link to post
Share on other sites

PGM typically floats high on 27XX(X) devices, so that should be OK.

 

But, if PGM is needed in the equation, the best solution I have found is the venerable 74ls138.  It allows up to 5 inputs for selection.  In this case, tie the enables of the '138 to respective power rails, and use PD,S1,S2 into the S0/1/2 of the '138, and tie the output 0 to the !OE line of the 2764, tying !CE to ground on the 2764

 

I use a similar idea for the 6540 adapter, and can modify for the 2564.

 

6540 Adapter v2 Schematic.png

Share this post


Link to post
Share on other sites

This is starting to get "above my pay grade" (besides it is once again 4 AM). However, for what it is worth, in the Percom schematic, S1 and S2 are tied together on the board and brought to +5V. I made KSARUL aware of this thread and he will, hopefully, chime in before long.

 

The impetus of this "exercise" is to create a pseudo-TMS2564 by using a 2764 EPROM. That is, make whatever board to which 2764 is connected "see" it as a TMS2564 through an adapter with the signals on the same relative pins. As long as the board considers the 2764 to be a bona fide TMS2564 on a pin-by-pin basis in function, it should be up to the board circuitry of each device to determine how the signals are handled. Maybe such a goal is not possible but, logically, there should be a way to make it work.

A3-Percom FDC-P1.pdf

Edited by atrax27407
  • Like 1

Share this post


Link to post
Share on other sites

Actually, they are not.  *S1 and *S2 (star meaning active low in the schematic) as well as PD/*PGM are all tied to a signal called *ROM and it originates as output Y2 of a 74ls139 (2 to 4 decoder).  It appears when A03-A11 are high and *BDRVR, A01, MEMEN.A are high and A01/A02 are low.  *BDRVR looks to be the result of a 1 being stored in the lowest bit of a CRU operation to the device.

 

Jim

Share this post


Link to post
Share on other sites
1 hour ago, brain said:

Actually, they are not.  *S1 and *S2 (star meaning active low in the schematic) as well as PD/*PGM are all tied to a signal called *ROM and it originates as output Y2 of a 74ls139 (2 to 4 decoder).  It appears when A03-A11 are high and *BDRVR, A01, MEMEN.A are high and A01/A02 are low.  *BDRVR looks to be the result of a 1 being stored in the lowest bit of a CRU operation to the device.

 

Jim

If S1*,S2*,PGM* are tied together, then the PGM* pin will have the wrong polarity. It must be high on the 2764, low on the 2564. If it is simply tied to VCC on the adaptor, that should fix it.

 

This is a normal setup for a PBOX card. CRU Bit 0 is always DSR ROM enable.  Only one card can have CRU bit 0 set at a time. This maps its ROM into address space >4000 - >5FFF.

 

One minor thing you got backwards.  ROM* and FDC*. The ROM* maps addresses >4000 - >5FDF while the FDC* maps addresses 5FE0-5FFF for the WD1771 registers.

 

 

  • Like 1

Share this post


Link to post
Share on other sites

I'm not sure I follow.  If the PD/*PGM line is high, the unit is powered down.  If the PD/*PGM line is low, it is powered up and can be programmed (or read).  Thus, it is appropriate for it to be active low for reads.

 

As you said above:

 

Quote

22 PD/PGM* HIGH to power down, LOW to program or read

CS1/CS2 are active low as well. so the FDC simply grounds them all the read data.

 

Share this post


Link to post
Share on other sites
11 minutes ago, FarmerPotato said:

One minor thing you got backwards.  ROM* and FDC*. The ROM* maps addresses >4000 - >5FDF while the FDC* maps addresses 5FE0-5FFF for the WD1771 registers.

I'm only going by the schematic provided.  They call it *ROM there...  You can see it defined right next to the pin 22 of the 2564, and again just below the U10 3 input NOR gate and once more right next to '139 Y2 output.

 

Jim

Share this post


Link to post
Share on other sites
48 minutes ago, brain said:

I'm not sure I follow.  If the PD/*PGM line is high, the unit is powered down.  If the PD/*PGM line is low, it is powered up and can be programmed (or read).  Thus, it is appropriate for it to be active low for reads.

 

As you said above:

 

CS1/CS2 are active low as well. so the FDC simply grounds them all the read data.

 

The 2764 needs PGM* high to read, I was referring to the adaptor that should tie the 2764 PGM* to VCC.

 

 

Share this post


Link to post
Share on other sites
4 hours ago, brain said:

I'm only going by the schematic provided.  They call it *ROM there...  You can see it defined right next to the pin 22 of the 2564, and again just below the U10 3 input NOR gate and once more right next to '139 Y2 output.

 

Jim

Yeah, you're right that the schematic says ROM* is driven from the Y2* output, which is low when B is low.

 

This is certainly an error in the schematic. Note that the author is not sure about where ROM* connects to the 139. They got Y2* and Y3* wrong.

 

In order for the device to function at all, ROM* must absolutely be mapped in the address space starting at >4000.

 

B = NAND(A3..A10) .

1Y3*  = !B + G*. So 1Y3 must be ROM* for the ROM to be mapped at >4000 - >5FDF.

1Y2* = B + G*. So 1Y2* must be FDC* for the WD1771 to be mapped at >5FE0 - >5FFF.

 

Anyway, the important thing is that S1*, S2*, and PGM* were not independent. So the adaptor is actually easier.

 

Share this post


Link to post
Share on other sites
3 hours ago, FarmerPotato said:

The 2764 needs PGM* high to read, I was referring to the adaptor that should tie the 2764 PGM* to VCC.

 

 

I got it now, I read your comment as:

 

"If S1* (of the 2564),S2* (of the 2564),PGM* (of the 2564) are tied together, then the PGM* pin will have the wrong polarity"

 

I read that because on the 2764, PGM is PGM (no star).  PGM* (active low) is the name on the 2564 pin, not the 2764 pin.

 

Since the 3 select lines can operate independently, an adapter should handle all combinations (either use a 3 input OR gate, a 2 input OR gate and pass one signal through to the 2764, or a '138).

 

I can't comment on your refutation of the ROM line.  If the schematic is wrong, so be it.  Someone will need to mark it as such.  It should be easy to check by continuity testing the PGM* line of the 25764 socket to which Y output on the 139 it connects to.

 

Jim

 

Share this post


Link to post
Share on other sites
On 12/30/2019 at 11:09 PM, FarmerPotato said:

 

I went over all the pins again and realized that PGM* is not the same (aside from being on a different pin). On the 2564, PGM* is LOW to read data, on the 2764 PGM* is HIGH to read data. You shouldn't try to program using the stackup; even if it works, it won't verify. You should just program it the way it wants to be, as a 2764, no stackup.

 

So if you built my pinout, I didn't get PGM* right, so that might be your issue.

 

Ksarul's adaptor just wires the 2764 PGM* to VCC, so it can work as a ROM, but you couldn't program through the stackup. I'm not sure what I'm seeing on Brain's schematic. The other Ksarul did is to short S1* and S2* leads into one G*.. Does that work? more about that later.

 

On the 2564

2 S1* HIGH to disable outputs, LOW to enable

27 S2* ditto

22 PD/PGM* HIGH to power down, LOW to program or read

20 A11

23 A12

26 VCC 

 

On the 2764

22 G* HIGH to disable, LOW to enable outputs

20 E* HIGH to power down, LOW to enable chip

27 PGM* is HIGH to read, LOW to program.

23 A11

2  A12

26 NC, but should be shorted to 28 VCC like on Ksarul's.

 

There is an expectation that the chip come out of power down mode (E* goes low) before outputs are enabled (G* goes low). But that doesn't matter here.

 

So a better mapping for use as a replacement in a card might be

2564       |    2764
2 S1*      | 22 G* 
27 S2*     | NC, or put 22 G* here but not in both
22 PD/PGM* | 20 E*
20 A11     | 23 A11
23 A12     | 2 A12
26 VCC     | 26 NC, 27 PGM*, 28 VCC

 

 

I see on Ksarul's adaptor that he wired the 2764 PGM* to VCC. That should work for reading.

 

The difficulty here is that the 2564 has three lines that must be low to read the chip. The 2764 has two low, one high select. Without adding an inverter gate.. you can force the 2764's PGM* pin high, and choose 2 of 3 of the 2564's (S1*, S2*, PGM*) to connect to the 2764's (G*, E*) but you have to leave one unconnected! You can't short two of the 2564 pins together. It really depends on how the original board wired the 2564, as for which two you should pick. Maybe one is non-essential, maybe not! (EDIT: I see Ksarul did just short two pins together. IF this produces an OR function, great, if not, uhoh.)

 

For something like an RS232 DSR, it might not even matter if you just short E* and G* to ground and PGM* to VCC, and let the EPROM drive the data bus all the time. Because the card should have a 74LS245 data bus transceiver on that. 

 

But if the card is a disk controller, it uses the DSR space to write and read to the controller chip too. So you really need to check how the card wired up S1* and S2* and PGM* to be sure what kind of adaptor you need. If you're lucky, S1* and S2* are shorted together, so your adaptor could pick either one. (I looked at Thierry's site, he doesn't have precise info on how the TI card ROMs are selected.)

 

Unless I'm missing an easy way out of this, I think the answer is, you need to look at the schematic of the card in question to see how to build an adaptor.

 

OR, you add a NOT gate to the adaptor; you can make one from a transistor and two resistors.

I have it on good authority that this above adapter works!!! It has run successfully with both of the Percom variants that I have in my inventory. It uses a 2764 in place of a TMS2564. We may have something going here! 

Edited by atrax27407

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...