定点原码一位乘法器的设计 (3)

合集下载

定点源码一位乘法器的设计内容结论

定点源码一位乘法器的设计内容结论

定点源码一位乘法器的设计内容结论篇一:设计一个定点源码一位乘法器可以帮助我们更好地理解计算机内部如何进行乘法运算。

本文将介绍一个定点源码一位乘法器的设计方案,包括其基本结构和实现方式,结论是这种乘法器在计算机内部可以实现,并且具有高效的性能。

首先来看乘法器的基本原理。

乘法是将两个数相乘得到的结果存储在两个数的对应位上,然后根据乘积的二进制表示将结果进行位运算得到最终的答案。

对于一位乘法器,其基本操作如下:1. 读取两个数,并将它们存储在一个临时变量中。

2. 对两个数进行位运算,将乘积的对应位设置为1,其他位设置为0。

3. 将结果存储回原来的两倍位置。

下面我们来具体实现一个一位乘法器。

首先,我们需要选择一种编程语言来实现乘法器。

由于一位乘法器只涉及两个数的不同位,因此选择C语言作为实现语言。

接下来,我们需要设计一个乘法器的数据结构。

对于一位乘法器,我们只需要将乘积的二进制表示存储在一个数组中,而不需要存储中间结果。

因此,我们可以使用一个二进制数组来实现一位乘法器。

接下来,我们来实现乘法器的代码。

首先,我们初始化两个数组,一个用于存储乘积的二进制表示,另一个用于存储中间结果。

然后,我们使用位运算来实现乘法操作。

具体地,我们按照以下步骤进行操作:1. 读取两个数。

2. 对两个数进行位运算。

3. 将乘积的对应位设置为1,其他位设置为0。

4. 将结果存储回原来的两倍位置。

下面是完整的代码实现:```c#include <stdio.h>#include <stdlib.h>#define MAX_INT 32767// 乘法器数据结构typedef struct {int value;int bit[2];} 乘积;// 初始化乘积void init_积(乘积*积) {积->value = 0;for (int i = 0; i < 2; i++) {积->bit[i] = 0;}}// 读取两个数int read_nums(乘积*积, int num1, int num2) { 乘积 temp;init_积(&temp);int carry = 0;for (int i = 0; i < 8; i++) {int bit = (num2 >> i) & 1;temp.bit[i] = bit;if (bit) {carry++;}}temp.value = carry ? (temp.value + num1) : num1;return temp.value;}// 位运算void bit_Ops(乘积*积, int num1, int num2, int bit) { if (bit) {积->bit[2 * bit - 1] = num2 & 1;}}// 打印结果void print_result(乘积*积, int num1, int num2) {for (int i = 0; i < 2; i++) {printf("%d ",积->bit[i]);}printf("");}int main() {乘积积1,积2;int num1, num2;printf("请输入两个整数:");scanf("%d%d", &num1, &num2);printf("请输入第一个整数:");scanf("%d", &积1.value);printf("请输入第二个整数:");scanf("%d", &积2.value);printf("请输入第一个整数的位数: ");scanf("%d", &积1.bit[0]);printf("请输入第二个整数的位数: ");scanf("%d", &积2.bit[0]);printf("计算结果为:");printf("%d", read_nums(积1, num1, num2));printf("计算结果的位数:");printf("%d ",积1.bit[2 *积1.bit[0] - 1]);printf(" ");printf("计算结果的进位:");printf("%d ",积2.bit[2 *积2.bit[0] - 1]);printf(" ");return 0;}```根据上面的代码,我们可以得到一位乘法器的基本结构。

原码一位乘法器设计实验报告

原码一位乘法器设计实验报告

原码一位乘法器设计实验报告一位乘法器设计实验报告本次实验的目的是设计一个1位乘法器,使用VHDL语言在FPGA平台上进行编程,以模拟数字系统中常用的数字乘法操作。

(1)实验介绍本次实验采用FPGA对1位乘法器进行设计,通过综合语言VHDL对1位乘法器进行编程,实现乘法操作,考核我们所学习到的技能,及其在数字电路中的运用。

(2)原理1位乘法器(One-bit Multiplier)主要包括一个数据输入端A,输入一位A;B输入端,输入一位B;两个控制端,乘法指令和正负指令;产生和端为Cout,乘法结果输出端为Dout。

1位乘法器的功能是:如果A、B都为0时,整个乘法器保持空闲,如果A>0或者 B>0,就会开始乘法运算,Cout为A与B的AND运算结果,Dout=A*B,即当B=1时,Dout=A;当B=0时,Dout=0。

(3)实验流程(1)设计多位乘法器的功能模块,完成模块之间的接口描述;(2)设计1位乘法器的VHDL代码,其中包括输入、输出、控制部分;(3)利用Xilinx ISE 14.6完成编译,查看综合错误情况;(4)绘制电路图,添加模块;(5)进行仿真测试,将模块内各部分功能输入实际值,验证运算正确性;(6)在DE2开发板上运行代码,上传新的程序,查看实际运行情况,确认乘法器可以正确工作;(7)验证结果,完成整个乘法器的设计。

(4)实验结果本次实验通过编写VHDL语言,绘制电路图,仿真测试,烧写程序等步骤,设计出一位乘法器,实现了正确乘法运算功能,实验结果如下图所示:此外,实验中使用的FPGA开发板的硬件设计采用Cyclone ll,有良好的性能和可编程性,在编程和复杂数字电路处理领域有很强的优势。

(5)总结本次实验通过实验,熟悉了1位乘法器的结构及其工作原理,掌握综合语言VHDL和FPGA编程技术,掌握了数字电路设计。

最后,本次实验完成了乘法器的设计,检验结果满足预期,获得有意义的实验教训,实现了实验目标。

原码一位乘法器

原码一位乘法器

实验一、原码一位乘法器一、引言在计算机组成原理知识教学过程中,关于二进制乘法运算是一个较难理解的环节,其中又以“定点原码一位乘法算法”是最基础的,针对这一算法设计实验方案,为学员提供实践环境,对深入理解这一问题、以及进一步的学习其他乘法乃至除法算法都十分重要。

二、定点原码一位乘法算法两个原码数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积。

例如:[X]原=X0X1X2…Xn,X0为符号[Y]原=Y0Y1Y2…Yn,Y0为符号则[X·Y]原=(X0⊕Y0)|(X1X2…Xn)·(Y1Y2…Yn),符号“|”表示把符号和数值邻接起来。

在计算时,符号位和数值位分别进行计算。

对于数值位,逐次按乘数每一位(从低位到高位)上的值是1还是0,决定一个相加数或者是被乘数或者是0,并向左偏移一位去加上次计算得到的和(它又被称为部分积,其初值为0),如此进行乘数位数次,最终得到乘积。

在此需要注意的是:“相加数向左偏移一位后求和”和“上次计算得到的和向右偏移一位后求和”两种求和的方法是等效的,设计乘法器时采用后一种方法,其目的是寻求部份积与乘数移位方向的一致性。

例如X的值为1101,Y的数值为1011,求X·Y数值的过程如下:三、定点原码一位乘法器的逻辑结构根据以上算法,设计定点原码一位乘法器的逻辑结构如下图所示:其中n位寄存器S1n称为部分积寄存器,初值为0,计算结束时寄存乘积高位;一位寄存器S0用以寄存乘积符号;n+1位寄存器Y0n称为被乘数寄存器;n位寄存器X1n称为乘数寄存器,初值为乘数,计算结束时寄存乘积低位;一位寄存器X0用以寄存乘数符号。

控制信号Scr用于S1n清零,低电平有效;Scp用于S1n的触发,上升沿有效;S0cp用于S 0的触发,上升沿有效,X0cp用于X0的触发,上升沿有效,并且乘法器运行时,要求先产生X 0cp,然后再产生S0cp,所以这两个信号正好应用一个正脉冲的两个边沿;Xcp用于X1n的触发,上升沿有效;Ycp用于Y0n的触发,上升沿有效;Isc用于控制X1n是选择开关组值作输入还是选择移位的部分积作输入。

c语言实现原码一位两个定点数相乘

c语言实现原码一位两个定点数相乘

一、概述在计算机科学中,C语言是一种非常流行的程序设计语言,它具有高效、灵活和丰富的库函数等特点。

在C语言中实现原码一位两个定点数相乘是一个非常基础和常见的计算操作,本文将介绍如何使用C语言实现原码一位两个定点数相乘的过程。

二、原码定点数1. 定点数是计算机中用于表示实数的一种方式,它们不同于浮点数,定点数以二进制形式表示,它包含一个整数部分和一个小数部分。

2. 原码定点数中,最高位为符号位,其余位用来表示整数部分和小数部分。

当符号位为0时,表示正数,为1时表示负数。

三、原码定点数相乘1. 原码定点数相乘是指两个原码定点数相乘的操作。

2. 对于原码定点数A和B,其相乘过程可以表示为C=A×B,其中C 为相乘结果。

四、C语言实现下面是一个简单的C语言函数,实现了原码一位两个定点数相乘的功能:```c#include <stdio.h>int fix_mul(int a, int b, int n){int c;c = a * b;c = c >> n; // 将乘积右移n位,得到结果return c;}```五、代码解释1. 上述代码定义了一个名为fix_mul的函数,接受三个参数a、b、n,分别表示两个原码定点数和小数部分的位数。

2. 函数内部先将a和b相乘,然后将结果右移n位,最终得到相乘的结果,并将其返回。

六、示例下面是一个示例代码,展示了如何使用上述函数进行原码一位两个定点数相乘的操作:```c#include <stdio.h>int m本人n(){int a = 10; // 原码定点数Aint b = 20; // 原码定点数Bint n = 8; // 小数部分的位数int result = fix_mul(a, b, n);printf("The result of A * B is d\n", result);return 0;}```七、总结通过上述的介绍可以看出,使用C语言实现原码一位两个定点数相乘是一个非常简单的操作。

原码一位乘法课程设计

原码一位乘法课程设计

原码一位乘法课程设计一、课程目标知识目标:1. 让学生掌握原码一位乘法的概念和原理,理解其在计算机运算中的重要性。

2. 使学生能够运用原码一位乘法算法进行二进制数的乘法运算,并正确表示结果。

3. 帮助学生理解原码乘法与补码乘法的区别与联系,提高学生对计算机中数值表示方法的认识。

技能目标:1. 培养学生运用原码一位乘法进行二进制乘法运算的能力,提高学生的计算速度和准确性。

2. 培养学生分析原码一位乘法运算过程中可能出现的问题,并能提出相应的解决方法。

情感态度价值观目标:1. 培养学生对计算机运算原理的兴趣,激发学生主动探索计算机科学知识的欲望。

2. 培养学生团队合作意识,使学生学会在合作中解决问题,共同提高。

3. 培养学生严谨的学术态度,使学生认识到计算机运算中的精确性和逻辑性。

课程性质:本课程属于计算机科学领域,涉及二进制运算和数值表示方法,具有理论性和实践性。

学生特点:学生已具备一定的二进制基础知识,具有一定的逻辑思维能力和动手操作能力。

教学要求:结合学生特点,注重理论与实践相结合,以实例讲解和动手练习为主,提高学生对原码一位乘法的理解和运用能力。

在教学过程中,关注学生个体差异,给予个性化指导,确保学生能够达到预定的学习目标。

通过课程学习,使学生能够将原码一位乘法应用于实际计算问题,提高学生的计算思维和问题解决能力。

二、教学内容1. 引入原码一位乘法概念,回顾二进制数的表示方法及其运算规则。

2. 讲解原码一位乘法的运算原理,以实例展示原码乘法运算过程。

3. 分析原码一位乘法与补码乘法的区别和联系,探讨各自在计算机运算中的应用场景。

4. 制定原码一位乘法运算步骤,引导学生通过练习掌握运算方法。

- 确定乘数和被乘数的原码表示;- 进行二进制乘法运算;- 判断符号位,确定结果符号;- 转换结果为原码表示。

5. 设计实例和练习题,涵盖不同类型的原码一位乘法运算,提高学生的实际操作能力。

6. 教学内容进度安排:- 第一节课:引入概念,讲解原码一位乘法原理,分析运算规则;- 第二节课:对比原码与补码乘法,通过实例讲解和练习加深理解;- 第三节课:总结原码一位乘法的运算步骤,进行实际操作练习;- 第四节课:巩固所学知识,解决实际问题,拓展学生思维。

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

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

定点原码一位乘法器的设计定点原码乘法器是一种基本的数字运算电路,用于实现两个定点原码数的乘法运算。

在设计定点原码乘法器时,需要考虑两个关键方面:乘法运算的算法和乘法运算电路的实现。

一、乘法运算的算法设计:1.符号位的处理:定点原码乘法器需要考虑乘法运算的符号位。

根据乘法运算的规则,当两个数的符号位不同时,乘积的符号位为负;当两个数的符号位相同时,乘积的符号位为正。

因此,在乘法运算时,首先需要对两个乘数的符号位进行判断和处理。

2.乘法运算的主体部分:乘法运算的主体部分是通过将两个乘数的每一位进行相乘,并将结果相加得到乘积的每一位。

一般来说,乘法运算可以采用移位和加法的方式来实现。

a.移位操作:在乘法运算中,需要将乘数的每一位与被乘数的每一位相乘,并将结果相加。

因此,首先需要将乘数的每一位与被乘数的每一位相乘,移位操作可以实现该过程。

b.加法操作:乘法运算中,需要将乘数的每一位与被乘数的每一位相乘,得到中间的结果,然后将中间结果相加,得到最终的乘积。

这一步骤可以通过加法器电路来实现。

二、乘法运算电路的实现设计:在设计定点原码乘法器的电路时,需要考虑各个功能模块的实现:1.符号位处理电路:由于定点原码乘法器需要考虑两个乘数的符号位,因此需要设计一个符号位处理电路。

该电路可以根据两个乘数的符号位来判断乘积的符号位,并给出相应的控制信号。

2.移位操作电路:移位操作电路用于实现乘数的每一位与被乘数的每一位相乘。

可以采用多路选择器和移位寄存器来实现。

多路选择器用于选择当前操作的两个数位,移位寄存器用于保存被乘数的每一位。

3.加法器电路:加法器电路用于将乘数的每一位与移位操作电路中移位后的结果相加。

可以采用并行加法器来实现,通过级联多个全加器,实现两个二进制数的加法运算。

4.乘积结果输出电路:乘积结果输出电路用于将最终的乘积输出。

可以通过选择器来选择最后一位的结果,并将结果输出到寄存器中,供后续电路使用。

设计定点原码乘法器的步骤如下:1.分析乘法运算的算法,确定各个功能模块的需求和输入输出信号。

定点补码一位乘法器的设计

定点补码一位乘法器的设计

沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点补码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:84010101学号:2008040101002姓名:边爽指导教师:曹一鹏完成日期:2011年1月14日沈阳航空航天大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (2)1.3设计环境 (4)第2章详细设计方案 (5)2.1顶层方案图的设计与实现 (5)2.1.1创建顶层图形设计文件 (5)2.1.2器件的选择与引脚锁定 (6)2.1.3编译、综合、适配 (7)2.2功能模块的设计与实现 (7)2.2.1 取补模块的设计与实现 (7)2.2.2选择器模块的设计与实现 (9)2.2.3 乘数补码移位寄存器模块的设计与实现 (12)2.2.4 部分积移位寄存器模块的设计与实现 (14)2.2.5加法器模块的设计与实现 (16)2.3仿真调试 (16)第3章编程下载与硬件测试 (19)3.1编程下载 (19)3.2硬件测试及结果分析 (19)参考文献 (22)附录(电路原理图) (23)第1章 总体设计方案1.1 设计原理由于机器都采用补码做加减运算,所以设计补码乘法器能避免码制转换,提高机器效率。

在计算两个补码相乘时,可以通过Booth 算法来实现定点补码一位乘的功能。

布斯(Booth)算法采用相加和相减的操作计算补码数据的乘积,Booth 算法对乘数从低位开始判断,根据后两个数据位的情况决定进行加法、减法还是仅仅进行移位操作。

补码一位乘法的运算规则:(1) 被乘数一般取双符号位参加运算。

(2) 乘数可取单符号位以决定最后一步是否需要校正,即是否加补][X -。

(3) 乘数末位增设附加位1+n y ,且初值为0。

部分积补][0Z 初始值为0。

(4) 被乘数[x]补乘以对应的相邻两位乘数(n n y y -+1)之差值,再与前部分积累加,然后右移一位(乘2-1),形成该步的部分积累加和。

计算机组成原理第2章4-定点原码一位乘法运算

计算机组成原理第2章4-定点原码一位乘法运算

从例中可知:(1)两个n位数参加乘法运算要做n次加法和移位操作。 (2)用循环累加和移位操作实现乘法运算。
信 息 科 学 与 工 程 学 院9
第二章 运算方法和运算器
原码一位乘法逻辑结构原理图
部分积Z R0
加数器
LDR0 ∑/2Z
Yn
乘数Y R1
Yn Yn
LDR1 Y/2Y
Zs
计数器i T1 , T2, … +1
信 息 科 学 与 工 程 学 院5
第二章 运算方法和运算器
原码一位乘法(4/7)
令Zi表示第i次部分积,则上式可写成如下递推公式:
z0=0
z1=2-1(ynx+z0)
z2=2-1(yn-1x+z1) i+1
iቤተ መጻሕፍቲ ባይዱ

zi=2-1(yn-i+1x+zi-1) :
zn=x•y=2-1(y1x+zn-1)
显然,欲求x·y,则需设置一个保存部分积的累加器。乘法开始时,令部分积 的初值z0=0,然后求ynx加上z0,右移1位得第1个部分积z1。又将yn-1加上z1, 再右移1位得第2个部分积z2.依此类推,直到求得y1x加上zn-1并右移1位得最 后部分积zn,即得乘积x·y=zn。显然,两个n位数相乘,需重复进行n次“加” 及"右移”操作,才能得到最后乘积。这就是实现原码一位乘法的规则.
Ti
R
Cx
S
Q 乘法启动
被乘数X
R2
Xs Ys
信 息 科 学 与 工 程 学 1院0
第二章 运算方法和运算器
原码一位乘法(6/7)
工作原理 (I) 乘法开始时,“启动”信号使控制触发器Cx置“1”,于是开启时序脉冲T。 (II) 当乘数寄存器R1最末位为“1”时,部分积Zi和被乘数X在加法器中相加,其 结果输出至R0的输入端。 (III)一旦打入控制脉冲T到来,控制信号LDR0使部分积右移一位,与此同时,R1 也在控制信号LDR1作用下右移一位,且计数器i计数一次。 (IV)当计数器i=n时,计数器的溢出信号使触发器Cx置“0”,关闭时序脉冲T, 乘法宣告结束。 若将R0和R1连接起来,乘法结束时乘积的高n位部分在R0,低n位部分在R1,R1中 原来的乘数Y由于移位而全部丢失。所得乘积为2n+1位(其中包括1位符号位).

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

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

定点原码一位乘法器的设计定点原码一位乘法器的设计是一种用于实现数字信号处理中定点运算的电路。

在数字信号处理中,运算主要使用了整数的定点表示方式,这种表示方式采用了固定的小数点位置。

乘法是数字信号处理中最常用的运算之一,因此乘法器的设计对于整个系统的性能有着重要的影响。

一位乘法器的设计主要包括两个步骤:乘法操作和结果保存。

在乘法操作中,输入的两个操作数进行乘法运算,得到结果。

在结果保存中,利用寄存器等电路将结果保留下来供后续运算使用。

一位乘法器的乘法操作可以通过移位和加法来实现。

乘法操作的基本原理是将两个操作数的每一位进行相乘,并将结果相加。

具体实现中,可以通过移位操作将一个操作数的每一位与另一个操作数的对应位相乘得到部分积,然后将部分积相加得到最终的乘积。

一位乘法器的设计要考虑到运算的精度、速度和电路复杂度等因素。

采用定点原码表示的乘法器设计相对简单,但需要考虑原码的正负号运算和进位的处理。

在一位乘法器的设计中,可以采用串行方式或并行方式来实现乘法操作。

串行方式的优点是电路简单,但速度较慢;并行方式的优点是速度快,但电路复杂。

根据实际需求和设计限制,选择适合的方式。

一位乘法器的结果保存可以通过寄存器等电路来实现。

在结果保存中,还需要考虑正负号的表示,可以采用补码表示方法。

总结来说,定点原码一位乘法器的设计需要考虑乘法操作和结果保存两方面的问题。

乘法操作可以通过移位和加法来实现,结果保存可以通过寄存器等电路来实现。

设计中还需要考虑运算的精度、速度和电路复杂度等因素。

最终的设计方案需要根据具体需求和设计限制来选择合适的方式和方法。

原码一位乘法器的设计

原码一位乘法器的设计

原码一位乘法器的设计原码乘法器是一种电路或设备,用于执行原码二进制数相乘的操作。

它可以将两个原码二进制数作为输入,并输出它们的乘积。

原码乘法器的设计需要考虑以下几个方面:1.乘法器的输入:原码乘法器需要接收两个原码二进制数作为输入。

这两个输入数应该以合适的方式被接入电路中,以确保正确的操作和结果。

2.内部处理单元:原码乘法器的内部处理单元是核心部分,负责执行乘法操作。

可以使用加法器和移位器来实现乘法操作。

乘法器首先将两个输入数的绝对值进行乘法运算,然后根据输入数的符号位决定结果的符号位。

3.符号位处理:原码乘法器需要考虑输入数的符号位,并根据符号位的不同来调整结果的符号位。

如果输入数的符号位相同,则结果的符号位为正,否则为负。

4.结果输出:原码乘法器需要输出乘法结果。

输出应该以适当的方式进行编码,以便于后续的使用或处理。

下面是一个基本的原码乘法器的设计示例:```module signed_multiplierinput [7:0] A,input [7:0] B,output [15:0] Resultwire [15:0] abs_result;wire sign_result;wire sign_A;wire sign_B;assign abs_result = A * B;assign sign_A = A[7];assign sign_B = B[7];assign sign_result = sign_A ^ sign_B;assign Result[15:8] = sign_result ? ~abs_result[15:8] + 1 : abs_result[15:8];assign Result[7:0] = sign_result ? ~abs_result[7:0] + 1 : abs_result[7:0];endmodule```在上述代码中,`signed_multiplier`模块接收两个8位的原码二进制数作为输入,并输出一个16位的结果。

组成原理课程设计定点原码一位乘

组成原理课程设计定点原码一位乘

沈阳航空航天大学课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:84010103学号:2008040101061姓名:李雪城指导教师:周大海完成日期:2011年01月14日沈阳航空航天大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3设计环境 (1)第2章详细设计方案 (3)2.1总体方案的设计与实现 (3)2.1.1总体方案的逻辑图 (4)2.1.2算法流程图 (5)2.2功能模块的设计与实现 (6)2.2.1 数据输入模块的设计与实现 (6)2.2.2 乘数末位判断模块的设计与实现 (6)2.2.3 移位模块的设计与实现 (7)2.2.4 乘积结果显示的设计与实现 (8)第3章程序调试与结果测试 (9)3.1程序调试 (9)3.2结果测试 (9)参考文献 (11)附录 (12)第1章总体设计方案1.1 设计原理原码一位乘,即两个原码数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积。

在计算时,用乘数寄存器的最低位来控制部分积是否与被乘数相加,然后右移部分积和乘数,同时乘数寄存器接收部分积右移出来的一位,完成运算后,部分积寄存器保存乘积的高位部分,乘数寄存器中保存乘积的低位部分。

1.2 设计思路被乘数与乘数都是4位,所以相乘的结果是8位。

每个寄存器的范围是8位,所以乘积的结果用一个寄存器来存储表示。

实验开始时将实验数据从实验箱的开关输入到R0、R1、R2三个寄存器中,部分积存放在R0,4位被乘数放在R1,4位乘数放在R2。

运算过程采用原码一位乘。

在计算时,首先判断乘数末位上的值是1还是0,决定部分积是否与被乘数相加,然后判断部分积的末位,因为右移时部分积的末位会溢出,乘数右移时要接收由部分积溢出来的数,所以根据判断来决定乘数右移后的高位是1还是0。

定点原码乘法

定点原码乘法

3.3 定点乘法运算乘法运算是计算机中常用的运算,过去的计算机中,没有专门的乘法器。

乘法运算要靠软件编程来实现。

但现在随着LSI和VLSI应用的普及以及价格的下降,乘法运算已做成了标准部件—乘法器。

一般来讲,做乘除法运算,用原码比用补码简单,但有的机器,数据是用补码表示的,为避免码制间的频繁转换,乘除也用补码来做。

一、原码乘法1.原码一位乘用原码运算,数据的符号不能同数值位一同参加运算,而需单独处理,两原码表示的数相乘,其结果的符号是两数符号的异或。

规则:初始部分积设全0,从乘数末位乘起。

乘数位为1,部分积加被乘数,结果右移1位乘数位为0,部分积加全0,结果右移1位;重复上述操作,直到乘数位全部乘完为止。

2. 原码二位乘在原码一位乘中,是一位一拍来运算的,两个n位数相乘,需进行n次加法,n 位移位。

要提高乘法速度,能否进行二位一乘?回答是肯定的。

原码二位乘规则:yn-1ynCj0 0 0 ;+全0,部分积右移两位,Cj =00 0 1 ;+x,部分积右移两位,Cj =00 1 0 ;+x,部分积右移两位,Cj =00 1 1 ;+2x,部分积右移两位,Cj =01 0 0 ;+2x,部分积右移两位,Cj =01 0 1 ;-x,部分积右移两位,Cj =11 1 0 ; -x,部分积右移两位,Cj =11 1 1 ;+全0, 部分积右移两位,Cj =1二、补码乘法1.补码一位乘用补码做加减运算很方便,做乘法(包括除法)却是原码很方便,既然这样为何又有补码乘法呢?主要为了避免频繁的码制转换。

⑴ 相乘时,被乘数取双符号位,乘数取单符号位并参加运算。

⑵ 乘法开始前,部分积置全0,乘数末位增加附加位yn+1=0。

⑶ 比较yi 和yi+1,决定如何运算2.补码两位乘补码两位乘时把一位乘中的两步合成一步来做。

⑴ 比较yn,yn+1,按Booth算法操作⑵ 比较yn-1,yn,按Booth算法操作以上两步合为一步操作(P121表)注意:1、被乘数取三位符号位2、乘数数值部分为奇数,取一位符号位,最后一步只移一位;乘数数值部分为偶数,取二位符号位,最后一步不移位;(满足二位一移)3、得积2n+1位,含1位符号位。

原码一位乘法

原码一位乘法
位为 0,则在前次部分积上加 0(或不加),然
后连同乘数一起右移一位。
③ 重复第②步直到运算 n次为止。 (n为乘数数值 部分的长度)
第十三页,共20页。
小飞守角制作
例3.9 根据原码(yuán mǎ)一位乘法的算法3.计8 。算例 解: [x]原=0.1101,[y] 原=1.1011 ,
乘积(c[hzé]n原gj=ī)[x× y]原
= 2-1 xy1+2 -2 xy2+ 2-3xy3+2-4xy4 =2-1{2-3xy4+2-2xy3+2-1xy2+xy1} = 2-1 {2-1[2-2xy4 + 2 -1xy 3+xy2]+ xy1} =2-1 {2-1[2 -1 (2 -1xy4+xy3)+xy 2]+xy1} =2-1{2-1 [2 -1 (2-1 <0+xy 4>+ xy3 )+xy2]+xy1}
第十二页,共20页。
小飞守角制作
原码一位乘法(chéngfǎ)的算法
① 积的符号(fúhào)单独按两操作数的符2号加((fú异hà或o))模
得到。用被乘数和乘数的数值部分(bù fen)进行运算。 ② 以乘数的最低位作为乘法判别位,若判别位为
1,则在前次部分积(初始部分积为 0)上加上
被乘数,然后连同乘数一起右移一位;若判别
(1)设初始(chū shǐ)部分积0,的每值求为得一个部分(bù fen)积,就同
与上一次部分积相加,每次运算器都是完成两个数据 的加法,最终可得到结果。
( 2)将每次的部分积左移一位操作变为加法之前部分积
右移一位来实现,因为前一次部分积的最低位是不参 与相加计算的,将右移操作移出位用专门的寄存器来
0.10001111 将所有部分积相加,得到最后的乘积

计算机组成原理课设_定点补码一位乘法器的设计

计算机组成原理课设_定点补码一位乘法器的设计

课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点补码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:*****学号:*****姓名:*****指导教师:*****完成日期:2006年12月31日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (2)1.1补码乘法器设计原理 (2)1.2设计思路 (4)1.3设计环境 (5)第2章详细设计方案 (5)2.1补码乘法器电路图的设计与实现 (6)2.1.1 补码乘法器设计 (6)2.1.2 器件的选择与引脚锁定 (8)2.1.3 编译、综合、适配 (8)2.2功能模块的设计与实现 (9)2.2.1 两输入三选一选择器模块的设计与实现 (9)2.2.2 半加器模块的设计与实现 ........................................... 错误!未定义书签。

2.3仿真调试 (10)第3章编程下载与硬件测试 (12)3.1编程下载 (12)3.2硬件测试及结果分析 (12)参考文献 (14)第1章总体设计方案1.1 补码乘法器设计原理原码乘法的主要问题是符号位不能参加运算,单独用一个异或门产生乘积的符号位,故自然提出能否让符号数字化后也参加乘法运算,补码乘法就可以实现符号位直接参加运算。

布斯(Booth)算法,它采用相加和相减的操作计算补码数据的乘积,Booth算法对乘数从低位开始判断,根据两个数据位的情况决定进行加法、减法还是仅仅移位操作。

Booth算法操作表示判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0),移位操作是向右移动。

判断被乘数中的最低位以及右边的位(辅助位0),如果为00,则只进行移位操作;之后在判断移位之后的最后两位,如果为01,则进行加法操作并进行移位操作;如果最后两位为10,则进行减法操作并移位,这个减法操作相当于减去2x的值;判断最后的差值,如为1,则部分积加[X]补;如为0,则不分积加0;如为-1,则部分积加[-X]补,最后一次不移位。

组成原理——定点原码一位乘法器设计与实现

组成原理——定点原码一位乘法器设计与实现

组成原理——定点原码一位乘法器设计与实现定点原码一位乘法器是一种用于进行定点数乘法运算的电路。

它是计算机系统中常用的基本算术电路,用于实现乘法操作。

在本文中,我们将讨论定点原码一位乘法器的设计原理以及其实现方法。

定点数表示法是一种用整数表示的数值表示法,其中小数点的位置是固定的。

在定点数乘法运算中,我们需要将两个输入数值进行相乘,并将结果输出。

定点原码一位乘法器的设计目标是实现高精度的乘法运算,同时保持低功耗和低延迟。

定点原码一位乘法器的设计原理基于布尔代数和逻辑电路。

其主要包括以下几个步骤:1.输入信号:定点原码一位乘法器通常有两个输入信号,分别代表两个乘数。

这些信号通常由时钟信号触发,以确保同步操作。

2.加法器和移位器:定点原码一位乘法器使用加法器和移位器来实现乘法操作。

移位器用于将乘数(或加数)进行位移操作,以便选择正确的乘积位。

加法器用于将部分乘积相加,并输出最终的乘积结果。

3.乘积位选择:乘积位选择决定了哪些部分乘积需要相加以得到最终乘积结果。

这通常通过导线连接来实现,其中每根导线对应于一个部分乘积位。

4.符号位处理:定点原码一位乘法器还需要处理符号位。

这涉及到对符号位进行逻辑与门操作,以确保最终结果的符号正确。

定点原码一位乘法器的实现通常使用逻辑门、移位寄存器、加法器等电路元件。

它的实现过程可以分为以下几个步骤:1.设计逻辑电路:根据定点原码一位乘法器的设计原理,设计逻辑电路图,其中包括逻辑门、移位寄存器和加法器等。

2.实现逻辑电路:根据设计的逻辑电路图,使用逻辑门、移位寄存器和加法器等电路元件,来实现电路的物理连接。

3.进行仿真:使用仿真工具,对设计的电路进行仿真测试,以验证电路的正确性和性能。

4.调整和优化:根据仿真结果,对电路进行调整和优化,以提高电路的性能和功耗。

5.布局和布线:根据最终设计的电路图,对电路进行布局和布线,以保证电路的可靠性和稳定性。

6.制造和测试:将电路进行制造和测试,以确保制造的电路符合设计要求,并具有良好的性能和可靠性。

定点数乘除运算及实现

定点数乘除运算及实现
0﹒ 0 1 1 1 1 0
[X •Y ]补 =0. 011110
所以:
1
实现补码一位乘法的乘法器的逻辑框图如图所示
2
补码两位乘法:是把补码的一位乘法的两个单步操作和并成一个操作。 即:
3
【 (Z i+2)补】=
4
2-2 {【 Z i补】+ (Yn+1 +Yn-2Y n-1) 】 · 【X 】补}
余数<0
商0即q0=0
+ ︱ y ︱
0. 1 1 0 1
——————————
0. 1 0 0 1
左移1位
1. 0 0 1 0
- ︱ Y ︱
1. 0 0 1 1
+[-| y| ]补
——————————
0. 0 1 0 1
余数>0
商1即q1=1
+[-| y| ]补
1. 0 0 1 1
——————————
0. 0 1 1 1
左移1位
0. 1 1 1 0
+[-| y| ]补
1. 0 0 1 1
———————————
0. 0 0 0 1
余数>0
商1即q4=1
所以:商:Q=-0.1011, 余数:R=+0.00012-4
对上述手算计算过程分析得:
(1) 每次都是由心算来比较余数和除数的大小,余数大时,商1; 余数小时,商0。第一次比较时,余数就是被除数。 (2) 每做一次减法,总是保持余数不动,而除数向右移一位。 (3)最后据符号位运算的结果给商以正确的符号
为适应机器运算,需要进行改进: (1) 用减法来比较余数和除数的大小 (2) 除数右移改为余数左移。 (3)定点除法运算必须要求被除数的高n位小于除数,否则益处

