当前位置: 首页 > news >正文

数字电子技术基础(三十三)——编码器

目录

1 编码器

1.2 普通编码器

1.2 优先编码器

1.2.1 8线-3线优先编码器

1.2.2 二—十进制优先编码器

1.3 普通译码器控制端扩展功能举例


1 编码器

编码是将输入的每个高低电平信号变为一个对应的二进制编码。编码器是将特定的输入信号转换为特定格式的输出信号,目的是将较多的输入信号编码转换为输入信号较少的输出信号,主要是用于数据压缩的内容、信号传输等功能。

编码器可以分为两类,分别是普通编码器和优先编码器,如下图所示:

图1 编码器的分类

1.2 普通编码器

普通编码器是用n位二进制代码对于N(=2^n)个对象进行编码的电路。其中N表示有N个输入变量,任何时刻只有一个输入有效,n表示n个输出变量,二进制数码的位数。

一个普通译码器,任何时刻只允许输入一个编码信号,负责将会出现混乱。对于普通译码器来说,经典的译码器就是8线-3线编码器。如下所示为8线-3线编码器的框图:

图2 8线-3线优先编码器的逻辑框图

对应的真值表如下所示:

图3 8线-3线优先编码器的真值表

对应的逻辑式如下所示:

                              Y_2=I_0'I_1'I_2'I_3'I_4I_5'I_6'I_7'+I_0'I_1'I_2'I_3'I_4'I_5I_6'I_7'+I_0'I_1'I_2'I_3'I_4'I_5'I_6I_7'+I_0'I_1'I_2'I_3'I_4'I_5'I_6'I_7

                              Y_1=I_0'I_1'I_2I_3'I_4'I_5'I_6'I_7'+I_0'I_1'I_2'I_3I_4'I_5'I_6'I_7'+I_0'I_1'I_2'I_3'I_4'I_5'I_6I_7'+I_0'I_1'I_2'I_3'I_4'I_5'I_6'I_7

                              Y_0=I_0'I_1I_2'I_3'I_4'I_5'I_6'I_7'+I_0'I_1'I_2'I_3I_4'I_5'I_6'I_7'+I_0'I_1'I_2'I_3'I_4'I_5I_6'I_7'+I_0'I_1'I_2'I_3'I_4'I_5'I_6'I_7

在任何时刻I_0\sim I_7之间仅仅仅有一个取值为1,输入仅有上面真值表中的8种状态,因此可以化简,得到如下所示的化简公式:

                                                           Y_2=I_4+I_5+I_6+I_7

                                                           Y_1=I_2+I_3+I_6+I_7

                                                           Y_0=I_1+I_3+I_5+I_7

在这里需要注意的是不能使用传统化简方式进行,如果使用传统化简方式的话会出现错误。

1.2 优先编码器

普通编码器要求同一时刻输入信号互斥,即同一时刻只能有一个输入信号有效,否则会出现错误,而优先编码器允许同时输入两个以上的编码信号,当几个输入信号同时出现时,只对于优先级最高的一个进行编码。

1.2.1 8线-3线优先编码器

如下所示为8线-3线优先编码器的电路示意图:“

图4 8线-3线优先编码器的电路图

如下所示为8线-3线优先编码器74HC148的逻辑图:

图5 74HC148的逻辑图

写出输出逻辑式,可以得到:

                                                         Y_2'=((I_4+I_5+I_6+I_7)S)'

                                                         Y_1'=((I_2I_4'I_5'+I_3I_4'I_5'+I_6+I_7)S)'

                                                         Y_0'=((I_1I_2'I_4'I_6'+I_3I_4'I_6'+I_5I_6'+I_7)S)'

在上面公式中,S'为选通输入端,当S‘=0,即S=1时,编码器可以正常工作。当S'=1时,所有的输出端被封锁在了高电平。

为了扩展电路的功能和增加使用的灵活性,在74HC148的逻辑电路中附加了门G_1G_2G_3的控制电路。在74HC148芯片加入控制电路是多方面原因。包括:

  • 扩展输入/输出:单个74HC148芯片只能有8个输入/3个输出,通过增加控制电路,可以完成级联多个74HC148芯片完成16线-4线编码器。
  • 消除竞争和冒险:当输入信号变化时,编码器可能会出现短暂毛刺。
  • 接口电平转换:74HC148是CMOS器件,若连接TTL门电路的话有可能需要电平配平。

选通输出端Y_S'和扩展端Y_{EX}'用于扩展编码功能,可得:

                                                            Y_S'=(I_0'I_1'I_2'I_3'I_4'I_5'I_6'I_7'S)'

                                                         Y_{EX}'=((I_0'I_1'I_2'I_3'I_4'I_5'I_6'I_7'S)'S)'

                                                                   =((I_0+I_1+I_2+I_3+I_4+I_5+I_6+I_7)S)'

在上面公式中,当S=1时,Y_S'才是低电平,因此Y_S'的低电平输出信号表示“电路工作,但无编码输入”。任何一个编码输入端有低电平信号输入,且S=1,Y_{EX}'即为低电平。因此,Y_{EX}'的低电平输出信号表示“电路工作,而且有编码输入”。

注:

 在使用Digital软件画电路图的时候,也可以直接使用74148芯片代替74HC148,74148芯片如下所示:

图6 74168芯片示意图

74148芯片和74HC148都是8线-3线优先编码器,它们的功能是相同的,但是属于不同逻辑序列,主要是工艺、电气特性、兼容性和输入/输出特性等方面不一样。

