So this is the truth table given for the Priority Encoder: enter image description here and this is its logic diagram:
enter image description here I am extremely confused with the part where the outputs x and y are labeled as X (where D0 D1 D2 D3 are all zero). First of all, how could an output be a "don't care" term? What that would mean is that when D0 D1 D2 D3 are all zero, x and y are either 1 or 0. But that does not make sense at all. How could an output have an indefinite value when we have definite inputs?

As you can see from the diagram, x = D2 + D3 and y = D3 + D1D2'. So if you put zeros to all inputs it is clear that x and y should be 0. Then why is it shown as X in the truth table?

  • \$\begingroup\$ I think they mean that if V is false, nothing is sopposed to care about the vales of x and y. Ie. the inputs of whatever that the outputs connect to need to have "don't care" in their truth tables. \$\endgroup\$ – Oskar Skog Oct 23 '18 at 4:16
  • \$\begingroup\$ it is not undefined ... it is don't care ..... the truth table came before the circuit .... the designer of the truth table decided that those values are irrelevant \$\endgroup\$ – jsotola Oct 24 '18 at 6:31

To me this is a by-product of all those logic synthesis programs (Quartus, Vivado, etc.) Because the priority of the V(alid) signal overrides the values of x,y outputs, it effectively gives the synthesis algorithms another degree of freedom when optimizing the logic (this is an extremely simple version of course).

In more complicated scenarios if you say in your truth table that x,y must also be 0,0, when V is 0, then the program may over-constrain the logic map and as a result use more gates, whereas if you have a truth table that only cares that V=0 when presented with all 0's inputs and x,y values don't matter you may save some gates (for other uses).

| improve this answer | |
  • \$\begingroup\$ The part that I dont understand in your answer is that, what makes V superior to x and y? Why must we say that do not care about x and y when V = 0? Is it for pure convenience and not to cause "distraction" for programs? Thanks. \$\endgroup\$ – Huzo Oct 23 '18 at 4:35
  • 2
    \$\begingroup\$ @Huzo, V is for "valid". If V is low, it's telling the next circuit that the encoder didn't get a valid input, so it's encoder outputs are not useful. Since the next circuit now knows the other outputs aren't useful, it doesn't matter what outputs are actually produced. \$\endgroup\$ – The Photon Oct 23 '18 at 4:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.