Author Topic: A Universal Programmer  (Read 2210 times)

0 Members and 1 Guest are viewing this topic.

Offline colejohnson66Topic starter

  • Supporter
  • ****
  • Posts: 26
  • Country: us
A Universal Programmer
« on: October 07, 2019, 12:56:06 am »
After seeing the two(?) "universal" programmer videos from Dave (TL866 and Wellon) and how they only can switch between GND, VCC, and VPP (and possibly a VPP2), I thought about building a "true" universal programmer. It won't be as great as the DataI/O Unisite, obviously, but it will have a true DAC per pin based system.

Currently, I've been working on an octal pin driver board based around the MAX528+ (octal DAC capable of -5V to 5V). The output of each DAC is ran through an opamp (MC33174) to quadruple the voltage to -20V to 20V. Each of the eight pins on the board will be switchable between the DAC/opamp output ("Vpp") and ground. I'm also using two 74HC259 (1:8 demuxer with latched outputs) to decode the selection for each pin (bottom left of the schematic).

As for the main processor that would control all six (6*8=48 pins) driver boards, I'm thinking of the Adafruit Metro M4 Grand Central (unless people suggest better options). I was thinking I could use the M4 as an interpreter for a control script that could be sent over serial (over USB) from a desktop program.

I'm also trying to keep the cost down as even $20 per pin driver board would cost $120 for all six. I haven't calculated the BOM for this schematic, but any ideas on how to reduce it further would be accepted.

And my reason for posting is this: to post updates, but also to get feedback as I'm a beginner. I'm unsure of my choice of MOSFETs among other things. Basically, I want to know if my circuit is good, and if not, what I should change. I've attached my schematic.
« Last Edit: October 07, 2019, 12:57:54 am by colejohnson66 »
 

Offline FrankBuss

  • Supporter
  • ****
  • Posts: 2375
  • Country: de
    • Frank Buss
Re: A Universal Programmer
« Reply #1 on: October 07, 2019, 06:02:39 am »
The P-channel MOSFET won't work, gate voltage must be higher:



There are high-side FET drivers for it.

But I don't know much about analog electronics. For me it always helps, if I test it the individual parts on a breadboard first. And maybe would be nice to have some short circuit protection as well, or even an adjustable max current per pin.
So Long, and Thanks for All the Fish
Electronics, hiking, retro-computing, electronic music etc.: https://www.youtube.com/c/FrankBussProgrammer
 

Offline Ian.M

  • Super Contributor
  • ***
  • Posts: 13216
Re: A Universal Programmer
« Reply #2 on: October 07, 2019, 08:27:29 am »
Some old parallel EPROMs needed 25V Vpp (26.5V abs max).   I am not aware of any that needed a larger negative bias rail than -12V.  I therefore suggest offsetting your amplified DAC outputs to the range +27V to -13V.  Your pin drivers need to be quite robust - e.g an Intel D2716 needs up to 100mA of Vcc and up to 30mA from Vpp during programming.

IMHO a DAC per pin approach is excessively expensive.  *MOST* of the pins only need to be capable of being driven to a Vcc dependent logic level, or read back, with an adjustable threshold.   Lets assume the max Vcc it wil ever need is 7V, and give it 16 outputs and 24 I/Os that can handle that (to allow for up to 16 address and 16 data lines, with the spare 8 I/Os usable for control lines or additional address lines).  Then it would only need ONE of your full function pin driver boards to handle the limited number of power rail and programming pulse pin positions for each target socket. 

A 96 way DIN41612 connector would allow customisation of driver to pin mapping for up to 48 ZIF socket pins or allow different socket boards to be connected.  Seven of the eight fully programmable supply pins would go through the 96 way connector, as one would be needed as the comparator bias voltage for the input thresholds, and it needs a ground pin.  The DIN41612 connector on the programmer should itself be socketed so it can be easily replaced when worn out.  Locate it next to the 48 way DIL ZIF socket so personality modules can carry a label that indicates the pin 1 position to use.   
« Last Edit: October 07, 2019, 08:37:54 am by Ian.M »
 

Online jaromir

  • Supporter
  • ****
  • Posts: 344
  • Country: sk
Re: A Universal Programmer
« Reply #3 on: October 07, 2019, 09:52:52 am »
Some old parallel EPROMs needed 25V Vpp (26.5V abs max).   I am not aware of any that needed a larger negative bias rail than -12V.

I agree with your analysis, just nitpicking over the quoted bit:
Old i1702 and similar EPROMs did have wider voltage swing (47V) during programming, but I believe it's reasonable to omit those from support list. Also, early EAROMs, like ER1400 (used in some 80's high-class multimeters) needed -35V (or thereabouts) against substrate, but this perhaps may be workarounded by creatively moving ground potential to higher voltage.
« Last Edit: October 07, 2019, 11:35:56 am by jaromir »
 

Offline Ian.M

  • Super Contributor
  • ***
  • Posts: 13216
Re: A Universal Programmer
« Reply #4 on: October 07, 2019, 10:28:09 am »
Thanks for the EAROM bias supply note.  Perhaps one of the DAC channels should go to a dedicated 0 to -40V negative bias supply generator.

Moving ground would be a PITA, you'd either need a full DAC/ADC per pin approach or would need the DAC board to be fully isolated, with one of its channels connected to system ground.
 

Offline colejohnson66Topic starter

  • Supporter
  • ****
  • Posts: 26
  • Country: us
