This article does not contain any links to other Wikipedia articles. (January 2010) |
A priority encoder is a circuit or algorithm that compresses multiple binary inputs into a smaller number of outputs. They are often used to control interrupt requests by acting on the highest priority request.
If two or more inputs are given at the same time, the input having the highest priority will take precedence. An example of a single bit 4 to 2 encoder is shown, where highest-priority inputs are to the left and "x" indicates either a 1 or a 0 (i.e., either input value yields the same output when superseded by a higher-priority input).
I3 | I2 | I1 | I0 | O1 | O0 |
---|---|---|---|---|---|
0 | 0 | 0 | x | 0 | 0 |
0 | 0 | 1 | x | 0 | 1 |
0 | 1 | x | x | 1 | 0 |
1 | x | x | x | 1 | 1 |
Priority encoders can be easily connected in arrays to make larger encoders, such as a 16 to 4 encoder made from six 4 to 2 priority encoders (four encoders having the signal source connected to their inputs, and two encoders that take the output of the first four as input).
The priority encoder is an improvement on a simple encoder circuit, in terms of handling all possible input configurations.
Simple Encoder
A simple encoder circuit can receive a single active input out of 2n input lines generate a binary code on n parallel output lines.
For example a single bit 4 to 2 encoder takes in 4 bits and outputs 2 bits. Proper function requires that only one input line is active at a time.
I3 | I2 | I1 | I0 | O1 | O0 |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 |
0 | 0 | 1 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
1 | 0 | 0 | 0 | 1 | 1 |