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

【计算机组成原理实验】实验一 运算部件实验_加法器及计算机性能指标

实验指导书原文:

1.3、实验步骤

1、先连接USB线,也是电源。(切记:不能带电插拔USB,否则会损坏实验设备)

2、打开QuartusàtoolsàprogrammeràAddFile,将adder8.sof(C盘的“计算机组织与结构源码”文件夹里面,不清楚问老师)下载到FPGA中。

3、在实验台上通过模式开关选择REGSEL=0、M[2:0]=“上(1)、上(1)、上(1)”、FDSEL=0

4、除了模式选择开关外,请把其它所有开关初始状态全部置为0。

1.4、观察实验现象并记录相应数据

本实验实现8位数相加I+II=sum(CarryOut)。

输入输出的规则对应如下:

  1. 输入的8位操作数I7~I0对应开关SD15~SD8
  2. 输入的8位操作数II7~II0对应开关SD7~SD0
  3. 最低位进位Cin对应开关SA0
  4. sum7~sum0对用灯A7~A0,最高位进位CarryOut对应等A8

如(00000000)+(11111111)=(11111111),CarryOut=0。

  1. 波动开关SD15~SD8输入8位操作数I(I7~I0)00000000,SD7~SD0输入8位操作数II(II7~II0)11111111,SA0输入Cin();
  2. 观察和sum(灯A7~A0),CarryOut(灯A8)。同理实验表1. 3中的数据,并把sum和CarryOut记录到表1.3对应的表格里(此处是第1张表,二进制记录,记录机器算的结果)并手工计算(要求熟练掌握原码、反码、补码算法,负数的表示和计算方法)校验机器计算的结果是否正确?

