《数字逻辑设计与计算机组成》一 2.8 设计实例

简介: 本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第2章,第2.8节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.8 设计实例

在第1章中讨论过,一个数据通路包括许多电路模块。本节我们将讨论一些常见的但是比较小型的组合电路模块。在第1章中图1-1中所示的“选择器”模块也被叫作多路转换器。其他将讨论的实例包括简单的加法器、译码器和编码器模块。
1位加法器,也叫作全加器(FA),产生两个1位输入的和,并输出一个0或1的传位进位。译码模块将数字A(0、1、2等)转换成对应的输出信号(例如,f0、f1、f2等)。任何时候都只有一个输出f0、f1等是有效的。另一方面,编码器所做的工作是译码器的逆向工作,将产生与输入信号对应的数字。这节中我们将讨论下列实例:
高电平信号FA设计实例。
1位2-1的多路选择器和1位4-1的多路选择器设计实例。
低电平输出信号的1-2译码器设计实例。
低电平输入信号的3-2编码器设计实例。

2.8.1 全加器

一个全加器有三个1位输入,其中一个输入是进位输入(cin),输出为一位和(s)和一位进位输出(cout),如图2-29所示。表2-8展示了全加器的真值表。在表中的每一种情况中,s和cout都由三位数据a、b和cin的和决定。多全加器模块可以用于设计大型加法器,这将在下一章中讨论。

image

s和cout的最小SOP表达式如下求得:
image

作为一种选择,s和cout表达式也可以用异或门写成如公式(2-9)所示,这样就简化了电路的门级结构,如图2-30所示。然而,这个解法将导致比公式(2-8)所实现电路的更长的传输延迟。
image

image

传输延迟估计
假设与非门有0.1ns的延迟,公式(2-10)估算了公式(2-8)中信号s和cout的传输延迟,用符号Δ表示。信号s和cout的SOP表达式分别有三级和二级的逻辑门。在信号s和cout的延迟估算中我们忽略掉了线路延迟。
image

公式(2-11)展示了公式(2-9)中信号s和cout的延迟估算,SOP表达式中的异或门有0.3ns的延迟:
image

2.8.2 多路选择器

1位2-1的多路选择器,或者缩写MUX,是如图2-31所示的简单组合电路。输入x和y都为1位数据,信号s(选择器信号)导致MUX输出x或者y。如电路框图所示,标记1和0分别用来标记x和y,反映在MUX的真值表里(表2-9)。当s = 0时,MUX输出y,当s = 1时,MUX输出x。其最小SOP表达式由以下式子决定:
image

例如,当s = 0时,公式(2-12)计算结果符合预期,即r = y,如下所示:
image

image

image

类似地,当s = 1时,MUX输出(或者选择)输入x。图2-32展示了拥有4位输入w、x、y和z的1位4-1的MUX电路框图,输入分别标记为3到0的数字。MUX需要两个选择信号,标记为s1和s0。表2-10展示了其简单的真值表。其扩展真值表有6个输入,比我们使用K图所允许的4个输入要大。除了使用K图,有两种方法来确定4-1 MUX的SOP表达式: 1)用Espresso软件;2)对有4个输入和2个选择信号的公式(2-12)进行推算。这就是当s1s0 = 0 = (00)2时,MUX将输出z,当s1s0 = 1 = (01)2时,输出为y;当s1s0 = 2 = (10)2时,输出为x,当s1s0 = 3 = (11)2时,输出为w。其最小SOP表达式为:
image
例如,当s1s0 = 2 = (10)2时,公式(2-13)计算结果符合预期,为r = x,如下所示:
image

