| Priority Encoder | |||||||||||||
| We can't always assume that only one input will be 1. | |||||||||||||
| Priority encoder: assumes that at least one input will be 1. | |||||||||||||
| Which input to encode? Use priority scheme | |||||||||||||
| Larger subscripts could have higher priority | |||||||||||||
| Smaller subscripts could have higher priority | |||||||||||||
| Assume larger subscripts have priority | |||||||||||||
| Boolean expressions no longer necessarily valid | |||||||||||||
| Suppose x4 and x3 are both equal to 1 | |||||||||||||
| Then z2z1z0 = 111, but the result should be 100, since 4 has higher priority | |||||||||||||
| What does it mean that 4 has the highest priority? | |||||||||||||
| All of the higher inputs must be 0, and the lower inputs don't matter: | |||||||||||||
| \x7\x6\x5x4 | |||||||||||||
| Negate all literals with higher priority, and leave out lower ones | |||||||||||||
| Replace each term in original expressions | |||||||||||||
| z2 = x7 + \x7x6 + \x7\x6x5 + \x7\x6\x5x4 | |||||||||||||
| z1 = x7 + \x7x6 + \x7\x6\x5\x4x3 + \x7\x6\x5\x4\x3x2 | |||||||||||||
| z0 = x7 + \x7\x6x5 + \x7\x6\x5\x4x3 + \x7\x6\x5\x4\x3\x2x1 | |||||||||||||
| This can be further simplified. | |||||||||||||
| If x7 is the highest priority 1, then it doesn't matter if the other terms are 0 or not. | |||||||||||||
| z2 = x7 + x6 + \x6x5 + \x6\x5x4 | |||||||||||||
| Similarly, if x6 is the highest priority 1, then \x6 is not necessary in the other 2 terms. | |||||||||||||
| z2 = x7 + x6 + x5 + \x5x4 | |||||||||||||
| We can also eliminate \x5 in the last term. | |||||||||||||
| z2 = x7 + x6 + x5 + x4 | |||||||||||||
| (Notice that this expression gives back the original form.) | |||||||||||||
| In the expression for z1, however, we need to keep \x5 and \x4: | |||||||||||||
| z1 = x7 + x6 + \x5\x4x3 + \x5\x4x2 | |||||||||||||
| Likewise, for z0, we need to keep \x6, \x4, and \x2: | |||||||||||||
| z0 = x7 + \x6x5 + \x6\x4x3 + \x6\x4\x2x1 | |||||||||||||
| In general, we need to keep the negation of any literal which doesn't appear | |||||||||||||
| as a higher-priority value. | |||||||||||||
| What if all inputs are 0? | |||||||||||||
| We can encode the output as 000, and x0 will have the highest priority by default. | |||||||||||||