基于恢复余数法定点原码一位除法器的设计课程设计报告.doc

上传人:文库蛋蛋多 文档编号:3028288 上传时间:2023-03-09 格式:DOC 页数:25 大小:470.50KB
返回 下载 相关 举报
基于恢复余数法定点原码一位除法器的设计课程设计报告.doc_第1页
第1页 / 共25页
基于恢复余数法定点原码一位除法器的设计课程设计报告.doc_第2页
第2页 / 共25页
基于恢复余数法定点原码一位除法器的设计课程设计报告.doc_第3页
第3页 / 共25页
基于恢复余数法定点原码一位除法器的设计课程设计报告.doc_第4页
第4页 / 共25页
基于恢复余数法定点原码一位除法器的设计课程设计报告.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《基于恢复余数法定点原码一位除法器的设计课程设计报告.doc》由会员分享,可在线阅读,更多相关《基于恢复余数法定点原码一位除法器的设计课程设计报告.doc(25页珍藏版)》请在三一办公上搜索。

1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位除法器的设计院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:姜鹏指导教师:周大海完成日期:2014年01月10日目 录第1章 总体设计方案21.1 设计原理21.2 设计思路41.3 设计环境4第2章 详细设计方案42.1 总体方案的设计与实现62.1.1总体方案的逻辑图62.1.2计算算法总流程图72.2 功能模块的设计与实现82.2.1 操作数预处理模块的设计与实现82.2.2 上商置0模块的设计与实现92.2.3 上商置1模块的设计与实现92.2.4 商符运算模块的设计

2、与实现10第3章 测试结果123.1 程序仿真123.2 仿真测试123.2.1 仿真测试一两个正数除法运算123.2.2 仿真测试二一个正数一个负数除法运算163.2.3 仿真测试三两个负数除法运算18参考文献20附 录(源程序清单)21第1章 总体设计方案1.1 设计原理原码一位除,即两个原码数相除,商的符号位运算为除数和被除数的符号异或值。这里采用的算法为恢复余数法,而且除数和被除数规定为4位。实验的数据从试验箱的开关输入,而且运算的结果在OUT寄存器中显示出来。整个过程通过汇编语言编写实现。恢复余数法定点原码一位除法器工作原理大致如下:设: X=X7X6X5X4X3X2X1X0Y=Y7

3、Y6Y5Y4Y3Y2Y1Y0其中高四位X7X6X5X4和Y7Y6Y5Y4为符号位,低四位X3X2X1X0和Y3Y2Y1Y0为数据位。则: X/Y=K*|X|/|Y|其中,|X|和|Y|为X和Y的绝对值,K为X和Y的符号位的异或值。|X|/|Y|利用恢复余数法求的,商根据余数的符号是正或负来判断。当为负时,上商为0,同时还应该把除数再加到差上去,恢复余数为原来的正值之后再左移一位。若差为0或为正值时,就没有恢复余数的操作,上商为1,余数左移一位。下面通过一道例题详细理解恢复余数法定点原码一位除法器的工作原理。详细过程如表1.1所示。例:已知 :X= -0.1011Y= -0.1101 求:X/Y

4、原 解:由X= 0.1011, Y= -0.1101得 X原=1.1011,X*=0.1011 Y原=1.1101,Y*=0.1101,-Y*补=1.0011 下面表1.1列出了商值得整个求解过程。被除数(余数)商说 明 0.1011+ 1.00110.0000+-|y|补(减去除数) 1.1110+0.11010.0000余数为负,上商0恢复余数+|y|补 0.1011 1.0110+ 1.10110.00000.0000被恢复的被除数 1位+-|y|补(减去除数) 0.1001 1.0010+ 1.00110.00010.0010余数为正,上商1 1位+-|y|补(减去除数) 0.0101

5、 0.1010+ 1.00110.00110.0110余数为正,上商1 1位+-|y|补(减去除数) 1.1101+0.11010.0110余数为负,上商0恢复余数+|y| 0.0101 1.0100+ 1.00110. 01100. 1100被恢复的被除数 1位+-|y|补(减去除数)0.01110. 1101余数为正,上商1表1.1恢复余数定点原码一位除法器功能表故:商值为0.1101商的符号位为:X0Y0=11=0所以 X/Y原 =0.1101由此例可见,共左移4次,上商5次,第一次上的商在商的整数位上,这对小数除法而言可用它作溢出判断。即当该位为“1”时,表示此除法溢出,不能进行,应由

