《逻辑与计算机设计基础(原书第5版)》——3.6 编码

简介: 本节书摘来自华章计算机《逻辑与计算机设计基础(原书第5版)》一书中的第3章,第3.6节,作者:(美)M.莫里斯·马诺(M. Morris Mano)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 编码

一个编码器是一个数字函数,它的作用与译码器的作用相反。一个编码器有2n(或少于2n)个输入和n个输出,输出产生与输入值相对应的二进制码。表3-5所示的真值表是一个八-二进制编码器的例子。该编码器有8个输入,每一个输入都是一个八进制数字,3个输出产生对应的二进制数字。假设任何时候只有一个输入的值为1,所以表格中只有8行有特定的输出值。其他剩余56行的所有输出都为无关项。
image

从真值表中我们可以看到,当某行的Dj为1且j的二进制表示在i位置的值为1时,该行中的Ai则为1。例如,如果输入为1或3或5或7,则输出A0=1。因为所有这些值都是奇数,所以它们二进制形式的0位置的值为1。这个方法可以用来建立真值表。从真值表得知,编码器可以通过n个或门来实现,每一个输出变量Ai用一个或门。每个或门将Dj为1,并且所在行的Ai也为1的输入变量合并起来。对于8-3线编码器,输出方程式为
A0=D1+D3+D5+D7
A1=D2+D3+D6+D7
A2=D4+D5+D6+D7
这些方程式可以用3个四输入或门来实现。
以上定义的编码器有一个限制条件,那就是任何时候只允许一个输入是活动的:如果同时有两个输入是活动的,输出将产生错误的结果。例如,如果D3和D6同时为1,编码器的输出就会为111,因为3个输出都等于1,这既不表示二进制数3,也不表示二进制数6。为了消除这种不确定性,有些编码器电路必须增加一个输入优先级来确保只有一个输入被编码。如果我们定义输入下标的数值越大,则输入的优先级就越高,那么当D3和D6同时为1时,输出为110,因为D6的优先级比D3的高。八-二进制编码器中另一个不确定的情况是,当所有的输入都为0时,输出为0值,但这与D0等于1时的输出是一样的。这一矛盾可以通过增加一个单独的输出以表示至少有一个输入等于1而得到解决。
3.6.1 优先编码器
优先编码器是一个可以实现优先级函数的组合电路。正如前段所提到的那样,优先编码器的作用是:当两个或多个输入同时等于1时,优先级最高的输入被优先处理。表3-6所示的是一个四输入优先级编码器的真值表。由于使用了×,原来需要16行才能表达出所有信息的真值表,现在只需要5行就可以了。与×在输出列中表示无关情况不同,×在输入列中表示不是最小项的乘积项。例如,001×表示乘积项D3 D2 D1。如同最小项一样,如果真值表中输入组合的某位为0,则对应的变量要取反;如果某位为1,则对应的变量不取反;如果某位为×,则对应变量不出现在乘积项中。这样,对于001×,与变量D0对应的位×,所以D0不出现在D3 D2 D1中。
image

紧凑真值表中的一行可以代替原真值表中的2p行,p表示的是行中×的个数。例如,在表3-6中,1×××表示原真值表的23=8行,这些行的输出值相同。在生成紧凑真值表的过程中,每一个最小项必须出现在某一行中,只有这样每一个最小项才能够通过对×赋值为1和0来获得。而且,一个最小项不能够出现在几行中,因为这些行的某些指定输出值会有冲突。
我们按如下方法得到表3-6:输入D3的优先级最高,所以当此输入为1时,可以忽略其他输入值,输出A1A0为11(二进制数3),这样我们可以得到表的最后一行。D2的优先级次之,因此如果D2=1且D3=0,则输出为10,无论其他较低优先级输入值是多少,这样,我们可以得到真值表的第四行。只有当所有较高优先级输入值为0时,才会产生D1的输出。用这种办法,从高优先级到低优先级我们可以得到真值表中剩余的行。当一个或多个输入值为1时,有效输出指示V为1;如果所有的输入都为0,则V等于0,电路中其他两个输出没有使用,并且被指定为无关项。
化简输出A1和A0的卡诺图如图3-22所示,两个函数的最小项都源自表3-6。表中的输出值,可以通过将它们放到由表中给出的对应乘积项所覆盖的方格中,直接传送到卡诺图中。每个函数化简后的表达式在该函数的卡诺图下方给出。输出V的方程是所有输入变量的或函数。图3-23所示的是根据下面的布尔函数来实现的优先级编码器:

image

image

3.6.2 编码器的扩展
迄今为止,我们只讨论了小型的编码器。编码器可以通过扩展或门的方法来扩展输入的数量。在编码器的实现中,除了在输出级共享以便在输出编码中有更多的有效位之外,采用带或门的多级电路可以减少当n≥5时的门输入成本。当n≥3时,由于门扇入限制,必须采用多级电路设计以便进行工艺映射。设计有共享门的多级电路,在工艺映射后可以减少编码器的成本。

相关文章
|
网络协议 网络安全 网络虚拟化
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
423 2
|
数据采集 人工智能 监控
《数据质量:人工智能模型的成败关键》
在人工智能快速发展的时代,数据质量对模型的性能、准确性和可靠性至关重要。准确、完整、多样且具代表性的数据能提升模型泛化能力;一致、及时的数据有助于提高训练效率;避免偏差和噪声可防止模型产生不公平结果或错误学习。因此,确保数据质量是构建高效、可靠AI模型的关键。
1480 12
|
虚拟化 iOS开发 MacOS
VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
593 7
VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)
|
人工智能 前端开发 关系型数据库
过年啦,做一个春节贺卡生成器
本文介绍了如何获取和利用现有的大模型资源,结合魔笔低代码,低成本、高效率地打造一个 AI 春节贺卡生成器。
596 38
|
SQL 存储 自然语言处理
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
让跨 project 联查更轻松,SLS StoreView 查询和分析实践
262 1
|
JavaScript 前端开发 安全
TypeScript无缝衔接ArkTS:快速入门鸿蒙ArkTS基本语法
【10月更文挑战第12天】TypeScript无缝衔接ArkTS:快速入门鸿蒙ArkTS基本语法
1448 0
TypeScript无缝衔接ArkTS:快速入门鸿蒙ArkTS基本语法
|
数据采集 自然语言处理 供应链
央国企“严选”的瓴羊,如何让数据“供得出、流得动、用得好”?|【瓴羊Dataphin在信通院2024数据资产管理大会】
在产业变革新浪潮下,数据资产管理步入“繁花时代”,瓴羊高级解决方案专家黄彦之出席2024数据资产管理大会并分享了瓴羊基于12年阿里最佳数据实践,通过Dataphin等产品助力央国企数智化转型的路径与方法。大会发布《数据治理产业图谱3.0》,瓴羊Dataphin入选BUCM板块代表产品,彰显其领先经验。
615 18
|
存储 分布式计算 DataWorks
阿里云助力富友数据中台革新,创新引擎赋能商户数字化经营
在电子商务和跨境交易蓬勃发展的背景下,第三方支付行业迎来爆发式增长,但也面临数据量激增、实时性瓶颈、高并发压力及成本效率失衡等挑战。富友支付通过引入MaxCompute、Hologres和DataWorks等技术,重构新一代数据仓库体系,实现高性能、高稳定性和降本增效,助力商户数字化经营,推动支付行业生态的可持续发展。