定点原码两位乘法器的设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

沈阳航空航天大学

课程设计报告

课程设计名称:计算机组成原理课程设计

课程设计题目:定点原码二位乘法器的设计

目录

第1章总体设计方案 (1)

1.1设计原理 (1)

1.2设计思路 (3)

1.3设计环境 (5)

第2章功能模块的设计与实现 (6)

2.1总体的设计与实现 (6)

2.1.1总体方案的逻辑图 (6)

2.2基本功能模块的组成及工作原理 (8)

2.2.1被乘数模块的组成及工作原理 (8)

2.2.2乘数模块的组成及工作原理 (8)

2.2.3选择模块的组成及工作原理 (9)

2.2.4 移位模块的工作原理 (9)

第3章程序仿真与测试 (10)

3.1程序仿真 (10)

3.2仿真测试及结果分析 (10)

参考文献 (12)

附录(汇编程序) (13)

第1章总体设计方案

1.1 设计原理

定点原码两位乘与定点原码一位乘一样,符号位的运算和数值部分是分开进行的,但为了提高运算速度,所以采用了原码两位乘,因为原码两位乘是用乘数的末两位的状态来决定新的部分积如何形成,可提高运算速度。乘数和被乘数都用原码表示。

两位乘数有四种可能的组合,每种组合对应的操作如表1.1所示

表1.1 乘数组合与部分积关系对照表

乘数y n-1y n 新的部分积

00 新部分积等于原部分积右移两位

01 新部分积等于原部分积加被乘数后右移两位

10 新部分积等于原部分积加2倍被乘数后右移两位

11 新部分积等于原部分积加3倍被乘数后右移两位

与一位乘法比较,多出了+2X和3X两种情况。把X左移1位即得到2X,在机器内通常采用左斜送一位来实现。可是+3X一般不能一次完成,如分成两次进行,又降低了计算速度。解决问题的办法是:以(4X-X)来代替3X运算,在本次运算中只执行-X,而+4X则归并到下一步执行,此时部分积以右移了两位,上一步欠下的+4X已变成+X,在实际线路中要用一个触发器C来记录是否欠下+4X,若是,则C变为1。因此实际操作用Yi-1,Yi,C三位来控制,运算规则如下所示:

表1.2 判断值对应的操作以及C值的变化情况

组合值Yi-1 Yi C 操作C值变化

0 0 0 0 部分积+0;右移两位C=0

1 0 0 1 部分积+x;右移两位C=0

1 0 1 0 部分积+x;右移两位C=0

2 0 1 1 部分积+2x;右移两位C=0

2 1 0 0 部分积+2x;右移两位C=0

3

1 0 1 部分积-x ;右移两位 C=1 3 1 1 0 部分积-x ;右移两位 C=1 4 1 1 1 部分积+0;右移两位 C=1 定点原码两位乘法器实现的功能应如下面例子所示,设计的电路应实现下面 例子给定的功能。

用原码两位乘方法求X*Y ,已知X=07H ,Y=16H (这里的0或1表示符号位)。 2X=0010.1110

表 1.3 07H*16H 的计算过程

部分积 乘数 C j 说明

000.0000 0110 0 开始,部分积为0,C j =0

+010.1110 y n-1y n C j =100,加2x*,保持C j =0

010.1110 0110

000.1011 1001 0 —>2位,得新的部分积,乘数同时—>2位 +001.0111 y n-1y n C j =010,加x*,保持C j =0

010.0010 1001 0

000.1000 1010 —>2位得最终结果

实现定点原码两位乘法的流程框图如1.1所示.

图1.1 定点原码两位乘法器逻辑电路框图

1.2 设计思路

设计的定点原码两位乘法器是用一个乘数模块,一个被乘数模块和部分积模块以及移位模块和选择模块构成。

顾名思义,乘数模块以及被乘数模块即用来存储乘数和被乘数的模块,思路是把乘数存储在R1中,被乘数则存储在R2中。部分积则和书上所说的一样,先全部清零,在这里,我将把部分积存储在R0中。因为原码两位乘涉及到欠位,所以R3中存储欠位。

思路大概如下。将要计算的乘数以及被乘数分别输进存储器中,然后分别计算出x*以及2x方便以后计算。然后再提出两数的符号位并进行异或运算(比如17H,06H的符号位计算则为1异或0最后经过移位运算可得出最终的符号位模式10,00)。

下面便是具体计算过程:记部分积为000.0000,判断y n-1y n C j的值并加上对应的值然后将部分积右移两位,同时将乘数右移两位,重复计算,计算次数达到2的时候判断附加位,如果附加位为1,则加x*并右移两位得结果,否则直接得出结果。

最终,要进行符号位运算。由于上面已经计算好符号位为10或者00,所以将上面的步骤得到的结果与7FH相与去掉上面结果的最高位,再将算好的符号位加到结果上则可得到最终结果。

根据课设题目要求,采用伟福COP2000和实验箱进行设计并实现定点原码两位乘,所以本题目需要试用软件进行调试,首先需要进行编程。

以下会给出几个本程序中将用到的汇编语言以及其对应的注释:

表 1.4 程序部分操作的注释

ADD A,R? 将寄存器R?的值加入累加器A中

ADDC A,R? 将寄存器R?的值加入累加器A中,带进位SUB A,R? 从累加器A中减去寄存器R?的值

AND A,R? 累加器A“与”寄存器R?的值

OR A,R? 累加器A“或”寄存器R?的值

JZ MM 若零标志位置1,跳转到MM地址

JMP MM 跳转到MM地址

CPL A 累加器A取反,再存入累加器A中

OUT 将累加器A中的数据输出到输出端口

RR A 累加器A右移一位

RL A 累加器A左移一位

NOP 空指令

相关文档
最新文档