本实验是华科大三的核心课计算机组成原理的配套实验,设计非常良心,而且理论课和实验课都在mooc上有全套视频,地址为计算机组成原理_中国大学MOOC,实验所用的软件资源/测试电路也全部开放,地址为:计算机硬件系统设计_中国大学MOOC

运算器实验

8位可控加减法器

  • sub=0时表示加法,否则减法

  • 我们可以用8个一位全加器串行进位实现8位加法

  • 如果要做减法就加上减数的补码,这里的补码可以按位取反(即异或1),再最低位加1(即最低位给一个进位信号)


    如图所示,溢出检测判断最高位收到的进位信号和输出的进位信号即可。

  • 如果用另一种溢出判断方法,采用运算数最高位和结果最高位进行比较:

  • 那么这里连线的时候就要注意一个细节:

  • 这里减数的最高位,应该是异或后的Y7,否则减法的溢出判断会出错。

4位先行进位74182

  • 回顾并行进位的两个相关函数:

    ( 记忆:从本位开始一直传递到生成的地方)

所以有如下的规则:
C 1 = G 1 + P 1 C 0 C_1 = G_1 + P_1C_0 C1​=G1​+P1​C0​
C 2 = G 2 + P 2 G 1 + P 2 P 1 C 0 C_2 = G_2 + P_2G1 + P_2P_1C_0 C2​=G2​+P2​G1+P2​P1​C0​
C 3 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 C 0 C_3 = G_3 + P_3G_2 + P_3P_2G_1 + P_3P_2P_1C_0 C3​=G3​+P3​G2​+P3​P2​G1​+P3​P2​P1​C0​
C 4 = G 4 + P 4 G 3 + P 4 P 3 G 2 + P 4 P 3 P 2 G 1 + P 4 P 3 P 2 P 1 C 0 C_4 = G_4 + P_4G_3 + P_4P_3G_2 + P_4P_3P_2G_1 + P_4P_3P_2P_1C_0 C4​=G4​+P4​G3​+P4​P3​G2​+P4​P3​P2​G1​+P4​P3​P2​P1​C0​

  • 成组进位的生成函数:


于是我们可以按照上面的公式连线:

这样就做好了并行进位,连线非常复杂。

4位快速加法器

  • 要求我们用先行进位信号电路74182来构造一个四位的加法器
  • 因为74182已经能够产生各级进位信号,所以只需要把各级的PG连到74182的输入端,再计算各位数的值

    这里有一点要注意,就是74182是 C 0 C_0 C0​的函数,一定要连上 C 0 C_0 C0​

16位快速加法器

  • 在74182和做好了的四位快速加法器的基础上构建一个16位快速加法器。组间进位复用74182,类似的连好线。这里可以把四位快速加法器也看作一个一位的运算单元,产生相应的PG信号,连到输入端。输出的进位连到四位快速加法器最低位的进位端。

32位快速加法器

  • 用4位快速加法器和74182电路构建一个最快的快速加法器。对性能有要求,所以仍然要用到组间并行进位。

  • 如果需要64位的怎么办?应该就跟从4位到16位一样,输入相应的PG信号,得到相应的进位信号。所以说74182电路像一个递归电路一样,输入4个PG值,得到4个进位值和更高阶的 P ∗ G ∗ P^* G^* P∗G∗值

  • 这里需要32位,那么可以用两个16位的串联:

  • 也可以按照图中的引脚,把16位的再画一遍,虽然好像没什么必要:

5位阵列乘法器


如图,需要 5 ∗ 4 5*4 5∗4个全加器。由于采用了斜向进位,时延缩小至 3 ∗ 8 + 1 = 25 T 3*8+1=25T 3∗8+1=25T

6位补码阵列乘法器

  • 利用5位阵列乘法器实现6*6位的补码乘法器

  • 因为5位阵列乘法器默认是没有符号的,所以这里要实现有符号的运算,符号位得单独运算

  • 先求得X和Y的绝对值,正数的话直接取低5位,是负数的话先取负再取低5位:

  • 但是这里有一个奇怪的错误,就是-32的表示:

    • 32 32 32二进制是 1000 0 ( 2 ) 10000_{(2)} 10000(2)​,而 + 32 +32 +32是无法在5位内表示的,5位有符号数的表示范围是 [ − 32 , 31 ] [-32,31] [−32,31],因此我们在这儿取负数之后的值仍然不对,会有一个截断误差,所以参加运算的乘数不能小于 − 31 -31 −31。
  • 那么怎么把得到的无符号答案转成补码呢?可以用一个多路选择器选择低位是原来的值还是取反+1的值,最高位的值作选择信号:

5位无符号乘法流水线

  • 回顾:我们可以用四级流水线来优化乘法过程

照着连:

原码一位乘法器

  • 这里要求用迭代右移的方法计算8位的无符号乘法,这种实现方法是利用一个加法器累加,比较节约硬件资源。
  • 回顾一下,原码一位乘法的流程:

需要声明几个比较重要的概念:

  • 部分积:就是用 Y i Y_i Yi​乘以 X X X所得到的积
  • 累加和:把当前求过的所有部分积(作适当的右移)加起来所得到的和
  • 移位:这里的思路是先算 Y 0 Y_0 Y0​和 X X X的乘积,加到累加和中,然后Cout,和数,Y全部右移,这样就比较节省空间,处理到Y的高位的时候,低位反正没有用,可以移出去,这时高位空出的空间就可以放累加和移出来的部分了

所以我们先把加法逻辑的部分画好,用Y当前的最低位判断本轮 ∑ \sum ∑是不变还是加X:

然后是移位逻辑,两个8bit的寄存器,每个时钟都一起右移1位,用分线器来实现:

这里有一个很坑的地方,就是ADD的进位输出端,必须要连到 s u m ′ sum' sum′的最高位。如果不连上,最高位取0的话,255x3 的计算答案就是错的。为什么呢?考虑一下手工计算的过程:

这里产生了一个进位信号,也是包含在答案里面的,但是由于寄存器的位数有限,在移位之前并不能保存,所以移位的时候不能忘了它也要右移一位放到最高位~

最后需要连的就是控制逻辑。第一个周期,我们要把Y的值送到寄存器里,再经过8个周期,数据累加和右移完成之后要控制停机,这里需要控制各个寄存器的enable端是否有效。于是需要另加一个counter记录时钟周期数,并生成时序信号LOAD和STOP:

大于8个周期时就发出STOP,让系统暂停。

然后整个电路就画好了:

32位ALU

  • ALU的OP字段和功能对应如下所示:

我们先构造出每一种功能的输出,再根据OP的值来选择输出

  1. 逻辑左移,用一个移位器即可实现

  2. 算术右移,同样用自带的移位器,更改属性为算术

  3. 逻辑右移,同理

  4. 无符号乘法,用自带的乘法器

  5. 无符号除法,用自带的除法器

  6. 加法,用构造好的32位加法器,OF即判断最高位进位和符号位进位是否一致;UOF即判断是否有进位。注意要给出C0信号。

  7. 减法,用构造好的32位加法器。Y各位取反,C0取1,即可达到减法变加法。无符号数的减法溢出,带加减功能的ALU的进位取反后表示,有符号数的减法溢出,仍然用最高位和符号位是否相等来判断。

  8. 7~10直接用多位的与门/或门/异或门/同或门

  9. 比较器,补码型,结果0拓展(输出0和1,不是0和65535)

  10. 比较器,无符号型,结果0拓展(输出0和1,不是0和65535),再顺便给出一个equal信号

  • 结果都构造好了之后,根据OP的值输出Result:

  • 这样就画好了,OK测试通过