6、程序进行处理;当为“0”时,说明除法合法,可以进行。 1.2 设计思路基于恢复余数法的定点原码一位除法器的设计主要包含如下4个部分:求X* 和Y*:即去掉除数和被除数的符号位,运算过程中把除数和被除数都按照正数进行运算。只需要将除数和被除数都和“0FH(00001111)”进行“与”运算即可;上商1,减去余数:用被除数减去除数,如果运算结果大于0(符号位为0),则上商1,将运算结果左移一位,同时商值也左移一位,下步操作为减掉除数;上商0,恢复余数:用被除数减去除数,如果运算结果小于0(符号位为1),则上商0,马上加上除数也就是恢复余数至上一步状态,再将运算结果和商值分别左移1位;商值的符号位运

7、算:在最原始状态下输入得到的被除数和除数分别保存在两个内存中,在上述三步运算过程完全结束后,再从内存中读出最原始的除数和被除数进行符号位异或运算,运算结果在与商值进行相应运算即可得到最终运算结果。1.3 设计环境伟福COP2000实验箱,用汇编语言编程实现定点原码一位除法器COP2000 计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器W、直通/左移/右移单元、 地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展座、总线插孔区、微动开关/指示灯、逻

8、辑笔、脉冲源、20 个按键、字符式LCD、RS232 口。COP2000集成调试软件(即仿真测试软件)共分为6部分:(1) 主菜单区 实现实验仪的各项功能的菜单,包括文件编辑汇编运行帮助五大项,各项线面做详细介绍 。(2) 快捷图标区 快速实现各项功能按键(3) 源程序/机器码区 在此区域有源程序窗口,反汇编窗口,EM程序代码窗口。源程序用于输入,显示,编辑汇编源程序:反汇编窗口显示程序编译后的机器码及反汇编的程序;EM程序代码窗口用数据方式机器码。(4) 机构图/逻辑波形区 结构图能结构化显示模型机的各部件,以及运行时数据走向寄存器值;逻辑波形图能显示模型机运行时所有信号的程序。(5) 微程

9、序/跟踪区 微程序表格用来显示程序运行时微程序的时序,及每个时钟脉冲各控制位的状态,跟踪表用来记录显示程序及微程序执行的轨迹,指令系统可以帮助你设计新的指令系统。(6) 寄存器状态区 用来显示程序执行时各内部寄存器的值。 图1.1 COP2000计算机组成原理试验系统模拟软件界面示意图 第2章 详细设计方案2.1 总体方案的设计与实现定点原码一位除,算法为恢复余数法,当余数为负时,需加上除数,将其恢复城原来的余数。商值的确定是通过比较被除数和除数绝对值的大小,即”X”-”Y”实现的,而计算机内只设加法器,所以需要将”X”-”Y”操作变为|X|补+|Y|补得操作。2.1.1总体方案的逻辑图 R0

10、 被除数BUBUFENJI8位加法器R2 商R1除数移位和加控制右移OUT 输出结果移位4次左移加法器图2.1 定点原码一位除法器整体设计框图如上逻辑框图2.1中所示,R0、R1、R2均是8位的寄存器。R1中保存的是被除数。R2中保存的是除数。R3中保存的为商,另外R4寄存器可以作为计时器用来控制左移的次数。左移运算就是除法运算过程中逐位运算的过程,右移运算主要是在符号位运算过程中获取除数和被除数符号位所用,最终结果在OUT中输出。2.1.2计算算法总流程图开始初始化被除数R0,除数R1,商R2,计数器R3被除数R0减 除数R1被除数R00除数R1为0NY处理加上|y|补商R2左移一位加0,加

11、上-y的补。商R2左移一位加1被除数R0左移一位计数器R3减1被除数R0左移一位计数器R3减1计数器R3为0计数器R3为0YN被除数R0加除数R1YN被除数R0减除数R1被除数R00Y余数R00Y恢复除数R2商符判断结束NN被除数R00NYYN图2.2 定点原码一位除法器计算算法过程流程图算法流程图如图2.2所示。除法开始前,R2寄存器被清0,准备接收商,被除数的原码放在R0寄存器中,除数的原码放在R1寄存器中,计数器R3中存放需要移位的次数。除法开始后,首先判断除数是否为0,若除数为0则进行处理,若不为0,则用被除数减去除数,若运算结果大于0,商上1。若结果小于0,商上0。然后被除数左移一位

12、,计数器减1。当计数器R3内容为0时,运算结束。2.2 功能模块的设计与实现主要模块包括:操作数预处理模块、上商置0模块、上商置1模块、商符运算模块四大模块。2.2.1 操作数预处理模块的设计与实现2.2.1.1 功能描述操作数预处理模块的主要功能是对操作数的初始化及预处理。具体包括下面两个方面的处理:1、将输入的除数和被除数保存在某个内存中备份,备份的原始数据以便将来进行符号位的运算。2、求输入的除数和被除数的数据位,也就是将除数和被除数全部转化为正数进行后面的计算,具体做法就是将除数和被除数分别与“00001111(0FH)”进行“与”运算,保证运算过程中的初始数据均为正数。2.2.1.2

13、 流程图开始初始化:R0被除数R1 除数R2 商值R3 计数器R0和R1数据分别保存在内存9F和9E中备份AND R0,0FH被除数与0FH“与”AND R1,0FH除数与0FH“与”结束图2.3 操作数预处理模块流程图2.2.2 上商置0模块的设计与实现2.2.2.1 功能描述上商置0模块中要进行恢复余数,原码一位除法器恢复余数法进行计算,区别于加减交替算法。当余数为负时,将商的最后一位添0,这时,需要进行恢复,余数加上Y*补,再将得到的余数和商同时左移一位,然后余数再加上Y*补存到R2上,再判断余数的正负,如果余数为负时,循环进行上商置0的操作,否则,进行上商置1的操作。2.2.2.2 流

14、程图开始余数为负,商置0恢复余数 +Y*补左移一位减去余数 +-Y*补结束图2.4 上商置0模块流程图2.2.3 上商置1模块的设计与实现2.2.3.1 功能描述 上商置1的算法比较简单,不存在不同的算法,原码一位除法都是相同的计算。当余数为正时上商置1,这时,再将得到的余数和商同时向左移一位,然后余数加上Y*补存到R2上,在判断余数的正负。如果余数为正时,循环进行上商置1的操作,否则,进行上商置0的操作。2.2.3.2 流程图开始余数为正,商置1结束左移一位减去除数 +-Y*补图2.5 上商置1模块流程图2.2.4 商符运算模块的设计与实现2.2.4.1 功能描述商的符号计算原码一位除法和原

15、码一位乘法一样都是单独处理的,商符由两数的符号位进行异或运算求得,商值是由两数绝对值相除求得。将9FH和9EH地址的除数X和被除数Y分别右移四位,得到X1和Y1再将两数进行相加运算,得到一个值是Z,然后判断Z的最低位是否为零,如果为零,则商的符号为正,否则商的符号为负。2.2.4.2 流程图图2.6 商符运算模块流程图第三章 测试结果 3.1 程序仿真 将事先编好的汇编程序输入到列表里,保存将格式改写成.ASM,再进行仿真,仿真可以一步一步进行仿真,你可以看到每步执行过程中,寄存器R0R3和累加器A的变化,根据变化可以知道每步执行是否正确,直到最后输出OUT和R2。3.2 仿真测试3.2.1

16、仿真测试一 两个正数除法运算当X=0.1011B,Y=0.1101B时的仿真结果如下图所示。已知X=0.1011B,Y=0.1101B,根据原码一位除法恢复余数法进行计算可得出商为0.1101,再将X和Y的符号位进行异或可得出商的符号为正,所以最终商为0.1101,余数为0.0111。 仿真过程图如下所示:图3.1 仿真测试一数据初始化图如图3.1所示。R0、R1、R2和R3 4个寄存器中分别初始化存入原始数据被除数0BH、除数0DH、商值00H和计数器初始值04H。图3.2 仿真测试一数据备份图如图3.2所示,将原始数据被除数和除数存入内存中备份,以便将来做商符计算时使用,图中MAR中显示的

17、地址为除数0DH 存入的地址9E。图3.3 仿真测试一数据预处理图如图3.3所示,将原始数据被除数和除数进行去符号处理使之均变为正数进行运算,这里由于初始数据本身就是正数,所以R0和R1寄存器中数据不变。 图3.4 仿真测试一上商0仿真图当被除数与除数的差值为负时,进行上商0模块,恢复余数至0BH,并进行左移运算变为16H,再进行减除数运算,运算结果为09H,同时计数器减1,如图3.4中R0寄存器和R3寄存器所示。 图3.5 仿真测试一上商0仿真图当被除数与除数的差值为正时,进行上商1模块,左移一位再减去除数,同时计数器减1,如图3.5中R0寄存器和R3寄存器所示,R2寄存器中上商1并左移一位

