logo资料库

补码一位乘的程序设计.doc

第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
资料共22页,剩余部分请下载后查看
第1章 总体设计方案
1.1设计原理
1.2设计思路
1.3设计环境
第2章 详细设计方案
2.1 总体方案的设计与实现
2.1.1总体方案的具体描述
2.2 流程图的设计与实现
2.2.1流程图具体分析
第3章 程序调试与结果测试
3.1 程序调试
3.2 程序测试及结果分析
参考文献
附 录
沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:计算机组成原理课程设计 课程设计题目:定点补码乘法器的程序设计 院(系): 专 班 学 姓 业: 级: 号: 名: 指导教师: 完成日期:
沈阳航空航天大学课程设计报告 目 录 第 1 章 总体设计方案.................................................................................................. 1 1.1 设计原理.................................................................................................................1 1.2 设计思路.................................................................................................................1 1.3 设计环境.................................................................................................................2 第 2 章 详细设计方案.................................................................................................. 4 2.1 总体方案的设计与实现.......................................................................................4 2.1.1 总体方案的具体描述.......................................................................................4 2.2 流程图的设计与实现...........................................................................................5 2.2.1 流程图具体分析.................................................................................................. 5 第 3 章 程序调试与结果测试...................................................................................... 9 3.1 程序调试...............................................................................................................9 3.2 程序测试及结果分析...........................................................................................9 参考文献.........................................................................................................................14 附 录...........................................................................................................................15 -I-
沈阳航空航天大学课程设计报告 第 1 章 总体设计方案 1.1 设计原理 采用伟福 COP2000 试验箱,设计并实现定点补码一位乘(booth)。 要求:采用的算法为定点补码一位乘 booth 算法,乘数和被乘数规定为 6 位, 其中首位为符号位。数据要求以原码的形式输入,采用补码方式进行运算。实验 数据从试验箱的开关输入,运算的结果在 OUT 寄存器中显示。 设计原理:比较 YnYn+1 的状态执行相应的操作。如下图是补码一位乘的运 算规则: 表 1.1 Booth 算法操作表说明 乘数 Yn 附加位 Yn+1 说明 0 0 1 1 0 1 0 1 附加位、乘数、部分积→1 位 部分积加[X]补 附加位、乘数、部分积→1 位 部分积加[-X]补 附加位、乘数、部分积→1 位 附加位、乘数、部分积→1 位 需要说明的是此操作表是在当 n≠0 时,当 n=0 时,判断 YnYn+1,运算规则 同此操作表只是不移位。即在运算的最后一步,乘积不再右移。 1.2 设计思路 (1) 构造补码一位乘的初始化所需要的数值 因为补码一位乘的算法需要先求出[X]补、[-X]补、[Q]补,所以先将[X]补、[-X]补、 [Q]补分别存贮到 0F0H 到 0F2H 存储单元中。因为部分积和附加位的初始值都是 0, 所以在 0E0H 单元存入附加位初始值 0,在 R0 中存入部分积初始值 0。 其他数的处理:将输入的一个值 Q 求出补码作为乘数 Y,并存入 R2 中;另 一个值 X 存入 R1 中,根据它来求出[X]补、[-X]补; 本实验规定乘数和被乘数为 6 位,数据位为五位,所以要完成六次操作,但 -1-
沈阳航空航天大学课程设计报告 最后一次不移位,在 R3 寄存中存入数值 n=5,每次操作完成后减 1。 (2)运算并输出 根据乘数末位及附加位来确定执行的操作,每完成一次操作 R3 中的数值减 一。判断 R3 的数值是否为零,若不为零,则继续循环上述操作,若为零,则循环 结束,判断此时的乘数末位及附加位,再按运算规则进行一次操作,但是不移位, 然后结束运算。即开始时 Yn+1=0,部分积初值为 0,每一步乘法由 YnYn+1 决定原 部分积加 [X]补或加 [-X]补或加 0,再右移一位得到新的部分积,以此重复 n 步, 第 n+1 步由 YnYn+1 决定部分积加[X]补或加 [-X]补或加 0,但不移位,即得最后结 果,最后先把乘数的最终结果从 OUT 寄存其中显示出来,再将部分积的最终结果 从 OUT 寄存其中显示出来。 (3)实现方式 在掌握 COP2000 试验箱的体系结构后,充分利用试验箱提供的汇编语言, 以及有限的硬件资源,完成程序的编写。 1.3 设计环境 利用 COP2000 型计算机组成原理实验仪软件和计算机,在 COP2000 试验仪 软件上编程实现补码一位乘。COP2000 集成开发环境是为 COP2000 实验仪与 PC 机相连进行高层次实验的配套软件,它通过实验仪的串行接口和 PC 机的串行接 口相连,提供汇编、反编、编辑、修改指令、文件传送、调试 FPGA 面。其实验 等功能,该软件在 Windows 下运行。COP2000 试验仪软件的指令集分为如下大 类:算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断 返回指令、输入输出指令。本程序所用到的相应的指令集如下: (1)算术逻辑运算指令 ADD ADD SUB AND AND OR A, R? -----------将寄存器 R?的值加入累加器 A 中 A,#II ----------立即数 II 加入累加器 A 中 A,#II-----------从累加器中减去立即数 II 后加入累加器 A 中 A,R?------------累加器 A“与”寄存器 R?的值 A,#II ----------累加器 A“与”立即数 II 的值 A, R? -----------累加器 A“与”寄存器 R?的值 -2-
沈阳航空航天大学课程设计报告 OR A, #II ----------累加器 A“与”立即数 II 的值 CPL A----------------累加器 A 取反,再存入累加器 A 中 (2)数据传送指令 MOV MOV MOV MOV RR RL A,R?------------将寄存器 R?的值送到累加器 A 中 A, #II -----------将立即数 II 送到累加器 A 中 R?,A------------将累加器 A 中的值送到寄存器 R?中 R?,#II----------将立即数 II 送到寄存器 R?中 A-----------------累加器右移指令 A-----------------累加器左移指令 (3)跳转指令 JZ MM---------------若零标志位置 1,跳转到 MM 地址 JMP MM---------------跳转到 MM 地址 (4)输入输出指令 IN--------------------从输入端口读入数据到累加器 A 中 OUT--------------------将累加器 A 中数据输出到输出端口 如 下 为 COP2000 计 算 机 组 成 原 理 实 验 软 件 截 图 : 图 1.1 COP2000 计算机组成原理试验仪软件截图 -3-
沈阳航空航天大学课程设计报告 第 2 章 详细设计方案 2.1 总体方案的设计与实现 本课设采用 COP2000 实验仪软件和计算机实现补码一位乘的功能,利用伟 福 COP2000 的指令集编程实现。总体设计方法为输入两个数,分别求出需要的相 应值,n 为数据位个数,当 n 不等于零时,判断 YnYn+1,按照补码操作表进行 相应的运算,当 n 等于零时,再按照补码操作表进行运算但是不移位,最后输出 结果。 2.1.1 总体方案的具体描述 (1)先进行初始化: 将部分积和附加位设置为 0,分别存入 R0,0E0H 中。设置循环次数为五次, 存入 R3 中。操作如下: 先输入一个数值 X 存入 R1 中,判断 X 的符号位,将这个数和 20H 进行“与” 运算,如果为 00H,说明该数值为正数,它的补码也为 X;如果为 20H,则说明 该数为负数,则先将 X 取反,将取反后的数值加上 21H,求出补码,补码存入 0F0H 中,因为规定乘数和被乘数为六位,但机器会识别八位,令前两位与符号位保持 相同,方便运算。再求出-X 的补码,存入 0F1 中。最后求出 Q 的补码 Y,存入 0F2 中。 (2)根据运算规则循环相乘: 乘法运算前 A 寄存器被清零,作为初始部分积,附加位置为 0,被乘数的补 码存在 X 中,乘数的补码在 Q 高 n+1 位中,寄存器 R3 存放乘数的位数 n,乘法 开始后,根据 Yn 和附加位 Yn+1 的状态决定部分积与被乘数相加还是相减,或 是不加也不减,然后根据补码规则进行算术移位,先判断乘数 Y 的末位,如果 Yn 为 1,则附加位为 1,反之为 0,将乘数右移一位,在判断部分积的末位,若部分 积末位为 0,将移位后的乘数首位置 0,反之置 1,最后判断部分积的首位,令部 分积移一次位后的首位与原先相同,这是一次操作包括的所有步骤。 -4-
沈阳航空航天大学课程设计报告 (3)判断循环是否结束并输出: 移位后,将 R3 的值减一,判断是否为 0,若不为 0,则继续循环,一共重复 n 次。若为 0,则再判断末两位状态决定是否与被乘数相加或者相减,或是不加也 不减,但是不必移位,这样便可得到最后结果。最后输出结果,先将乘数从 OUT 寄存器中显示,再将部分积从 OUT 寄存器显示出来。 2.2 流程图的设计与实现 2.2.1 流程图具体分析 1.进行初始化,流程图如图 2.1: 图 2.1 初始化流程图 -5-
沈阳航空航天大学课程设计报告 2.根据运算规则循环相乘 判断乘数末位和附加位 YnYn+1,根据运算规则进行循环,其中移位时附加 位要与乘数末位保持一致,乘数的首位要与部分积的末位保持一致,部分积移位 后的首位要与移位前的首位一致,并且根据数据位的个数决定循环几次。流程图 如图 2.2: 图 2.2 循环相乘流程图 具体说明:乘法开始后,先将 Y 与 01H 进行“与”运算,判断 Yn 的末位, 再将附加位与 01H 进行“与”运算,判断附加位的末位 Yn+1,根据 Yn 和附加位 Yn+1 的状态决定部分积与被乘数相加还是相减,或是不加也不减,然后根据进 行算术移位。 移位操作需要先判断乘数 Y 的末位,如果 Yn 为 1,则附加位为 1,反之为 0, 将乘数右移一位,在判断部分积的末位,若部分积末位为 0,将移位后的乘数首 -6-
分享到:
收藏