定点原码一位乘法器讲课教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定点原码一位乘法器
沈阳航空工业学院
课程设计报告
课程设计名称:计算机组成原理课程设计
课程设计题目:定点原码一位乘法器的设计
院(系):计算机学院
专业:计算机科学与技术
班级:
学号:
姓名:
指导教师:
完成日期:
目录
第1章总体设计方案 (1)
1.1设计原理 (1)
1.2设计环境 (2)
第2章详细设计方案 (4)
2.1顶层方案图的设计与实现 (4)
2.1.1创建顶层图形设计文件 (4)
2.1.2器件的选择与引脚锁定 (5)
2.2第二层模块的设计与实现 (7)
2.3功能模块的设计与实现 (7)
2.3.1移位模块的设计与实现 (7)
2.3.2 乘数移位模块的设计与实现 (10)
2.3.3选择模块的设计与实现 (12)
2.3.4 控制模块的设计与实现 (13)
2.3.5 其他模块的设计与实现 (15)
2.4仿真调试 (16)
第3章编程下载与硬件测试 (19)
3.1编程下载 (19)
3.2硬件测试及结果分析 (19)
参考文献 (20)
附录(电路原理图) (21)
第1章总体设计方案
1.1 设计原理
原码一位乘,两个原码数相乘,其乘积的符号为相乘两数符号的异或值,数值则为两数绝对值之积。
例:X=0.1100,Y=0.1110,计算乘积X*Y。
0.1100
* 0.1110
0000
1100
1100
1100
0.10101000
在计算时,逐次按乘数每1位上的值是1还是0,决定相加数取被乘数的值还是取零值,而且相加数逐次向左偏移1位,最后一起求积。
由于在计算机内多个数据一般不能同时相加,一次加法操作只能求出两数之和,因此每求得一个相加数,就与上次部分积相加每次计算时,相加数逐次向左偏移一位,由于最后的乘积位数是乘数(被乘数)的两倍,因此加法器也需增到两倍。部分积右移时,乘数寄存器同时右移一位,所以用乘数寄存器的最低位来控制相加数取被乘数或零,同时乘数寄存器接收部分积右移出来的一位,完成运算后,部分积寄存器保存乘积的高位部分,乘数寄存器中保存乘积的低位部分。
根据人工算法可以知道,原码一位乘法的整体设计应包括乘数寄存器,被乘数寄存器,移位电路,控制器,部分积五大模块,包含一个输入、输出、控制器模块,并作为顶层设计,以上五大模块作为底层设计,采用硬件器件设计实现。
因此,可以得出以下原理框图设计如图1.1所示:
图1.1 原码一位乘的逻辑电路框图
如上逻辑框图1.1中所示,其中B为被乘数寄存器,用来存放被乘数,C为乘数寄存器,用来存放乘数并且移位,A为部分积寄存器,存放每次相加并移位后的数据,ALU加法器实现加法操作,移位电路用来对相加后的数据作移位处理,计数器控制移位次数和输出结果。
1.2 设计环境
·硬件环境:伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;
·EDA环境:Foundation f3.1设计软件。该设计由设计入口工具,设计实现工具,验证工具三大部分组成.入口工具包括原理图设计,有限状态编辑器,硬件描述语言编辑器等。
第2章详细设计方案
2.1 顶层方案图的设计与实现
顶层方案图实现原码一位乘的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件由一个运算器模块组成,乘数X[7:0],被乘数Y[7:0],符号位XA,YA,脉冲CLK,清零端CLR,打入端LOAD,结果OUT[16:0],顶层图设计如下:
图2.1 原码一位乘顶层图形文件结构
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和
XCV200实验板,故采用的目标芯片为Xlinx XCV200可编程逻辑芯片。另外,在这次的设计中还有的涉及Verilog语言编程。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到Xlinx XCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及Xlinx XCV200芯片引脚对应关系如表2.1所示。
表2.1 信号和芯片引脚对应关系
2.2第二层模块的设计与实现
根据以上原理设计分析与大概框图,可得出以下的第二层模块的设计,其中各大模块实现各部分功能。
图2.2 第二层模块框图
2.3 功能模块的设计与实现
根据第二层模块设计可知,整体设计由乘数寄存器,被乘数寄存器,移位电路,控制器,部分积五大模块,以下介绍各个模块的具体实现。
2.3.1移位模块的设计与实现
为了简化设计,采用了Verilog语言设计,用语言实现移位功能,XX[7:0]表示输入,CO表示加法器的进位,CE表示使能端,CLR表示清零端,YY[7:0]表示移位后的输出,CI标记移出去的那一位,其设计过程如下。
(1)创建Verilog源文件
module YIWEIDIANLU (YY, XX, CE, CO,CI,CLR) ;
output [7:0]YY ;
reg[7:0]YY ;
input [7:0]XX ;
input CE ;
input CLR ;
input CO;
output CI;
reg CI;
always@(CLR)
begin
if(CLR) YY<=0;
else
begin
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
end
endmodule
(2)创建元件图形符号
图形符号如下: