Saturday 4 November 2023

15 bit ÷ 11 bit - part the third

Wiring of the five stack-up boards is the next step; each board has 65 miniature screw terminals along its edge, plus a power connector:


Boards are kept apart with 35 mm plastic spacers, together with M3 stainless threaded rods (250 mm lengths).

The plan of attack was to interconnect the first two boards, test, then add the third board and so on, at each step cross checking the diagnostic LEDs with the Digital simulation.

The completed brick of five stacked-up boards were then mounted on to the base board and everything hooked up. And so we have the completed 15 bit hardware divider:



Testing of the individual boards and partial builds paid dividends...the completed thing worked first time: here we have C71 (hex) ÷ 439 (hex) = 2, remainder 3FF.


And here we have 7FB8 ÷ 4E7 = 1A, remainder 42 (hex):


And, here we divide by zero; 'wrong', but correct in the sense that it agrees with the Digital simulation...


Total current consumption is about 2.3 amps; the worst-case I've found is 6DB6 ÷ 1  = 6DB6, remainder 0, drawing 2.46 amps. Those old TIL 311 displays eat up about half of that.

Finally, I've had a go at measuring the time taken by the divider. Here, bit 0 of dividend (numerator) N is clocked at 100 kHz; the oscilloscope display (0.1 μs/div) shows quotient (Q) bit 0 following after a delay of about 0.14 μs, giving (perhaps) operation at something like 7 MHz. (For the record, the divisor M = 1, and dividend N = 7FFF or 7FFE, and the oscilloscope vertical display is 2 V/div).





Friday 3 November 2023

15 bit ÷ 11 bit - part the second

The next step, after constructing the base board, was to start construction of the five stacked-up boards. These are identical; the first one was built and tested, then the next four were built 'in parallel'; it's actually a lot easier making the four subsequent boards, if a little tedious.

Circuit diagrams were printed on A0 paper - the game being to highlight connections once they have been wired on the board.


Here's the completed, yet to be populated board #1:


And the testing of the populated board:


My work space - replete with Herman Miller desk.


And, after about a month of evenings and weekends, we have the five completed boards:


The pink wires supply the 11-bit divisor (M) to all boards; four of the boards have two sets of screw terminals, allowing easy daisy chaining of the divisor wires from board to board.

Amazingly, in all of this constructional complexity, there was just one error - board #2 had a single wire that went to the wrong pin of one of the ALUs. Fault finding wasn't difficult, since it's easy enough to compare expected pin logic states (from Digital simulation), to the actual chip pins. I didn't even have a logic probe; a multimeter was sufficient.



15 bit ÷ 11 bit - part the first

This is the big one: a direct implementation of the unrolled non-restoring division algorithm. A total of seventy chips, including no fewer than forty-eight 74LS181 arithmetic logic units!  

All these chips are organised across six main boards; five of these (which are identical, each dispatching three lines of the long division, and having nine 74181s), are stacked over a base board. The latter (with three 74LS181s) handles the final step of the non-restoring division, namely calculation of the remainder. This board also has the TIL 311 hexadecimal displays, for dividend, divider, quotient and remainder.

Here's the partially wired base board:



And here's the final base board:


A lot of care was taken to test everything for correct operation during construction of the various boards: the twelve discrete LEDs were included to give some diagnostic capability. In the completed divider, if the yellow LED is unlit, the red LEDs show a binary representation of the remainder (this can be seen for the partially wired board above: 555 (hex) = 10101010101 (binary). These sets of twelve LEDs are also included in each of the five (identical) stacked-up boards, allowing some useful testing of each board in isolation.

The four 15-way D-sub connectors are for the dividend, divisor, quotient and remainder, respectively. Interconnects to the stacked-up boards are via the miniature terminal blocks (0.1 inch spacing type).