首先,在工艺上,74HC148芯片属于CMOS系列,功耗较低,速度较快,而74148芯片属于TTL系列,功耗较高,速度中等;在电气特性上,仅支持5V供电,74HC148支持更宽的范围(2V~6V),适合低电压或电池供电场景;在兼容性上,可以直接替换老式TTL门电路(如74LS148),而74HC148需要电平匹配;在输入/输出特性上,74148的驱动能力较强,而74HC148驱动能力较弱。

如果设计现代低功耗系统,那么74HC148更合适,如果维护旧式TTL电路,那么74148兼容型号。

74HC148的逻辑框图为:

图7 74HC148的逻辑框图

74HC148的功能表为:

图8 74HC148芯片的功能表

通过上表的内容可以看出,当I_7'的优先级最高,I_0'的优先级最低。当I_7'=0,无论其他输入端有无输入信号,输出端只给I_7'的编码,即Y_2'Y_1'Y_0'=000

1.2.2 二—十进制优先编码器

二—十进制优先编码器是一种优先编码器,是用于10个十进制输入转为4位BCD输出,二—十进制,它能将I_0'\sim I_9'10个输入信号分别变为10个BCD码,在I_0'\sim I_9'I_9'的优先级最高,I_0'的优先级最低。

                                                               Y_3'=(I_8I_9'+I_9)'

                                          Y_2'=(I_7I_8'I_9'+I_6I_7'I_8'I_9'+I_5I_6'I_7'I_8'I_9')'

                        Y_1'=(I_7I_8'I_9'+I_6I_7'I_8'I_9'+I_3I_4'I_5'I_6'I_7'I_8'I_9'+I_2I_3'I_4'I_5'I_6'I_7'I_8'I_9')'

如下所示为逻辑图如下所示:

图9 二-十进制优先编码器的电路图

74HC147的逻辑框图如下所示:

图10 74HC147的逻辑框图

将上图转换为真值表的形式如下所示: 

图11 74HC147的真值表

通过上面真值表的内容可知,对于二—十进制优先编码器输入信号来说,会从低位到高位依次检测,当检测到第一个0所在位置时,此时有效位数为从低位到0所在位数之间的位数和。例如0101111111有效位为7。

1.3 普通译码器控制端扩展功能举例

对于两个8线-3线优先编码器可以扩展为16线-4线优先编码器转换为:

图12 两个74HC148连接在一起

如何控制两篇74HC148芯片正常工作呢?需要设计电路对于两个芯片设计电路进行控制,Y_S'Y_{EX}'之间的关系如下表所示:

表1  Y_S'Y_{EX}'之间的真值表
Y_S'Y_{EX}'状态
11不工作
10工作,且有输入
01工作,但无输入
00不可能出现

电路图如下所示: 

图13 16线-4线优先编码器

在高八位工作的时候,低八位不可能工作;只有当高八位不工作的时候,低8位才有可能工作。

分析上面电路图,为什么Y_{EX}'可以直接连接Z_3呢?原因是当Y_{EX}为1,Y_{EX}'为0时,此时表示第一块74HC148芯片有输入,Y_{EX}'取反之后,Z_3为1。如果Y_{EX}为0,Y_{EX}'为1时,表示第一块74HC149芯片无输入,Y_{EX}'取反之后,Z_3为0。

而另外三位Z_2Z_1Z_0中为什么需要两片芯片之间进行与非操作呢?对于16线-4线优先编码器低三位两片芯片的输出进行“与非”操作。例如输入A_{11},此时对于高8位的74HC148芯片相当于相当于单独工作时输入了十进制3,此时Y_2Y_1Y_0输出的是011,则Y_2'Y_1'Y_0'为100,而低8位的74HC148芯片的Y_2Y_1Y_0无输入操作为000,则Y_2'Y_1'Y_0'为111,此时高8位和低8位的Y_2'Y_1'Y_0'相与非为011,再加上前面的Z_3最终得到结果。

如果16线-4线优先编码器继续扩展为32线-5线优先编码器或者64线段-6线优先编码器,可以直接将上面16线-4线优先编码器当成一个模块,只需要将两个芯片的Y_{EX}'连接到一起即可,如下图所示:

图14 两个74HC148连接在一起作为一个模块

以上图所示的连接方式连在一起的话,则可以把两个74HC148作为一个模块。

(本节参考清华大学王红的《数字电子技术基础》课程内容)。

相关文章:

  • 数据库练习
  • 使用ZMQ和protobuf实现C++程序与Python程序的通信
  • 多行为推荐综述
  • 混境之地1
  • 批量删除 PDF 中的所有图片、所有二维码图片以及指定的某张图片
  • CCF CSP 第33次(2024.03)(2_相似度计算_C++)(字符串中字母大小写转换+哈希集合)
  • Mysql的单表查询和多表查询
  • Cookie、sessionStorage、localStorage
  • vue3(笔记)5.0--pinia工具的知识扩展
  • 系统工程-信息系统的分类
  • How to use pgbench to test performance for PostgreSQL?
  • 【C++】String类的模拟实现
  • [Qt5] QMetaObject::invokeMethod使用
  • Netty源码—7.ByteBuf原理三
  • 蓝桥云客-染色时间
  • 1424.对角线遍历
  • 322 零钱兑换
  • 【大模型基础_毛玉仁】4.4 低秩适配方法
  • RocketMQ 4.x、5.x 性能对比
  • 绩效考核如何从形式化任务升级为公司战略工具?
  • 宇树科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入
  • 巴基斯坦对印度发起网络攻击,致其约70%电网瘫痪
  • 红场阅兵即将开始!中国人民解放军仪仗队亮相
  • 印巴冲突升级,巴基斯坦股市重挫7.29%,创5年来最大单日跌幅
  • 深入贯彻中央八项规定精神学习教育中央第六指导组指导督导中国工商银行见面会召开
  • 定位真核生物起源于约27.2亿年前,华东师大团队在《自然》发文