4-1 MUX的电路框图如图2-33所示。当MUX的大小增大,其扇入和扇出需求也相应地增大。考虑上述的2-1和4-1 MUX。它们最大扇入和扇出需求分别为2和2以及4和3。大型MUX,如果使用现在讨论的方法去设计,那么将导致扇入和扇出问题。在第3章中,我们将讨论大型组合电路的设计方法,首先将大型设计问题分为多个小型问题,然后对于每一个小型问题,使用这一章学到的方法去解决。之后小型电路将组合在一起形成大型组合电路,其可以避免任何的扇入和扇出问题。

image

image
image

2.8.3 译码器

低电平输出的1-2译码器电路框图如图2-34所示。低电平标记引脚通常在基础引脚上加一个气泡表示,如图2-34b所示。然而,图2-34b中的气泡不仅仅是简单的非门表示。表2-11展示了译码器的真值表。只有一个或者没有_?f1和_?f0输出有效,这依赖于信号v和e的值。当e = 1且v = 0时,_?f0 = 0(有效)。当e = 1且v = 1时,_?f1 = 0(有效)。否则,当e = 0(不活跃)时,_?f1和_?f0都为1(无效)。

image

信号_?f1和_?f0的表达式可以表达为SOP或者POS。然而在这个例子中,对于这些信号的SOP或者POS表达式都是一样的。只有与非门译码器电路只有一个逻辑门的延迟,不包括非门(图2-34c)。
  image

大型译码器也可以运用不同的方法来设计避免扇入和扇出的问题。译码器有许多应用,可以用于设计例如一些内存或者CPU数据通路。译码器可以用于解释内存地址,这样地址的内容可以进行读写操作。当需要写入一个寄存器文件时(第1章),译码器也可以用于译码一个寄存器数值。

2.8.4 编码器

低电平输入信号的3-2编码器的电路框图如图2-35a所示,且低电平标记引脚也被标记为一个小圆圈,如图2-35b所示。表2-12展示了编码器的真值表。在表中输入信号用0~2的数字来表示。编码器电路输出一个由活跃的输入定义的数字。例如,当_z = 0(活跃的),_y = 1(不活跃)且_x = 1(不活跃),编码器输出r1r0 = (00)2 = 0,正确识别有效信号_z为数字0。然而,当编码器的输入没有一个是活跃的时候,定义另外一个输出信号a(输入活跃)是有必要的。当a = 1(有效)时,表示一个或者多个信号_x、_y和_z为活跃的,这样2位输出r1r0被定义为活跃的信号。另一方面,当a = 0(无效)时,输出r1r0 = (00)2被忽略。
两个或两个以上的编码器输入在同一时间变为活跃是有可能的。例如,当_x = 0,_y = 0
和_z = 1时,编码器必须遵照某一信号优先级输出信号_x或者信号_y对应的数字。这样的编码器叫作优先级编码器。
image

表2-12展示了3-2优先级编码器的真值表(图2-35),输入信号_x有最高优先级而
_z的优先级最低。当_x = 0(活跃)、_y = 0(活跃)和_z = 1(非活跃)时,编码器输出a = 1和r1r0 = (10)2,标记_x为最高优先级的输入信号。
信号a,r1和r0的POS表达式如下所示:

image
image

编码器也可以设计为没有输出信号a,如图2-36所示。它被设计成4-2的编码器形式,没有信号a,但是输入数字0是未使用的,且与电源连接(或者高电平有效的输入接地),这样可以有效地改变为3-2编码器。当输入信号_x、_y和_z中没有一个为活跃的时候,编码器的输出为r1r0 = (00)2(原书有误——译者注),表示输入是不活跃的。当一个或多个输入信号变为活跃时,编码器分别输出3、2和1来定义_x、_y和_z为活跃信号。这样消除了产生信号a相应的逻辑,并在设计时减少了电路信号,如图2-35所示。连接到电源的输入可以在内部实现。再次地,在设计一个大型编码器时,将用不同的方法来避免扇入扇出的问题。
image

编码器也可以拥有许多应用,特别是在设计母版中。例如,当外部信号变为有效时,编码器可以快速地通知CPU。有效外部信号可以由一个输入/输出设备产生或者由板上的给CPU提供服务的模块产生。

