定点补码一位乘法器的设计Word文档格式.docx
《定点补码一位乘法器的设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《定点补码一位乘法器的设计Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
![定点补码一位乘法器的设计Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/7/4b9f26b6-031d-4239-a4ec-897f974f15f2/4b9f26b6-031d-4239-a4ec-897f974f15f21.gif)
3.1编程下载12
3.2硬件测试及结果分析12
参考文献14
附录(电路原理图)15
第1章总体设计方案
1.1设计原理
(1)用[X]补×
[Y]补直接求[X×
Y]补
讨论当相乘的两个数中有一个或二个为负数的情况,在讨论补码乘法运算时,对被乘数或部分积的处理上与原码乘法有某些类似,差别仅表现在被乘数和部分积的符号位要和数值一起参加运算。
若[Y]补=Y0Y1Y2…Yn当Y0为1时,则有Y=-1+Yi×
2-i
故有X×
Y=X×
Yi×
2-1-X当Y为负值时,用补码乘计算[X×
Y]补,是用[X]补乘上[Y]补的数值位,而不理[Y]补符号位上的1,乘完之后,在所得的乘积中再减X,即加-[X]补。
实现补码乘法的另一个方案是比较法,是由BOOTH最早提出的,这一方法的出发点是避免区分乘数符号的正负,而且让乘数符号位也参加运算。
技巧上表现在分解乘数的每一位上的1为高一位的一个+1和本位上的一个-1:
X×
(-1+Yi×
2i)(逐项展开则得)=X×
[-Y0+Y1×
2-1+Y2×
2-2+…+Yn×
2-n]=X×
[-Y0+(Y1-Y1×
2-1)+(Y2×
2-1-Y2×
2-2)+…+(Yn×
2-(n-1)-Yn×
2-n)](合并相同幂次项得)=X×
[(Y1-Y0)+(Y2-Y1)×
2-1+…+(Yn-Yn-1)×
2-(n-1)+(0-Yn)×
(Yi+1-Yi)×
2-i(写成累加求和的形式,得到实现补码乘运算的算法)将上述公式展开,则每一次的部分积为:
P1=[2-1(Yn+1-Yn)×
X]补
P2=[2-1(P1+(Yn-Yn-1)×
X)]补
…
Pi=[2-1(Pn-i+(Yn-I+2-Yn-I+1)×
…
Pn=[2-1(Pn-1+(Y2-Y1)×
Pn+1=[(Pn+(Y1-Y0)×
则最终补码乘积为[X*Y]补=[Pn+1]补
由上述公式可以看出,比较法是用乘数中每相邻的两位判断如何求得每次的相加数。
每两位Yi和Yi+1的取值有00,01,10,11四种组合,则它们的差值分别为0,1,-1和0,非最后一次的部分积,分别为上一次部分积的1/2(右移一位)的值Rj,Rj+[X]补,Rj-[X]补(即Rj+[-X]补)和Rj,但一定要注意:
最后一次求出的部分积即为最终乘积,不执行右移操作。
用此法计算乘积,需要乘数寄存器的最低一位之后再补充一位Yn+1,并使其初值为0,再增加对Yn和Yn+1两位进行译码的线路,以区分出Yn+1-Yn4种不同的差值。
对N位的数(不含符号位)相乘,要计算N+1次部分积,并且不对最后一次部分积执行右移操作。
此时的加法器最好采用双符号位方案。
(2)Booth乘法规则
假设X、Y都是用补码形式表示的机器数,[X]补和[Y]补=Ys.Y1Y2…Yn,都是任意符号表示的数。
比较法求新的部分积,取决于两个比较位的数位,即Yi+1Yi的状态。
布斯乘法规则归纳如下:
首先设置附加位Yn+1=0,部分积初值[Z0]补=0。
当n≠0时,判断YnYn+1,
若YnYn+1=00或11,即相邻位相同时,上次部分积右移一位,直接得部分积。
若YnYn+1=01,上次部分积加[X]补,然后右移一位得新部分积。
若YnYn+1=10,上次部分积加[-X]补,然后右移一位得新部分积。
当n=0时,判YnYn+1(对应于Y0Y1),运算规则同
(1)只是不移位。
即在运算的最
后一步,乘积不再右移。
1.2设计思路
设计一个二输入三选一选择器对可能的三种情况进行选择。
当选择器中输入为S0S1为00或者11时,由一寄存器一端接GND,另一端对其进行零输入;
当选择器中输入为S0S1为01时,对其进行[X]补输入;
当选择器中输入为S0S1为10时,对[X]补输入端加一非门和一加法器对其进行取反加1输入。
输出结果与一个一端接GND初始置零的寄存器相连接于一个加法器,实现部分积加法运算
计算结果存放于两个相同的移位寄存器中,当部分积相加之后,由两个移位寄存器同时对部分积的和进行移位操作。
最后由两个移位寄存器的输出端连接至选择器重新选择进行循环操作,直到部分积移位结束。
这里用布斯算法在硬件电路上比较容易实现。
布斯算法的流程图如下:
图1.1定点补码一位乘法器的流程图
补码一位乘法的硬件实现逻辑图如下:
1.2定点原码一位乘法器的原理框图
1.3设计环境
·
硬件环境:
伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;
EDA环境:
Xilinx设计软件。
第2章详细设计方案
2.1顶层方案图的设计与实现
顶层方案图实现一位补码乘法器的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件主要由一个两个16进制数和和一个封装模块组装而成的一个完整的设计实体。
可利用Xilinx模块实现顶层图形文件的设计,顶层图形文件结构如图2.1所示。
图2.1一位补码乘法器顶层图形文件结构
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为XlinxXCV200可编程逻辑芯片。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到XlinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及XlinxXCV200芯片引脚对应关系如表2.1所示。
表2.1信号和芯片引脚对应关系
图形文件中的输入输出信号
XCV200芯片引脚
X0
P103
X1
P102
X2
P101
X3
P100
X4
P97
X5
P96
X6
P95
X7
P94
Y0
P87
Y1
P86
Y2
P85
Y3
P84
Y4
P82
Y5
P81
Y6
P80
Y7
P79
CLR
P73
CLK
P213
O13
P93
O12
P99
O11
P107
O10
P108
O9
P109
O8
P124
O7
P125
O6
P147
O5
P152
O4
P178
O3
P184
O2
P185
O1
P203
O0
P111
O00
P110
2.2功能模块的设计与实现
2.2.1求补电路模块的设计与实现
这个模块由八位加法器,非门组成,GND8输入的是8个低电平信号,这个模块实现的是对-X求补功能。
(1)创建求补电路模块设计原理图。
求补电路原理结构如图2.2所示:
图2.2求补电路模块逻辑框图
(2)创建元件图形符号
为能在图形编辑器(原理图设计输入方式)中调用NEG芯片,需要为NEG模块创建一个元件图形符号,可利用Xilinxfoundationf3.1编译器中的如下步骤实现:
Tools=>
SymbolWizard=>
下一步。
A[7:
0]是输入信号,B[7:
0]是输出信号。
其元件图形符号如图2.3所示:
图2.3求补电路模块元件图形符号
(3)功能仿真
对创建的寄存器模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.4所示:
图2.4求补电路仿真结果
2.2.2控制电路模块的设计与实现
控制电路模块是由8个选择器模块和一个求补电路模块组成,实现选择控制功能。
当C为高电平时输出-X的补码,当C端为低电平时,输出X的补码。
(1)控制电路设计原理图。
控制电路原理结构如图2.5所示:
图2.5控制电路逻辑框图
为能在图形编辑器(原理图设计输入方式)中调用2_1DC8芯片,需要为2_1DC8模块创建一个元件图形符号,可利用Xilinxfoundationf3.1编译器中的如下步骤实现:
0]、C是输入信号,OUT[7:
其元件图形符号如图2.6所示:
图2.6控制电路图形符号
仿真结果如图2.7所示:
图2.7控制电路仿真结果
2.2.3选择器模块的设计与实现
选择器主要由三个门电路组成,当CC输入为高电平时,O输出的值为A的值,否则输出B的值
(1)创建选择器设计原理图。
选择器原理结构如图2.8所示:
图2.8选择器原理框图
为能在图形编辑器(原理图设计输入方式)中调用DC1芯片,需要为DC1模块创建一个元件图形符号,可利用Xilinxfoundationf3.1编译器中的如下步骤实现:
A、B、CC是输入信号,O是输出信号。
其元件图形符号如图2.9所示:
图2.9选择器元件图形符号
仿真结果如图2.10所示:
图2.10选择器仿真结果
第3章编程下载与硬件测试
3.1编程下载
利用COP2000仿真软件的编程下载功能,将得到.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.2硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。
一位补码乘法器的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。
表3.1XCV200实验板信号对应关系
XCV200芯片引脚信号
XCV200实验板
K0:
7
6
5
4
3
2
1
K1:
K2:
A7
A6
A5
A4
A3
A2
A1
A0
B6
B5
B4
B3
B2
B1
B0
利用表3.1中的输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关K0、K1及K2控制数据输入,同时观察数码显示管和发光二极管显示结果,得到如图3.1所示的硬件测试结果。
图3.1硬件测试结果图
参考文献
[1]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[3]王爱英.计算机组成与结构(第4版)[M].北京:
[4]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:
西安电子科技大学出版社,1998.5-9.
[5]廖裕评,陆瑞强.CPLD数字电路设计--使用MAX+PLUSⅡ[M].北京:
清华大学出版社,2001.217-221.
[6]JohnFWakerly.DIGIALDESIGNPrinciples&
Practices(ThirdEdition)[M].北京:
高等教育出版社,2001.446-54
附录(电路原理图)
课程设计总结:
1.在刚开始做这个课程设计时,由于对知识理解得不够深刻,导致设计上的失误,后来经过老师的指导才逐步形成了初步设计方案。
在进行整体仿真时,发现乘数没有打入寄存器,又经过分步仿真调试后,发现是由于没有清零的缘故导致了以上故障。
调整脉冲后,以上故障解决。
2.设计采用了自上而下的设计方法,基本实现了定点补码一位乘法的功能,能够正确求得积等结果。
3.通过这次课程设计,我充分锻炼了自己的动手能力以及分析解决问题的能力,弥补了自己在学习上的一些漏洞,改正了学习时对知识理解上的一些错误;
在查阅资料的过程中,拓宽了自己的知识面;
也明白了实践出真知,以后学习是不能只注重课本上的理论,要注重在实际中运用它,这样才能真正提高自己的能力。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