组成原理课设副本.docx
《组成原理课设副本.docx》由会员分享,可在线阅读,更多相关《组成原理课设副本.docx(24页珍藏版)》请在冰豆网上搜索。
![组成原理课设副本.docx](https://file1.bdocx.com/fileroot1/2023-2/4/4af2b33c-aa6a-4e0d-9a52-30ff02bd99e6/4af2b33c-aa6a-4e0d-9a52-30ff02bd99e61.gif)
组成原理课设副本
课程设计报告
课程设计名称:
计算机组成原理课程设计
课程设计题目:
定点补码一位乘法器的设计与实现
院(系):
专业:
班级:
学号:
姓名:
指导教师:
完成日期:
目录
第1章总体设计方案1
1.1设计原理1
1.2设计思路2
1.3设计环境4
第2章详细设计方案5
2.1顶层方案图的设计与实现5
2.1.1创建顶层图形设计文件5
2.1.2器件的选择与引脚锁定6
2.1.3编译、综合、适配7
2.2功能模块的设计与实现7
2.2.1取补模块的设计与实现7
2.2.2选择器模块的设计与实现9
2.2.3乘数补码移位寄存器模块的设计与实现12
2.2.4部分积移位寄存器模块的设计与实现14
2.2.5加法器模块的设计与实现16
2.3仿真调试16
第3章编程下载与硬件测试19
3.1编程下载19
3.2硬件测试及结果分析19
参考文献22
附录(电路原理图)23
第1章总体设计方案
1.1设计原理
在计算两个补码相乘时,可以通过Booth算法来实现定点补码一位乘的功能。
Booth算法采用相加减的操作的操作计算补码数据的乘积,Booth算法对乘数从低位开始判断,根据后两个数据位的情况决定进行加法、减法还是仅仅进行移位操作。
对被乘数或部分积的处理上与原码有某些类似,差别仅表现在被乘数和部分积的符号位要和数值一起参加运算。
Booth算法规则如下:
假设X、Y都是用补码形式表示的机器数,[X]补和[Y]补=Y0Y1Y2…Yn,都是任意符号表示的数。
比较法求新的部分积,取决于两个比较位的数位,即Yi+1Yi的状态。
首先设置附加位Yn+1=0,部分积初值[Z]补=0。
当n不等于0时,判断YnYn+1,
(1)YnYn+1=00或11,即相邻位相同时,上次部分积右移一位,直接得部分积。
(2)YnYn+1=01,上次部分积加[X]补,然后右移一位得新部分积。
(3)YnYn+1=10,上次部分积加[-X]补,然后右移一位得新部分积。
(4)n=0时,判YnYn+1(对应于Y0Y1),运算规则同
(1),只是不移位。
即在运算的最后一步,乘积不再右移。
(5)按照上述算法进行n+1步操作,但第n+1步不再移位,仅根据
与
的比较结果作相应的运算即可。
1.2设计思路
课程设计的要求为:
(1)采用原码值输入,乘数和被乘数皆为8位。
(2)设计的电路应该包括ALU,被乘数寄存器,乘数寄存器,部分积寄存器,门电路和移位电路。
课程设计的思路为:
(1)由于课程设计要求采用原码值输入,就需要设计一个原码值取反码的电路模块,同时只对符号位取反同时也可以实现求
。
(2)实现Booth算法需添加附加位
,并将其初始值置零,此操作通过外部输入来实现的。
(3)Booth算法在运算中要将部分积初始值置零,此操作是通过给FD寄存器的清零端一个高电平的脉冲信号,使寄存器的数据全部为0,即输出的部分积为00000000。
(4)取乘数末尾两位来判断,为00、11则部分积加0,为01则部分积加乘数的补码,为10则部分积加乘数相反数的补码。
为了实现此操作,需要设计一个二输入三输出选择器及选择电路。
(5)乘数逻辑右移一位,部分积算术右移一位,并用乘数最高位存放部分积溢出的位。
此功能的实现,分别设计了乘数移位寄存器,以及部分积移位寄存器。
(6)依次反复直到原乘数部分只剩下最后两位,由于最后一次只运算不移位,所以在输出时要在部分积移位之前输出结果。
(7)加统一的时钟信号,保持各部件同步工作。
定点补码一位乘法器的设计总框图如图1.1所示。
图1.1定点补码一位乘法器设计总框图
1.3设计环境
(1)硬件环境
•伟福COP2000型计算机组成原理实验仪
COP2000计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成。
实验平台上有寄存器组R0-R3、运算单元、累加器等组成。
COP2000计算机组成原理实验系统各单元部件都以计算机结构模型布局,系统在实验时即使不借助PC机,也可实时监控数据流状态及正确与否,实验系统的软硬件对用户的实验设计具有完全的开放特性,系统提供了微程序控制器和组合逻辑控制器两种控制器方式,系统还支持手动方式、联机方式、模拟方式三种工作方式,系统具备完善的寻址方式、指令系统和强大的模拟调试功能。
•COP2000集成调试软件
COP2000集成开发环境是为COP2000实验仪与PC机相连进行高层次实验的配套软件,它通过实验仪的串行接口和PC机的串行接口相连,提供汇编、反汇编、编辑、修改指令、文件传送、调试FPGA实验等功能,该软件在Windows下运行。
(2)EDA环境
•Xilinxfoundationf3.1设计软件
Xilinxfoundationf3.1是Xilinx公司的可编程期间开发工具,该平台功能强大,主要用于百万逻辑门设计。
该系统由设计入口工具、设计实现工具、设计验证工具三大部分组成。
第2章详细设计方案
2.1顶层方案图的设计与实现
顶层方案图是用来实现补码一位乘法器乘数与被乘数的输入和取补,以及结果的寄存和输出、二输入三输出选择器和运算控制电路、移位电路等逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
在完成原理图的功能设计后,把输入以及输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件的设计实体主要由取补电路(封装为QUBU),二输入三输出选择器(基于D2-4E的改装),乘数移位寄存器(封装为U11),部分积移位寄存器(基于FD实现),加法器(基于ADD8的改装),等模块组装而成的一个完整的可编程逻辑芯片U30。
顶层图形文件结构如图2.1所示:
图2.1顶层图形文件结构图
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为XilinxXCV200可编程逻辑芯片。
(2)引脚锁定
把顶层图形文件中的所有输入、输出信号对应到XilinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及XilinxXCV200芯片引脚对应关系如表2.1所示:
表2.1信号和芯片引脚对应关系
图形文件中的输入/输出信号
XCV200芯片引脚信号
GRD
P50
ZCLOCK
P213
FJW
P47
CLR
P49
VCC
P48
S1
P80
S2
P81
S3
P82
S4
P84
S5
P85
S6
P86
S7
P87
Y1
P95
Y2
P96
Y3
P97
Y4
P100
Y5
P101
Y6
P102
Y7
P103
E0
P63
E1
P73
E2
P72
E3
P71
E4
P70
E5
P66
E6
P65
E7
P64
2.1.3编译、综合、适配
利用Xilinxfoundationf3.1的原理图编辑器对顶层图形文件进行编译,并最终生成网络表文件,利用设计实现工具经综合、优化、适配,生成可供时序仿真的文件和器件下载编程文件。
2.2功能模块的设计与实现
功能模块主要由取补电路,二输入三输出选择器,移位寄存器,部分积移位寄存器等模块组成,由XilinxXCV200可编程逻辑芯片分别实现。
2.2.1取补模块的设计与实现
进行求补的方法就是从数的最右端
开始,由右向左,直到找出第一个“1”,例如
,
。
则
以左的每一个输入位都求反,即1变0,0变1。
最右端的起始链式输入
必须永远置成“0”。
当控制信号线
为“1”时,启动对2求补的操作;当控制信号线
为“0”时,输出将和输入相等。
可以利用符号位来作为控制信号
。
(1)创建求乘数补码电路模块设计原理图
实际电路如图2.2所示:
图2.2实际取补电路
(2)创建元件图形符号
其元件图形符号如图2.3所示:
图2.3求乘数补码电路模块元件图形符号
(3)功能仿真
对创建的取补模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.4所示:
图2.4取补模块仿真结果
2.2.2选择器模块的设计与实现
选择器主要由一个D2-4E芯片和逻辑门电路控制选择输出。
输入端输入的值分别为
,
以及“00000000”(八个输入端为一组)。
D2-4E芯片的
和
端的“0”和“1”控制
,
,
,
当
为01时,输出为
高电平,即为
输出值为1,通过逻辑门电路实现输出为
的值;当
为10时,输出为
为高电平,即为
输出值为1,通过逻辑门电路实现输出为
的值;当
为00时,输出为
为高电平,即为
输出值为1,同时当
为11时,输出为
为高电平,即为
输出值为1,由于此时
和
输出值为相同,故此两条数据线通过一个或门输出一条数据线,此时输出值为“00000000”。
正好实现三输入一输出的选择器模块。
(1)创建选择器设计原理图
三输入一输出选择器原理结构如图2.5所示:
图2.5选择器原理框图
(2)创建元件图形符号
其元件图形符号如图2.6所示:
图2.6选择器元件图形符号
(3)功能仿真
对创建的三输入一输出器模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.7所示:
图2.7选择模块仿真结果图
2.2.3乘数补码移位寄存器模块的设计与实现
乘数补码移位寄存器模块由AND2、OR2和8个寄存器组成,C端输入的是1个低电平信号其余都为高电平信号。
选择器由控制信号端,输入端,以及输出端
组成,当输入端为低电平信号时,选择经过与门、非门的转变输出信号,当输入端为高电平信号时,选择变换后输出信号。
每次的输出信号寄存到寄存器中,选择器输出端
连接下一位的寄存器,这样就实现了移位寄存的功能。
(1)创建乘数补码移位寄存器模块设计原理图。
乘数补码移位寄存器原理结构如图2.8所示:
图2.8乘数补码移位寄存器原理结构图
(2)创建元件图形符号
其元件图形符号如图2.9所示:
图2.9乘数补码移位寄存器电路模块元件图形符号
(3)功能仿真
对创建的乘数补码移位寄存器模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.10所示:
图2.10乘数补码移位寄存器模块仿真结果
2.2.4部分积移位寄存器模块的设计与实现
部分积移位寄存器模块是由一个8位寄存器(FD8CE)和四个逻辑门电路组成,实现部分积移位寄存功能。
由于部分积的初始值为“00000000”,这样就要求FD8CE寄存器的初始值为“00000000”,只需要给清零端
一个高电平的信号即可实现。
进行部分积移位时,要求移位过程中保证符号位相同,这样就需要把第一位符号位复制为两个数,而其余的6位相继向下串一位,这样就实现了移位功能,同时还保证的符号位相同。
(1)部分积移位寄存器设计原理图。
部分积移位寄存器原理结构如图2.11所示:
图2.11部分积移位寄存器原理图
(2)功能仿真
对创建的寄存器模块进行功能仿真,验证其功能的正确性,可用Xilinxfoundationf3.1编译器的Simulator模块实现。
仿真结果如图2.12所示:
图2.12部分积移位寄存器仿真结果
2.2.5加法器模块的设计与实现
加法器模块是在系统提供的八位加法器(ADD8)的基础上,根据实际情况改造而来。
由于系统ADD8的输入输出的高低位与前几个模块的正好相反,所以为了实现功能对ADD8进行了改装。
改装后内部结构如图2.13所示。
图2.13改装后加法器内部结构图
2.3仿真调试
仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。
通过多组数据进行仿真测试,分别对两个正数相乘,一个正数与一个负数相乘,两个负数相乘结果进行检验。
(1)建立仿真波形文件及仿真信号选择
功能仿真时,首先建立仿真波形文件,选择仿真信号,对选定的输入信号设置参数,选定的仿真信号和设置的参数如表2.3所示。
表2.3仿真信号相关参数表
输入信号
输出信号
S1—S7
Y1—Y7
CLR
CLOCK
FJW
I0—I7
0111011
0000100
10000000
01010101
0
00000011
1111011
0000100
10000000
01010101
0
11111100
1111011
1000100
10000000
01010101
0
00000011
(2)功能仿真结果与分析
仿真结果分别如图2.14
、
、
所示。
图2.14功能仿真波形结果
由表2.3和图2.14所示信息对比可知,多组仿真都完全正确,说明本设计能实现补码一位乘法计算功能。
但也存在少许差错,结果有时会出现错误。
第3章编程下载与硬件测试
3.1编程下载
利用COP2000仿真软件的编程下载功能,将得到.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
由于此次编译有点问题,最终没能成功下载到实验板的XCV200可编程逻辑芯片中。
参考文献
[1]曹昕燕.EDA技术实验与课程设计[M].北京:
清华大学出版社,2006
[2]范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:
北京邮电大学出版社,2006
[3]唐朔飞.计算机组成原理(第2版)[M].北京:
高等教育出版社,2008
[4]白中英.计算机组成原理(第四版)[M].北京:
科学出版社,2009
[5]胡越明.计算机组成与设计[M].北京:
科学出版社,2006
[6]江国强.EAD技术习题与实验[M].北京:
电子工业出版社,2005
[7]柳春风.电子设计自动化(EAD)教程[M].北京:
北京理工大学大学出版社,2005
附录(电路原理图)
课程设计总结:
本次课程设计,我受益匪浅。
当拿到课设题目后,我烦了想当然的错误,乐观的认为,题目很简单,原理很简单。
但在具体实行时却遇到许多困难,对Xilinxfoundationf3.1设计软件的陌生更加阻碍着我的进程。
于是,我决定塌下心来好好研究原理及软件的运用。
用了一天的时间将软件中的自带芯片的功能查询了一遍,基本找到需要的芯片。
之后,又学习了对电路封装的方法,再后来就能灵活的操作该软件,这对整个电路的设计很有帮助。
随后开始将各个部件连接到一起,这里也充满学问,不是单单的组合在一起,而是要综合考虑整体电路的节拍,以保证各个部件有序工作。
没有找到现成的三选一芯片,我只好自己设计。
设计的过程还真是痛苦,头脑中不断出现想法,但有一个个被现实否定,只能另寻方法。
不过,功夫不负有心人。
终于,我的想法终于在现实中实现了,就这样我完成了三选一芯片的设计,那时的我有一种释然的感觉,不过,我知道这只是一小步,要想最终完成还有很长的路要走,所以要继续努力。
在课设期间,我老师和同学都给予我很大的帮助,老师们总是不厌其烦的为我解决疑惑,同学们总是在我要放弃时鼓励我,这些都使我的课设顺利完成,在这里我要衷心说声谢谢,这份珍贵的经历,我会永远记在心中。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