Re: A Universal Programmer
« Reply #5 on: October 07, 2019, 02:05:08 pm »
The DAC I’m using cam work with any voltages with a delta of 20V. I figured that going with a delta of 10V and then quadrupling would be easier than generating 10V and -10V supply lines, but I’m already going to be generating 22V and -22V just for the opamps. Anyways, I guess I could change it to -3.25V to 6.75V which would give me the -13V to 27V Ian suggested. The opamps work with any voltage swing of 44V from my cursory reading of the data sheet.

My design is already complex enough for my first real design and first board I’d be ordering, so I’d like to keep it as simple as possible. I could add a -40V rail/bias that could be switched to, but then I’d need to add another demuxer, and that would just complicate the logic of the MUX_SEL line (lines if I add more demuxers). In addition, like I said, this won’t be a true universal programmer like the UniSite, but it will be able to do more than most.

Re: DIN41612: I saw that the UniSite uses this to connect the module to the system. I’m currently debating between that and a card edge connector like PCIe. For example, a PCIe 4x slot has 64 pins (48 pins with 16 left over for whatever) and a female connector costs just shy of $3 on DigiKey whereas DIN41612 requires a ~$2.50 receptacle (female) and a $3 plug (male). Now, I’ve never had a PCB manufactured before, so I don’t know how much card edge connectors cost, but from my understanding, it’s just exposed copper, no?

Also, I do plan to make this expandable, but maybe not right away. Maybe for a second revision? If I do do that, maybe a PCIe 16x for 164 connectors (160 pins with 20 driver boards with 4 leftover). If I go with DIN41612, it looks like the biggest standard size is 96 pins. I could use multiple connectors (2x64?), but that would just double the interconnect costs. I’m also wary of using actual pins as they could bend. A card edge connector doesn’t get bent pins. Anyways, that’s just for the interconnect to the actual DIP module.

For the interconnect on the pin driver boards, I was thinking of using standard 0.1" (2.54mm) 2x20 headers/sockets. This is partly evident in the schematic. From a quick Google search I did a while ago, they can handle about an amp per pin. With a maximum pin current of 100 mA, that wouldn’t be a problem. I could use a DIN41612 (48 pin) connector here too, but 0.1" headers/sockets are dirt cheap compared to DIN41612.
« Last Edit: October 07, 2019, 04:51:05 pm by colejohnson66 »
 

Offline colejohnson66Topic starter

  • Supporter
  • ****
  • Posts: 26
  • Country: us
Re: A Universal Programmer
« Reply #6 on: October 18, 2019, 07:12:41 pm »
Update:

I have changed the MOSFETS to 5V drive voltage ones (BSS1138L (N) and BSS84 (P)). I have also added some op amp buffering through some ZXTD4591E6 NPN/PNP BJTs to increase the output current. And lastly, I changed the DAC/op amp output from -20V~20V to -13V~27V.
 

Offline FrankBuss

  • Supporter
  • ****
  • Posts: 2375
  • Country: de
    • Frank Buss
Re: A Universal Programmer
« Reply #7 on: October 19, 2019, 06:22:25 am »
I think you have the MOSFETs wrong. The n-channel MOSFET in your circuit diagram is always conducting. You can test it yourself with LtSpice:



or even better, you should try it on a breadboard. And read my previous message about driving MOSFETs. You can't do this with 5V, if you want to switch higher voltages than 5V. See here for more information:
https://electronics.stackexchange.com/questions/188745/high-side-driver-and-low-side-driver
So Long, and Thanks for All the Fish
Electronics, hiking, retro-computing, electronic music etc.: https://www.youtube.com/c/FrankBussProgrammer
 
The following users thanked this post: Ian.M, colejohnson66

Offline colejohnson66Topic starter

  • Supporter
  • ****
  • Posts: 26
  • Country: us
Re: A Universal Programmer
« Reply #8 on: October 26, 2019, 08:12:09 pm »
Thank you. I’ve been avoiding breadboarding because my DAC and opamp are only available in surface mount, but I guess I could just use a SMT to DIP adapter in the meantime. As for the MOSFETs, I’ve done some digging, and it appears the TL866 (based on a reverse engineered (I’m assuming) schematic) uses BJTs for the voltage switching on the pin. I understand MOSFETs are more suited for power applications, but what would be the downsides of using BJTs with, I assume, half an amp (at most) running into the pin?

And lastly, I’ve used LTSpice before, but it feels very clumsy to use. Is there anything better, or should I just put up with it?
« Last Edit: October 26, 2019, 08:17:09 pm by colejohnson66 »
 

Offline FrankBuss

  • Supporter
  • ****
  • Posts: 2375
  • Country: de
    • Frank Buss
Re: A Universal Programmer
« Reply #9 on: October 29, 2019, 07:49:30 am »
I don't know much about analog electronics, but here are some answers:

https://www.quora.com/Why-is-MOSFET-better-than-BJT

I have a box with all sorts of SMT to DIP adapters, they are cheap on eBay.

LTSpice is the industry standard for simulating circuits. I think if you use it more often, it doesn't feel clumsy. And much faster than testing something on the breadboard. If it doesn't work in LTSpice, it usually doesn't work in reality either. But if it works in LTSpice, you still have to test it in reality, but chances are better that it will work :)
So Long, and Thanks for All the Fish
Electronics, hiking, retro-computing, electronic music etc.: https://www.youtube.com/c/FrankBussProgrammer
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf