logo资料库

课程设计报告——用硬件描述语言设计浮点乘法器(原码一位乘法).doc

第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
资料共27页,剩余部分请下载后查看
第一章 序章
1.1 乘法器概述
1.2 课题概述
第二章 课程设计的需求分析
2.1 环境需求
2.2 功能需求
2.3 性能需求
第三章 总体设计
3.1 原理分析
第四章 乘法器的实现
4.1 开发环境介绍
4.2 主要功能模块的实现
第五章 测试及成果展示
5.1 测试环境
5.2 测试用例和结果
5.3 成果展示
第六章 总结与展望
参考文献
计算机科学与工程学院 课程设计报告 题目全称: 用硬件描述语言设计浮点乘法器(原码一位乘法) 课程名称: 计算机组成原理 任课教师: 指导老师: 序号 学生姓名 学号 班号 任课教师 成绩 1 2 3 4 5 6 (注:学生姓名填写按学生对该课程设计的贡献及工作量由高到底排列,分数按排名 依次递减。序号排位为“1”的学生成绩最高,排位为“6”的学生成绩最低。) 指导老师评语: 工作态度 (10%) 课程设计的 成果(70%) 文档写作 (20%) 小组得分 (100%) 签字: 1
小组成员的分工及任务完成情况 序号 学生姓名 任务分工 完成情况 学生签名 1 2 3 4 5 6 2
目录 第一章 序章 ...............................................................4 1.1 乘法器概述 ........................................................ 4 1.2 课题概述 .......................................................... 5 第二章 课程设计的需求分析 .................................................6 2.1 环境需求 .......................................................... 6 2.2 功能需求 .......................................................... 6 2.3 性能需求 .......................................................... 6 第三章总体设计 ............................................................7 3.1 原理分析 .......................................................... 7 3.2 功能模块 ......................................................... 10 第四章乘法器的实现 .......................................................13 4.1 开发环境介绍 ..................................................... 13 4.2 主要功能模块的实现 ............................................... 13 4.3 本章小结 ......................................................... 12 第五章 测试及成果展示 ....................................................21 5.1 测试环境 ......................................................... 21 5.2 测试用例和结果 ................................................... 21 5.3 成果展示 ......................................................... 23 第六章 总结与展望 ........................................................26 参考文献 .................................................................27 III
第一章 序章 1.1 乘法器概述 作用 乘法器不仅作为乘法、除法、乘方和开方等模拟运算的主要基本单元,而且还广泛用于电子通信系 统作为调制、解调、混频、鉴相和自动增益控制;另外还可用于滤波、波形形成和频率控制等场合, 因此是一种用途广泛的功能电路。 一个理想的通用乘法器,不应当对任何一个输入信号的极性加以限制,也就是说,应当具有能完成 四个象限的运算功能的电路。 类型 模拟乘法器 模拟乘法器是对两个模拟信号(电压或电流)实现相乘功能的的有源非线性器件。主要功能是实现 两个互不相关信号相乘,即输出信号与两输入信号相乘积成正比。它有两个输入端口,即 X 和 Y 输 入端口。 乘法器两个输入信号的极性不同,其输出信号的极性也不同。如果用 XY 坐标平面表示,则乘法器 有四个可能的工作区,即四个工作象限,如图。 若信号均限定为某一极性的电压时才能正常工作,该乘法器称为单象限乘法器;若信号中一个能适 应正、负两种极性电压,而另一个只能适应单极性电压,则为二象限乘法器;若两个输入信号能适 应四种极性组合,称为四象限乘法器。 集成模拟乘法器的常见产品有 BG314、F1595、F1596、MC1495、MC1496、LM1595、LM1596 等。 硬件乘法器 硬件乘法器,其基础就是加法器结构,它已经是现代计算机中必不可少的一部分。乘法器的模型就 是基于“移位和相加”的算法。在该算法中,乘法器中每一个比特位都会产生一个局部乘积。第一 个局部乘积由乘法器的 LSB 产生,第二个乘积由乘法器的第二位产生,以此类推。如果相应的乘数 比特位是 1,那么局部乘积就是被乘数的值,如果相应的乘数比特位是 0,那么局部乘积全为 0。每 次局部乘积都向左移动一位。 乘法器可以用更普遍的方式来表示。每个输入,局部乘积数,以及结果都被赋予了一个逻辑名称(如 A1、A2、B1、B2),而这些名称在电路原理图中就作为了信号名称。在原理图的乘法例子中比较信 号名称,就可以找到乘法电路的行为特性。 在乘法器电路中,乘数中的每一位都要和被乘数的每一位相与,并产生其相应的乘积位。这些局部 乘积要馈入到全加器的阵列中(合适的时候也可以用半加器),同时加法器向左移位并表示出乘法结 果。最后得到的乘积项在 CLA 电路中相加。注意,某些全加器电路会将信号带入到进位输入端(用 于替代邻近位的进位)。这就是一种全加器电路的应用;全加器将其输入端的任何三个比特相加。 随着乘数和被乘数位数的增加,乘法器电路中的加法器位树也要相应的增加。通过研究 CLA 电路的 特性,也可以在乘法器中开发出更快的加法阵列。 4
1.2 课题概述 本课题的目的是掌握原码一位乘法的计算原理和分步乘法的过程,以及各个实现的模块 的工作原理及方式。同时通过实现乘法器的也为更复杂的乘法器打好理论和实践的基 础,以便于理解和实现原码两位乘法器和更多位的乘法器。同时更加深了模块化的设计 思想,由简到繁,逐步细化每个功能模块。此外,还为了更好地学会使用Verilog语言, 熟悉了语法、设计过程、调试方法,以及软硬件工作的配合。 5
第二章 课程设计的需求分析 2.1 环境需求 操作系统:Windows 7 虚拟机 仿真软件:Xilinx ise 2.2 功能需求 使用硬件描述语言(Verilog)设计一个乘法器(原码一位乘),并且用仿真软件模拟运行 2.3 性能需求 迅速高效地完成运算 6
第三章 总体设计 3.1 原理分析 (1)原码一位乘 在定点计算机中,两个原码表示的数相乘的运算规则是:乘积的符号位由两数的符号按异或运算得 到,而乘积的数值部分则是两个正数相乘之积。设 n 位被乘数和乘数用定点小数表示(定点整数也同 样适用) 被乘数 [x]原 = xf .x0 x1 x2 … xn 乘数 [y]原 = yf .y0 y1 y2 … yn 则 乘积 [ z ]原 = ( xf⊕yf ) . (0. x0 x1 x2 …xn)(0 . y1 y2 …yn) 式中,xf 为被乘数符号,yf 为乘数符号。 乘积符号的运算法则是:同号相乘为正,异号相乘为负。由于被乘数和乘数和符号组合只有四种情 况(xf yf = 00,01,10,11),因此积的符号可按“异或”(按位加)运算得到。 数值部分的运算方法与普通的十进制小数乘法相类似,不过对于用二进制表达的数来说,其乘法规 则更为简单一些:从乘法 y 的最低位开始,若这一位为“1”,则将被乘数 x 写下;若这一位为“0”, 则写下全 0。然后再对乘数 y 的高一位进行的乘法运算,其规则同上,不过这一位乘数的权与最低 位乘数的权不一样,因此被乘数 x 要左移一位。依次类推,直到乘数各位乘完为止,最后将它们统 统加起来,便得到最后乘积 z 。 设 x = 0.1011,y = 0.1101,让我们先用习惯方法求其乘积,其过程如下: × + 1 0 0 0 0 1 0 1 0 0. 1 0. 0. 1 1 1 1 0 1 1 (x) (y) 1 1 1 0 1 0 1 1 0 1 0 0 1 1 1 (z) 如果被乘数和乘数用定点整数表示,我们也会得到同样的结果。但是,但是人们习惯的算法对机器 并不完全适用。原因之一,机器通常只有 n 位长,两个 n 位数相乘,乘积可能为 2n 位。原因之二, 只有两个操作数相加的加法器,难以胜任将 n 个位积一次相加起来的运算。为了简化结构,机器通 常只有 n 位长,并且只有两个操作数相加的加法器。为此,必须修改上述乘法的实现方法,将 x • y 改写成适于如下定点机的形式: 一般而言,设被乘数 x 、乘数 y 都是小于 1 的 n 位定点正数: x = 0 . x1 x2 … xn ; y = 0 . y1 y2 … yn 7
其乘积为 x • y = x • ( 0.y1y2 … yn ) = x • ( y1 2 -1 + y2 2 -2 + … + yn 2 -n) = 2 -1( y1x + 2-1( y2 x + 2-1 (… + 2-1 ( yn-1 x + )…)) 令 zi 表示第 i 次部分积,则上式可写成如下递推公式: z0 = 0 z1 = 2-1( ynx + z0) … zi=2-1(yn-i+1x+zi-1) … zn = x•y = 2-1( y1x + zn-1) 显然,欲求 x•y,则需设置一个保存部分积的累加器。乘法开始时,令部分积的初值 z0 = 0,然后 求加上 ynx,右移 1 位得第 1 个部分积,又将加上 yn - 1x,再右移 1 位得第 2 个部分积。依此类推, 直到求得 y1x 加上 zn-1 并右移 1 位得最后部分积,即得 x•y。显然,两个 n 位数相乘,需重复进行 n 次“加”及“右移”操作,才能得到最后乘积。这就是实现原码一位乘法的规则。 【例 】 x = 0.1101, y = 0.1011,用原码一位乘法计算 x • y = ? [解:] 求解过程如下: + + + + yf yf 乘数 1 部分积 00.0000 00.1101 00.1101 → 00.0110 00.1101 01.0011 → 00.1001 00.0000 00.1001 → 00.0100 00.1101 01.0001 → 00.1000 所以 x • y = 0.10001111 1 1 1 1 1 1 1 说明 1 1 0 1 yf 1 0 1 z0 = 0 y4 = 1,+ x 右移,得 z1 Y3 = 1,+ x 右移,得 z2 Y2 = 0,+0 右移,得 z3 Y1 = 1,+ x 1 yf 右移,得 z3 = x y 0 1 yf 1 1 (2)浮点数乘法 浮点运算使用三种不同的数据:整数,又分为字,短整数和长整数;实数,分为单精度和双精度压 缩的二十进制数(BCD) 。 设有两个浮点数 x 和 y,分别为: X= 2mMx , Y= 2nMy (1)对阶: 两浮点数进行加、减时,首先要看两数的阶码是否相同,若两数的阶码不等,表示小数点位置没有 对齐,则必须使两数的阶码相等,这个过程叫做对阶.对阶的方法: 首先求出两数的阶码 m 和 n 之差: 8
分享到:
收藏