18、变为02H。图3.6 仿真测试一商符运算仿真图从内存中读出原来备份的原始除数和被除数数据通过右移四步后分别获取其符号位数据进行相减,图3.6中R0寄存器显示的就是差值结果,这里由于是两个整数所以符号位均为0,相减结果仍为0。图3.7 仿真测试一最终运算结果仿真图如图3.7所示,数据运算结果运算后并与上一步的商符运算结果进一步运算得到最终的运算结果输出到OUT单元中,图中OUT单元显示数据为0DH,即被除数0BH和除数0DH运算的最终结果,运算正确。3.2.2 仿真测试二 一个正数一个负数除法运算在仿真测试一的基础上将被除数X的值修改为X=-0.1011B,其余条件不变。图3.8 仿真测试二数据

19、初始化图如图3.8所示,如图中R0寄存器中数据变为1BH,其余与仿真一相同。图3.9 仿真测试二数据预处理图如图3.9所示,将被除数和除数进行去符号处理,因此R0中原来的1BH变为现在的0BH,除数由于本身是正数不变。由于中间运算过程与仿真一相同,这里不再重复。图3.10 仿真测试二商符运算图如图3.10所示,R0中现存的01H为被除数的符号位,累加器A中存的为除数符号位(0)减被除数符号位(1)的差值(-1),也就是0FFH。图3.11 仿真测试二最终运算结果图如图3.11所示,OUT单元中为最终运算结果数据1DH,运算结果正确。3.2.3 仿真测试三 两个负数除法运算在仿真测试二的基础上将

20、被除数Y的值修改为Y=-0.1011B,其余条件不变。图3.12 仿真测试三数据初始化图如图3.12所示,如图中R1寄存器中数据变为1DH,其余与仿真二相同。图3.13 仿真测试三数据预处理图如图3.13所示,将被除数和除数进行去符号处理,因此R0中原来的1BH变为现在的0BH,除数由原来的1DH变为现在的0DH。由于中间运算过程与仿真一相同,这里也不再重复。图3.14 仿真测试三商符运算图如图3.14所示,R0中现存的01H为被除数的符号位,累加器A中存的为除数符号位(0)减被除数符号位(1)的差值(-1),也就是0FFH。图3.15 仿真测试三最终运算结果图如图3.15所示,OUT单元中为

21、最终运算结果数据1DH,运算结果正确。参考文献1 唐朔飞. 计算机组成原理(第2版)M.北京:高等教育出版社,20082 范延滨.微型计算机系统原理、接口与EDA设计技术M.北京:北京邮电大学出版社,20063 王爱英.计算机组成与结构(第4版)M.北京:清华大学出版社,20064 曹昕燕.EDA技术实验与课程设计M.北京:清华大学出版社,20065 伟福COP2000型计算机组成原理试验仪使用说明书附 录源程序清单如下:地址机器码汇编语言注释008C1BMOV R0,#0BH输入被除数、除数、商值、计数器的初值分别存到寄存器R0、R1、R2和R3 四个寄存器中028D1D MOV R1,#1

22、DH048E00MOV R2,#00H068F04MOV R3,#04H0870MOV A,R0将被除数和除数分别备份到内存9F和9E单元中保存,以便后面商符运算使用09889FMOV 9FH,A0B71MOV A,R10C889EMOV 9EH,A0E70MOV A,R0将R0寄存器中的被除数与0FH进行“与”运算,目的是让符号位为00F5C0FAND A,#0FH1180 MOV R0,A1271MOV A,R1同上步,将除数进行符号预处理,变为正数进行计算135C0F AND A,#0FH1581 MOV R1,A1671MOV A,R1将除数与0进行比较,如果除数为0,没有意义,直接跳

23、出去,结束173C00SUB A,#00H19A486JZ OVERFLOW1B70MOV A,R0用被除数减去除数,并把结果存到R0寄存器中,覆盖原被除数1C31SUB A,R11D80 MOV R0,A1E5C10 LOOP:AND A,#10H判断上步结果的正负203C00 SUB A,#00H如果运算结果符号位为0,即正数,跳到S122A428 JZ S1243C10SUB A,#10H如果运算结果符号位为1,即负数,跳到S226A43CJZ S22870S1:MOV A,R0上商1模块29D4 RL A将运算结果左移一位,作为新的被除数2A80 MOV R0,A2B72MOV A,R

