优先编码器(英語: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 |
优先编码器可以排列连接在一起,组成更大规模的编码器,如6个4线-2线优先编码器可以组成1个16线-4线编码器,其中信号源作为4个编码器的输入,前4个编码器的输入作为2个编码器的输入。
优先编码器相比简单编码器电路有更强的处理能力,因为其能处理所有的输入组合情况。
简单编码器
简单编码器电路可以接受2n中的一个有效输入,并在n条并行输出线上生成一个二进制码。
例如,一位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 |
如果一个输入电路只允许一个有效输入,简单编码器相对于优先编码器是一个更好的选择,因为需要比较少的逻辑门来实现。
参考文献
- ^ M. Morris Mano, Michael D. Ciletti, "Digital Design", 4th Edition, Prentice Hall, 2006, ISBN 978-0-13-198924-5.