Tuesday, March 26, 2019

Designing the light panel for the IBM 1130 (LED replacing incandescent display lamps)

Daughtercard PCB build

I had designed a daughtercard that plugs into the FPGA socket on my main board. Its purpose is to host level shifters so that I can use an FPGA board with 3.3V I/O pin levels to interface with the main board which operates on 5V levels. The card has an offset socket into which the actual FPGA is plugged, the conversion circuits and a set of pins that fit into the FPGA socket on the main board. 

The board is a 4 layer sandwich with 5V and ground planes inside. The real FPGA is powered by 5V even though its IO pins are 3.3V, plus the four level shifter boards need 5V supplied to one side and 3.3V to their other sides. This was a very simple design with signal lines routed on one face and the 3.3V reference source on the other face, which is routed to the four level shifter boards. 

Daughterboard to provide level shifting for FPGA board

Main PCB construction

The main PCB is also a 4 layer sandwich, with 5V and ground planes inside. The two outside faces carry the signals.
Display panel in its enclosure atop the IBM 1130 computer

Display panel with 154 lights behind it
155 single pins are installed on the board and the signals routed to four multiplexer chips that can handle up to 40 signals each. The PCA9505 multiplexer chips are connected on an I2C serial chain, with unique addressing set for each chip. 

The FPGA drives the I2C chain and samples the states of the 154 logic signals from the 1130, plus the lamp test signal. Inside the FPGA, each signal is tracked and the color and intensity of its associated LED is set to mimic what an incandescent lamp would be doing on the original IBM display panel. 

The FPGA drives four single wire serial chains hooked to the LEDs. Each LED is directly and individually addressable on its serial chain. The board hosts the 154 LEDs, which are four-wire components. Two pins connect to the 5V and ground planes, One pin is the serial input and the last pin is the serial output to the next LED in the chain. 

Routing wasn't difficult, in spite of the presence of 155 pins, 154 LEDs, four multiplexer chips and the FPGA socket. Largely this is because the LEDs require only a single trace running from light to light in its chain; power is delivered directly from the inner planes. The bulk of the routing complexity comes from running the signals from all the pins to the four TSSOP sized surface mount multiplexer chips.

My first shot at the PCB included errors in the spacing of the lights on the far right of the console panel, when viewed from the front. I had to fix the design and submit it again for fabrication. I watched eagerly as my new board went through each step of fabrication, happy when it was ready for the final quality control and packing steps.

Alas, when next I checked, instead of a shipment notice I found that they had begun again from scratch. The great news is that their circuit testing and quality control process is good enough to spot problems and they won't ship poor quality PCBs. The bad news is that the estimated shipment is therefore delayed as will be the delivery of the board to my doorstep. 

Soldering down the four multiplexer chips needed the microscope and a lot of care - 56 pins, 28 per side, in a chip that is just over an inch long, thus very easy to create solder bridges or misalign the pins.

Pad for one of the PCA9505 multiplexer chips
Hooking up the LEDs was done on top of the plastic honeycomb of the front panel, ensuring every LED is in the best position as it is soldered down.

PCB laying over honeycomb, as it will when I solder in 154 LEDs
I did a test using three of the APA106 thru-hole LEDs placed on the board that was too short, while waiting on my final version of the PCB. I used an Arduino to play around with various parameters of timing and color shift to see how the LED looked compared to the incandescent bulbs they were replacing.

No comments:

Post a Comment