Un encodeur effectue le travail inverse du décodeur: lorsqu’une de ses \(2^n\) (ou moins) entrées est activée, il donne le code binaire correspondant sur ses \(n\) sorties vues comme un vecteur binaire. Le circuit ne nécessite pas vraiment d’entrée pour \(D_0\).
Encodeur 3 bits
$$D_0$$ | $$D_1$$ | $$D_2$$ | $$D_3$$ | $$D_4$$ | $$D_5$$ | $$D_6$$ | $$D_7$$ | $$x$$ | $$y$$ | $$z$$ | |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Cette configuration d’encodeur exige qu’une seule entrée soit activée à la fois. Activer plus d’une entrée ne correspond en effet à rien de valide: comment donner un sens à une telle combinaison au moyen d’un vecteur de \(n\) bits? Les sorties produites alors seront des vecteurs binaires sans signification.
Un encodeur à priorité met en oeuvre une priorité entre les entrées. S’il y a plus d’une entrée 1 en même temps, la sortie sera celle qui correspond à l’entrée active qui a la plus grande priorité. Voici le tableau de vérité pour un encodeur 2 bits à priorité, dans lequel on a ajouté une sortie \(V\) qui indique la validité des sorties. Si aucune entrée n’est active, \(V=0\) et les sorties \(x\) et \(y\) ne doivent pas être prises en compte.
Lorsque des entrées sont activées, c’est celle qui a le plus grand indice qui est prioritaire.
$$D_0$$ | $$D_1$$ | $$D_2$$ | $$D_3$$ | $$x$$ | $$y$$ | $$V$$ | |
---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | X | X | 0 | |
1 | 0 | 0 | 0 | 0 | 0 | 1 | |
X | 1 | 0 | 0 | 0 | 1 | 1 | |
X | X | 1 | 0 | 1 | 0 | 1 | |
X | X | X | 1 | 1 | 1 | 1 |
Diag-K pour \(x\)
Diag-K pour \(y\)
En simplifiant, on trouve les expressions suivantes:
\[x = D_2 + D_3\] \[y = (D_1 D_2^\prime) + D_3\] \[V = D_0 + D_1 + D_2 + D_3\]Encodeur 2 bits à priorité, en P de S
Puisque le terme \(x = D_2 + D_3\) est déjà calculé pour \(x\), on peut le réutiliser pour construire le terme pour \(V\), tel qu’illustré ci-dessous, ce qui évite d’utiliser une porte OU à quatre entrées.
Encodeur 2 bits à priorité avec ré-utilisation d’un des termes