定点原码一位乘法器文档格式.docx
《定点原码一位乘法器文档格式.docx》由会员分享,可在线阅读,更多相关《定点原码一位乘法器文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
在计算时,逐次按乘数每1位上的值是1还是0,决定相加数取被乘数的值还是取零值,而且相加数逐次向左偏移1位,最后一起求积。
由于在计算机内多个数据一般不能同时相加,一次加法操作只能
求出两数之和,因此每求得一个相加数,就与上次部分积相加每次计算时,相加数逐次向左偏移一位,由于最后的乘积位数是乘数(被乘数)的两倍,因此加法器也需增到两倍。
部分积右移时,乘数寄存器同时右移一位,所以用乘数寄存器的最低位来控制相加数取被乘数或零,同时乘数寄存器接收部分积右移出来的一位,完成运算后,部分积寄存器保存乘积的高位部分,乘数寄存器中保存乘积的低位部分。
根据人工算法可以知道,原码一位乘法的整体设计应包括乘数寄存器,被乘数寄存器,移位电路,控制器,部分积五大模块,包含一个输入、输出、控制器模块,并作为顶层设计,以上五大模块作为底层设计,采用硬件器件设计实现。
因此,可以得出以下原理框图设计如图所示:
图原码一位乘的逻辑电路框图
如上逻辑框图中所示,其中B为被乘数寄存器,用来存放被乘数,C为乘数寄存器,用来存放乘数并且移位,A为部分积寄存器,存放每次相加并移位后的数据,ALU加法器实现加法操作,移位电路用来对相加后的数据作移位处理,计数器控制移位次数和输出结果。
设计环境
•硬件环境:
伟福COP200(型计算机组成原理实验仪、XCV20C实验板、微机;
•EDA环境:
Foundation设计软件。
该设计由设计入口工具,设计实现工具,验证工具三大部分组成.入口工具包括原理图设计,有限状态编辑器,硬件描述语言编辑器等。
第2章详细设计方案
顶层方案图的设计与实现
顶层方案图实现原码一位乘的逻辑功能,采用原理图设计输入方
式完成,电路实现基于XCV20C可编程逻辑芯片。
在完成原理图的功能设计后,把输入/输出信号安排到XCV20C指旨定的引脚上去,实现芯片的引脚锁定。
创建顶层图形设计文件
顶层图形文件由一个运算器模块组成,乘数X[7:
0],被乘数Y[7:
0],符号位XAYA脉冲CLK清零端CLR打入端LOAD结果0UT[16:
0]顶层图设计如下:
图原码一位乘顶层图形文件结构
器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP200型计算机组成原理实验仪
和XCV200实验板,故采用的目标芯片为XlinxXCV200可编程逻辑芯
片。
另外,在这次的设计中还有的涉及Verilog语言编程。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到XlinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及XlinxXCV20C芯片引脚对应关系如表所示。
表信号和芯片引脚对应关系
图形文件中的输入/输出信
号
XCV20芯片引脚
X[0]
P47
X[1]
P48
X[2]
P49
X[3]
P50
X[4]
P53
X[5]
P54
X[6]
P55
X[7]
P56
丫[0]
P41
Y[1]
P40
丫⑵
P39
Y[3]
P38
Y[4]
P36
Y[5]
P35
丫⑹
P34
Y[7]
P33
CLK
P98
CLRR
P94
LOAD
P97
XA
P96
YA
P95
OUT[0]
P213
OUT[1]
P215
OUT[2]
P216
OUT[3]
P217
OUT[4]
P218
OUT[5]
P220
OUT[6]
P221
OUT[7]
P222
0UT[8]
P223
0UT[9]
P224
OUT[10]
P228
OUT[11]
P229
OUT[12]
P230
0UT[13]
P231
0UT[14]
P232
0UT[15]
P234
0UT[16]
P235
2.2第二层模块的设计与实现
根据以上原理设计分析与大概框图,可得出以下的第二层模块的
设计,其中各大模块实现各部分功能
图第二层模块框图
功能模块的设计与实现
根据第二层模块设计可知,整体设计由乘数寄存器,被乘数寄存器,移位电路,控制器,部分积五大模块,以下介绍各个模块的具体实现。
231移位模块的设计与实现
为了简化设计,采用了Verilog语言设计,用语言实现移位功能,XX[7:
0]表示输入,CO表示加法器的进位,CE表示使能端,CLR表示清零端,丫丫[7:
0]表示移位后的输出,CI标记移出去的那一位,其设计过程如下。
1)创建Verilog源文件
moduleYIWEIDIANLU(YY,XX,CE,CO,CI,CLR);
output[7:
0]YY;
reg[7:
input[7:
0]XX;
inputCE;
inputCLR;
inputCO;
outputCI;
regCI;
always@(CLR)
begin
if(CLR)YY<
=0;
elsebegin
YY[7]<
=CO;
YY[6]<
=XX[7];
YY[5]<
=XX[6];
YY[4]<
=XX[5];
YY[3]<
=XX[4];
YY[2]<
=XX[3];
YY[1]<
=XX[2];
YY[0]<
=XX[1];
CI<
=XX[0];
end
endmodule
2)创建元件图形符号
图形符号如下:
(3)功能仿真
对创建的移位器件YIWEIDIANLU进行功能仿真,验证其功能的正
确性。
可用XilinxFoundation编译器的Simulator模块实现。
功能仿真图如下:
k
e
00J07)S70?
麼
E
V3.H7.(hei)J
L'
.
v
j
OF
Ttorr
1
1
■*
HIJ.LI
■
-
a
IXCO.……
■-
■■—j—…■……—…
—
U3.CE
k-
的CLR
"
H
表2.3.1移位器件功能表描述
XX[7:
YY[7:
C
CLR
0]
I
O
F
7
8
从以上表中数据可以看出,当CLR为1时,该器件清零,输出YY[7:
0]为零,为零时,有移位功能,CO为移位后高位的补充值。
CI标记移出的那一位,用来送往乘数寄存器中移位的高位补充,CE为此器件的使能端,保证该器件工作,该器件成功创建。
232乘数移位模块的设计与实现
为了标记乘数移位前的最低位,设计CHEN寄存器,输入分别用DIN[7:
0]表示,移位后结果用Q[7:
0]表示,高位补充用SIN表示,移出的一位用KIN表示,其设计过程如下。
(1)创建Verilog源文件
moduleCHENG(LOAD,SIN,DIN,CLK,CLR,Q,KIN);
inputLOAD;
inputSIN;
0]DIN;
inputCLK;
0]Q;
reg[7:
outputKIN;
regKIN;
always@(posedgeCLKorposedgeCLR)
if(CLR)Q<
elseif(LOAD)Q<
=DIN;
else
KIN<
=Q[0];
Q<
=Q>
>
1;
Q[7]v二SIN;
endmodule
(2)创建元件图形符号
元件符号如下:
U22
Verlbgcode
LOAD□住口1
OIKKIN
OINITiQ
CI.P
CHENG
对创建的乘数移位寄存器(CHEN)进行功能仿真,验证其功能的
正确性,可用XilinxFoundation编译器的Simulator模块实现。
功能仿真图如下:
表232乘数移位寄存器功能表描述
DI
SI
KI
Q7
N
09
上升沿
00
04
84
从以上表中数据可以看出,当CLR为1时,该器件清零,输出Q[7:
0]为零,CLR为零时,有移位功能,SIN为移位后高位的补充值。
KIN标记移出的那一位,用来判断下次加法加零还是被乘数,CLK上升沿有效,保证该器件工作,该器件成功创建。
2.3.3选择模块的设计与实现
选择器XUAN的输入分别用0,B[7:
0]表示,选择后结果输出用Q0UT[70]表示,选择信号用SC表示,其设计过程如下。
(1)创建Verilog源文件
moduleXUAN2(B,SO,QOUT);
0]B;
inputSO;
0]QOUT;
always@(SO)
if(SO)QOUT<
=B;
elseQOUT<
元件图形符号:
U18
arm
co
XUAN2
对创建的选择器元件(XUAN)进行功能仿真,验证其功能的正确
性,可用XilinxFoundation编译器的Simulator模块实现。
U8.B7,(hex)#i
Cs
0:
OE
US.SO
U8.QOUT7(he:
LrTTTTTTm...
——
00foilooKO!
looIo!
Joo[0E(00
表2.3.3选择器功能表描述
B[7:
SO
QOUT[7:
0E
从以上表中数据可以看出,当选择信号为1时,该器件输出
Q0UT[70]为输入值B[7:
0],当选择信号为0时,该器件输出00,由功能表知,该器件成功创建。
234控制模块的设计与实现
设计为6位原码一位乘,计数器为模9计数器,上升沿计数,有清零功能,其设计过程如下。
moduleJISHU(CLK,CLR,QOUT,CO);
inputCLK;
inputCLR;
output[3:
reg[3:
outputCO;
regCO;
always@(posedgeCLKorposedgeCLR)
if(CLR)
QOUT<
CO<
=1;
elseif(QOUT==9)
=QOUT+1;
元件图形符号如下:
Verilogcode
CLKQOUT[3:
CLRU9CO
JISHU
对创建的计数器元件(JISHU)进行功能仿真,验证其功能的正确
表234计数器功能表描述
CO
QOU(次数)
上升沿有
效
0~8
9
从以上表中数据可以看出,当脉冲信号为上升沿时,该器件输出
Q0UT[70]记录次数从0到9,当记满9次时,该器件CC输出1,其余CO输出都为0,由功能表知,该器件是一个模9的计数器,成功创建。
235其他模块的设计与实现
采用原有的XCV200可编程逻辑芯片加法器件ADD8实现电路中的加法,采用FD8CE8位寄存器存放部分积。
ADD8为8位的加法器,其中A[7:
0],B[7:
0]为两个输入端口,
CC为向后一位的进位标志,CI为前一位向加法器的进位,CFL为溢出,S[7:
0]为结果输出。
ADDS
FD8CE为8位寄存器,其中D[7:
0]为数据输入端口,CE为该器件的使能端,控制该器件工作,C为脉冲控制端,CLR为清零端,CLR为1时该器件清零,Q[7:
0]为数据输出端口,当脉冲有效,CLR无效,输出等于输入。
FD8CE
D[70]Q[7:
CE
C“
仿真调试
仿真调试主要验证设计电路逻辑功能、时序的正确性,本次设计为原码一位乘法,设计完成主要采用功能仿真方法对设计的电路进行仿真从而验证其电路功能的正确性。
(1)建立仿真波形文件及仿真信号选择
功能仿真时,首先建立仿真波形文件,选择仿真信号CLKCLR
LOAD数据输入X[7:
0],Y[7:
0],符号位输入XAYA结果输出OUT[160],对以上选定的输入信号设置参数,验证输出信号的正确性,选定仿真信号和设置的参数如表所示。
表仿真信号选择和参数设置
输入信号
输
出
信
X[7:
Y[7:
OUT
[16:
上升
沿
(2)功能仿真结果与分析
功能仿真波形结果如图所示,仿真数据结果如表所示。
对表与表
的内容进行对比,可以看出功能仿真结果是正确的,进而说明电路设
图功能仿真波形结果
表仿真数据结果
3
第3章编程下载与硬件测试
编程下载
功能仿真通过以后,经过编译,若成功,则编程下载功能,将得到的*bit文件,然后下载到XCV200实验板的XCV200可编程逻辑芯片中。
由于此次设计编译有点问题,不能通过,最终没能成功下载,试验没能完美的完成,有点遗憾,分析其原因,可能是由于Verilog语言设计不太成熟,编译虽然没有什么问题,可下载时要求比较严格,没能通过。
3.2硬件测试及结果分析
XCV200实验板信号对应关系
XCV20芯片引脚信号
XCV20实验板
0]
K0
K1
K2(0)
K2
(1)
K2
(2)
K2(3)
K2(4)
OUT[7:
D0
利用表中的参数作为输入数据,逐个测试输出结果,即用
XCV20C实验板的开关输入数据,观察输出0UT[16:
参考文献
[1]曹昕燕.EDA技术实验与课程设计]M•北京:
清华大学出版社,
2006
[2]范延滨•微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[3]王爱英.计算机组成与结构(第4版)[M].北京:
[4]李勇.计算机原理与设计(修订本).长沙:
国防科技大学出版社,
1989
[5]王尔乾.数字逻辑与数字集成电路.北京:
清华大学出版社,1996
[6]白中英.计算机组成原理.北京:
科学出版社,1994
[7]杨天行.计算机技术.北京:
国防工业出版社,1999
附录(电路原理图)
ILJ-®
gl」lnsE«
«
CJ—日JiI」gs3「LN旦r-«
PMBu
JnLJOEZAmiivori
TD
SER「°
.匕口耳日hhw
EM
[O-db[07]a
Bfi£
§
□
图
(一)
课程设计总结:
主要从以下几方面总结:
1.在这次组成原理设计实验中,遇到了很多问题,刚开始的设
计思想有点麻烦,用了三个8位的寄存器,两个8位的移位寄存器,总体有三个不同的脉冲控制端,两个不同的LOA
打入端,一个总清零端CLR有X,Y,两个8位的数据输入,一个17位的结果输出,但封装下载有相当大的困难,因为下载时只可以有一个脉冲控制端口,在老师的提点下,改进了
原有的电路图,去掉一个8位的移位寄存器,,省掉了原有的很多不必要的麻烦。
另外又加入了计数器控制原有电路,解决了很多原有的问题。
2.这次题目为原码一位乘法器的设计,通过运用库中原有器件或运用Verilog语言编程实现所需模块的设计,最终实现原码一位乘,输入X,Y,及其符号XAYA即可求得并输出结果。
3.通过这次实验设计,了解了许多计算机组成原理知识,并学会了简单运用Verilog语言编程实现所需各个器件,知道了自己在设计方面的不足和所需要学习的知识,在这次设计中指导老师给予了我很大的帮助,在以后的学习和实验中会更加努力的学习,弥补自己的不足。
指导教师评语:
指导教师(签字):
年—月
日
课程设计成绩