24、2上商1,也左移一位2C1C01ADD A,#01H2ED4 RL A2F 82MOV R2,A3070MOV A,R0新被除数减除数,运算结果仍保存在R0寄存器中3131SUB A,R13280MOV R0,A3373MOV A,R3运算过一步后,计数器值减1343C01SUB A,#01H36A451JZ NEXT运算4步后,跳转出去3883MOV R3,A减1后仍存到R3寄存器3970MOV A,R0取新被除数与除数的差3AAC1E JMP LOOP跳转到LOOP进行判断3C70S2:MOV A,R0上商0模块3D11ADD A,R1加上除数,恢复余数法,使被除数复原3E80 MOV R

25、0,A3F70MOV A,R0被除数复原后,左移一位,形成新的被除数存到R0寄存器40D4RL A4180MOV R0,A4272 MOV A,R2上商0相当于什么都不做,直接左移一位即可,保存到R2寄存器中43D4RL A4482MOV R2,A4570MOV A,R0新的被除数减去除数,运算结果保存到R0寄存器中覆盖原被除数4631SUB A,R14780MOV R0,A4873 MOV A,R3计数器值减一493C01SUB A,#01H4BA451 JZ NEXT4次运算结束后跳出去4D83MOV R3,A新计数器值存到R34E70MOV A,R0取新被除数与除数差值4FAC1EJMP

26、 LOOP跳到LOOP进行判断5170NEXT:MOV A,R04次运算已经结束525C10AND A,#10H取最后一次结果符号位543C00 SUB A,#00H如果为0,即正数,跳到OUT1处理56A45C JZ OUT1583C10 SUB A,#10H如果为1,即负数,跳到OUT2处理5AA462JZ OUT25C72OUT1:MOV A,R2最后一次运算结果为正,上商1,将结果保存到R2寄存器,并跳转到F进行商符计算5D1C01ADD A,#01H5F 82MOV R2,A60AC68JMP F6272 OUT2:MOV A,R2最后一次运算结果为负,上商0,将结果保存到R2寄存器

27、,并跳转到F进行商符计算631C00 ADD A,#00H6582MOV R2,A66AC68 JMP F68789F F:MOV A,9FH商符计算模块6AD0 RR A从内存9F单元取出被除数,右移4次,获得其符号位6BD0 RR A6CD0 RR A6DD0 RR A6E80MOV R0,A将结果存到R0寄存器6F789E MOV A,9EH从内存9E单元取出除数,右移4次,获得其符号位;并将除数符号位减被除数符号位,将结果存到累加器A中即可71 D0 RR A72 D0 RR A73 D0 RR A74 D0 RR A75 30 SUB A,R0763C00SUB A,#00H如果结果

28、为0,跳到FF2模块进行处理78A481 JZ FF27AAC7CJMP FF1否则跳到FF1模块处理7C 72 FF1:MOV A,R2结果不为0,说明被除数和除数一定是一正一负形式,所以商符符号位也必为17D6C10 OR A,#10H7F 82 MOV R2,A80 C4 OUT8172 FF2:MOV A,R2结果为0,说明被除数和除数一定是同号形式,所以商符符号位也必为0826C00OR A,#00H8482 MOV R2,A85C4 OUTOVERFLOW: MOV R0除数为0,跳到这结束课程设计总结:本次课程设计让我收获颇丰,起初拿到课程设计题目,不知道如何去实现设计要求,经过

29、前几天查阅资料,老师帮助,我对这次课程设计要求有了更深的了解,知道了具体应该怎样操作,怎样去实现原码一位除法器,怎样去操作Cop2000实验箱。我想说本次课程设计不但使我们复习了计算机组成原理课程的内容,还让我们复习并应用了算法设计与分析以及汇编语言课程的内容,我们加深了对计算机系统概念的理解。我衷心感谢学校和老师给我们安排了这次课程设计,我们平时在享受信息时代带来的方便迅捷的同时也养成了懒惰、急于求成的坏习惯,而这次的课程设计不允许我们偷懒,每个人必须下足功夫才能够完成,而在完成的过程中,我们的心态也悄然发生了变化,从开始的些许抵触转变为乐在其中,这难道不值得感谢吗?我衷心的希望学校学院能给我安排更多的此类实践课程,增强我们的动手实践能力,促进理论知识的消化吸收。最后感谢几位指导教师的悉心讲解和耐心指导,谢谢您!指导教师评语:指导教师(签字): 年 月 日课程设计成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号