




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河北大学 计算机组成原理 实验报告学院 年级 专业 学号 姓名 实验日期 实验地点 指导老师 实验项目 不恢复余数阵列除法器 成绩 一、 实验目的:理解除法器的原理。二、实验原理: 这次实验实现原码不恢复余数法的阵列除法器算法(余数左移除数固定),详细计算过程如下。例题:X=0.10110,y=0.111,求x/y原。则x补=0.10110,y*补=0.111,-y*补=1.001被除数商步骤说明+00.101 10011.001(减去除数)减去除数+11.110 10011.101 000(左移一位)00.111(加上除数)0余数为负,商上0,左移一位,加上y*补,此时count=3+00.100 00001.000 000(左移一位)11.001(减去除数)01余数为正,商上1,左移一位,减去除数,此时count=2+00.001 00000.010 000(左移一位)11.001(减去除数)011余数为正,商上1,左移一位,减去除数,此时count=1+11.011 00000.111(加上除数)0110余数为负,商上0,此时count=0,停止运算,发现余数小于0,加上y*补恢复00.010 000由于除数被除数都为正,因此最后结果为正,直接在最后的结果加上“+”,商为+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单元所组成的流水阵列来实现的它有四个输出端和四个输入端。当输入线 P0 时,CAS作加法运算;当 P1 时,CAS作减法运算。逻辑结构图 如图所示。 不恢复余数阵列除法器的逻辑结构图CAS单元的输入与输出的关系可用如下一组逻辑方程来表示: SiAi(BiP)C,Ci1(AiCi) (BiP)AiCi 当 P0 时,就是一个全加器,如下式: SiAiBiCi ,Ci1AiBiBiCiAiCi 当 P1 时,则得求差公式: SiAi非BiCi ,Ci1AiBiBiCiAiCi ,其中 非BiBi1。 在减法情况下,输入 Ci 称为借位输入,而 Ci1 称为借位输出。不恢复余数的除法(加减交替法)在不恢复余数的除法阵列中,每一行所执行的操作究竟是加法还是减法,取决于前一行输出的符号与被除数的符号是否一致。当出现不够减时, 部分余数相对于被除数来说要改变符号。这时应该产生一个商位“0”,除数首先沿对角线右移,然后加到下一行的部分余数上。当部分余数不改变它的符号时,即产生商位“1”,下一行的操作应该是减法。 本实验就采用加减交替的方法设计这个阵列除法器。被除数为x= X0.x6x5x4x3x2x1(这里需要右移,是双倍长);除数为y=Y0.y3y2y1。其中 X0和Y0 是被除数和除数的符号位,在本次设计中 X0和Y0 为零,商的符号位恒为零,商为q4.q3q2q1,余数为0.00r6r5r4r3。字长n+1=4由图看出,该阵列除法器是用一个可控加法/减法(CAS)单元所组成的流水阵列来实现的。推广到一般情况,一个(n1)位除(n1)位的加减 交替除法阵列由(n1)2个CAS单元组成,其中两个操作数(被除数与除数) 都是正的。 (1)单元之间的互连是用n3的阵列来表示的。这里被除数是一 个6位的小数(双倍长度值):x= X0.x6x5x4x3x2x1它是由顶部一行和最右边的对角线上的垂直输入线来提供的。 (2)除数是一个3位的小数:y=0.y3y2y1它沿对角线方向进入这个阵列。这是因为,在除法中所需要的部分 余数的左移,可以用下列等效的操作来代替:即让余数保持固定,而将除数沿对角线右移。(3)商q是一个3位的小数: q0.q1q2q3 它在阵列的左边产生。(4)余数r是一个6位的小数: r0.00r3r4r5r6 它在阵列的最下一行产生。最上面一行所执行的初始操作经常是减法。因此最上面一行的控制 线P固定置成“1”。减法是用2的补码运算来实现的,这时右端各CAS单元上的反馈线用作初始的进位输入。每一行最左边的单元的进位输出决定着商的数值。将当前的商反馈到下一行,我们就能确定下一行的操作。由于进位输出信号指示出当前的部分余数的符号,因此,它将决定下一行的操作将进行加法还是减法。 对不恢复余数阵列除法器来说,在进行运算时,沿着每一行都有进位(或借位)传播,同时所有行在它们的进位链上都是串行连接。而每个CAS单元的延迟时间为3T单元,因此,对一个2n位除以n位的不恢复余数阵列除法器来说,单元的数量为(n1)2,考虑最大情况下的信号延迟,其除法执行时间为 td3(n1)2T三、实验步骤:(1)打开Quartys II。(2)将子板上的JTAG端口和PC机的并行口用下载电缆连接。打开实验台电源。(3)执行ToolProgrammer命令,将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。输入输出范例:被除数A除数B商余数0.1011000.1110.1111.111011110 0001110.1101111010 1101100.0110100五、实验过程中遇到问题及解决方法:问题一:阵列除法器采用的过程是什么解决方法:余数固定除数右移。余数左移除数固定的算法适合除数和被乘数尾数为n的运算,余数固定除数右移的将例题稍作修改即可。问题二:阵列除法器是如何做到减去除数,即加上-y*补的?解决方法:变补的法则是:对y*补包括符号位“求反且最末位加1”即可得到-y*补。阵列除法器只能做加法,通过图中的“非BiBi1”实现求反,通过某一行最右侧的Ci (借位输入)为1实现最末位加1。问题三:实验现象中第一行的运算结果中,余数是1011,是除法器在逗吗?解决方法:阵列除法器并没有在逗你,采取余数固定除数右移是得到的余数是1.111011,这表明不够减,解决方法是恢复余数,得到余数为0.000 010,或者再算两次,得到余数为0.000 000 01,此时商为0.110 01。而在硬件层面上不实现这个功能。如果允许余数为负数,结果就是对的。问题四:直接将整个CAS连接起来可以吗?解决方法:像-不恢复余数阵列除法器(4位除4位阵列除法器)library ieee; use ieee.std_logic_1164.all;entity composition_7_2_non_restoring_array_divider is port(x:in std_logic_vector(6 downto 1);-这里编号顺序与课本不同y: in std_logic_vector(3 downto 1);q: out std_logic_vector(4 downto 1); r:out std_logic_vector(6 downto 3);end composition_7_2_non_restoring_array_divider;architecture s_div of composition_7_2_non_restoring_array_divider is component CAS is port(A,B,Ci,P: INSTD_LOGIC;-P,B:inout std_logic;Pout,Bout,Si,CoPlus: OUT STD_LOGIC);end component;signal p1out:std_logic_vector(1 to 16);-CAS的右上部分为加减法控制输出signal b1out:std_logic_vector(1 to 16);-CAS的右下部分为输入的B的输出signal s1:std_logic_vector(1 to 12);-CAS的竖线方向为余数输出signal co1plus:std_logic_vector(1 to 16);-CAS的左下部分为进位输出-signal gnd:std_logic := 0;-0begin-cas11:左数第一个,第1行cas11:CAS port map(0, 0, co1plus(2), 1,p1out(1),b1out(1), s1(1), co1plus(1);-输出q4=co1plus(1)cas12:CAS port map(x(6), y(3),co1plus(3),p1out(1),p1out(2),b1out(2),s1(2),co1plus(2);cas13:CAS port map(x(5), y(2),co1plus(4),p1out(2),p1out(3),b1out(3),s1(3),co1plus(3);cas14:CAS port map(x(4), y(1),p1out(4), p1out(3),p1out(4),b1out(4),s1(4),co1plus(4);q(4)=co1plus(1);-s1(1)=0cas21:CAS port map(s1(2), b1out(1),co1plus(6), co1plus(1),p1out(5),b1out(5),s1(5),co1plus(5); -输出q3=co1plus(5)cas22:CAS port map(s1(3), b1out(2),co1plus(7), p1out(5),p1out(6),b1out(6),s1(6),co1plus(6);cas23:CAS port map(s1(4), b1out(3),co1plus(8), p1out(6),p1out(7),b1out(7),s1(7),co1plus(7);cas24:CAS port map(x(3), b1out(4),p1out(8), p1out(7),p1out(8),b1out(8),s1(8),co1plus(8);q(3)=co1plus(5);cas31:CAS port map(s1(6), b1out(5),co1plus(10), co1plus(5),p1out(9),b1out(9),s1(9),co1plus(9);-输出q2cas32:CAS port map(s1(7), b1out(6),co1plus(11), p1out(9),p1out(10),b1out(10),s1(10),co1plus(10);cas33:CAS port map(s1(8), b1out(7),co1plus(12), p1out(10),p1out(11),b1out(11),s1(11),co1plus(11); cas34:CAS port map(x(2), b1out(8),p1out(12), p1out(11),p1out(12),b1out(12),s1(12),co1plus(12);q(2)=co1plus(9);cas41:CAS port map(s1(10), b1out(9),co1plus(14), co1plus(9),p1out(13),b1out(13),r(6),co1plus(13);-输出q1cas42:CAS port map(s1(11), b1out(10),co1plus(15), p1out(13),p1out(14),b1out(14),r(5),co1plus(14);cas43:CAS port map(s1(12), b1out(11),co1plus(16), p1out(14),p1out(15),b1out(15),r(4),co1plus(15);cas44:CAS port map(x(1), b1out(12),p1out(16), p1out(15),p1out(16),b1out(16),r(3),co1plus(16);q(1)=co1plus(13);end s_div;-可控加法/减法(CAS)单元controllable_Addition_UnitLIBRARY ieee;USE ieee.std_logic_1164.all;entity CAS isport(A,B,Ci,P: INSTD_LOGIC;-P,B:inout std_logic;Pout,Bout,Si,CoPlus: OUT STD_LOGIC-输出按图中逆时针方向排列);end entity;ARCHITECTURE rtl OF CAS ISBEGINSi = A xor (B xor P) xor Ci;CoPlus = (A or Ci) and (B xor P) and (A and Ci) ;Pout=P;Bout=B;END rtl;做不到按顺序同时地运算,希望有人能解决。六、实验源码:(加注释)library ieee; use ieee.std_logic_1164.all;entity composition_7_3_non_restoring_array_divider is port(x:in std_logic_vector(6 downto 1);-这里编号顺序与课本不同y: in std_logic_vector(3 downto 1);q: out std_logic_vector(4 downto 1); r:out std_logic_vector(6 downto 3);end composition_7_3_non_restoring_array_divider;architecture s_div of composition_7_3_non_restoring_array_divider iscomponent full_adder isport(a,b,ci: instd_logic;s,co: outstd_logic);end component;-signal p1out:std_logic_vector(1 to 16);-CAS的右上部分为加减法控制输出-signal b1out:std_logic_vector(1 to 16);-CAS的右下部分为输入的B的输出signal s1:std_logic_vector(1 to 12);-CAS的竖线方向为余数输出signal co1plus:std_logic_vector(1 to 16);-CAS的左下部分为进位输出-signal gnd:std_logic := 0;-0begin-full_adder11:左数第一个,第1行full_adder11:full_adder port map(0, (0 xor1), co1plus(2) ,s1(1), co1plus(1);-输出q4=co1plus(1)full_adder12:full_adder port map(x(6), (y(3) xor1),co1plus(3),s1(2),co1plus(2);full_adder13:full_adder port map(x(5), (y(2) xor1),co1plus(4),s1(3),co1plus(3);full_adder14:full_adder port map(x(4), (y(1) xor1),1,s1(4),co1plus(4);q(4)=co1plus(1);-s1(1)=0full_adder21:full_adder port map(s1(2), (0 xor co1plus(1),co1plus(6),s1(5),co1plus(5); -输出q3=co1plus(5)full_adder22:full_adder port map(s1(3), (y(3) xor co1plus(1),co1plus(7), s1(6),co1plus(6);full_adder23:full_adder port map(s1(4), (y(2) xor co1plus(1),co1plus(8), s1(7),co1plus(7);full_adder24:full_adder port map(x(3), (y(1) xor co1plus(1),co1plus(1), s1(8),co1plus(8);q(3)=co1plus(5);full_adder31:full_adder port map(s1(6), (0 xor co1plus(5),co1plus(10), s1(9),co1plus(9);-输出q2full_adder32:full_adder port map(s1(7), (y(3) xor co1plus(5),co1plus(11)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防技术培训的实践方法试题及答案
- 2025年执业医师考试样题剖析试题及答案
- 2025年护理职业行为规范试题及答案
- 快速城市化进程中的文化挑战试题及答案
- 2025年经济法概论考试真题试题及答案
- 2025德曼节能科技(山东)有限公司招聘10人笔试参考题库附带答案详解
- 药店合同解除协议书
- 行政法学考试策略及试题答案
- 自考行政管理考试要点试题及答案
- 股权干股入股协议书
- 2025年春季1530安全教育记录主题
- 初中语文教师校本培训内容
- 2024年国家公务员考试行测真题附解析答案
- 2024年医美行业痛点分析研究报告
- 云安全事件案例
- DB64-266-2018:建筑工程资料管理规程-151-200
- 《兽医产科学》考试复习题库(含答案)
- 中国的国际话语权
- 第04章 CIE标准色度系统
- JGJ120-2012建筑基坑支护技术规程-20220807013156
- 共同办展会合作协议书范文范本
评论
0/150
提交评论