More balanced trees !

A project log for YGREC16 - YG's 16bits Relay Electric Computer

Fork of #AMBAP, here I discuss about the physical implementation of the bitslice architecture with russian РЭС15 (see what I did here?)

yann-guidon-ygdesYann Guidon / YGDES 04/02/2017 at 10:240 Comments

After the craze of How to balance a fanout tree and Backplane routing considerations, I now need to make a single, large MUX (MUX32 for the address columns).

The relays create a fanout of 1, 2, 4, 8, 16 and this is getting annoying. So let's find a way to smooth this... Let's start with a simple binary tree for a MUX8:

As expected, the tree is logarithmic. But a simple permutation makes it more balanced :

That's better :-) Red and blue have just been swapped, between the lower and higher halves of the tree. Eeay !

Now for something more complicated : a MUX16

That looks nice ! I simply took the previous tree and swapped the colors, between the high and low halves. Though it's not quite perfect... Because the color reversal won't work for a larger tree : I get 1-9-6-6-9 :-/

(the root is not considered because there is in theory nothing we can do about it)

I got a better solution :

That's almost perfect !

The root MUX has a fan-in of 1 and the 4 other address lines have fan-in of 8 (and 2 resistors)

Now I'll see how I can include this technique in the other MUX of the system, to maybe ease the routing and shuffling of the address and register buses...

For the MUX16, things are pretty easy : take the two halves of the MUX32, and make two MUX16. Their combined weights are 7887 and you can connect green to green and blue to blue, you just have to swap red and black. Add two resistors and you're done.

Swapping some pins will makes the tracks even more easy to route !

What we get now is a very simple routing pattern that is repeated 9 times for each pair of upper/lower boards. The log Backplane routing considerations is now obsolete!