【doc】用VHDL语言实现定点原码一位乘法器的实验

【doc】用VHDL语言实现定点原码一位乘法器的实验

用VHDL语言实现定点原码一位乘法器的实验中国高教论丛vo1.24No.22002用VHDL语言实现定点原码一位乘法器的实验李莉,沈春璞,耿肇英(河北师范大学数学与信息科学学院,河北省石家庄050016)摘要:介绍了硬件描述语言VHDL的结构及设计方法,用VHDL语言设计了定点原码一位乘法器并通过CPLD器件实现了定点原码一位乘法器的实验过程.关键词:超高速集成电路硬件描述语言可编程逻辑器件电子设计自动化Theexperimentationofpoint-originalmuilipficationthroughVHDLLili,Shenchun_pu,Gengzhao_ying(HebeiNormalUniversity,Shijiazhuang0500I6)Abstract:ThispaperintroducethestructureanddesignofVHDL,thendevises thepoint?originalmultiplicationthroughVHDL.Atlastprovidestheexperimentation ofmultiplicationthroughCPLD.KeywordsVHDL:ver),HighSpeedIntegratedCircuitHardwareDescriptionLanguage PLD:ProgrammableLogicDeviceEDA:ElectronicsDesignAutomation定点运算.I是每台计算机都必须具备的运算器,定点原码一位乘法器是通过循环迭代的办法实现的,它是按一定的时间顺序重复地使用最少量的硬件——寄存器,加法器,移位和传送门等,把整个乘法过程变成为数据经过门雨I加法器实现相加,移位和寄存器接收的时序控制过程.通过组成原理实验来实现定点原码一位乘法器可加深学生对整程的记忆和认识.传统的组成原理实验需从电路板拆装多组芯片且实验连线复杂,仅连线,查错就浪费大部分时间.现在我们用目前十分流行的VHDLTM语言米编写源程序,用相应的软件编译后适配到PLD芯片中,实现所需控制过程.PLD器件是削户在:f==作现场进行编译的逻辑器件,它体积小,,功耗低,易于实现数字系统设计.采用PLD技术避免了使用过多的集成芯片和复杂的连线,能在一个芯片内实现多种功能.PLD技术实现硬连线路的软化,突破了传统硬连线设计的局限,大大提高实验效率.在此,我们介绍一种用VHDL 语言及相应的EDA软件平台和PLD器件来实现定点原码一位乘法运算器的过程.1VHDL介绍1.1VHDL的发展过程及结构特点.VHDL的英文全名为V eryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,79诞生于1982年,是随着可编程逻辑器件(PLD)的发展而发展起来的一种超高速集成电路硬件描述语言.1987年底,VHDL语言被IEEE和美国国防部确认为标准硬件描述语言.VHDL语言除了含有许多具有硬件特征的语句外,其描述风格,语言形式十分类似于一般的计算机高级语言.VHDL语言主要用于描述数字系统的结构,行为,功能及接口.VHDL的结构特点是将一个设计实体如:一个元件,一个电路模块或一个系统分为外部和内部(实体的内部功能和算法部分):实体(Entity),结构体(Architecture),配置(Configuration),程序包(Package),库(Library)是VHDL结构模型的五个组成部分,前四种可分别编译,编译后放入库中,被上层模块调用.1.2应用VHI)L进行数字电路系统设计的优点.VHDL采用自顶向下的层次化的设计方法,即从系统级开始将整个系统分为子模块,然后对这些子模块再进行进一步的划分,一直做下去,直到可以直接用库中的元件来实现为止.这种自顶向下的设计方法使一个大型的设计分解为若干个可操作的模块易于分工协作并可对这些模块分别进行模拟仿真.由于设计的主要模拟仿真是在高层上实现的,所以能及早地发现系统中的错误并改正错误,提高设计效率.VHDL具有很强的行为描述能力.强大的行为描述能力能有效避开具体的器件结构,是从逻辑行为上描述和设计大规模电子系统的重要保证.VHDL的仿真语句和库函数使得在任何大型系统的没计早期就能检查系统功能的可行性,随时进行仿真模拟.用VHDL完成的一个确定的设计可以用EDA—L具进行逻辑综合I优化并自动地把VHDL描述转变成门级表格.这种方式突破了门级设计的瓶颈,极大的减少了电路设计时间和可能发生的错误,降低开发成本.VHDL对设计的描述具有相对独立性,即硬件描述与具体的:[艺技术和硬件结构无关,VHDL设计程序的硬件实现目标器件有广阔的选择范围,其中包括各种系列的可编程逻辑正是由于上述优点VHDL在大规模的数字电路系统设计中发挥着愈来愈重要的作用,成为EDA领域的重要组成部分.2定点原码一位乘法器的设计2.1定点原码一位乘法器的实现方法及逻辑电路图.用原码实现乘法运算是十分方便的.原码表示的两个数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积.假定【B】=BBlB2…B【C瞰】=CsClC2…C则【BC】=【B原】【C】豇=(B.CI)口(BIB2…B)(CIC2…C)符号口表示把符号和数值邻接起来.'为了引出在计算机中实现定点原码一位乘法的具体方案,先看手工乘法的实际执行方法设B=0.1101?C=0.1011则8OO.X0.11Ol1O1ll101即B*C=O.10001l11,符号为正11O10000llO1U.1OOOllll在手工计算时,一是依乘数每一位上的取值为1还是为0,决定相加数取被乘数的值还是取零值:二是各相加数是从乘数的最低位求起,逐位变高,相加时逐个左移一位,最后一并求和:三是符号位按正乘正,负乘负结果的符号位为正,正乘负,负乘正结果的符号位为负的方案求出乘积的符号.RIJS图1实现原码一位乘法的逻辑电路框图在计算机内实现原码乘法时,要做以下方面的改进工作.由于在运算器内通常只能完成对两数的求乖¨操作,则可以每求得一个相加数,就同时完成与上一次部分积相加的操作.其次是在手工计算时,各加数逐位左移,最终相加数为相乘二位数的两倍,而在计算机中,加法器的位数一般与乘法器的位数相同,而不是寄存器位数的两倍.这实际上也可以用另外的办法解决.手[:计算时,各加数是逐位左移,但很容易发现,在求本次部分积之和时,前一部分积的最低一位是不再与任何数值相加的.这就意味着,若采用每求得一次部分积之后使其右移一位,则可以只用N位的加法器就能实现两个N位的数相乘j!显而易见,若81前一次部分积已经右移一位,就可以用其高位部分加上被乘数或加零的方法求得本次部分积.最后一点是,手工计算时,乘数每一位的值是0还是1都直接看得见,而在计算机内,采用放乘数的寄存器的每一位直接决定本次相加数是被乘数还是零是很不方便的,若均采用该寄存器的最低一位来执行这种判别就简便了.为此,只要每求一次部分积就使放乘数的寄存器执行一次右移操作即可以了.若移位时,使其最高数值位接收加法器最低位的输出,则完成乘法运算后,该寄存器中保存的是乘积的低位部分.计算机内求乘积的符号,很容易用求相乘二数符号的半加和(异或值)实现.根据上述说明,我们就可以得到如图1所示的实现原码一位乘法的逻辑电路框图.2.2用VI-IDL语言实现原码一位乘法器源程序:ymywcvd.vhdlibraryieee;useieee.std—logic—IJ64.all;useieee.std—logic_unsigned.all;entityymywcvdisport(b,c:instd—logic—vector(4downto0):/*b,C为被乘数,乘数/rSt,clk:instd—logic;/rst为复位信号clk为步运算脉冲/a:bufferstd_logic—vector(5downto0):a,d为高位部分积和低何部分积/d:bufferstd—logic—vector(3downtoO):sign,en:outstd—logic);/sign为符号位,en为表示是否结束/end:architecturebehavofymywcvdis sharedvariablecd:integerrange0to5:5:signalbi:std—logic—vector(5downto0);sharedvariableai:std—logic—vector(5downtoO);beginbi&lt;:0&amp;'0&amp;b(3downto0);sign&lt;b(4)xorc(4):'process(clk,rst,c)/根据clk脉冲进行步运算的进程/ beginifrst='l'thencd:=5:en&lt;='0.:elsifrisingedge(clk)thenifcd=5thenai:=(others=&gt;0);d&lt;=c(3downto0);cd:=cd-1;en&lt;=.0':elsifcd/=0then82/?cd为乘数及被乘数的的位数,此值决定循环次数?/ /en初始化为O,en为I时表示乘法完成//?初始化部分积为0"/ifd(0)1'thenai:=ai+bi;/.部分积相;01:l*/endif;.d&lt;=ai(0)&amp;d(3downto1);/*d右移一位/ai:=ai(5)&amp;ai(5downto1);/*a右移一位/cd:=cd-l;elseen&lt;='i':endif;endif;a&lt;=ai:endprocess;endbehav;2.3用EDA软件平台及CPLD器件实现乘法器现在有许多EDA软件及相应的PLD器件,都可以提供数字电子的开发设计环境.以下以Lattice公司的ispEXPERTSYSTEM7.0软件及Lattice公司的一种6000门的复杂在系统可编程器件(CPLD)ispLSI1032为例来完成乘法器的设计过程.首先把VHDL源程序输入并调试正确后J{j软件系统提供的综合编译器进行编译综合,生成EDIF格式的网表文件再经适配产生可下载的JEDEC文件.最终通过电缆线把JEDEC文件下载剑ispLSl1032芯片中,然后使用与该芯片相连的电源,单脉冲,拨码开关输入,显示灯输出,就可实现乘法器的单步仿真.3结束语采用VHDL硬件描述语言进行电路设计,其特点是以软件工具为核心,通过这些软件完成程序设计,电路分析,纠错,验证,自动布局步线等各种测试【:作,最后通过综合器和适配器生成目标器件,从而实现电子设计的自动化设计,这种设计方法为组成原理实验的设计,实现带来新的生机.参考文献[1]王爱英《计算机组成与结构》[M]第二版北京:清华大学出版社,1995[2]陈雪松CVHDL入门与应用》[M]北京:人民邮电出版社,2000作者简介:李莉,女,1972年l1月出生,1994年毕业于吉林大学计算机系.83。

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

沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点原码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:4401102学号:200403011034姓名:蔡丽娇指导教师:刘泽显完成日期:2006年12月31日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (1)1.1 设计原理 (1)1.2 设计思路 (1)1.3 设计环境 (2)第二章详细设计方案 (3)2.1顶层方案图的设计与实现 (3)2.1.1创建顶层图形设计文件 (3)2.1.2器件的选择与引脚锁定 (3)2.2 功能模块的设计与实现 (5)2.2.1 8位移位电路 (5)2.2.2 部分积寄存器 (7)2.2.3 乘数寄存器 (7)2.2.4 二路选择器 (8)2.2.5 计数器 (9)2.2.6 结果输出器 (11)2.3 仿真调试 (13)第3章编程下载与硬件测试 (14)3.1 编程下载 (14)3.2 硬件测试及结果分析 (14)参考文献 (15)附录(电路原理图) (16)第1章总体设计方案1.1 设计原理定点原码一位乘法器的设计主要是基于原码一位乘法的计算过成。

设计内容主要是实现输入被乘数和乘数经电路得出结果。

设计思想是:以乘数的最低位作为乘法判断位,若判断位为1,则在前次部分积(初始部分积为0)上加上被乘数,然后连同乘数一起右移一位;若判断位为0,则在前次部分积上加0,然后连同乘数一起右移一位。

重复此判断过程,直到运算n次为止(n为乘数数值部分的长度)。

1.2 设计思路原码一位乘法器主要包括ALU﹑部分积寄存器﹑乘数移位寄存器﹑被乘数寄存器和移位电路五大部分。

这五大部分就作为底层设计,其中乘数移位寄存器需要保留移出的最低位,它的最高位要接收部分积移出的最低位这两部分采用V erilog语言进行设计,顶层的乘法器采用原理图设计输入方式。

原码一位乘的数值运算中不需要考虑符号位的情况,符号位于数值位分开处理。

运算结果的符号是乘数和被乘数符号位的异或,即z=x⊕y。

一位乘法运算将乘法分解成一系列加法操作,每次判断乘数中的最低位决定将被乘数或零放到加法器的一个输入端口,将部分积送入另一个输入端口。

计算的结果送入移位寄存器再将其高七位送入部分积寄存器,低一位送入乘数移位寄存器。

这样就完成了一次移位和加法操作。

要实现8位*8位乘法运算需要进行8次移位和加法操作。

8次移位完后给各元件清零,此工作由计数器控制。

如图1.2所示。

完成上诉电路设计后实现原码一位乘法器的功能后,经编译、调试后形成*.bit 文件并下载到XCV200可编程逻辑芯片中,经硬件测试验证设计的正确性。

图1﹒2原码一位乘法的逻辑电路框图1.3 设计环境·硬件环境:伟福COP2000型计算机组成原理实验仪、FPGA实验板、PC 机;·软件环境:Xilinx Foundation F3﹒1软件、COP 2000 仿真软件。

第2章详细设计方案2.1 顶层方案图的设计与实现顶层方案图实现原码一位乘法器的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。

在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。

2.1.1创建顶层图形设计文件顶层图形文件采用原理图设计输入方式,顶层图形文件结构如图2.1所示。

图2.1 原码一位乘法器顶层图形文件结构2.1.2器件的选择与引脚锁定(1)器件的选择由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为Xlinx XCV200可编程逻辑芯片。

(2)引脚锁定把顶层图形文件中的输入/输出信号安排到Xlinx XCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及Xlinx XCV200芯片引脚对应关系如表2.1所示。

表2.1 信号和芯片引脚对应关系2.2 功能模块的设计与实现原码一位乘法器的设计主要包括8位移位寄存器、部分积寄存器、乘数移位寄存器、二路选择器、计数器、结果输出器这六大部分。

这些模块除部分积寄存器外均采用Verilog语言实现。

2.2.1 8位移位电路(1)功能描述:(2)V erilog语言描述:module GDF (D,CLR, F, FA, CI) ;input [7:0] D ;input CLR;input F ;output [7:0] FA ;reg [7:0] FA ;output CI ;reg CI ;always @ (CLR)beginif(CLR)beginFA<=0;CI<=0;endelsebeginFA[7]<=F; FA[6]<=D[7];FA[5]<=D[6]; FA[4]<=D[5];FA[3]<=D[4]; FA[2]<=D[3];FA[1]<=D[2]; FA[0]<=D[1];CI<=D[0];endendendmodule(3)元件:图 2.2.1 8位移位寄存器(4)仿真:2.2.2部分积寄存器(1)功能描述:(2)元件:图2.2.2部分积寄存器(3)仿真:2.2.3乘数寄存器(1)功能描述:( 2 ) Verilog语言描述:module CHENG (LOAD, SIN, DIN, CLK, CLR, Q, KIN) ;input LOAD ;input SIN ;input [7:0] DIN ;input CLK ;input CLR ;output [7:0] Q ;reg [7:0] Q ;output KIN ;reg KIN ;always@(posedge CLK or posedge CLR)beginif(CLR) Q <=0;else if(LOAD) Q<=DIN;elsebeginKIN<=Q[0];Q <= Q>>1;Q[7]<=SIN;endendendmodule( 3 ) 元件:图2.2.3乘数寄存器( 4 ) 仿真:2.2.4二路选择器(1)功能描述:SO=1时,输出等于被乘数。

SO=0时,输出等于零。

(2)V erilog语言描述:module XUAN2 (B, SO, QOUT) ;input [7:0] B ;input SO ;output [7:0] QOUT ;reg [7:0] QOUT ;// add your code herealways@(SO )beginif(SO) QOUT<=B;else QOUT<=0;endendmodule(3)元件:图2.2.4二路选择器(4)仿真:2.2.5计数器(1)功能描述:实现模11计数器功能记录十一个脉冲一清零,1~A 时CO=0,下一个脉冲即B脉冲来时CO=1。

(2)V erilog语言描述:module JISHU (CLK, CLR, QOUT, CO)input CLK ;input CLR ;output [3:0] QOUT ;reg [3:0] QOUT ;output CO ;reg CO ;// add your code herealalways @ (posedge CLK or posedge CLR)beginif(CLR)beginQOUT<=0;CO<=1;endelse if(QOUT==11)beginQOUT<=0;CO<=1;endelsebeginQOUT<=QOUT+1;CO<=0;endendendmodule(3)元件:图2.2.5计数器(4)仿真:2.2.6结果输出器(1)功能描述:(2)V erilog语言描述:module HH (A, B, CE,CI, QQQQ) ;input [3:0]CE;input [7:0] A ;input [7:0] B ;input CI ;output [16:0] QQQQ ;reg [16:0] QQQQ ;// add your code herealways@(CE)beginif(CE==11)beginQQQQ[0]<=B[0];QQQQ[1]<=B[1];QQQQ[2]<=B[2];QQQQ[3]<=B[3];QQQQ[4]<=B[4];QQQQ[5]<=B[5];QQQQ[6]<=B[6];QQQQ[7]<=B[7];QQQQ[8]<=A[0];QQQQ[9]<=A[1];QQQQ[10]<=A[2];QQQQ[11]<=A[3];QQQQ[12]<=A[4];QQQQ[13]<=A[5];QQQQ[14]<=A[6];QQQQ[15]<=A[7];QQQQ[16]<=CI;endendendmodule(3)元件:图2.2.6 结果输出器(4)仿真:2.3 仿真调试仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。

(1)建立仿真波形文件及仿真信号选择功能仿真时,首先建立仿真波形文件,选择仿真信号,对选定的输入信号设置参数,选定的仿真信号和设置的参数以及输出结果如表2.2所示。

表2.2 仿真信号选择和参数设置(2)功能仿真结果与分析功能仿真波形结果如图2.2所示,仿真数据结果如表2.2所示。

X=–OC(XA 为其符号位),Y=3D(Y A为其符号位),X*Y=732,仿真结果为102DC(第一位为符号位,其余四位为数值位)即为十进制数–732,可以看出功能仿真结果是正确的,进而说明电路设计的正确性。

图2.2 功能仿真波形结果沈阳航空工业学院课程设计报告第3章编程下载与硬件测试第3章编程下载与硬件测试3.1 编程下载利用Xilinx ISE的编程下载功能,将得到的*.bin文件下载到XCV200实验板的XCV200可编程逻辑芯片中。

3.2 硬件测试及结果分析利用XCV200实验板进行硬件功能测试。

一位全加器的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。

表3.1 XCV200实验板信号对应关系利用表2.2中的输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关K0、K1、K2输入数据,同时观察7段数码管的输出,在测试中出现了错误,没能下载成功。

参考文献[1]曹昕燕.EDA技术实验与课程设计[M].北京:清华大学出版社,2006[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:北京邮电大学出版社,2006[3]王爱英.计算机组成与结构(第4版)[M].北京:清华大学出版社,2006[4]钟友鹏.计算机组成课程设计指导.第一版.上海复旦大学出版社,1989[5]葛本修.计算机组成与结构.北京:北京航空航天大学出版社,1992[6]林灶生.Verilog FPGA芯片设计.北京:北京航空航天大学出版社,2006.7[7]刘绍汉,林灶生,刘新民.VHDL 芯片设计[M].台湾:全华科技图书股份有限公司,1992[8]朱正伟,EDA技术及应用,清华大学出版社附录(电路原理图)原理图。

相关文档
最新文档