华中科技大学-32位ALU实验

实验目的:

  1. 理解掌握算术逻辑单元(ALU)的基本构成;
  2. 掌握Logisim中各种运算组件的使用方法;
  3. 熟悉多路选择器的使用
  4. 通过实验自行设计实现8位可控加减法器
  5. 通过实验自行设计8位串行加法器的逻辑实现
  6. 通过实验完成实现4位先行进位74LS182
  7. 通过实验设计实现4位快速加法器
  8. 通过实验设计实现16位先行进位加法器
  9. 通过实验设计实现32位快速加法器

实验内容:

  1. 了解8位可控加减法器:
    我们知道一位全加器电路逻辑实现:
    Si = Xi ⊕ Yi ⊕ Ci
    Ci+1 = Xi Yi + (Xi ⊕ Yi )Ci
    在这里插入图片描述
    既然我们知道一位全加器的工作原理,那么我们只需要将n个全加器的进位链串联即可得到n位穿行加法器,也成为行波进位器。如下图所示:
    在这里插入图片描述

  2. 通过实验自行设计实现8位可控加减法器
    由于补码运算的特殊性质,减法可以通过特殊性变成减法来实现,只需要将减数Y的补码进行适当的变化,然后送入加法器中即可实现减法运算,具体公式如下:
    [X] 补 –[Y] 补 =[X−Y]补= [X]补 + [Y]补
    因此在这里引入一个sub控制信号,操作数Y的所有未Yi均于sub信号进行异或后被送入n位串行加法器。具体实现如下:

在这里插入图片描述

  1. 通过实验完成实现4位先行进位74LS182
    N位串行加法电路中高位的运算依赖地位进位输入Ci,所以所有全加器不能并行运行,存在关键延迟(2n+4)T,与位数成线性关系,党位数较大时存在很大延迟。因此我们需要打破这种依赖,这就需要提前得到所需的仅为输入信号,南无所有的全加器可以正常运行,从而达到提高运算性能的目的。
    N位串行加法电路中和数与仅为输出的关系逻辑表达式:
    Si = Xi⊕Yi⊕Ci Ci+1 = XiYi+(Xi⊕Yi)Ci
    Gi = XiYi (生成函数) Pi = Xi⊕Yi (进位函数) Ci+1 = Gi + PiCi
    我们利用这个原理提前产生各位加法运算需要的所有进位输入,再利用
    Si = Xi⊕Yi⊕Ci 进行一级异或门运算即可得到最终的荷属,这就是先行进位的基本原理。经过分析我们得到一下规律:
    C1=G1+P1 Cin
    C2=G2+P2 G1+P2 P1 Cin
    C3=G3+P3 G2+P3 P2 G1+P3P2 P1 Cin
    C4=G4+P4 G3+P4 P3 G2+P4P3P2G1+P4P3P2P1Cin
    Cn = Gn-1+Pn-1Gn-2+Pn-1Pn-2Gn-3+ …+Pn-1Pn-2…P1P0C0

我们得到规律:进位输出仅与最低位进位输入C0有关,位数越长,进位链电路复杂度越高,通常按照4位一组进行分组运算,并且得到:
成组进位生成函数: G* =G3+P3G2+P3P2G1+P3P2P1G0
成组进位传递函数: P* =P3P2P1P0
具体实现如下:在这里插入图片描述

