I was supposed to make a full adder circuit of two 1 bit numbers using any amount of 1/4 demultiplexers and only one NOR gate with arbitrary number of inputs.I have no idea how to do this.Is such thing even possible?With just one NOR gate you can have either a carry bit output or a sum bit output, not both.How does one approach a problem like this one?What's the general procedure?
-
\$\begingroup\$ There isn't a general procedure. This is a puzzle-type problem, not the kind of thing that you'll actually encounter in real design. Still fun if you like puzzles :) \$\endgroup\$– JustinCommented Jan 29, 2019 at 20:03
-
\$\begingroup\$ I don't think there is a general procedure here. Start with each FA function distinctly and see how you can implement with the given constraints. \$\endgroup\$– Eugene Sh.Commented Jan 29, 2019 at 20:03
-
\$\begingroup\$ @EugeneSh.I did, I've spent over 1 hour and still have no clue if this is even possible with given constraints.Considering how there's (almost) infinite amount of things that can be done and only one of them is correct, this is pretty difficult. \$\endgroup\$– JoeDoughCommented Jan 29, 2019 at 20:15
-
\$\begingroup\$ @JoeDough I agree. I don't have a solution from the top of my mind as well. If you ask me if it is a good exercise that is teaching any useful engineering skill - I would say no. \$\endgroup\$– Eugene Sh.Commented Jan 29, 2019 at 20:22
-
\$\begingroup\$ Is the NOR gate to provide the combination of the Carry bits? \$\endgroup\$– analogsystemsrfCommented Jan 30, 2019 at 3:21
1 Answer
A dumb, but a universal approach would be to use the demux to implement a universal gate such as NOR
. Each demux can implement 4 different functions of two variables on the following way:
|^^^^^^|
| |--- A'B'
1 ---| |--- A'B
| |--- AB'
| |--- AB
|______|
| |
A B
Notice A'B'
. It is the same as (A+B)'
, which is... NOR
!
So this proves that the task is possible and doable (or a stronger claim - that any logical function can be implemented using 1-4 demuxes).
As a bonus you can get an AND
gate and two components of XOR
out of it, which will significantly reduce the number of such a a units in the final circuit.
Note
If you are not allowed to use constants such as 1
, you can utilize the provided single NOR
gate connected to the two of the demux outputs as following:
|^^^^^^|
| |---______
A ---| |---\ NOR \____
| |---/_____/
| |---
|______|
| |
A A
Since these two outputs will be low for any A
, the NOR
will output 1
always.
-
\$\begingroup\$ This scheme reminds me of how FPGA logic units work, only they use multiplexers and constants instead. \$\endgroup\$– HearthCommented Jan 29, 2019 at 22:11
-
\$\begingroup\$ @Hearth Well, multiplexers a much more convenient in terms of arbitrary logical function implementation... \$\endgroup\$ Commented Jan 29, 2019 at 22:33
-
\$\begingroup\$ I haven't considered making standard logic gates at all (for some reason I thought it wasn't possible), cramming all the logic into as few demuxes as possible obviously wasn't a good idea.How did you approach this problem?Where did you start from and why?I'm interested in your thought process from reading the problem to finding a solution. \$\endgroup\$– JoeDoughCommented Jan 30, 2019 at 16:21
-
\$\begingroup\$ @JoeDough Well, obviously it is not a full solution, but a somewhat general method. You could start with writing down the functions of demux in general and identify which variables you could fix and which to use as an input to get something useful. At first I though about using the
AND
function and one of the other functions to implementNOT
and have it combined intoNAND
, but then, when I started to write the answer I was that there is a ready to useNOR
. \$\endgroup\$ Commented Jan 30, 2019 at 16:27 -
\$\begingroup\$ The second part - about getting constant
1
was kind of intuitive. It is obvious that you can't get it out of demux alone no matter what the inputs are, if they are variable. Meaning that you need something to combine these. The only thing that we have here is thisNOR
. Now,NOR
requires two low inputs to produce1
. Now you only need to find two inputs that will always be low, while feeding it any input. The choice of feedingA
was arbitrary. \$\endgroup\$ Commented Jan 30, 2019 at 16:30