RN1 Slow Test Board Hardware
Tim Kutscha
James Ooi
Original Issue: May 1990
Last Updated: Tue Nov 9 12:45:41 EST 1993
In every bus cycle, as /DS0, /DS1 and the address confirmation from the 20v8 PAL assert, PAL #2 allows transfers on the data bus by asserting /TRANSON. During this time, if /WRITE is low (on state) then PAL #2 drives B2A high, allowing data to flow from the VME bus into the board. Similarly, if /WRITE goes high (master reads slave) then PAL #2 drives B2A low, driving the VME bus with data from the board.
When the bus tells the slave to latch data to a specific port, it performs a write cycle with the port number contained in address lines A<4:1> and the 9-bit data to latch contained in D<8:0>. Address lines A05 and A06 must be low. When /DS0, /DS1 and the address line from the address interpreter PAL become asserted, PAL #2 sees that /WRITE is low (master writing to slave) and that A05 and A06 are high, so it asserts /GENLATCH. After /GENLATCH asserts two '138 multiplexers interpret A01 through A04 and drive one of the sixteen latch lines low, activating the clock-enable on an '823 lying on one of the four separate driver boards. This '823 flip-flop, corresponding to one of the ports, reads D<8:0> and holds the 9-bit data on the next clock edge. PAL #1 waits three clock-cycles before asserting /DTACK, so the '823 has two edges to get data. After PAL #1 asserts /DTACK, PAL #2 sees /DS0 or /DS1 rising so it disables the clock-enable for the '823 and waits for the next cycle.
When the CPU wants to read data from a given port, the A<4:1> contain the port number. The CPU starts a cycle with /WRITE high (master reads from slave). After PAL #2 recognizes the address and sees /DS1 and /DS0 drop, it also sees A05 and A06 low and /WRITE high, so it asserts the /DRIVEBUS flag. /DRIVEBUS activates a pair of '138s similarly to /GENLATCH; however, this multiplexer decodes A<4:1> and enables the outputs on one of the '825s located on an external driver board. The '825s continually read the outputs from RN1 and when their output enables assert, they drive a 9-bit data byte onto the VME bus. PAL #1 waits three clock-cycles again before asserting /DTACK. Both PALs fall back to idle states when /DS1 or /DS0 rise until the next bus cycle.
After latching data to several input ports on RN1, the host computer should write to the tester while driving address line A05 high. A<4:1> don't matter now; however, the bits in the data lines D<15:0> tell the controller board which ports to drive. D0 corresponds to the first port on connector A and so on. Therefore, if you write to the tester and drive A05 high with the hex number x0034 (0000000000110100 binary) on the data bus, ports 3, 5 and 6 on the tester would get driven. Keep in mind that the ports on the tester do not correspond directly to the ports on RN1. See (tn16) for information on which tester ports drive which RN1 ports. After /DS1, /DS0 and the address confirmations assert, PAL #1 starts cycling through the stages of its finite state machine program. On the first clock edge, PAL #1 asserts ENDAT which is NANDed with all the data lines. The outputs of these 7400 NAND gates enable the outputs on certain '823s which should have previously had 9-bit data latched to them. On clock edge two, PHI1 asserts. PHI2 asserts on the fourth clock edge after PHI1 drops on the third clock edge. On the fifth clock cycle, PHI2 and ENDAT drop while /DTACK asserts. After /DS0 or /DS1 rise again, /DTACK de-asserts and the PALs fall into idle state until the next bus cycle.
If the CPU wants to change the swallows on RN1 or change the selector switches, it asserts address line A06 instead of A05 and the bits containing the switch data exist on data lines D0-D15. Refer to the Software reference (tn16) for more information. If PAL #2 sees /WRITE low and A06 high after seeing /DS0, /DS1 and the address confirmation assert, then it starts a finite state machine sequence which asserts RLATCH for one clock cycle. PAL #1 delays three cycles before asserting /DTACK, so the data on lines D<15:0> is still stable for another two clock cycles while the pair '373s capture the switching data off the data bus. As in other functions, both control PALs fall back into an idle state when /DS0 or /DS1 go high, signalling the end of the bus cycle.
Four 40-pin flat ribbon cables come out of the back of the controller board and connect to the four interface boards driving RN1. The connectors on the control board are labeled A through D which correspond to the labels on the chip testhead (see Fred Drenckhahn for info). The 40-pin ribbon cables contain the data lines D<8:0> from the VME bus, control signals for latching data to a port, signals to read and drive RN1, and a system clock to drive the flip-flops. The cable contains four RN1 control signals such as the swallows, reset, select, clkcntl, and the two chip clocks (phi1 and phi2). Every third wire in the ribbon cable is grounded to cut noise with the exception of the clock which has ground wires on either side of it. The four interface boards require their own 5V power supply which not only drives data to RN1 but also powers RN1. The 1V and 5V power input pads on the interface board should be jumpered together for the first version of RN1 since it only uses a 5V interface voltage. Although each side of RN1 is essentially the same, the correct port should be connected to the correct side of RN1 for software purposes.
Since the ribbon cable from the control board to the interface boards is long, the system clock drives all the inputs on a hex inverting buffer. Two outputs on the hex inverter drive the on board PALs while the other four drive the inputs of two SN75452B dual high-current line drivers to drive the system clocks to the four remote boards. The driven clock signals are terminated on the external boards by a voltage divider pulling up the clock to 3 volts with 200 and 300 ohm resistors.
The swallows and RN1 control signals are controlled totally by software for ease of use. The addressing system is controlled by a programmed 20v8 PAL instead of physical jumpers which often create noise and are hard to work with. Address lines A01 through A06 control the functions of the control board, leaving the remaining nine address lines to distinguish the controller board from other slave boards on the VME bus. To change the address, edit the address.fsm file, adding and deleting negation slashes in the logic equation and recompile it, reprogramming the 20v8 as previously discussed.
N.B. FSMC is Finite State Machine Compiler which is part of the 6.111 course software. To use it at the A.I. Lab, add the following lines to your .cshrc.mine file:
setenv FSM_P_DIR /home/ar/transit/src/fsmc/proto
setenv FSM_C_FIL /home/ar/transit/src/fsmc/config
Also add /home/ar/transit/${MACHINE} to your PATH.
Then type in the following lines to compile an .FSM file (tester1): This will generate tester1.jed and tester1.pal from tester1.fsm.
To program the PAL's, use the Unisite universal programmer. You should first FTP to alpha-bits and put the JED files onto the Unisite PC hard-drive. Then type PROGRAM from the directory where your files are on the PC. Boot up the Unisite with the systems software disk and then put in the algorithms disk. Select the proper PAL device from the menus. To transfer a .JED file to the Unisite for programming, select the other option, then transfer data, and finally download. Download the file to RAM through the terminal (not remote) port. Go to the file window at the bottom of the screen using the cursor keys and type: TRANSFER filename.jed and hit Return twice. Go back to the main menu with F1 and program the PAL after you put it in the Unisite.
You can also program the PAL's on the Zap-a-PAL computer in the seventh floor hardware lab. Run the ZAPAL program in the ZAPNEW directory. You must first FTP your JED files to floppy disk on the sixth or ninth floor. The ZAPAL program is menu driven, so you should be able to run it with little trouble. Additional documentation also exists in transit/doc/random/pal in the file zap-a-pal.txt.
The board is a four layer one with normal signals on the outsides, and ground and VCC planes in the middle. The system was laid out using the Douglas Professional System. Source files are on the Mac II in the lab in the CAD-Current TB data folder. The schematic for the control board is called TESTBOARD3.0 (use the latest version) and the schematic for the chip interface boards are called TB 1 side 3.0 (use the latest version). Generating a report from these schematic files is all that is needed for use of the autorouter. Since I hand routed both boards, the finished, routed boards are named CONT BOARD L 8.0 for the controller board and CONT BOARD R 8.0 for the interface boards. While the controller board is sized for a triple-height XL1200 VME bus backplane, the four interface boards can be of any size and are currently as small as I could get them to save on fabrication costs.
The CAM Exchange program only gives correct quotes for two layer boards so you should roughly double the price to get a four-layer board quote. When you use the CAM Exchange program, be sure to explicitly state that you want a four-layer board with internal ground and VCC planes. The shorting bars will automatically fall to the internal power and ground layers during fabrication so they don't short out your surface traces. Board quotes are based on total board area, number of holes and total trace length, so keep your boards small and limit the number of holes if possible. If you hand route your board, you should run the layout file through the autorouter without any routing commands to compress the file. I was able to reduce a 300k file down to 30k bytes.