沈阳航空工业学院课程设计报告课程设计名称:计算机组成原理课程设计课程设计题目:定点补码一位乘法器的设计院(系):计算机学院专业:计算机科学与技术班级:*****学号:*****姓名:*****指导教师:*****完成日期:2006年12月31日沈阳航空工业学院课程设计报告目录第1章总体设计方案 (2)1.1补码乘法器设计原理 (2)1.2设计思路 (4)1.3设计环境 (5)第2章详细设计方案 (5)2.1补码乘法器电路图的设计与实现 (6)2.1.1 补码乘法器设计 (6)2.1.2 器件的选择与引脚锁定 (8)2.1.3 编译、综合、适配 (8)2.2功能模块的设计与实现 (9)2.2.1 两输入三选一选择器模块的设计与实现 (9)2.2.2 半加器模块的设计与实现 .............................................. 错误!未定义书签。
2.3仿真调试 (10)第3章编程下载与硬件测试 (12)3.1编程下载 (12)3.2硬件测试及结果分析 (12)参考文献 (14)第1章总体设计方案1.1 补码乘法器设计原理原码乘法的主要问题是符号位不能参加运算,单独用一个异或门产生乘积的符号位,故自然提出能否让符号数字化后也参加乘法运算,补码乘法就可以实现符号位直接参加运算。
布斯(Booth)算法,它采用相加和相减的操作计算补码数据的乘积,Booth算法对乘数从低位开始判断,根据两个数据位的情况决定进行加法、减法还是仅仅移位操作。
Booth算法操作表示判断的两个数据位为当前位及其右边的位(初始时需要增加一个辅助位0),移位操作是向右移动。
判断被乘数中的最低位以及右边的位(辅助位0),如果为00,则只进行移位操作;之后在判断移位之后的最后两位,如果为01,则进行加法操作并进行移位操作;如果最后两位为10,则进行减法操作并移位,这个减法操作相当于减去2x的值;判断最后的差值,如为1,则部分积加[X]补;如为0,则不分积加0;如为-1,则部分积加[-X]补,最后一次不移位。
实现这种补码乘法规则时,在乘数最末位后面要增加一位补充位y n+1。
开始时,由y n y n+1 判断第一步该怎么操作;然后再由y n- 1 y n判断第二步该怎么操作。
因为每做一步要右移一位,故做完第一步后,y n- 1 y n正好移到原来y n y n+1的位置上。
依此类推,每步都要用y n y n+ 1位置进行判断,我们将这两位称为判断位。
如果判断位y n y n+1 = 01,则y i+1… y i = 1,做加[x]补操作;如果判断位y n y n+1 = 10,则y i+1… y i = - 1,做加[ - x]补操作;如果判断位y ny= 11 或 00,则 y i+1… y i = 0,[ z i ] 加0,即保持不变。
n+1Booth乘法算法的流程图下面为补码设计原理框图,用加法器,移位寄存器,计数器,多路开关,和控制电路实现补码乘法,如图1.1:图1.1 补码乘法原理框图1.2 设计思路根据补码一位乘法运算规则:(1) 如果 y n = y n+1,部分积 [ z i ] 加0,再右移一位;(2) 如果 y n y n+1 = 01,部分积加[ x ]补,再右移一位;(3) 如果 y n y n+1 = 10,部分积加[ - x]补,再右移一位;这样重复进行 n+1 步,但最后一步不移位。
包括一位符号位,所得乘积为 2n+1 位,其中 n 为尾数位数。
,设计一个二输入三选一选择器对可能的三种情况进行选择。
当选择器中输入为Yi Yi+1为00或者11时,由一寄存器一端接GND ,另一端对其进行零输入;当选择器中输入为Yi Yi+1为01时,对其进行[X]补输入;当选择器中输入为Yi Yi+1为10时,对[X]补输入端加一非门和一加法器对其进行取反加1输入。
输出结果与一个一端接GND 初始置零的寄存器相连接于一个加法器,实现部 分积加法运算计算结果存放于两个相同的移位寄存器中,当部分积相加之后,由两个移位寄存器同时对部分积的和进行移位操作。
最后由两个移位寄存器的输出端连接至选择器重新选择进行循环操作,直到部分积移位结束。
1.3 设计环境·硬件环境:伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机;·EDA环境:Xilinx foundation f3.1设计软件、COP2000仿真软件。
第2章详细设计方案2.1 补码乘法器电路图的设计与实现顶层方案图实现选择器的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。
在完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。
2.1.1补码乘法器设计补码乘法器主要由一个三选一数据选择器组装而成的一个完整的设计实体。
其实现补码一位乘功能,其与原码一位乘有如下区别:被乘数的符号和乘数的符号都参加运算。
乘数寄存器R1有附加位y n+1 ,其初始状态为“0”。
当乘数和部分积每次右移时,部分积最低位移至R1 的首位位置,故 R1必须是具有右移功能的寄存器。
被乘数寄存器R2的每一位用原码(即触发器 Q 端)或反码(即触发器Q端)经多路开关传送到加法器对应位的一个输入端,而开关的控制位由和y n的y n+1 输出译码器产生。
当y n y n+1 = 01时,送[x]补;当y n y n+1= 10时,送[-x]补,即送的反码且在加法器最末位上加“1”。
R0 保存部分积,它也是具有右移功能的移位寄存器,其符号位与加法器∑f符号位始终一致。
当计数器i = n +1 时,封锁 LD R0和LD R1控制信号,使最后一位不移位。
补码乘法器由加法器,移位寄存器,寄存器,计数器,多路开关,和控制电路实现补码乘法,可利用Xilinx ISE ECS模块实现顶层图形文件的设计,通过认真分析和同学共同研讨,得到乘法器电路图,如图2.1所示。
图2.1 补码一位乘具体实现芯片连接图2.1.2器件的选择与引脚锁定(1)器件的选择由于硬件设计环境是基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,故采用的目标芯片为Xlinx XCV200可编程逻辑芯片。
(2)引脚锁定2.1.3编译、综合、适配利用Xilinx ISE编译器对顶层图形文件进行编译、综合、优化、逻辑分割、适配和布线,生成可供时序仿真的文件和器件下载编程文件。
2.2 功能模块的设计与实现二输入三选一选择器、两个寄存器、一个加法器和一个非门共同实现数据选择功能,其中一个寄存器和选择器一端相连起零输入作用,选择器一端输入[X]补,将该端连接一非门和一个加一的加法器输出端连接至选择器2.2.1两输入三选一选择器模块的设计与实现两输入数据选择器的两个输入分别用s0、s1表示,输出用q表示,形成的VHDL程序用ORM2.VHD表示,其设计过程如下。
(1)创建VHDL源文件module prc (a,b,c,s0,s1,q);input [7:0] a ;wire[7:0] a ;input [7:0] b ;wire[7:0]c;input [7:0]c ;wire[7:0]c;input s0;input s1 ;wire s0,s1;output [7:0] q ;reg [7:0] q ;always@(s0 or s1 or a or b or c)begin;if(s0==1'b0&&s1==1'b0)q[7:0]=a[7:0];else if(s0==1'b0&&s1==1'b1)q[7:0]=b[7:0];else if(s0==1'b1&&s1==1'b1)q[7:0]=c[7:0];elseq[7:0]=a[7:0];endendmodule(2)创建元件图形符号为了能在图形编辑器(原理图设计输入方式)中调用此两输入三选一数据选择器,需要为ORM2创建一个元件图形符号,可用Xilinx ISE编译器的CreateSymbol模块实现。
(3)功能仿真对创建的三选一数据选择器元件进行功能仿真,验证其功能的正确性,可用Xilinx ISE编译器的Simulator模块实现。
(2)创建元件图形符号为了能在图形编辑器(原理图设计输入方式)中调用此半加器,需要为H_ADDER创建一个元件图形符号,可用Xilinx ISE编译器的Create Symbol模块实现。
(3)功能仿真对创建的半加器元件(H_ADDER)进行功能仿真,验证其功能的正确性,可用Xilinx ISE编译器的Simulator模块实现。
2.3 仿真调试仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进行仿真。
(1)建立仿真波形文件及仿真信号选择功能仿真时,首先建立仿真波形文件,选择仿真信号,对选定的输入信号设置参数,选定的仿真信号和设置的参数如表所示。
(2)功能仿真结果与分析图2.3-1 补码乘法器仿真波形图由表2.3-1和图2.3-1所示信息对比可知,仿真正确,能实现补码一位乘法计算功能。
第3章编程下载与硬件测试3.1 编程下载利用Xilinx ISE的编程下载功能,将得到的*.bin文件下载到XCV200实验板的XCV200可编程逻辑芯片中。
3.2 硬件测试及结果分析利用XCV200实验板进行硬件功能测试。
三选一数据选择器的输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。
表3.2-1 XCV200实验板信号对应关系输入数据,逐个测试输出结果,即用XCV200实验板的开关K1、K2输入数据,同时观察LED1的输出,得到如表3.2所示的硬件测试结果。
表3.2-1 硬件测试结果对表3.2-1与表1.1-1的内容进行对比,可以看出硬件测试结果是正确的,说明电路设计完全正确。
参考文献[1] 曹昕燕.EDA技术实验与课程设计[M].北京:清华大学出版社,2006[2] 范延滨.微型计算机系统原理、接口与EDA设计技术[M].北京:北京邮电大学出版社,2006[3] 王爱英.计算机组成与结构(第4版)[M].北京:清华大学出版社,2006[4] 胡越明.计算机组成与设计[M].北京:科学出版社,2006[5]廖裕评,陆瑞强.CPLD数字电路设计--使用MAX+PLUSⅡ[M].北京:清华大学出版社,2001.217-221.沈阳航空工业学院课程设计报告。