网站搜索:
第5节 译码器
文章出处:与非网
更新于2008-05-16 12:11:22

译码电路接收N比特二进制码形式的输入,并根据要求产生一个或多个输出。译码输入部分可以看作是一个二进制数来表示编码的数量,而输出要根据译码数量来驱动其它电路和器件。比如,一个PS/2键盘译码器,会将每一次按下键盘所形成的“扫描码”进行译码(在PS/2键盘上,每一个按键都有其唯一的二进制码,这就是扫描码)。绝大多数的键盘扫描码都会简单的直接发送到主机来处理,但是也有一部分扫描码也完成指定的功能。比如,如果按下“caps lock按键,就会产生一个信号并点亮键盘上的显示灯,如果按下“Cntrl+Alt+Del,那么就产生一个信号来中断PC的操作。

这里,我们将讨论两种不同的译码器-一种是简单的二进制译码器,还有一种是七段译码器,一般用于数字数据的显示。
一个二进制译码器有N个输入和2N个输出。它接收N个输入(一般用总线来表示一组二进制数)并根据输入来使一个且只有一个输出信号有效。如果将N个输入看作是N-比特的二进制码,那么只有与这个二进制码相对应的输出才会有效。比如,一个二进制码5(或是101)输入到一个有3个输入,8个输出的3:8译码器中,那么该译码器只有第5路输出会有效,而其它几路输出都无效。实际应用的译码电路一般都是2个输入和22(4)个输出的2:4译码器,3个输入23(8)个输出的3:8译码器,还有4个输入24(16)个输出的4:16译码器。一个译码器电路需要一个与门驱动一个输出,并且每个与门都只对一个二进制数译码。比如,一个3:8译码器需要8个与门,第一个与门有输入 ,第二个与门输入为 ,第三个与门输入为 ,以此类推。
如果需要使用一个超过4:16的译码器,那么可以用较小的译码器来构造。要构造大型的译码电路,必须要使用带有输入使能信号的译码器。和在多路器中一样,在译码器中,当输入使能信号无效时,所有输出均为0,当输入使能信号有效时,译码器正常工作。
译码器通常在复杂数字系统中使用,用于接入指定内存位置,即由计算设备产生的“地址”。在这个应用中,地址就是输入数据的编码,而输出就是指定内存单元的选择信号。在典型的存储器电路中,通常都用译码器来选择可写的内存单元,用多路器和内存单元本身来选择可读的内存单元。
和多路器一样,译码器最常用的应用已经超出了我们目前的讨论范围,所以我们只将考虑一个不常用的,带有演示性质的应用。考虑一个译码器功能,以及该功能的真值表,K图或最小项表述。真值表中的每一行,K图中的每一个单元还有等式中每一个最小项标号,都表示一种特定的输入组合。译码器的输出有效对于指定的输入组合都具有排他性。因此,如果给定逻辑功能的输入连接到了译码器的输入端,同时也作为K图的输入逻辑变量,那么在K图单元和译码器输出之间就产生了一对一的映射关系。这样,用真值表和K图描述的逻辑功能都可以直接用译码器来搭建,只需要将与真值表中所有含1的行或K图中所有含1的单元相对应的输出信号再相或就可以了(与真值表中所有含0的行或K图中所有含0的单元相对应的译码器输出不连接)。在这样的电路中,如果在真值表行中或K图单元中为逻辑1,那么其相应的输入组合也能驱动或门到逻辑1;同样的,如果在真值表行中或K图单元中为逻辑0,那么其相应的输入组合驱动或门的输出为逻辑0。注意,当用译码器直接搭建真值表或K图中的电路时,不许要最简化逻辑。用这种方法使用译码器可以节省时间,但是搭建出的电路效率不高。
译码器可以简单的在行为性VHDL中用selected信号赋值表达式描述,如由图所示。在该例中,输入和输出都作为一组总线,这样就可以使用selected赋值表达式。输入也可以独立的表示为I(1)和I(0),输出独立的表示为Y(0)到Y(3)。通过简单的修改代码就可以产生任何大小的译码器。

 

<<上一节    下一节>>



关于OpenHW | OpenHW使用说明 | FAQ | 相关法律 | 版权声明 | 网站地图
联系邮件:xiaoquan@eefocus.com  联系电话: 010-58859035-8012
Powered by eefocus.com