在这里插入图片描述

  1. 通过实验设计实现4位快速加法器
    由4位先行进位74182实现4位快速加法器,
    S3 = X3⊕Y3⊕C3 = P3⊕C3
    S2 = X2⊕Y2⊕C2 = P2⊕C2
    S1 = X1⊕Y1⊕C1 = P1⊕C1
    S0 = X0⊕Y0⊕C0 = P0⊕C0
    进位信号得到后,求和只需一级异或门3T即可完成,具体实现如下:
    在这里插入图片描述

  2. 通过实验设计实现16位先行进位加法器
    实现16位先行进位加法器最简单的方法是将4个快速加法器的进位链进行串联,但是这种方法智能实现4位一组的组内并行加法,组间仍然是串行运算。具体实现如下图所示:
    在这里插入图片描述

  3. 通过实验设计实现32位快速加法器
    1)2个16位加法器直接串联,C16 信号采用下层的进位输出;(2))2个16位加法器直接串联,C16 进位输入采用上层的进位输出;(3)在16位快速加法器的基础上再增加一级组间先行进位电路,类似64位快速加法器的方法;分别分析3种不同方案可能的总延迟,选择速度最快的方案实现32位快速加法器,并分析其时间延迟。具体实现如下:
    在这里插入图片描述

思考与体会:

1、片选信号可以不连接即不做处理,或者接常量1,或者接译码器验证都是正确的。
2、可以通过电路中线的颜色判断哪里除了问题。常见的颜色判断:蓝色表示位置状态;红色表示信号冲突;亮绿色表示高电平布线时,蓝色表示该点值未知,灰色表示未连接到任何东西。在布线过程中,出现蓝色和灰色都是正常的。但是布线完成后就不应该出现了。
3、仿真时,不应出现蓝灰,戳工具点Pin使其值改变。值为1的线浅绿,0为深绿。如果多位线路传输,则为黑色。出现绿色黑色都是正常的。但是出现红色代表:布线错误,产生冲突。
4、解复用器有一个输入、选择(定义哪个输出端输出输入数据)、输出,而译码器只有选择(选择哪个输出为1)和输出。

电路资源在这里:

https://download.csdn.net/download/qq_46037206/87340299

下载不用开vip,5积分,至于积分如何获取?评论、点赞、转发文章、发布文章都可以。发布初衷是给大家提供一些思路。当时学习的时候脑袋都磕破了没搞出来,搞出来了终于通透了,所以:建议敲一遍学学东西,实在学不会再去下载。不要开vip,不要开VIP,脆皮大学生们!

### 下载 Popper.min.js 文件的方法 对于希望获取 `popper.min.js` 的开发者来说,可以通过多种方式来实现这一目标。通常情况下,推荐通过官方渠道或可靠的分发网络 (CDN) 来获得最新的稳定版文件。 #### 使用 CDN 获取 Popper.min.js 最简单的方式之一是从流行的 CDN 中加载所需的 JavaScript 库。这不仅简化了集成过程,还可能提高性能,因为许多用户已经缓存了来自这些服务提供商的内容。例如: ```html <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2/dist/umd/popper.min.js"></script> ``` 这种方式不需要手动下载文件到本地服务器;只需将上述 `<script>` 标签添加至 HTML 文档中的适当置即可立即使用 Popper 功能[^1]。 #### 从 npm 或 yarn 安装 如果项目采用模块化构建工具链,则可以直接利用包管理器如 npm 或 Yarn 进行安装。命令如下所示: ```bash npm install @popperjs/core # 或者 yarn add @popperjs/core ``` 之后可以根据具体需求引入特定功能模块,而不是整个库,从而减少打包后的体积并优化加载速度[^2]。 #### 访问 GitHub 发布页面下载压缩包 另一种方法是访问 Popper.js 的 [GitHub Releases](https://github.com/popperjs/popper-core/releases) 页面,在这里可以选择不同版本的 tarball 或 zip 归档进行下载解压操作。这种方法适合那些偏好离线工作环境或是想要定制编译选项的人群[^3]。 #### 手动克隆仓库 最后一种较为少见但也可行的办法便是直接克隆完整的 Git 存储库副本。这样可以获得开发分支以及历史记录等更多信息,适用于贡献代码或者深入学习内部机制的情况。 ```bash git clone https://github.com/popperjs/popper-core.git cd popper-core ``` 完成以上任一途径后便能成功取得所需版本的 Popper.min.js 文件,并将其应用于个人项目之中[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Master乔治

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值