课 程 设 计 报 告
课程设计名称:计算机组成原理课程设计
课程设计题目:阵列乘法器的设计
院(系):计算机学院
专 业:计算机科学与技术
班 级:4401102
学 号:20040*******
* *** * *
***** *
完成日期:2006年12月31日
第1章 总体设计方案
1.1 设计原理
串行方法毕竟太慢,执行一次乘法的时间至少是执行一次加法时间的n倍,不能满足科学技术对高速乘法所提出的要求。自从大规模集成电路问世以来,高速的单元阵列乘法器应运而生,出现了各种形式的硬件乘法器的常规设计是适用“串行移位”和“并行加法”相结合的方法,这种方法并不需要很多器件。然而流水线阵列乘法器,它们属于并行乘法器,提供了极快的速度。
如图所示的一个阵列乘法器完成X*Y乘法运算(X=X1X2X3X4,Y=Y1Y2Y3Y4)。阵列的每一行送入乘数Y的每一位数位,而各行错开形成的每一斜列则送入被乘数的每一数位。图中每一个方框包括一个与门和一个两位全加器。
阵列乘法器的原理框图如图1.1所示,X[4:1],Y[4:1]分别是乘数和被乘数输入端,MULT[8:1]为乘积输出端。
图1.1 阵列乘法器原理框图
阵列乘法器实现的功能是计算两个四位二进制间的算法,由数据总线将乘数Y[4:1]和被乘数X[4:1]送到乘法器中,经阵列乘法器计算出结果由总线MULT[8:1]输出。阵列乘法器是由相同的细胞块构成,呈阵列阵型。
阵列乘法器完X*Y乘法运算X=X1X2X3X4,Y=Y1Y2Y3Y4)。阵列的每一行送入乘数Y的每一位数位,而各行错开形成的每一斜列则送入被乘数的每一数位。在设计的电路中,有许多相同的细胞块组成,而细胞块包括一个与门和一个2位全加器。 X、Y、PIN、CIN是输入,COUT、POUT是输出。
在设计的过程中,采用的是由内到外封装,也就是先将最底层电路封装到创建的器件中,由外到内一层套一层。整个阵列乘法器主要由阵列块组成,而 阵列块是由与门和二位全加器组成,所以在封装的时候,先把二位全加器封装到ADD2中,然后将ADD2和与门封装到细胞块PART中,最后将PART封装到乘法器MUX中,和输入、输出组成完整的电路。
阵列乘法器的整体设计主要是由相同的细胞块实现的,而细胞块包含两输入与门模块和二位全加器模块,两输入与门模块和全加器模块作为底层设计,采用原理图设计输入方式,顶层的全加器采用原理图设计输入方式。
1.3 设计环境
·硬件环境:伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机。
·EDA环境:FOUNDATION设计软件。主要用于百万逻辑门设计。该系统由设计入口工具、设计实现工具、设计验证工具三大部分组成。设计入口工具包括原理图编辑器、有限状态机编辑器、硬件描述语言(HDL)编辑器、LogiBLOX模块生成器、Xilinx内核生成器等软件。气功能是:接收各种图形或文字的设计输入,并最终生成网络表文件。设计实现工具包括流程引擎、编辑器、基片规划器、FPGA编辑器、FPGA写入器等软件。设计实现工具用于将网络表转化为配置比特流,并下载到器件。时设计验证工具包括功能和时序仿真器、静态时序分析器等,可用来对设计中的逻辑关系及输出结果进行检验,并详尽分析各个时序的满足情况。
COP2000 集成开发环境是为COP2000 实验仪与PC 机相连进行高层次实验的配套软件,该软件在Windows 下运行。
第2章 详细设计方案
2.1 顶层方案图的设计与实现
顶层方案图实现阵列乘法的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1创建顶层图形设计文件
顶层图形文件主要由三大块组成:分别是乘数、被乘数的输入、乘积输出、和自己封装的乘法器件MUX组装而成的一个完整的设计实体。可利用Xilinx ISE ECS模块实现顶层图形文件的设计,顶层图形文件结构如图2.1所示。
图2.1 阵列乘法器的顶层图形文件结构
2.1.2器件的选择与引脚锁定
(1)器件的选择
由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为Xlinx XCV200可编程逻辑芯片。
(2)引脚锁定
把顶层图形文件中的输入/输出信号安排到Xlinx XCV200芯片指定的引脚上去,实现芯片的引脚锁定,各信号及Xlinx XCV200芯片引脚对应关系如表2.1所示。
芯片和管脚对应表:
| 芯片内部信号 | 图形文件中的输入、输出信号 | 对应的管脚 |
| X1 | A1 | P94 |
| X2 | A2 | P95 |
| X3 | A3 | P96 |
| X4 | A4 | P97 |
| Y1 | B1 | P100 |
| Y2 | B2 | P101 |
| Y3 | B3 | P12 |
| Y4 | B4 | P103 |
| MULT1 | M1 | P215 |
| MULT2 | M2 | P216 |
| MULT3 | M3 | P217 |
| MULT4 | M4 | P218 |
| MULT5 | M5 | P220 |
| MULT6 | M6 | P221 |
| MULT7 | M7 | P222 |
| MULT8 | M8 | P223 |
功能模块中,包括乘法器(MUX)、细胞块(PART)、全加器都是由逻辑框图设计实现的。
2.2细胞块PART的设计与实现
(1)创建元件图形符号:
细胞块由一个与门和一个全加器实现,其中X、Y、PIN、CIN是输入端,COUT、POUT是输出端
:
(2)实现器件功能:
(3)功能仿真
对创建的半加器元件(H_ADDER)进行功能仿真,验证其功能的正确性,可用Xilinx ISE编译器的Simulator模块实现。
| X | Y | PIN | CIN | POUT | COUT |
| 1 | 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 | 0 |
| 0 | 0 | 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 0 |
2.2.3 乘法器的设计与实现
(1)创建图形符号
其中X[4:1]是被乘数输入、Y[4:1]是乘数输入,MULT[8:1]是乘积输出,都是经过总线传输的。
(2)器件实现
(2)功能仿真
| 被乘数X | 乘数Y | 乘积MULT |
| 05 | 04 | 14 |
| 03 | 08 | 18 |
| 0A | 09 | 5A |
| 04 | 0B | 2C |
功能仿真波形结果如图所示,仿真数据结果如表所示。对表与表的内容进行对比,可以看出功能仿真结果是正确的,进而说明电路设计正确性。
2.3仿真调试
仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。
(1)建立仿真波形文件及仿真信号选择
功能仿真时,首先建立仿真波形文件,选择仿真信号,对选定的输入信号设置参数,选定的仿真信号和设置的参数如表2.2所示。
表2.2 仿真信号选择和参数设置
| 被乘数 | 乘数 | 乘积 |
| X1X2X3X4 | Y1Y2Y3Y4 | MULT( M1M2M3M4M5M6M7M8) |
| 0000 | 1001 | 01100011 |
| 1000 | 0011 | 00011000 |
| 0010 | 0110 | 00001100 |
| 1010 | 0111 | 01000110 |
功能仿真波形结果如图所示,仿真数据结果如表所示。对表与表的内容进行对比,可以看出功能仿真结果是正确的,进而说明电路设计正确性。
第3章 编程下载与硬件测试
3.1 编程下载
利用编程下载功能,将得到的farewell.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.2 硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。阵列乘法的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。
XCV200实验板信号对应关系
| 图形的输入、输出信号 | 对应的管脚 | 控制开关 | |
| 被乘数 X1X2X3X4 | A1A2A3A4 | P94 P95 P96 P97 | K0 |
| 乘数 Y1Y2Y3Y4 | B1B2B3B4 | P100 P101 P102 P103 | K0 |
| 乘积 | M1M2M3M4 M5M6M7M8 | P215 P216 P217 P218 P220 P221 P222 P223 | D0 |
利用表中的输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关K0输入数据,同时观察D0的输出,得到如表3.2所示的硬件测试结果。
表3.2 硬件测试结果
| 控制开关K0(S0S1S2S3 S4S5S6S7) | 数码管显示 | |
| S0S1S2S3 | S4S5S6S7 | |
| 1011 | 1001 | 63 |
| 0011 | 0100 | 0C |
| 1010 | 0101 | 32 |
对表与图的内容进行对比,可以看出硬件测试结果是正确的,说明电路设计完全正确。
参考文献
[1] 曹昕燕. EDA技术实验与课程设计[M].北京:清华大学出版社,2006
[2] 范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:北京邮电大学出版社,2006
[3] 王爱英.计算机组成与结构(第4版)[M].北京:清华大学出版社,2006
[4] 李勇. 计算机原理与设计(修订本).长沙:国防科技大学出版社,19
[5] 王尔乾.数字逻辑与数字集成电路.北京:清华大学出版社,1996
[6]白中英.计算机组成原理.北京:科学出版社,1994
[7]葛本修.计算机组织与结构.北京:北京航空航天大学出版社,1992
附录:电路图
课程设计总结:
紧张而有充实的十天过去了,在这次计算机组成原理课程设计中我得到了很多,也失去了很多,也发现了很多问题,先从以下三个方面对自己这十来天的课设做个总结:
1、在这次课程设计中遇到了许许多多的问题。我的课程设计的题目是〈〈阵列乘法器的设计〉〉,对什么是阵列是个很陌生的概念,还有后来在机器上实现算法时,没有输出结果,以及后来仿真成功但下载失败等等。对于第一个,只有上网或是去图书馆找资料,第二个几经调试发现是与总线相连的分支在起名时发生了错误,最后一个问题是由于没有在执行时修改里面的时钟选项,当然这是我遇到很多问题中的几个;
这次课程设计除了要完成任务书上的各项功能,也使得自己学会了使
软件,以及调式,也从老师那里学到了很多平时学不到的知识和怎么去学习;
在这次课程设计中,我想了很多也认识了许多。在我们面对陌生或是棘的问题时,不应该选择逃避或是放弃的态度,有许多事情并不是我们想象中的那样复杂或是困难,要试着接触它,慢慢把它给弄明白。还有,就是应该多和老师沟通沟通,别以为的沿着固有的思路走下去,要学会变通。
| 总的来说,这次的课程设计收获很大,当然也曾沮丧过,受益非浅啊。 | |
| 指导教师评语: 指导教师(签字): 年 月 日 | |
| 课程设计成绩 | |