表1.3   8位加法器实验(注意操作数全都是补码

对上面表格的数据进行分析,分两种情况(请熟练手工计算):

  1. 一是如果把上面数据看成是有符号数,结果是多少?请在表格里面把输入操作数和结果以十进制(方便计算,直观感受)表示出来(另画一张类似的表格,此处是第2张表,十进制记录,记录手工计算结果);注意计算机里面负数的表示方法及补码运算方法。
  2. 二是如果把上面数据看成无符号数,结果又是多少?请在表格里面把输入操作数和结果以十进制表示出来(另外一张类似的表格另画一张类似的表格,此处是第3张表,十进制记录,记录手工计算结果)。

注意分析:特别是有符号数运算的时候,怎样看待CarryOut的结果,CarryOut=1就是真溢出?怎样判断真假溢出?请分析并记录,然后写在报告里面。

1.5、计算机性能指标

1、查阅资料,掌握计算机性能指标有哪些?

2、根据计算机性能指标选择性价比高的计算机。

        分别为要求价格在3000、5000、8000左右的客户选择购买性价比高的计算机。

3、平常购买计算机除了上面提到的性能指标外,我们通常还会考虑哪些因素?

1.7、思考题

1、根据8位数据位加法器原理,考虑16、32、64位数据位的加法是怎样完成的?

实操注意

我们学校的硬件长这样:

区域1对应的就是实验步骤1.3,选择REGSEL=0、M[2:0]=“上(1)、上(1)、上(1)”、FDSEL=0都在这里进行。

区域2对应的就是实验步骤1.4,8位二进制数相加的结果,左边8个事一个数,右边8个是另一个数。我标的2这个数的正上方(框内)就是SA0,结果就是加1,模拟的是全加器的进位提示(但是笔者没学懂全加器也不知道是啥意思)。

区域3对应的就是显示结果。最上一排是最终结果,同实验报告书
左边只需要看A8,如果亮了表示进位;右边的8个数就是相加得出的结果。

其他区域尚未探索,我目前也不知道是什么。

实验报告

实验结果

表 1

操作数I

操作数II

Cin

Sum

CarryOut

1011 1111

0100 1111

0

0000 1110

1

1010 1010

1010 1010

1

0101 0101

1

1111 0000

0000 1111

0

1111 1111

0

1111 1111

1111 1111

1

1111 1111

1

根据计算得出:

表 2

操作数I

操作数II

Cin

Sum

CarryOut

是否溢出

1011 1111(-65)

0100 1111(79)

0

0000 1110(14)

1

1010 1010(-86)

1010 1010(-86)

1

0101 0101(85)

1

1111 0000(-16)

0000 1111(15)

0

1111 1111(-1)

0

1111 1111(-1)

1111 1111(-1)

1

1111 1111(-1)

1

根据计算得出:

表 3

操作数I

操作数II

Cin

Sum

CarryOut

是否溢出

1011 1111(191)

0100 1111(79)

0

0000 1110(14)

1

1010 1010(170)

1010 1010(170)

1

0101 0101(85)

1

1111 0000(240)

0000 1111(15)

0

1111 1111(255)

0

1111 1111(255)

1111 1111(255)

1

1111 1111(255)

1

思考题

分析:特别是有符号数运算的时候,怎样看待CarryOut的结果,CarryOut=1就是真溢出?怎样判断真假溢出?请分析并记录,然后写在报告里面。

答:在有符号数加法中,CarryOut=1并不代表一定发生了溢出。

因为CarryOut仅仅表示最高位(符号位)产生了进位或借位,而有符号数溢出的本质是结果符号异常,具体来说,有符号加法真假溢出的判断标准是,如果两个操作数符号相同(都为正,或都为负),但结果符号与它们不同,那么发生了真正的溢出;如果两个操作数符号不同,不管结果怎样,都不会发生有符号溢出。

因此判断溢出要看符号位的变化,而不是单纯看CarryOut

思考题:根据8位数据位加法器原理,考虑163264位数据位的加法是怎样完成的?

答:8位加法器原理推广到更高位(16位、32位、64位)加法的方法:

高位加法器是由低位加法器级联组成的。

具体方法是:低位的CarryOut作为高一位加法器的CarryIn输入,逐级传递,形成进位链。

每一级加法器只负责自己的8位、16位或32位数据块,Carry信号负责在各块之间传递。

比如:

16位加法 = 两个8位加法器级联(低8+8位,Carry连接)

32位加法 = 四个8位加法器级联

64位加法 = 八个8位加法器级联

为了提高速度,现代处理器中还会用快速进位技术,提前预测进位,从而并行运算,减少加法延迟。

简要流程:

低位部分加法,得到Sum低位和CarryOut

高位部分加法,把低位CarryOut作为高位的CarryIn

依此类推,最终得到全位宽Sum和最高位的CarryOut

http://www.xdnf.cn/news/2648.html

相关文章:

  • 每日算法-250427
  • java异常
  • C++中的继承
  • 前端面试高频算法
  • 从增量式到绝对式 —— 深度理解编码器的原理与选型
  • 香港GPU显卡服务器与GPU云服务器的区别
  • linux blueZ 第六篇:嵌入式与工业级应用案例——在 Raspberry Pi、Yocto 与 Buildroot 上裁剪 BlueZ 并落地实战
  • 【遥感科普】不同波段的卫星影像分别有什么实际应用场景?
  • C语言内敛函数
  • Linux 进程替换
  • 深度解析 `FOR UPDATE`:数据库行锁的精准掌控之道
  • G1(Garbage-First)垃圾回收器与JVM内存
  • http://noi.openjudge.cn/_2.5基本算法之搜索_2152:Pots
  • C++ 数组长度sizeof(a)/sizeof(a[0])(易错)
  • 《代码整洁之道》第6章 对象和数据结构 - 笔记
  • 【第三十三周】BLIP论文阅读笔记
  • 如何将数据输入到神经网络中
  • I2S音频模块结构设计
  • 【GESP】C++三级练习 luogu-B2114 配对碱基链
  • flutter实践:比例对比线图实现
  • 第35课 常用快捷操作——用“鼠标左键”拖动图元
  • 集成方案 | Docusign + 甄零科技,赋能企业海外业务高效增长!
  • 第十三步:vue
  • 【实战篇】数字化打印——打印格式设计器的功能说明
  • 学习笔记2(Lombok+算法)
  • 关于PyQt5信号槽机制的解析
  • OpenSPG/KAG v0.7.1 发布, 针对新版若干优化和BUGFIX
  • 特征工程三:数据特征之词干提取器(stemmer)
  • ACM会议模板设置单排作者数量
  • 前端技术分享~谷歌调试工具