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, 2018 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, 2018 at 6:31

1 Answer 1


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).

  • \$\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, 2018 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, 2018 at 4:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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