计算机组成原理实验报告_3_不恢复余数阵列除法器

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

河北大学计算机组成原理实验报告

学院年级专业

学号姓名

实验日期实验地点指导老师

实验项目不恢复余数阵列除法器成绩

一、实验目的:

理解除法器的原理。

二、实验原理:

这次实验实现原码不恢复余数法的阵列除法器算法(余数左移除数固定),详细计算过程如下。

例题:X=0.10110,y=0.111,求[x/y]原。则[x]补=0.10110,[y*]补=0.111,[-y*]补=1.001

由于除数被除数都为正,因此最后结果为正,直接在最后的结果加上“+”,商为+0.110,但是由于除数在计算的过程中被逻辑左移了3次,所以要乘以2^-5进行恢复,故余数为0.000 010 000。

原码不恢复余数法原理说明:

①符号位单独处理,参加运算的是除数和被除数的绝对值的补码,除数的绝对值用y*表示;

②合法的除法运算中,被除数必须小于除数,因此第一次上商肯定是r6=0,否则溢出,停止运算;

③原码恢复余数法来源于手算的竖式除法。若余数为正,表示够减,商上1,左移一位,减去[y*]补,也就是加上[-y*]补;若余数为负,表示不够减,商上0,恢复余数(加上除数),变成减去除数之前的结果,继续左移一位,加上[-y*]补。

④原码不恢复余数法建立在原码恢复余数法的基础之上,假设当前的余数为R。当余数大于0时,下一步余数是先左移一位再减去除数,即下一步余数应该为R’=2R-y*;当余数小于0时先恢复余数,然后再左移一位再减去除数,假设当前余数为R,那么下一步余数应该为R’=2(R+y*)-y*=2R+y*。以上两个式子将恢复余数法的步骤定量化了,也就是说,要么左移一位加上y*,要么左移一位减去y*,这就是加减交替的含义。

⑤除数和被除数具有3位尾数的合法的除法,需要逻辑移位3次,上商3+1=4次。可以设置一个计数器count来控制循环次数,达到3次就停止。

⑥若最后一步为负,表示不够减,商上0,需要恢复余数,即加上除数,否则不需要。

接下来介绍原码不恢复余数阵列除法器

①可控加法/减法(CAS)单元

原理是利用一个可控加法/减法 CAS 单元所组成的流水阵

列来实现的它有四个输出端和四个输入端。当输入线P=0

时,CAS 作加法运算;当P=1 时,CAS 作减法运算。逻辑

结构图如图所示。不恢复余数阵列除法器的逻辑结构

图 CAS 单元的输入与输出的关系可用如下一组逻辑方程来

表示:

Si=Ai⊕(Bi⊕P)⊕C,Ci+1=(Ai+Ci)· (Bi⊕P)+AiCi

当P=0 时,就是一个全加器,如下式:Si=Ai⊕Bi⊕Ci ,Ci+1=AiBi+BiCi+AiCi 当P=1 时,则得求差公式:Si=Ai⊕非Bi ⊕Ci ,Ci+1=AiBi+BiCi+AiCi ,其中非Bi=Bi⊕1。在减法情况下,输入Ci 称为借位输入,而Ci+1 称为借位输出。

②不恢复余数的除法(加减交替法)

在不恢复余数的除法阵列中,每一行所执行的操作究竟是加法还是减法,取决于前一行输出的符号与被除数的符号是否一致。当出现不够减时,部分余数相对于被除数来说要改变符号。这时应该产生一个商位“0”,除数首先沿对角线右移,然后加到下一行的部分余数上。当部分余数不改变它的符号时,即产生商位“1”,下一行的操作应该是减法。

本实验就采用加减交替的方法设计这个阵列除法器。

被除数为x= X0.x6x5x4x3x2x1(这里需要右移,是双倍长);除数为y=Y0.y3y2y1。其中X0 和 Y0 是被除数和除数的符号位,在本次设计中X0 和 Y0 为零,商的符号位恒为零,商为q4.q3q2q1,余数为0.00r6r5r4r3。字长n+1=4

由图看出,该阵列除法器是用一个可控加法/减法(CAS)单元所组成的流水阵列来实现的。推广到一般情况,一个(n+1)位除(n +1)位的加减交替除法阵列由(n+1)2个CAS单元组成,其中两个操作数(被除数与除数) 都是正的。

(1)单元之间的互连是用n=3的阵列来表示的。这里被除数x是一个6位的小数(双倍长度值):x= X0.x6x5x4x3x2x1它是由顶部一行和最右边的对角线上的垂直输入线来提供的。

(2)除数y是一个3位的小数:y=0.y3y2y1它沿对角线方向进入这个阵列。这是因为,在除法中所需要的部分余数的左移,可以用下列等效的操作来代替:即让余数保持固定,而将除数沿对角线右移。

(3)商q是一个3位的小数:q=0.q1q2q3 它在阵列的左边产生。

(4)余数r是一个6位的小数:r=0.00r3r4r5r6 它在阵列的最下一行产生。

最上面一行所执行的初始操作经常是减法。因此最上面一行的控制线P固定置成“1”。减法是用2的补码运算来实现的,这时右端各CAS单元上的反馈线用作初始的进位输入。每一行最左边的单元的进位输出决定着商的数值。将当前的商反馈到下一行,我们就能确定下一行的操作。由于进位输出信号指示出当前的部分余数的符号,因此,它将决定下一行的操作将进行

加法还是减法。

对不恢复余数阵列除法器来说,在进行运算

时,沿着每一行都有进位(或借位)传播,同

时所有行在它们的进位链上都是串行连接。

而每个CAS单元的延迟时间为3T单元,因

此,对一个2n位除以n位的不恢复余数阵

列除法器来说,单元的数量为(n+1)2,考虑

最大情况下的信号延迟,其除法执行时间为

td=3(n+1)2T

三、实验步骤:

(1)打开Quartys II。

(2)将子板上的JTAG端口和PC机的并行口用下载电缆连接。打开实验台电源。(3)执行Tool→Programmer 命令,将adder8.sof下载到FPGA中。注意在执行Programmer中,应在program/configure下的方框中打钩,然后下载。

(4)在实验台上通过模式开关选择FPGA-CPU独立调试模式010。

四、实验现象及分析:

本实验实现4位除4位阵列除法器。

输入输出规则对应如下:

(1)输入被乘数A和乘数B,A和B分别是x= X0.x6x5x4x3x2x1和y=Y0.y3y2y1

(2)输出的结果是商为q4.q3q2q1,余数为0.00r6r5r4r3。

输入输出范例:

相关文档
最新文档