Close

From XOR to MUX

A project log for Hackaday TTLers

Where DIY DIP/SSI/MSI CPU makers meet and discuss other TLA (three letters acronyms)

Yann Guidon / YGDESYann Guidon / YGDES 01/17/2020 at 01:593 Comments

You might remember my musings with the XOR gate with interlocked NPN transistors discussed at Bipolar XOR gate with only 2 transistors

But thinking about how XOR is done with pass transistors in CMOS and the structure often creates a MUX, I wondered if I could translate this concept back to bipolar world.

This first result is pretty nice and compact though the circuit is highly unbalanced...

But for discrete, parts-constrained circuits, that might work...

The output could be used to directly drive another MUX stage if the next MUX swaps the NPN for PNP (and reverse polarity) though a big MUX could also be built with the single-transistor NPN-ANDN gate to then drive a big CTL AND gate.

Has anyone seen this circuit before ?


The MUX seems to work well on this Falstad simulation:

Another Falstad sim was required to validate the enhancements : an additional transistor to de-invert /B can be useful...

The source code is :

$ 1 0.000005 10.20027730826997 50 5 43
w 144 112 352 112 3
v 144 400 144 112 0 0 40 3 0 0 0.5
r 352 112 352 176 0 1000
t 304 240 336 240 0 1 0.6163510467707772 0.6473024119705006 100
t 416 240 384 240 0 1 -0.030951365199723496 0.027087887962126838 100
t 352 304 384 304 0 1 0.6173128261844162 0.6352410780104729 100
r 432 112 432 176 0 1000
r 240 304 304 304 0 1000
r 240 240 304 240 0 1000
w 352 176 352 208 2
w 336 224 336 208 0
w 336 208 352 208 0
w 352 208 384 208 0
w 384 208 384 224 0
w 144 400 336 400 0
w 384 400 384 320 0
w 384 288 384 256 0
w 304 304 352 304 0
L 240 304 208 304 0 1 false 3 0
L 240 240 208 240 0 1 false 3 0
L 240 368 208 368 0 1 false 3 0
w 336 400 384 400 0
w 336 352 336 256 0
w 336 352 432 352 0
w 416 240 432 240 0
w 432 240 432 352 0
t 304 368 336 368 0 1 0.6161066110712008 0.6611227508593843 100
w 352 112 432 112 0
w 432 240 432 176 0
w 336 400 336 384 0
w 464 208 384 208 0
r 240 368 304 368 0 1000
t 464 208 496 208 0 1 -2.924032495012093 0.07596750308398237 100
w 432 112 496 112 0
w 496 112 496 192 0
r 496 288 496 400 0 1000
w 384 400 496 400 0
w 496 224 496 288 3
38 18 2 0 3 B\sLow
38 18 1 0 3 B\sHigh
38 19 2 0 3 A\sLow
38 19 1 0 3 A\sHigh
38 20 2 0 3 CLK\slow
38 20 1 0 3 CLK\shigh

I have re-wired the B base resistor : it's now a pull-up that is shorted to 0V by the main SEL input. I added another transistor on the B input to get rid of the inversion (and some isolation).

The output is inverted with an common collector output stage, though an open collector is also possible, it would re-invert the value and make it a non-inverting MUX.

The select input and transistor can be shared by more than one MUX, which makes it an attractive solution for selecting a whole bus for example.


Here is the non-inverting MUX with open collector output :

So this is the version that would solve the problem found by @roelh  :-D


And when you have a MUX2, you can cascade 3 of them to build a MUX4 :-)

There are inversions here and there but some are opportunities to save a transistor.

Discussions

roelh wrote 01/17/2020 at 07:53 point

Nice MUX gate, Yann ! Could also be used for DCTL when base resistors are removed.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 01/31/2020 at 00:35 point

but that could fry the base if it is not protected...

  Are you sure? yes | no

roelh wrote 01/31/2020 at 07:42 point

In DCTL, the base current is limited by the collector resistor of the previous stage, so the base resistor can be omitted. You just have to be careful when a stage drives several inputs.

  Are you sure? yes | no