定点补码一位乘法器的设计Word文件下载.docx
《定点补码一位乘法器的设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《定点补码一位乘法器的设计Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
定点补码一位乘法的计算有普通和布斯两种算法,此设计方案仅采用布斯算法进行设计
设被乘数[x]补=x0.x1x2…xn和乘数[y]补=y0.y1y2…yn均为任意符号,则有补码乘法算式
n
(2.3.4)
[x·
y]补=[x]补·
(-y0+∑yi2-i)
i=1
为了推出串行逻辑实现人分步算法,将上式展开加以变换:
[x·
y]补=[x]补·
[-y0+y12-1+y22-2+…+yn2-n]
=[x]补·
[-y0+(y1-y12-1)+(y22-1-y22-2)+…+(yn2-(n-1)-yn2-n)]
[(y1-y0)+(y2-y1)2-1+…+(yn-yn-1)2-(n-1)+(0-yn)2-n]
(yn+1=0)
写成递推公式如下:
[z0]补=0
[z1]补=2-1{[z0]补+
(
yn+1-yn)[x]补}(yn+1=0)
…
[zi]补=2-1{[zi-1]补+
(yn-i+2-yn-i+1)[x]补}(2.3.5)
[zn]补=2-1{[zn-1]补+
(y2-y1)[x]补}
[zn+1]补=[zn]补+
y1-y0)[x]补=[x·
y]补
开始时,部分积为0,即[z0]补=0。
然后每一步都是在前次部分积的基础上,由(
yi+1
-
yi
)(i=0,1,2,…,n)决定对[x]补的操作,再右移一位,得到新的部分积。
如此重复n+1步,最后一步不移位,便得到[x·
y],这就是有名的布斯公式。
实现这种补码乘法规则时,在乘数最末位后面要增加一位补充位yn+1。
开始时,由ynyn+1判断第一步该怎么操作;
然后再由yn-1yn判断第二步该怎么操作。
因为每做一步要右移一位,故做完第一步后,yn-1yn正好移到原来ynyn+1的位置上。
依此类推,每步都要用ynyn+1位置进行判断,我们将这两位称为判断位。
如果判断位ynyn+1=01,则yi+1
…
=1,做加[x]补操作;
如果判断位ynyn+1=10,则yi+1…yi
=-1,做加[-x]补操作;
如果判断位ynyn+1=11或00,则yi+1…yi
=0,[zi]加0,即保持不变。
补码一位乘法运算规则
(1)如果yn=yn+1,部分积[zi]加0,再右移一位;
(2)如果ynyn+1=01,部分积加[x]补,再右移一位;
(3)如果ynyn+1=10,部分积加[-x]补,再右移一位;
这样重复进行n+1步,但最后一步不移位。
包括一位符号位,所得乘积为2n+1位,其中n为尾数位数。
【例】
x
=0.1101,y=0.1011,用补码一位乘法计算x·
y
=?
[解:
]
求解过程如下:
部分积
乘数
说明
00.0000
0.
1
0
yn+1=0
+
11.0011
ynyn+1=10,加[-x]补
→
11.1001
右移一位
ynyn+1=10,加0
11.1100
00.1101
ynyn+1=01,加[x]补
00.1001
00.0100
0f
ynyn+1=01,加[-x]补
11.0111
11.1011
00.1000
最后一步不移位
所以
[x·
y]补
=0.10001111
定点补码一位乘法器可以用一个乘数模块、一个部分积模块、一个数据选择器模块和一个求补模块构成,其原理框图如图1.2.1所示。
定点补码一位乘法器的整体设计包含乘数模块,部分积模块,数据选择器模块和求补模块,数据选择器模块和求补模块,乘数模块,部分积模块作为底层设计,前者采用Verilog语言设计输入方式,后三者及顶层的乘法器采用原理图设计输入方式。
采用硬件描述语言进行电路设计并实现表1.1中给定的功能,设计的Verilog程序经编译、调试后形成*.bit文件并下载到XCV200可编程逻辑芯片中,经硬件测试验证设计的正确性。
图1.1.1定点补码一位乘逻辑原理图
1.2设计环境
·
硬件环境:
伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;
EDA环境:
XilinxFoundation3.1设计软件。
第2章详细设计方案
2.1顶层方案图的设计与实现
顶层方案图实现定点补码一位乘法器的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件主要由一个乘数模块、一个部分积模块、一个数据选择器模块和一个求补模块组装而成的一个完整的设计实体。
可利用XilinxISEECS模块实现顶层图形文件的设计,顶层图形文件结构如图2.1所示。
图2.1定点补码一位乘法器顶层图形文件结构
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为XlinxXCV200可编程逻辑芯片。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到XlinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及XlinxXCV200芯片引脚对应关系如表2.1所示。
表2.1信号和芯片引脚对应关系
补码一位乘法器内部信号
图形文件中的输入/输出信号
XCV200芯片引脚
X7
P33
X6
X6
P34
X5
P35
X4
X4
P36
X3
P38
X2
P39
X1
X1
P40
X0
X0
P41
Y7
P56
Y6
P55
Y5
P54
Y4
P53
Y3
P50
Y2
P49
Y1
P48
Y0
P47
CY
P79
LY
P81
CLKY
P85
CJIA
P90
CCHENG
P92
Z7
P78
Z6
P215
Z5
P216
Z4
P217
Z3
P218
Z2
P220
Z1
P221
Z0
P222
R7
P93
R6
P224
R5
P228
R4
P229
R3
R3
P230
R2
P231
R1
P232
R0
P235
2.2功能模块的设计与实现
定点补码一位乘法器是以数据选择器模块,乘数模块,部分积模块,和一个求补模块为基础而实现的,设计数据选择器时模块用Verilog语言实现。
设计后三者用原理图设计输入方式实现。
具体设计如图所示:
2.2.1定点补码一位乘模块图
2.2.1数据选择器模块的设计与实现
数据选择器的三个输入分别用A、B、C表示,控制信号用S0、S1表示,输出用Q表示,形成的Verilog语言用XUANZEQI.CHD表示,设计过程如下。
(1)创建Verilog文件
moduleXUANZEQI(s0,a,b,c,s1,q);
inputs0;
input[7:
0]a;
0]b;
0]c;
inputs1;
output[7:
0]q;
reg[7:
always@(s0ors1orborcora)
begin
if((s0==1'
b0&
&
s1==1'
b0)||(s0==1'
b1&
b1))
q[7:
0]=a[7:
0];
elseif(s0==1'
b1)
0]=b[7:
elseif(s0==1'
b0)
0]=c[7:
else
end
endmodule
(2)创建元件图形符号
为了能在图形编辑器(原理图设计输入方式)中调用此数据选择器,需要为XUANZEQI创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
(3)功能仿真
对创建的数据选择器元件(XUANZEQI)进行功能仿真,验证其功能的正确性,可用XilinxISE编译器的Simulator模块实现。
2.2.2乘数模块的设计与实现
乘数输入用D表示,输出用Q表示,其设计过程如下。
(1)创建原理图
为了能在图形编辑器(原理图设计输入方式)中调用此乘数模块,需要为CHENGSHU创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
对创建的乘数元件(CHENGSHU)进行功能仿真,验证其功能的正确性,可用XilinxISE编译器的Simulator模块实现。
⏹2.2.3部分积模块的设计与实现
输入用D表示,输出用Q表示,其设计过程如下。
为了能在图形编辑器(原理图设计输入方式)中调用此部分积模块,需要为BUFENJI创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
对创建的乘数元件(BUFENJI)进行功能仿真,验证其功能的正确性,可用XilinxISE编译器的Simulator模块实现。
2.2.4求补模块的设计与实现
输入用X表示,输出用Q表示,其设计过程如下。
(1)创建原理图
为了能在图形编辑器(原理图设计输入方式)中调用此求补模块,需要为QIUBU创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
对创建的求补元件(QIUBU)进行功能仿真,验证其功能的正确性,可用XilinxISE编译器的Simulator模块实现。
2.3仿真调试
仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。
(1)建立仿真波形文件及仿真信号选择
功能仿真时,首先建立仿真波形文件,选择仿真信号,对选定的输入信号设置参数,选定的仿真信号和设置的参数如表2.2所示。
输入信号
输出信号
XY
LYCYCLRYCJIACCHENG
Z
R
3458
10110
01000
3458
01001
11001
11000
表2.2功能仿真信号选择和参数设置
(2)功能仿真结果与分析
功能仿真波形结果如图2.2所示,仿真数据结果如表2.3所示。
对表2.3与例的内容进行对比,可以看出功能仿真结果是正确的,进而说明电路设计的正确性。
图2.2功能仿真波形结果
表2。
3功能仿真数据结果
00
CC
58
E6
AC
F3
D6
27
13
EB
DF
EF
F5
第3章编程下载与硬件测试
3.1编程下载
利用XilinxISE的编程下载功能,将得到的*.bin文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.2硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。
定点补码一位乘法器的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如下。
表3.1XCV200实验板信号对应关系
XCV200芯片引脚信号
XCV200实验板
X[7]
K4[7]
X[6]
K4[6]
X[5]
K4[5]
X[4]
K4[4]
X[3]
K4[3]
X[2]
K4[2]
X[1]
K4[1]
X[0]
K4[0]
Y[7]
K3[7]
Y[6]
K3[6]
Y[5]
K3[5]
Y[4]
K3[4]
Y[3]
K3[3]
Y[2]
K3[2]
Y[1]
K3[1]
Y[0]
K3[0]
LY
K2[0]
CY
K2[1]
CLRY
K2[2]
K2[3]
K2[4]
Z[7:
0]
七段数码管D0
R[7:
七段数码管D1
利用表2.2中的输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关K4、K3、K2输入数据,同时观察七段数码管D0七段数码管D1的输出。
参考文献
[1]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[3]王爱英.计算机组成与结构(第4版)[M].北京:
课程设计总结:
1.在刚开始做这个课程设计时,由于对知识理解得不够深刻,导致设计上的失误,后来经过老师的指导才逐步形成了初步设计方案。
在进行整体仿真时,发现乘数没有打入寄存器,又经过分步仿真调试以及老师的指导,发现是由于没有清零的缘故导致了以上故障。
调整脉冲后,以上故障解决。
2.设计采用了自上而下的设计方法,基本实现了定点补码一位乘法的功能,能够正确求得积等结果。
3.通过这次课程设计,我充分锻炼了自己的动手能力以及分析解决问题的能力,弥补了自己在学习上的一些漏洞,改正了学习时对知识理解上的一些错误;
在查阅资料的过程中,拓宽了自己的知识面;
也明白了实践出真知,以后学习是不能只注重课本上的理论,要注重在实际中运用它,这样才能真正提高自己的能力。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩
4.在刚开始做这个课程设计时,由于对知识理解得不够深刻,导致设计上的失误,后来经过老师的指导才逐步形成了初步设计方案。
5.设计采用了自上而下的设计方法,基本实现了定点补码一位乘法的功能,能够正确求得积等结果。
6.通过这次课程设计,我充分锻炼了自己的动手能力以及分析解决问题的能力,弥补了自己在学习上的一些漏洞,改正了学习时对知识理解上的一些错误;