Gremlins in the Registers

Posted on Tue 17 December 2019 in MUPS16

I finished soldering the remaining components onto the register boards last night, and started running a more comprehensive set of tests than I had before, and I've found some of the problems I was worried about.

Firstly, there's a simple mistake in the schematic, in which I swapped pins 14 and 15 of the data bus:

Schematic

This is annoying, but I can work around it by swapping the input wires, since the mistake is right on the input edge, rather than internal.

Worse, though, there's definitely a problem with bits 11 and 12 getting stuck on when outputting to the A bus (I haven't tried the B bus yet). My initial testing consists of writing 0, 1, 2, 4, 8, 16, ..., 32768 to each register in turn, and reading back the value to ensure that I get the same result. Immediately after powering up the board that seems to work, at least for the first few values. At some point, however, bit 11 or bit 12 will suddenly start being read as 1, regardless of which register is read, and what its content is. This happens even if all registers have been set to zero, and once it has started happening it happens almost all the time. Pulling the power is the only thing that reliably stops it. While it's happening the LEDs are not showing any registers having either bit 11 or 12 set, and poking around with a multimeter doesn't show anything either. Given that it affects all registers I suspect that it's a problem with the soldering of one of the output bus drivers on the A bus. I noticed a few dry solder joints on some of those ICs, and I think a floating input could cause these isses. I'll need to poke around more when I have time.

The soldering problems are a direct result of my decision to solder part of the board first, test it a bit, and then solder the rest. That made some sense, since I didn't want to waste several hours and £40 of components if there was a fundamental problem with the design, but it made applying the solder paste with a stencil very difficult, because of the existing chips getting in the way. In retrospect I should have just started from scratch on a second board after doing the initial testing.