定点原码两位乘法器的设计.docx
《定点原码两位乘法器的设计.docx》由会员分享,可在线阅读,更多相关《定点原码两位乘法器的设计.docx(19页珍藏版)》请在冰豆网上搜索。
定点原码两位乘法器的设计
课程设计报告
课程设计名称:
计算机组成原理课程设计
课程设计题目:
定点原码两位乘法器的设计
院(系):
专业:
班级:
学号:
姓名:
指导教师:
完成日期:
目录
沈阳航空工业学院I
第1章总体设计方案2
1.1设计原理2
1.2设计思路4
1.3设计环境4
第2章详细设计方案5
2.1顶层方案图的设计与实现5
2.1.1创建顶层图形设计文件5
2.1.2器件的选择与引脚锁定5
2.2功能模块的设计与实现6
2.2.1选择器模块的设计与实现7
2.2.2控制器模块的设计与实现8
2.2.3部分积模块的设计与实现9
2.2.4乘数模块的设计与实现10
2.2.5原码两位乘法器模块的设计与实现11
2.3仿真调试12
第3章编程下载与硬件测试13
3.1编程下载13
3.2硬件测试及结果分析13
参考文献14
附录(程序清单或电路原理图)15
第1章总体设计方案
1.1设计原理
原码两位乘的乘数和被乘数用原码表示,根据乘数最后两位的取值情况,依次求出被乘数对应的4种选择值,然后与上次部分积相加之后,再对本次得出的部分值右移两位,循环执行,直至乘数的高两位运算完成为止。
两位乘数有四种可能的组合,每种组合对应与以下操作:
00——相当与0*X。
部分积+0,右移两位;
01——相当与1*X。
部分积+X,右移两位;
10——相当与2*X。
部分积+2X,右移两位;
11——相当与3*X。
部分积+3X,右移两位。
与一位乘法比较,多出了+2X和3X两种情况。
把X左移1位即得到2X,在机器内通常采用左斜送一位来实现。
可是+3X一般不能一次完成,如分成两次进行,又降低了计算速度。
解决问题的办法是:
以(4X-X)来代替3X运算,在本次运算中只执行-X,而+4X则归并到下一步执行,此时部分积以右移了两位,上一步欠下的+4X已变成+X,在实际线路中要用一个触发器C来记录是否欠下+4X,若是,则C变为1。
因此实际操作用Yi-1,Yi,C三位来控制,运算规则如下所示:
组合值Yi-1YiC操作C值变化
0000部分积+0;右移两位C=0
1001部分积+x;右移两位C=0
1010部分积+x;右移两位C=0
2011部分积+2x;右移两位C=0
2100部分积+2x;右移两位C=0
3101部分积-x;右移两位C=1
3110部分积-x;右移两位C=1
4111部分积+0;右移两位C=1
定点原码两位乘例子如下:
已知X=0.101100,Y=0.111001
定点原码两位乘的总体原理图如下图1.1所示,被乘数送入选择电路,通过乘数的低两位和欠位来控制选择电路,求出新的部分积,并于上一次部分积相加,相加结果送入部分积电路,移位后,再参加新一轮运算。
图1.1原码两位乘原理图
1.2设计思路
原码两位乘法器可用乘数的移位电路和一个对被乘数值的选择电路和部分积模块电路以及一个加法器构成的乘法器构成。
顶层的原码两位乘法器采用原理图设计输入方式。
1.3设计环境
·硬件环境:
伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;
·EDA环境:
XilinxFoundationF3.1设计软件。
第2章详细设计方案
2.1顶层方案图的设计与实现
顶层方案图实现原码两位乘法器的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
在完成原理图的功能设计后,把输入输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件主要由两个六位输入,一个脉冲输入,一个清零输入和一个使能输入还有一个十四位输出模块组装而成的一个完整的设计实体。
可利用XilinxISEECS模块实现顶层图形文件的设计,顶层图形文件结构如图2.1所示。
图2.1原码两位乘法器顶层图形文件结构
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为XlinxXCV200可编程逻辑芯片。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到XlinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及XlinxXCV200芯片引脚对应关系如下:
A[7:
0]B[7:
0]
A[7]=LOCP094B[7]=LOCP079
A[6]=LOCP095B[6]=LOCP080
A[5]=LOCP096B[5]=LOCP081
A[4]=LOCP095B[4]=LOCP082
A[3]=LOCP100B[3]=LOCP084
A[2]=LOCP101B[2]=LOCP085
A[1]=LOCP102B[1]=LOCP086
A[0]=LOCP103B[0]=LOCP087
A0=LOCP073B0=LOCP072
CLK=LOCP071CLR=LOCP070CE=LOCP066
Q[17:
0]:
Q[17]=LOCP111Q[8]=LOCP235
Q[16]=LOCP110Q[7]=LOCP215
Q[15]=LOCP224Q[6]=LOCP216
Q[14]=LOCP228Q[5]=LOCP217
Q[13]=LOCP229Q[4]=LOCP218
Q[12]=LOCP230Q[3]=LOCP220
Q[11]=LOCP231Q[2]=LOCP221
Q[10]=LOCP232Q[1]=LOCP222
Q[9]=LOCP234Q[0]=LOCP223
2.2功能模块的设计与实现
顶层图形文件主要由一个乘数模块,一个被乘数模块和部分积模块以及选择器模块和移位电路模块封装而成的一个完整的设计实体,输入和输出组成。
原码两位乘法器是以选择模块,部分积模块,乘数模块,控制模块,符号模块为基础而实现的,设计时这五个模块用原理图设计输入方式实现。
2.2.1选择器模块的设计与实现
选择器的的六个输入分别为被乘数输入端D[7:
0],清零端CLR,脉冲端CLK,控制端A0,A1,A2,选择的结果用Q[7:
0]表示,其设计过程如下。
(1)原理图设计输入方式
(2)创建元件图形符号
为了能在图形编辑器(原理图设计输入方式)中调用此选择器,需要为H_ADDER创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
(3)功能仿真
对创建的选择器元件(H_ADDER)进行功能仿真,验证其功能的正确性,可用XilinxISE编译器的Simulator模块实现。
输入被乘数X,控制端为011,输出为2X,由仿真图得出输入23,得出结果46符合标准。
2.2.2控制器模块的设计与实现
控制器的三个输入分别为乘数的两个低位Y1,Y0和一个脉冲控制端CLK,输出的为求出的欠位C。
(1)原理图设计输入方式
(2)创建元件图形符号
为了能在图形编辑器(原理图设计输入方式)中调用此控制器,需要为H_ADDER创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
(3)功能仿真
对创建的控制器元件(H_ADDER)进行功能仿真,验证其功能的正确性,可用XilinxISE编译器的Simulator模块实现。
由乘数最低两位判断有无欠位C,由图可知乘数低两位为01,没有欠位C=0符合标准。
2.2.3部分积模块的设计与实现
部分积模块的四个输入分别为上一个部分积与选择器选择出来的结果之和D[7:
0],脉冲控制端CLK,清零端CLR,使能端CE,输出端为Q[7:
0]以及右移两位的部分积低位。
(1)原理图设计输入方式
(2)创建元件图形符号
为了能在图形编辑器(原理图设计输入方式)中调用此部分积模块,需要为H_ADDER创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
(3)功能仿真
对创建的控制器元件(H_ADDER)进行功能仿真,验证其功能的正确性,可用XilinxISE编译器的Simulator模块实现。
输入为上一个部分积结果,与本次选择器的结果进行相加把最低两位移出作为最终答案的低位部分,由图可知符合部分积功能。
2.2.4乘数模块的设计与实现
乘数模块的六个输入分别为乘数的输入C,脉冲控制端CLK,清零端CLR,使能端CE,部分积右移之后的低两位SIN1,SIN0,输出为补入部分积低两位且右移之后的乘数,乘数右移两位之后的低两位。
(1)原理图设计输入方式
(2)创建元件图形符号
为了能在图形编辑器中调用此乘数模块,需要为H_ADDER创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
(3)功能仿真
对创建的控制器元件(H_ADDER)进行功能仿真,验证其功能的正确性,可用XilinxISE编译器的Simulator模块实现。
输入乘数,通过部分积的后两位移进,输出移位过后的新的乘数再与选择器中的结果进行运算,由图可知输出符合移位后的答案。
2.2.5原码两位乘法器模块的设计与实现
原码两位乘法器模块是由一个部分积模块,一个乘数模块,一个选择模块,一个控制模块,以及一个符号模块构成,共有八个被乘数输入端八个乘数输入端和十八个乘积的输出端以及一个脉冲输入端,一个清零输入端和一个使能控制端构成。
(1)原理图设计输入方式
(2)创建元件图形符号
为了能在图形编辑器(原理图设计输入方式)中调用此原码两位乘法器模块,需要为原码两位乘法器模块创建一个元件图形符号,可用XilinxISE编译器的CreateSymbol模块实现。
(3)功能仿真
由于一些内部功能并没有完全实现所以很遗憾并未得出其正确的答案。
2.3仿真调试
仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。
由于电路设计中存在一些漏洞并未实现最后的完整电路。
第3章编程下载与硬件测试
3.1编程下载
利用XilinxISE的编程下载功能,将得到的*.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.2硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。
一位全加器的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。
表3.1XCV200实验板信号对应关系
XCV200芯片引脚信号
XCV200实验板
A[7]~A[0]
K[0]组
B[7]~B[0]
K[1]组
A0
K2[0]
B0
K2[1]
CLK
K2[2]
CLR
K2[3]
CE
K2[4]
Q[17]
发光二极管A[1]
Q[16]
发光二极管A[0]
Q[15]~Q[8]
七段数码管D0
Q[7]~Q[0]
七段数码管D1
由于没有达到实验要求这里没有给出结果的分析。
参考文献
[1]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[3]白中英.计算机组成原理(第4版)[M]北京:
科学出版社,2008
附录(程序清单或电路原理图)
电路原理图如下
(1)顶层设计原理图
(2)底层设计原理图
图
(一)选择器模块
图
(二)控制器模块
图(三)部分积模块
图(四)乘数模块
图(五)原码两位乘法器模块
课程设计总结:
指导教师评语:
指导教师(签字):
年月日
课程设计成绩