相关文章
|
6月前
|
人工智能 JSON 自然语言处理
想让大模型更懂你?从原理到实践,详解高效微调的全流程
本文深入解析大模型微调中的核心参数调优与显存优化策略,涵盖学习率、训练轮数、批量大小、截断长度、LoRA秩五大关键参数的原理、调参技巧及显存影响,并结合LLaMA-Factory实战演示高效微调全流程,助你低成本、高质地打造专属AI助手。(239字)
739 1
|
存储 JavaScript 前端开发
盘点主流 Flutter 状态管理库2024
状态管理是每个应用不可缺少的,本文将会盘点下主流的状态管理包。
900 2
盘点主流 Flutter 状态管理库2024
|
网络架构 Python
【flask入门系列】处理请求之url 路径参数的获取以及转换器的使用
这节我们写一下url路径参数的获取以及转换器的使用,学一下如何在我们的的url路径中加参数以及如何使用转换器,并且自定义转换器。
1264 0
【flask入门系列】处理请求之url 路径参数的获取以及转换器的使用
|
网络安全 开发工具 git
|
4月前
|
安全 应用服务中间件 网络安全
HTTPS改成HTTPS速成方法
最快将HTTP升级为HTTPS:先安装SSL证书(如Gworg),再通过服务器配置(Apache/Nginx/IIS)或WordPress插件设置301重定向;迁移后需修复混合内容、提交Google搜索控制台并启用HSTS,确保安全与SEO无损。
1091 3
|
9月前
|
人工智能 算法 前端开发
实验报告:让AI自动生成采集代码,会踩哪些坑?
本文复盘AI自动生成采集代码的实战效果,梳理出“模拟行为”与“接口调用”两大技术路线。AI在浏览器自动化中表现良好,适合简单场景;但面对加密接口与强反爬时仍需人工介入。最终结论:AI是高效助手,但核心难题仍需工程师掌控。
759 1
|
消息中间件 数据采集 监控
高级应用:利用DataHub构建实时数据流处理系统
【10月更文挑战第23天】在大数据时代,实时数据处理的需求日益增长。无论是金融交易、物联网设备监控,还是社交媒体分析,实时数据流处理系统都扮演着至关重要的角色。作为阿里云提供的实时数据同步服务,DataHub为开发者提供了一种高效、可靠的方式来构建实时数据流处理系统。本文将从个人的角度出发,探讨如何利用DataHub构建实时数据流处理系统,包括配置实时数据采集、与流处理引擎集成、实施数据流的实时分析和处理,以及确保系统的高可用性和扩展性。
900 5
|
Java 开发者
如何通过易语言多线程提升程序响应速度
如何通过易语言多线程提升程序响应速度
1072 62
Axure设计之单选框教程(中继器)
在Axure RP中,通过结合中继器的强大功能,我们可以轻松实现动态加载的单选框列表,不仅可以根据数据自动调整选项宽度,还能实时更新选中状态。本教程将引导你完成一个使用中继器制作动态单选框列表的项目,包括案例分析、设计思路及详细的实现步骤。
716 1
Axure设计之单选框教程(中继器)
|
机器学习/深度学习 存储 算法
通过强化学习策略进行特征选择
本文探讨了使用强化学习策略进行特征选择以提升机器学习模型性能。强调在高维数据集中,有效选择特征至关重要。文章介绍了马尔可夫决策过程在强化学习中的应用,并提出了一种新的特征选择方法。通过定义状态(特征子集)、动作(添加特征)、奖励(如准确性提升),建立了一个RL模型。此外,还介绍了Python库FSRLearning,用于实现这一方法。文中展示了如何使用该库,并通过与 sklearn 的 RFE 方法比较,证明了RL方法在选择模型特征方面的优越性。
492 3

热门文章

最新文章