优先编码器(英语:priority encoder)是一种能将多个二进制输入压缩成更少数目输出的电路算法。其输出是序数0到输入最高有效位的二进制表示。优先编码器常用于在处理最高优先级请求时控制中断请求

如果同时有两个或以上的输入作用于优先编码器,优先级最高的输入将会被优先输出。[1] 下图是一位4线-2线编码器的例子,其中最高优先级的输入在功能表的左侧,而“x”代表无关项,即可是1也可是0,也就是说不论无关项的值是什么,都不影响输出,只有最高优先级的输入有变化时,输出才会改变。

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
4线-2线优先编码器

优先编码器可以排列连接在一起,组成更大规模的编码器,如6个4线-2线优先编码器可以组成1个16线-4线编码器,其中信号源作为4个编码器的输入,前4个编码器的输入作为2个编码器的输入。

优先编码器相比简单编码器电路有更强的处理能力,因为其能处理所有的输入组合情况。

简单编码器

编辑

简单编码器电路可以接受2n中的一个有效输入,并在n条并行输出线上生成一个二进制码。

例如,一位4线-2线编码器输入4位,输出2位。当同时有超过一个输入线有效时,下例的编码器可能会错误地表现出优先编码器的行为。

 
4线-2线编码器的门级电路图
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
4线-2线编码器

如果一个输入电路只允许一个有效输入,简单编码器相对于优先编码器是一个更好的选择,因为需要比较少的逻辑门来实现。

参考文献

编辑
  1. ^ M. Morris Mano, Michael D. Ciletti, "Digital Design", 4th Edition, Prentice Hall, 2006, ISBN 978-0-13-198924-5.