Encoder

Thread Starter

digitalize

Joined Apr 15, 2015
9
I'm currently working on an assignment where a 3-input encoder that assigns a 2-bit code to each of the three input combinations. Here I'm trying to figure out how many implementations I could have. So, for example I have 2^3, which is 8 possibilities.
Here is my current three input combinations:
|X|Y|Z | A|B|
|0|0|1 | 0|1|
|0|1|0 | 1|0|
|1|0|0 | 1|1|

My question is, if there are a total of 8 total possibilities and 5 of them are don't care, is it possible to have more than three implementations? I feel as though I'm confusing myself with implementation and possibilities.
 

WBahn

Joined Mar 31, 2012
30,062
I'm currently working on an assignment where a 3-input encoder that assigns a 2-bit code to each of the three input combinations. Here I'm trying to figure out how many implementations I could have. So, for example I have 2^3, which is 8 possibilities.
Here is my current three input combinations:
|X|Y|Z | A|B|
|0|0|1 | 0|1|
|0|1|0 | 1|0|
|1|0|0 | 1|1|

My question is, if there are a total of 8 total possibilities and 5 of them are don't care, is it possible to have more than three implementations? I feel as though I'm confusing myself with implementation and possibilities.
Not sure what you are asking. Where does the "three implementations" come from to begin with?

Let's simply things and use two inputs and say that I'm only interested in having the output, Y, follow the following two states for the inputs, A and B (with all the others being don't cares):

|A|B|Y|
|1|0|0|
|1|1|1|

I could implement this a number of ways, including just setting Y=B. But I could also use an AND gate or an XNOR gate. I could also implement it using a circuit that has ten thousand gates, which gets into the distinction between a logic function and an implementation of that function.

In this case, I have two Boolean inputs so I have four possible combinations. Since two of those combinations are don't cares, those two lines could take on any of four possible combination of output values. Hence there are four Boolean functions on those two inputs that will give me what I want. But each of those functions can be implemented in an infinite number of ways.

As an example, consider the function Y = A+B. I can implement that direction using an OR gate. But I can also implement it as Y=(A'B')'. It's a different implementation of the exact same function.
 

Thread Starter

digitalize

Joined Apr 15, 2015
9
I actually meant 4 implementations. Here are the four:
a=z'
b=y'
a=x'yz'+xy'z'
b=x'y'z +xy'z'

I was wondering if more were were possible?
 

WBahn

Joined Mar 31, 2012
30,062
I actually meant 4 implementations. Here are the four:
a=z'
b=y'
a=x'yz'+xy'z'
b=x'y'z +xy'z'

I was wondering if more were were possible?
Sure more are possible.

Take your first function for A, namely A=Z'. Enumerate the truth table for it. Now flip the state of any on of the "don't care" rows and you have a different function that, if implemented, gives you the correct output for the three rows you happen to care about.

How many different ways can I change the function outputs for five rows? That's how many different functions there are that will produce the correct output for the three rows you care about -- and that's just for the A output. You have the same for the B output. Now consider that you get to mix and match A and B outputs.
 

Thread Starter

digitalize

Joined Apr 15, 2015
9
Ok, I think I get it, so if I have 5 don't care states, then couldn't I just take 2^5=32, which give me possible implementations for A only? Then I would have to do the same for B.
 

WBahn

Joined Mar 31, 2012
30,062
Ok, I think I get it, so if I have 5 don't care states, then couldn't I just take 2^5=32, which give me possible implementations for A only? Then I would have to do the same for B.
That will give you the number of unique functions for each output. But there are literally in infinite number of implementations.

Consider the function Y=A+B. I could implement that as

Y = A+B
Y = A'B + AB' + AB (canonical SOP)
Y = (A'B')'

and the list could keep going.
 
Top