华中科技大学组原实验记录 运算器ALU实验相关推荐

  1. 【北邮】计算机组成原理实验:实验一 运算器组成实验

    实验一 运算器组成实验 实验目的 ⑴熟悉逻辑测试笔的使用方法. ⑵熟悉 TEC-8 模型计算机的节拍脉冲 T1.T2.T3: ⑶熟悉双端口通用寄存器组的读写操作: ⑷熟悉运算器的数据传送通路: ⑸验证 ...

  2. 计算机组成原理实验基本运算器,计算机组成原理-实验一-运算器组成实验

    <计算机组成原理-实验一-运算器组成实验>由会员分享,可在线阅读,更多相关<计算机组成原理-实验一-运算器组成实验(4页珍藏版)>请在人人文库网上搜索. 1.实验一 运算器组成 ...

  3. 组成原理——实验一运算器组成实验_微程序控制器方式

    实验一运算器组成实验_微程序控制器方式实验报告 一.实验目的 (1)熟悉逻辑测试笔的使用方法. (2)熟悉 TEC-8 模型计算机的节拍脉冲 T1.T2.T3: (3)熟悉双端口通用寄存器组的读写操作 ...

  4. 电子实验记录和纸质实验记录——怎么选,可以提高10倍效率

    上海鹰谷自2017年推出了电子试验记录本-InELN, 因其兼具管理和使用便利等优点和本土化的服务,得到用户的好评. 一款优秀产品的研发是没有终点的,鹰谷积极关注和持续倾听用户的意见,不断提升产品体验 ...

  5. 华科计算机组成原理运算器ALU实验(LogisimEducoder)

    大家好,我是小黄鸭. 2022/1/4大家好,我是小黄鸭,由于21年下半年在考研,因此很多消息没有回复. 实验MOOC中国大学:https://www.icourse163.org/learn/HUS ...

  6. 计算机组成原理手动在线模式,实验四计算机组成原理 运算器手动实验

    实验四 运算器手动实验 一. 预备知识 选用的运算器芯片Am2901简介:这是上个世纪70年代初的一个4位的位片结构的运算器芯片.在图-1中给出了这个芯片内部电路的组成逻辑框图,主要包括完成4位算术与 ...

  7. 计算机组成原理实验一 运算器实验

    一.实验目的 1.熟悉8位寄存器的读写操作 2.熟悉简单运算器的数据传送通路 3.验证运算器74LS181的算术逻辑功能 4.按给定数据,完成指定的算术.逻辑运算 二.实验内容 1.绘制仿真图. 2. ...

  8. 8位运算器实验 计算机组成原理,计算机组成原理-运算器组成实验.doc

    南通大学计算机科学与技术学院上机实验报告 课程名称:计算机组成原理 年级: 上机日期:2014 姓名: 学号: 班级: 实验名称:实验二运算器组成实验 教师: 成绩: 一.目的及要求 一.实验目的 1 ...

  9. 操作系统真象还原实验记录之实验七:加载内核

    操作系统真象还原实验记录之实验七:加载内核 对应书P207 1.相关基础知识总结 1.1 elf格式 1.1.1 c程序如何转化成elf格式 写好main.c的源程序 //main.c int mai ...

最新文章

  1. Android Splash界面支持用户点击 直接进入主界面
  2. Citrix Receiver For Linux 预览版
  3. svn仓库出现already locked error解决方法:cleanup
  4. leetcode 599. Minimum Index Sum of Two Lists | 599. 两个列表的最小索引总和
  5. android 最新消息滚动,Android 滚动操作Scroller类详解
  6. uva 294 ——Divisors
  7. python编程循环语句_循环语句—Python编程从入门到精通(5)
  8. Glide-Android下高效加载多媒体文件
  9. servlet上传文件接收工具
  10. 基于EPOLL+多进程+线程池的server框架设想_程序世界_百度空间
  11. Qt学习笔记之——生成exe可执行文件并打包生成安装软件
  12. mysql排序检索数据
  13. pandas快速把txt转为excel
  14. DMSP/OLS夜间灯光数据
  15. 车载双目相机,老兵的二次出征
  16. CCS10.2安装步骤
  17. ios获取设备手持方向——电子罗盘
  18. 《符号学:原理与推演》(一)符号的构成
  19. c语言 常量整数,C语言的整型常量
  20. 解锁中智集团30平方米数据中心备受追捧的密码

热门文章

  1. zoc for mac注册码
  2. 10和100Mbps以太网
  3. 基于DLNA实现iOS、Android投屏:基本概念
  4. Camera2 闪光灯梳理
  5. 第二证券|支持多子女购房、提高公积金贷款额度、发放限时补贴
  6. HDOJ 3537 Daizhenyang's Coin (翻硬币游戏)
  7. 笔记本电脑中预装的office产品不小心被删除了解决方案
  8. Tree | 伸展树
  9. 胖大海和罗汉果可以同泡吗
  10. VBA-API:通过BEEP函数(扬声器)播放音乐