New Priority Encoder
New Priority Encoder
Navigation
Reset
Tutorial: 4 of 8
One of the main disadvantages of standard digital encoders is that they can generate the wrong output code when there is more than one input present at logic level "1". For example, if we make inputs D1and D2 HIGH at logic "1" both at the same time, the resulting output is neither at "01" or at "10" but will be at "11" which is an output binary number that is different to the actual input present. Also, an output code of all logic "0"s can be generated when all of its inputs are at "0" OR when input D0 is equal to one. One simple way to overcome this problem is to "Prioritise" the level of each input pin and if there was more than one input at logic level "1" the actual output code would only correspond to the input with the highest designated priority. Then this type of digital encoder is known commonly as a Priority Encoderor P-encoder for short.
Priority Encoder
The Priority Encoder solves the problems mentioned above by allocating a priority level to each input. The priority encoders output corresponds to the currently active input which has the highest priority. So when an input with a higher priority is present, all other inputs with a lower priority will be ignored. The priority encoder comes in many different forms with an example of an 8-input priority encoder along with its truth table shown below.
Priority encoders are available in standard IC form and the TTL 74LS148 is an 8-to-3 bit priority encoder which has eight active LOW (logic "0") inputs and provides a 3-bit code of the highest ranked input at its output. Priority encoders output the highest order input first for example, if input lines " D2", "D3" and "D5" are applied simultaneously the output code would be for input "D5" ("101") as this has the highest order out of the 3 inputs. Once input " D5" had been removed the next highest output code would be for input "D3" ("011"), and so on. The truth table for a 8-to-3 bit priority encoder is given as:
Digital Inputs
D7 0 0 0 0 0 0 0 1 D6 0 0 0 0 0 0 1 X D5 0 0 0 0 0 1 X X D4 0 0 0 0 1 X X X D3 0 0 0 1 X X X X D2 0 0 1 X X X X X D1 0 1 X X X X X X D0 1 X X X X X X X
Binary Output
Q2 0 0 0 0 1 1 1 1 Q1 0 0 1 1 0 0 1 1 Q0 0 1 0 1 0 1 0 1
From this truth table, the Boolean expression for the encoder above with inputs D0 to D7 and outputsQ0, Q1, Q2 is given as: Output Q0
Output Q1
Output Q2
Then the final Boolean expression for the priority encoder including the zero inputs is defined as:
In practice these zero inputs would be ignored allowing the implementation of the final Boolean expression for the outputs of the 8-to-3 priority encoder above to be constructed using individual ORgates as follows.
Encoder Applications
Keyboard Encoder
Priority encoders can be used to reduce the number of wires needed in a particular circuits or application that have multiple inputs. For example, assume that a microcomputer needs to read the 104 keys of a standard QWERTY keyboard where only one key would be pressed either "HIGH" or "LOW" at any one time. One way would be to connect all 104 wires from the keys directly to the computer but this would be impractical for a small home PC, but another better way would be to use a priority encoder. The 104 individual buttons or keys could be encoded into a standard ASCII code of only 7-bits (0 to 127 decimal) to represent each key or character of the keyboard and then inputted as a much smaller 7-bit B.C.D code directly to the computer. Keypad encoders such as the 74C923 20-key encoder are available to do just that.
Positional Encoders
Another more common application is in magnetic positional control as used on ships navigation or for robotic arm positioning etc. Here for example, the angular or rotary position of a compass is converted into a digital code by a 74LS148 8-to-3 line priority encoder and inputted to the systems computer to provide navigational data and an example of a simple 8 position to 3-bit output compass encoder is shown below. Magnets and reed switches could be used at each compass point to indicate the needles angular position.
Compass Direction
North North-East East South-East South South-West West North-West
Q0
0 0 0 0 1 1 1 1
Binary Output Q1
0 0 1 1 0 0 1 1
Q2
0 1 0 1 0 1 0 1
Interrupt Requests
Other applications especially for Priority Encoders may include detecting interrupts in microprocessor applications. Here the microprocessor uses interrupts to allow peripheral devices such as the disk drive, scanner, mouse, or printer etc, to communicate with it, but the microprocessor can only "talk" to one peripheral device at a time. The processor uses "Interrupt Requests" or "IRQ" signals to assign priority to the devices to ensure that the most important peripheral device is serviced first. The order of importance of the devices will depend upon their connection to the priority encoder.
IRQ Number
IRQ 0 IRQ 1 IRQ 3 IRQ 4 IRQ 5 IRQ 6 IRQ 7 IRQ 12 IRQ 14 IRQ 15
Typical Use
System timer Keyboard COM2 & COM4 COM1 & COM3 Sound Floppy disk Parallel port Mouse Primary IDE Secondary IDE
Description
Internal System Timer. Keyboard Controller. Second and Fourth Serial Port. First and Third Serial Port. Sound Card. Floppy Disk Controller. Parallel Printer. PS/2 Mouse. Primary Hard Disk Controller. Secondary Hard Disk Controller.
Because implementing such a system using priority encoders such as the standard 74LS148 priority encoder IC involves additional logic circuits, purpose built integrated circuits such as the 8259 Programmable Priority Interrupt Controller is available.