Codificador de prioridad

Un codificador de prioridad entrega el indice binario de la entrada activa de mayor prioridad, ignorando las entradas activas de menor prioridad. Un indicador de valido distingue el caso de todo en cero de un indice genuino 0. Es el inverso de un decodificador y la forma estandar de arbitrar solicitudes en competencia.

Básico

Codificador de prioridad 4 a 2

Cuatro lineas de solicitud producen un codigo de 2 bits mas un bit de valido V. Cuando I2 e I1 estan activas, gana la de mayor prioridad I2 y el codigo es 10. Si ninguna entrada esta activa, V es 0.

I3I2I1I0VA1A0
00000--
0001100
001x101
01xx110
1xxx111
Intermedio

Codificador de prioridad 8 a 3

Ocho entradas se reducen a un codigo de 3 bits. Con I5 e I2 activas, el codificador informa 101 porque I5 tiene el indice mayor. Agregar habilitacion de entrada y de salida permite encadenar varios codificadores en uno mayor.

Codificador de prioridad 8 a 3
Avanzado

Controlador de interrupciones

Cuando varios dispositivos piden interrupcion a la vez, un codificador de prioridad convierte las lineas de solicitud en el vector binario del mas urgente, que la CPU usa para saltar al manejador correcto. Es el corazon de los controladores de interrupciones clasicos como el 8259.

Controlador de interrupciones

Citas

  • Shannon, C. E. (1938). A symbolic analysis of relay and switching circuits. Referencia 1
  • Texas Instruments (2003). SN74HC148: 8-line to 3-line priority encoders [Data sheet]. Referencia 2
  • Mano, M. M., & Ciletti, M. D. (2018). Digital design: With an introduction to the Verilog HDL, VHDL, and SystemVerilog (6th ed.). Pearson.