1 - GND DACs (pin 10) + logic (hybrids #1,23,40) 2 - GND DACs (pin 10) + logic (hybrids #1,23,40) 3 - D0 (DACs and 74HC273's), buffered + readback pin state (hybrids #37) 4 - D1 (hybrids #36) 5 - D2 (hybrids #35) 6 - D3 (hybrids #34) 7 - D4 (hybrids #33) 8 - D5 (hybrids #32) 9 - D6 (hybrids #31) 10 - D7 (hybrids #30) 11 - nc 12 - /RD (pin states) 13 - nc 14 - /WR (DACs and latches) 15 - ILE DACs (buffered) 16 - A3 17 - nc 18 - nc 19 - A0 20 - A1 21 - A2 22 - /CE (enables this board) 23 - nc 24 - RST (buffered, hybrid #39) 25 - +5V logic (hybrids #26) 26 - +5V logic (hybrids #26) 27 - nc 28 - nc 29 - nc 30 - nc 31 - V- opamps (hybrids #4,19) 32 - V- opamps (hybrids #4,19) 33 - +5V DACs 34 - +5V DACs 1 - nc 2 - nc 3 - V+ to VTTL 78L05 regulator (feeds hybrids #3) 4 - V+ to VTTL 78L05 regulator (feeds hybrids #3) 5 - V+ opamps + output devices (hybrids #20) 6 - V+ opamps + output devices (hybrids #20) 7 - nc 8 - nc 9 - hard pullup voltage (hybrids #17) 10 - op-amp slew control enables (hybrids #16) 11 - soft pullup voltage (hybrids #25) 12 - Vref DACs 13 - pin state for all pins (hybrids #27) 14 - pin state for all pins (hybrids #28) 15 - /XFER DACs (buffered) 16 - reference voltage for pin comparators (hybrids #18) 17 - nc 18 - nc 19 - pin output # 20 - pin output # 21 - pin output # 22 - pin output # 23 - GND DACs (pin 3) (hybrids #15) 24 - GND DACs (pin 3) (hybrids #15) 25 - pin output # 26 - pin output # 27 - pin output # 28 - pin output # 29 - GND DACs (pin 3) (hybrids #15) 30 - GND DACs (pin 3) (hybrids #15) addresses: (write) 00 - DAC 0 write 01 - DAC 1 write 02 - DAC 2 write 03 - DAC 3 write 04 - DAC 4 write 05 - DAC 5 write 06 - DAC 6 write 07 - DAC 7 write 08 - latch 0 write (hybrid #38) 09 - latch 1 write (hybrid #29) 0A - latch 2 write 0B - latch 3 write 0C - latch 4 write 0D - latch 5 write 0E - latch 6 write 0F - latch 7 write (read returns data on D0) 00 - pin state 0 01 - pin state 1 02 - pin state 2 03 - pin state 3 04 - pin state 4 05 - pin state 5 06 - pin state 6 (hybrid #21) 07 - pin state 7 (hybrid #22) latch bits: 0 - pin ground (1 = ground, 0 = don't ground) 1 - DAC enable (1 = enable, 0 = disable) 2 - hard pullup enable (1 = enable, 0 = disable) 3 - data 4 - soft pullup enable (1 = enable, 0 = disable) 5 - mode 0 6 - mode 1 7 - soft pulldown enable (1 = enable, 0 = disable) valid values to write: 00 - disable everything 01 - ground 02 - DAC voltage 04 - hard pullup 08 - high logic level 10 - soft pullup 20 - low logic level 40 - #27 to 5Von, #28 to GNDon 60 - #28 to 5Von, #27 to GNDon 80 - soft pulldown sticky modes: 18 - high logic level + soft pullup (for glitchless switching) 30 - low logic level + soft pullup (for glitchless switching) 50 - PCLK + soft pullup 70 - NCLK + soft pullup Do not use any other values. this can and will cause hardware damage! pin decoding for 5V/GND to drive logic level signals mode data 5Von GNDon 0 0 0 0 (float both) 0 1 1 0 (5V) 1 0 0 1 (GND) 1 1 1 1 (invalid- shorts out 5V/gnd. do not use) 2 x #27 #28 3 x #28 #27 scripting idea: --------------- Setting pin states. A pin can be set to one of many states, depending on what it has to do. Pins are designated by their number, from 1 through 88 as such: P1 = pin 1 P16 = pin 16 To set a pin to a defined state, the following commands can be used: (demonstrated on pin 1) --- P1 = xx.xxV - sets a pin to this voltage This will use the DAC to provide up to 1A of current to the DUT at a selectable voltage. Stepsize is unknown as is max voltage at this time. P1 = 5.0V sets pin 1 to 5V P1 = 12.5V sets pin 1 to 12.5V This command is used to power a device's VCC/VDD usually, and can also be used for VPP voltages if needed. --- P1 = GND - sets a pin to ground This command will force a pin to ground via a very low impedance FET. This is used to ground a device's GND/VSS pin. --- P1 = H - sets a pin to logic high P1 = L - sets a pin to logic low These two commands will set a pin to logic high or low, respectively. The H command will connect a 78L05 output (one per 8 devices) via a 10 ohm resistor and a shottky diode to the pin. The L command will connect ground via a 50 ohm resistor to the pin. --- P1 = SPU - sets a pin to soft pullup P1 = SPD - sets a pin to soft pulldown These two commands will pull up a pin or pull down a pin respectively. The pullup voltage is selectable (See below). The pulldown voltage is not, and is simply ground. The pullup is via a 2.7K resistor while the pulldown is via 5.4K of resistance (the 2.7K above and another 2.7K from a 7406 output). --- P1 = HPU - sets a pin to hard pullup This might be usable for VPP's or a secondary power supply if needed. A 100ma or so adjustable power supply is connected to this pin. (see below) --- P1 = PCLK - sets a pin to the positive clock P1 = NCLK - sets a pin to the negative clock This pair of commands connects the pin to a clock source. The source uses the same H/L drivers above, and all clock pins on all 88 pin drivers are connected together and will toggle in unison. --- P1 = hiZ - sets a pin to high impedance mode. This is the default state of all pins. Unused pins and pins that are outputs from a DUT should be set to hiZ so they can be read (or to prevent conflicts). --- Px = Vn.m,p,q - sets a pin state depending on a variable bit. Px = pin number Vn.m = variable N, bit M p = low state value q = high state value For example: P1 = V0.0,L,H This will set pin 1 to the L or H state depending on if bit 0 of variable 0 is a 0 or a 1 (respectively). The reasoning here is to allow for some more flexibility to do something like this: P2 = V0.1,L,SPU which will set the pin to low or soft pullup P3 = V1.8,SPD,HPU which will set the pin to soft pulldown or hard pullup --- P1 = STICKY - sets pin 1 sticky: This will allow pin x's soft pullup to remain on at all times. This is useful when toggling between say, ground and 9V or some other voltage. Otherwise, if we switched between soft pullup and ground, there'd be a small period of some nanoseconds when the pin was not being driven at all. Only the soft pullup can remain on in this mode. The soft pullup is cancelled if this pin is set to anything other than L, H, NCLK, PCLK. Enabling a sticky mode on a pin will automatically turn this pin's soft pullup on! ----------------- Setting the voltage of the soft pullups and hard pullups: PSPU = xx.xxV - sets voltage of the soft pullup PHPU = xx.xxV - sets voltage of the hard pullup PTRG = xx.xxV - sets voltage for pin trigger Works like the pin voltage setting above, only it is for the two pullup sources. PTRG sets the voltage that the comparators on the pins will trigger at, to determine an "H" or an "L". The pin will read back as 1 if the voltage is above this point, or 0 if it's below. ------------------ Control commands: DEL xxxu - delay in uS DEL xxxm - delay in mS The delay command will cause the script to sleep for the designated amount of time. Examples: DEL 10u - delays 10uS DEL 100m - delays 100mS --- RESET - resets all 88 pin drivers to the hiZ mode. When used, all 88 pin drivers revert to the reset condition which is hiZ on all pins. The first command of any script should be RESET, and it should be the last command. This command also resets the soft and hard pullup voltages to 0V. --- WAIT - waits for the user to hit the DUMP button --- SETMAXn - sets the 100% value of the progress bar SETBARn - sets the current value of the progress bar. These two commands will load one of the variables into the progress bar registers. SETMAX0 will load variable 0 into the bar maximum value register, while SETBAR1 will load variable 1 into the bar's current value register. The way this works is simple. If a 2732 EPROM is being dumped, we set the bar's maximum value to 4096, since this is how many locations are in a 2732 EPROM. The bar's value is then simply the current address of the EPROM we're reading. When done, the address counter will be 4096, which will show a 100% full progress bar. If the address counter was 2048, then the bar will be 50% full and so on. --- LDx,value Loads variable X with value "value". The 16 variables are 32 bits wide, unsigned. This should be enough for most purposes. If not, I guess I can expand it. If the value is preceeded by a V, then a variable is copied into another, like so: LD0,V1 This will load V1 into V0. --- ASLx LSRx These will shift the variable X left or right one position. ASL0 will left shift variable 0 LSR1 will right shift variable 1 Note that carries are not used and bits will be lost when shifted off the end. --- INCx DECx These will increment or decrement variable X. --- ANDx,value ORx,value XORx,value These will and, or, xor the variable X with a value. AND0,12h will AND variable 0 with 12h. --- SENDx This command sends the LOWER 8 bits of variable X out the serial port to the computer as a dumped data byte. This command will push data into a FIFO that is 1K in size inside the FPGA. When this FIFO is full, the script will sleep on the SEND call until the FIFO has at least one free byte. SEND3 will send the lower 8 bits of variable 3 to the PC. --- SIZE value Sets the number of bytes the PC will expect to receive from the device. --- BNEx address BEQx address Branches to the address if the target variable is zero (BEQ) or not zero (BNE). BNE0 loop ; branches to loop if variable 0 is nonzero BPSx address BPCx address Branches if the pin X is set or clear. BPS12 wait ; branches if pin 12 is set --- RESTART This command restarts the dumping script. It should be the last instruction of the script. --- NAME "value" This is the name that shows up on the display for what type of device we're going to be dumping. The name is limited to 32 characters in length. This must be the first command in the script file. note: name is a directive and will be used to fill out the header of the compiled dump script. --- DACUP Updates the outputs of all 88 DACs at once. --- PINCOUNT value Sets the pincount so that you don't have to do heavy math to calculate which pin driver to use. The pincount operator assumes that your device will be top justified in the socket. So, if you define pincount as 24 (i.e. a 2732 EPROM), then the following happens: Pins 1-12 are pins 1-12 on the socket pins 12-24 become pins 37-48 on the socket If no pincount is defined, then no remapping takes place. NOTE: only even pincounts are valid. Hopefully there aren't many DIP chips with an odd number of pins. NOTE: pincount is a directive, and is only used when the script is compiled. The pin numbers are adjusted at compile time. ------------------ Example script to read a 2732 EPROM: The EPROM is top justified in a 48 pin socket. Pin 1 of the socket corresponds to pin 1 of the EPROM, and pin 48 of the socket corresponds to pin 24 of the EPROM. NAME "2732 EPROM" ;name PINCOUNT 24 ;set pincount RESET ;resets the pin drivers SIZE 4096 ;sends the PC the size of the device we will dump, in bytes LD0,0 ;load variable 0 with 0 (our address counter to feed to the pins) LD1,4096 ;load variable 1 with 4096 (the number of bytes to dump in a 2732) SETBAR0 ;progress bar at 0% (from var0) SETMAX1 ;maximum count value for progress bar from var1 WAIT ;wait for the user to hit the dump button P12 = GND ;set pin 12 to ground P24 = 5.0V ;set pin 24 to 5V PTRG = 0.8V ;sets the pin trigger voltage to 0.8V (TTL threshold) DACUP ;update all 88 DAC values DEL 10us ;wait 10us P20 = H ;set /OE high P18 = H ;set /CE high DEL 10ms ;wait for our device to settle down dump: ;these following commands will load the desired bits into A0-A11 from variable 0. P8 = V0.0,L,H ;load variable 0, bit 0 into A0 P7 = V0.1,L,H ;load variable 0, bit 1 into A1 P6 = V0.2,L,H ;load variable 0, bit 2 into A2 P5 = V0.3,L,H ;load variable 0, bit 3 into A3 P4 = V0.4,L,H ;load variable 0, bit 4 into A4 P3 = V0.5,L,H ;load variable 0, bit 5 into A5 P2 = V0.6,L,H ;load variable 0, bit 6 into A6 P1 = V0.7,L,H ;load variable 0, bit 7 into A7 P23 = V0.8,L,H ;load variable 0, bit 8 into A8 P22 = V0.9,L,H ;load variable 0, bit 9 into A9 P19 = V0.10,L,H ;load variable 0, bit 10 into A10 P21 = V0.11,L,H ;load variable 0, bit 11 into A11 DEL 5us ;delay 5us for address settling time P18 = L ;pull /CE low DEL 1us ;delay a little P20 = L ;pull /OE low DEL 5us ;delay a little IN2.0,P9 ;read pin 9 into variable 2 bit 0 IN2.1,P10 ;read pin 10 into variable 2 bit 1 IN2.2,P11 ;read pin 11 into variable 2 bit 2 IN2.3,P13 ;read pin 13 into variable 2 bit 3 IN2.4,P14 ;read pin 14 into variable 2 bit 4 IN2.5,P15 ;read pin 15 into variable 2 bit 5 IN2.6,P16 ;read pin 16 into variable 2 bit 6 IN2.7,P17 ;read pin 17 into variable 2 bit 7 P20 = H ;pull /OE high DEL 1us ;wait a little P18 = H ;pull /CE high SEND2 ;sends lower 8 bits of variable 2 to the serial port SETBAR0 ;sets progress bar state to var0's value INC0 ;increments our address counter DEC1 ;decrements the byte counter BNE1 dump ;jump back to "dump" until var 1 is 0 RESET ;resets the pin drivers to the hiZ state RESTART ;the dump is done. restart the dumping program Socket board pinout. contains 7 PLCC sockets and a 48 pin ZIP socket. PLCC sockets are 20, 28, 32, 44, 52, 68, and 84 pins. left connector (J1): 1a - GND 1b - GND 1c - GND 2a - 2b - 2c - 3a - +5V logic 3b - 3c - 4a - +5V logic 4b - 4c - 5a - 5b - 5c - 6a - 6b - 6c - 7a - 7b - 7c - 8a - 8b - 8c - 9a - 9b - 9c - red LED (low = on) 10a - 10b - 10c - 11a - 11b - 11c - 12a - Z48-25 P20-11 P28-15 P32-17 P44-23 P52-27 P68-35 P84-43 12b - 12c - Z48-24 P20-10 P28-14 P32-16 P44-22 P52-26 P68-34 P84-42 13a - Z48-26 P20-12 P28-16 P32-18 P44-24 P52-28 P68-36 P84-44 13b - 13c - Z48-23 P20-9 P28-13 P32-15 P44-21 P52-25 P68-33 P84-41 14a - Z48-27 P20-13 P28-17 P32-19 P44-25 P52-29 P68-37 P84-45 14b - 14c - Z48-22 P20-8 P28-12 P32-14 P44-20 P52-24 P68-32 P84-40 15a - Z48-28 P20-14 P28-18 P32-20 P44-26 P52-30 P68-38 P84-46 15b - 15c - Z48-21 P20-7 P28-11 P32-13 P44-19 P52-23 P68-31 P84-39 16a - Z48-29 P20-15 P28-19 P32-21 P44-27 P52-31 P68-39 P84-47 16b - 16c - Z48-20 P20-6 P28-10 P32-12 P44-18 P52-22 P68-30 P84-38 17a - Z48-30 P20-16 P28-20 P32-22 P44-28 P52-32 P68-40 P84-48 17b - 17c - Z48-19 P20-5 P28-9 P32-11 P44-17 P52-21 P68-29 P84-37 18a - Z48-31 P20-17 P28-21 P32-23 P44-29 P52-33 P68-41 P84-49 18b - 18c - Z48-18 P20-4 P28-8 P32-10 P44-16 P52-20 P68-28 P84-36 19a - Z48-32 P20-18 P28-22 P32-24 P44-30 P52-34 P68-42 P84-50 19b - 19c - Z48-17 P20-3 P28-7 P32-9 P44-15 P52-19 P68-27 P84-35 20a - Z48-33 P20-19 P28-23 P32-25 P44-31 P52-35 P68-43 P84-51 20b - 20c - Z48-16 P20-2 P28-6 P32-8 P44-14 P52-18 P68-26 P84-34 21a - Z48-34 P20-20 P28-24 P32-26 P44-32 P52-36 P68-44 P84-52 21b - 21c - Z48-15 P20-1 P28-5 P32-7 P44-13 P52-17 P68-25 P84-33 22a - Z48-35 P28-25 P32-27 P44-33 P52-37 P68-45 P84-53 22b - D0 (latch data + readback) 22c - Z48-14 P28-4 P32-6 P44-12 P52-16 P68-24 P84-32 23a - Z48-36 P28-26 P32-28 P44-34 P52-38 P68-46 P84-54 23b - D1 (readback only, as with D2-7) 23c - Z48-13 P28-3 P32-5 P44-11 P52-15 P68-23 P84-31 24a - Z48-37 P28-27 P32-29 P44-35 P52-39 P68-47 P84-55 24b - D2 24c - Z48-12 P28-2 P32-4 P44-10 P52-14 P68-22 P84-30 25a - Z48-38 P28-28 P32-30 P44-36 P52-40 P68-48 P84-56 25b - D3 25c - Z48-11 P28-1 P32-3 P44-9 P52-13 P68-21 P84-29 26a - Z48-39 P32-31 P44-37 P52-41 P68-49 P84-57 26b - D4 26c - Z48-10 P32-2 P44-8 P52-12 P68-20 P84-28 27a - Z48-40 P32-32 P44-38 P52-42 P68-50 P84-58 27b - D5 27c - Z48-9 P32-1 P44-7 P52-11 P68-19 P84-27 28a - Z48-41 P44-39 P52-43 P68-51 P84-59 28b - D6 28c - Z48-8 P44-6 P52-10 P68-18 P84-26 29a - Z48-42 P44-40 P52-44 P68-52 P84-60 29b - D7 29c - Z48-7 P44-5 P52-9 P68-17 P84-25 30a - Z48-43 P44-41 P52-45 P68-53 P84-61 30b - 30c - Z48-6 P44-4 P52-8 P68-16 P84-24 31a - Z48-44 P44-42 P52-46 P68-54 P84-62 31b - /RST latches 31c - Z48-5 P44-3 P52-7 P68-15 P84-23 32a - GND 32b - GND 32c - GND right connector (J2): 1a - GND 1b - GND 1c - GND 2a - Z48-45 P44-43 P52-47 P68-55 P84-63 2b - 2c - Z48-4 P44-2 P52-6 P68-14 P84-22 3a - Z48-46 P44-44 P52-48 P68-56 P84-64 3b - 3c - Z48-3 P44-1 P52-5 P68-13 P84-21 4a - Z48-47 P52-49 P68-57 P84-65 4b - 4c - Z48-2 P52-4 P68-12 P84-20 5a - Z48-48 P52-50 P68-58 P84-66 5b - 5c - Z48-1 P52-3 P68-11 P84-19 6a - P52-51 P68-59 P84-67 6b - 6c - P52-2 P68-10 P84-18 7a - P52-52 P68-60 P84-68 7b - 7c - P52-1 P68-9 P84-17 8a - P68-61 P84-69 8b - 8c - P68-8 P84-16 9a - P68-62 P84-70 9b - 9c - P68-7 P84-15 10a - P68-63 P84-71 10b - 10c - P68-6 P84-14 11a - P68-64 P84-72 11b - 11c - P68-5 P84-13 12a - P68-65 P84-73 12b - 12c - P68-4 P84-12 13a - P68-66 P84-74 13b - 13c - P68-3 P84-11 14a - P68-67 P84-75 14b - 14c - P68-2 P84-10 15a - P68-68 P84-76 15b - 15c - P68-1 P84-9 16a - P84-77 16b - 16c - P84-8 17a - P84-78 17b - 17c - P84-7 18a - P84-79 18b - 18c - P84-6 19a - P84-80 19b - 19c - P84-5 20a - P84-81 20b - 20c - P84-4 21a - P84-82 21b - 21c - P84-3 22a - P84-83 22b - 22c - P84-2 23a - P84-84 23b - 23c - P84-1 24a - 24b - 24c - 25a - 25b - 25c - 26a - 26b - 26c - 27a - 27b - 27c - 28a - 28b - 28c - 29a - 29b - 29c - 30a - 30b - 30c - 31a - 31b - 31c - 32a - GND 32b - GND 32c - GND bypass capacitor system: ------------------------ There are 48 bypass capacitors and 48 FETs. These are across the 48 pins of the ZIF socket. Each of the 48 pins can have a bypass capacitor to ground switched on or off. caps are .1uf each. I suspect you turn TWO capacitors on to bypass a chip: the power and ground pins should both have the FETs turned on. This will provide a low impedance through the two capacitors to the two power pins of the chip. There's 6 74HC259's to turn the FETs on. U8: Q0 - Z48-8 Q1 - Z48-7 Q2 - Z48-6 Q3 - Z48-5 Q4 - Z48-1 Q5 - Z48-2 Q6 - Z48-3 Q7 - Z48-4 U6: Q0 - Z48-16 Q1 - Z48-15 Q2 - Z48-14 Q3 - Z48-13 Q4 - Z48-9 Q5 - Z48-10 Q6 - Z48-11 Q7 - Z48-12 U4: Q0 - Z48-24 Q1 - Z48-23 Q2 - Z48-22 Q3 - Z48-21 Q4 - Z48-17 Q5 - Z48-18 Q6 - Z48-19 Q7 - Z48-20 U5: Q0 - Z48-25 Q1 - Z48-26 Q2 - Z48-27 Q3 - Z48-28 Q4 - Z48-29 Q5 - Z48-30 Q6 - Z48-31 Q7 - Z48-32 U7: Q0 - Z48-33 Q1 - Z48-34 Q2 - Z48-35 Q3 - Z48-36 Q4 - Z48-37 Q5 - Z48-38 Q6 - Z48-39 Q7 - Z48-40 U2: Q0 - Z48-41 Q1 - Z48-42 Q2 - Z48-43 Q3 - Z48-44 Q4 - Z48-45 Q5 - Z48-46 Q6 - Z48-47 Q7 - Z48-48 PALC22V10: 1 - J1-12B 2 - J1-11B 3 - J1-30B 4 - J1-7A 5 - J1-20B 6 - J1-19B 7 - J1-18B 8 - J1-17B 9 - J1-16B 10 - J1-15B 11 - nc? 12 GND 13 - nc? 14 - U2 /G 15 - U8 /G 16 - U7 /G 17 - U6 /G 18 - U5 /G 19 - U4 /G 20 - A2 latches 21 - A1 latches 22 - A0 latches 23 - 74HC244 enable 24 - +5V The 74HC244 simply loads a fixed 8 bit word onto the data bus. It is: 1000 0001b (81h) This probably is for socket module detection if I had to guess.