Encodeur de priorite

Un encodeur de priorite fournit l'index binaire de l'entree active de plus haute priorite, en ignorant les entrees actives de priorite inferieure. Un drapeau de validite distingue le cas tout-a-zero d'un index reel 0. C'est l'inverse d'un decodeur et la maniere standard d'arbitrer des requetes concurrentes.

Basique

Encodeur de priorite 4 vers 2

Quatre lignes de requete produisent un code de 2 bits plus un bit de validite V. Quand I2 et I1 sont actives, la plus prioritaire I2 l'emporte et le code est 10. Si aucune entree n'est active, V vaut 0.

I3I2I1I0VA1A0
00000--
0001100
001x101
01xx110
1xxx111
Intermédiaire

Encodeur de priorite 8 vers 3

Huit entrees se reduisent a un code de 3 bits. Avec I5 et I2 actives, l'encodeur indique 101 car I5 a l'index le plus eleve. Ajouter une validation d'entree et de sortie permet de chainer plusieurs encodeurs en un plus grand.

Encodeur de priorite 8 vers 3
Avancé

Controleur d'interruptions

Quand plusieurs peripheriques declenchent des interruptions en meme temps, un encodeur de priorite transforme les lignes de requete en vecteur binaire du plus urgent, que le CPU utilise pour sauter au bon gestionnaire. C'est le coeur des controleurs d'interruptions classiques comme le 8259.

Controleur d'interruptions

Citations

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