组成原理课程设计报告(浮点数加法器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

组成原理课程设计报告(浮点数加法器
LT
第1章总体设计方案
1.1 设计原理
本次课程设计的题目为浮点数加法器的设计,使用Xilinx Foundation F3.1可编程器件开发工具软件,以及伟福COP2000试验箱实现目的设计。

具体要求为必须用基本逻辑门实现,浮点数的长度固定。

根据所学可知,浮点数共由两部分组成。

第一部分是阶码,第二部分是数据。

这两部分又分别分为两部分。

阶码由阶符和数值组成,数据由数符和数字组成。

由于在计算机的存储和运算中,数据由补码表示。

故首先应将输入的原码转化为补码。

在此过程中,正数保持不变,负数则对除符号位以外的各位按位取反,再进行加1操作。

然后对两数的阶码进行运算,决定移位的次数和结果的阶码。

在移位时,对正数进行补0操作,对负数则进行补1操作。

再对移位后的数据视为定点数进行相加运算。

进而实现浮点数相加的功能。

最后再将得到的结果转化为原码,进行输出。

1.2设计思路
按照课设题目要求及原理图,先设计出电路的具体模块图,浮点数加法器的设计共包含如下五个模块:
①原补转换模块
②阶码选择模块
③数值选择模块
④数据移位模块
⑤超前进位加法模块
在五个部分中分别设计实现相应功能的器件,包括二选一数据选择器等。

在连接具体电路时配合门电路以达到预期效果。

浮点数加法器的底层、顶层的设计都采用原理图设计输入方式,经编译、调试后形成zyks.bit文件并下载到XCV200可编程逻辑芯片中,经硬件测试验证设计的正确性。

1.3设计环境
1.3.1 硬件环境
•伟福COP2000型计算机组成原理实验仪
COP2000计算机组成原理实验系统由实验平台、开关电源、软件三大部分组成实验平台上有寄存器组R0-R3、运算单元、累加器A、暂存器B、直通/左移/右移单元、地址寄存器、程序计数器、堆栈、中断源、输入/输出单元、存储器单元、微地址寄存器、指令寄存器、微程序控制器、组合逻辑控制器、扩展座、总线插孔区、微动开关/指示灯、逻辑笔、脉冲源、20个按键、字符式LCD、RS232口。

系统在实验时即使不借助PC 机,也可实时监控数据流状态及正确与否, 实验系统的软硬件对用户的实验设计具有完全的开放特性,系统提供了微程序控制器和组合逻辑控制器两种控制器方式,系统还支持手动方式、联机方式、模拟方式三种工作方式,系统具备完善的寻址方式、指令系统和强大的模拟调试功能。

1.3.2 EDA环境
•Xilinx foundation f3.1设计软件
Xilinx foundation f3.1是Xilinx公司的可编程期间开发工具,该平台功能强大,主要用于百万逻辑门设计。

该系统由设计入口工具、设计实现工具、设计验证工具三大部分组成。

设计入口工具用于接收各种图形或文字的设计输入,并最终生成网络表文件。

设计实现工具用于将网络表转化为配置比特流,并下载到器件。

设计验证工具用来对设计中的逻辑关系及输出结果进行检验,并分析各个时序限制的满足情况。

•COP2000集成调试软件
COP2000 集成开发环境是为COP2000 实验仪与PC 机相连进行高层次实验的配套软件,它通过实验仪的串行接口和PC 机的串行接口相连,提供汇编、反汇编、编辑、修改指令、文件传送、调试FPGA 实验等功能,该软件在Windows 下运行。

第2章详细设计方案
2.1 总体方案的设计与实现
本课设要求控制信号可以采用外部开关输入或用VHDL语言编写的控制器输出的控制信号,其他部分可以调用系统资源库中的器件;必须用基本的逻辑门实现,然后封装。

通过设计和分析,将本次设计分为五个模块来实现。

原补转换模块用于整个过程中的原补转换。

如将输入的原码转换为补码。

阶码选择模块用于选择结果的阶码。

数值选择模块用于选择需要移位的数据并将其传送给移位器。

数据移位模块用于将需要移位的数据进行移位并将其传送给加法器进行相加运算。

超前进位加法模块用于过程的各种计算。

例如补码的相减和数据的相加。

本次实验逻辑层次分明,共分为六个层次,分别完成输入的原补转换,移位次数的计算,数据选择,数据移位,数据相加计算及最后结果的输出。

其总体设计框图如图2.1所示。

图2.1 浮点数加法器整体设计框图
2.2功能模块的设计与实现
2.2.1 原补转换模块的设计与实现
2.2.1.1 功能描述
由于在计算机内部数据的存储以及运算是以补码的方式进行,因此首先我们应将输入的原码转换为补码。

对于正数(带符号位)来说,其原码、补码一致。

对于负数(带符号位)来说,其反码为符号位不变,其余各位按位取反(即反码)后末位加1。

故对原补转换模块来说,其功能为将输入的原码转化为补码。

其输入为原始数据的原码,输出为供以后继运算的补码。

2.2.1.2 电路图
正数的符号位为0,负数的符号位为1,故如将符号位与数据位进行异或运算,即可获得反码。

而对于正数原码、反码、补码相同。

而负数的补码则为反码加1,加1操作可由数据位的末位与上符号位产生,经由与门逐级传递进位。

并且由于正数的符号位为0,该逻辑对正数无影响。

其电路图如图2.2所示。

图2.2 原补转换电路
封装图如图2.3所示。

图2.3 原补转换芯片封装外观图
2.2.1.3 功能仿真
表2.1 原补转换电路测试数据
输入数据输出数据1,10010111010 1,01101000110
0,10010111010 0,10010111010
1,01101001011 1,10010110101
0,00110110100 0,00110110100 测试数据如表2.1所示。

图2.4 原补转换电路测试图
仿真图说明:
图2.4中,红线所示数据输入为1,10010111010,其真实输出为1,01101000110。

蓝线所示数据输入为0,00110110100,其真实输出为0,00110110100。

从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。

2.2.2 阶码选择模块的设计与实现
2.2.2.1 功能描述
对于浮点数来说,在运算时需要进行对阶操作,然后选择较大的阶码作为输出结果的阶码,并且对阶码较小的数字的补码进行移位操作。

故阶码选择模块的输入与输出均为阶码的补码。

其功能为对阶码进行选择。

2.2.2.2 电路图
在阶码选择电路中,我们采用了二选一数据选择器。

它包括一个控制端S0,两个数据输入端D0,D1及一个数据输出端O。

其真值表如表2.2:
表2.2 二选一数据选择器真值表控制端S0 输入端D0 输入端D1 输出端O
0 0 X 0
0 1 X 1
1 X 0 0
1 X 1 1
由真值表可看出。

当S0为0时,输出为D0,S0为1时,输出为D1。

故可将两阶码相减之后产生的符号位作为S0的输入信号,被减数的阶码与D0相连,件数的阶码与D1相连,这样就可以实现选择输出。

其电路图如图2.5所示。

图2.5 补码选择电路
封装图如图2.6所示。

图2.6 补码选择电路封装效果图2.2.2.3 功能仿真
表2.3 补码选择电路测试数据
COIN(相减符号位)输入阶
码1
输入阶码
2
输出阶码
0 0110 0011 0110
1 1010 1100 1100 测试数据如表2.3所示。

图2.7 补码选择电路测试图
仿真图说明:
图2.7中,红线所示数据输入C0IN为1,阶码1为1010,阶码2为1100,其真实输出1100。

蓝线所示数据输入COIN为0,阶码1为0110,阶码2为0011,其真实输出为0110。

从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。

2.2.3 数值选择模块的设计与实现
2.2.
3.1 功能描述
在对阶过程结束后,需要对阶码较小的数字的补码进行移位操作。

这时便需要对输入的两个数据进行选择,然后再进行移位和相加等操作。

故数值选择模块的输入与输出均为数值的补码。

其功能为对数值进行选择和分流输出。

2.2.
3.2 电路图
在数值选择电路中,我们同样采用了二选一数据选择器。

但此时,输出由原来的4位更改为了8位,即输入的两组数值均要进行输出。

其中,高四位为需要进行移位的数据,低四位为不需要进行移位的数据。

此时的COIN(与数据选择器的控制端S0相连)仍为两阶码相减之后产生的符号位。

被减数连至A23-A20,减数连至A13-A10。

其电路图如图2.8所示。

图2.8 数值选择器电路图封装图如图2.9所示。

图2.9 数值选择电路封装效果图2.2.3.3 功能仿真
表2.4 数据选择电路测试数据
COIN(相减符号位)输入数
值1
输入数值
2
输出数值
0 0110 0011 0110,001
1
1 1010 1100 1100,101
测试数据如表2.4所示。

图2.10 数值选择电路测试图
仿真图说明:
图2.10中,红线所示数据输入C0IN为1,数值1为1010,数值2为1100,其真实输出11001010。

蓝线所示数据输入COIN为0,数值1为0110,数值2为0011,其真实输出为01100011。

从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。

2.2.4 数据移位模块的设计与实现
2.2.4.1 功能描述
经过对阶过程与数据选择过程后,我们得到了移位的次数和待移位的数据,接下来则需要用数据移位模块对数据进行移位操作。

故数据移位模块的输入为待移位的数据(补码)与移位次数(原码),输出为移位后的数据(补码)。

其功能为对数据进行移位和输出。

2.2.4.2 电路图
根据计算机中数据存储的特点可知S2,S1,S0的位权分别为4,2,1。

即若S2为1,数据需右移四位,S1为1,数据需右移两位,S0为1,数据需右移一位。

另根据数据补位的原则可知,如原数据为正数则补0,为负数则补1。

故当S0为控制信号时,可在相邻两位间用二选一数据选择器相连,当S0为1时输出高位,
S0为0时输出低位。

本级的输出用以作为当S1为控制信号时的输入。

当S1为控制信号时,每隔一位进行选择。

同理S2为控制信号时,每隔三位进行选择。

而对于补位来说,则由符号位与数据位进行数据选择得到。

S0为控制信号时符号位仅与最高位相与,S1为控制信号时符号位与最高两位相与,S3时则为最高四位。

S0作为控制信号时的输出为S1作为控制信号时的输入,S1为控制信号的输出为S2是控制信号时的输出。

最后的输出仅有数据位,不含符号位。

其电路如图2.11所示。

图2.11 数据移位器电路图
封装图如图2.12所示。

图2.12 数值移位电路封装效果图2.2.4.3 功能仿真
表2.5 数据移位电路测试数据
移位次数S2-S0 输入数值
C,A10-A0
输出数值
B10-B0
010 0,1101000
1011 001101000
10
101 1,0010111
0011 111110010
11
测试数据如表2.5所示。

图2.13 数据移位电路测试图
仿真图说明:
图2.13中,红线所示数据,输入S2,S1,S0为010,数值为0,11010001011,其真实输出为00110100010。

对于蓝线所示数据,输入S2,S1,S0为101,数值为1,00101110011,其真实输出为11111001011。

从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。

2.2.5 加法模块的设计与实现
2.2.5.1 功能描述
在上述模块全部运行结束后,需要将得到的移位过的数据进行相加得到最终的结果。

故加法模块的输入为数据移位器输出的一组移位后的数据已经数据选择
器输出的一组不移位的数据。

输出为相加之后的数据。

其功能是实现两个数的超前进位加法运算。

2.2.5.2 电路图
设二进制加法器第i位为A
i ,B
i
,输出为S
i
,进位输入为C
i
,进位输出为C
i+1

则有:S
i =A
i
⊕B
i
⊕C
i
,C
i+1
=A
i
*B
i
+A
i
*C
i
+ B
i
*C
i
=A
i
*B
i
+(Ai+Bi)*C
i。

令G
i
=A
i
*B
i
,P
i
=
A
i +B
i
,则C
i+1
= G
i
+ P
i
*C
i
当A
i
和B
i
都为1时,G
i
=1,产生进位C
i+1
=1。

当A
i
和B
i

一个为1时,P
i = 1,传递进位C
i+1
= C
i。

因此G
i
定义为进位产生信号,P
i
定义为
进位传递信号。

G
i 的优先级比P
i
高,也就是说:当G
i
= 1时无条件产生进位,而
不管C
i 是多少;当G
i
=0而P
i
=1时,进位输出为C
i
,跟C
i
之前的逻辑有关。

设4位加数和被加数为A和B,进位输入为C
in ,进位输出为C
out
,对于第i位的
进位产生G
i =A
i
·B
i
,进位传递P
i
=A
i
+B
i
,i=0,1,2,3
于是对于各级进位输出,递归的展开C
i
有:
C
0=C
in
C
1=G
+P
·C
C
2=G
1
+P
1
·C
1
=G
1
+P
1
·G0+P
1
·P
·C
C
3=G
2
+P
2
·C
2
=G
2
+P
2
·G
1
+P
2
·P
1
·G
+P
2
·P
1
·P
·C
C
4=G
3
+P
3
·C
3
=G
3
+P
3
·G
2
+P
3
·P
2
·G
1
+P
3
·P
2
·P
1
·G
+P
3
·P
2
·P
1
·P
·C
C
out=C 4
由此可以看出,各级的进位彼此独立产生,只与输入数据和C
in
有关,将各级间的进位级联传播给去掉了,因此减小了进位产生的延迟。

故其电路图如图2.14所示。

图2.14 4位超前进位加法器电路图封装图如图2.15所示。

图2.15 4位超前进位加法器封装效果图2.2.5.3 功能仿真
表2.6 加法电路测试数据
上级进位C0 输入数

A3-A0
输入数
值B3-B0
输出数

0 1011 0100 1111
1 0101 1001 1111
测试数据如表2.6所示。

图2.16 加法电路测试图
仿真图说明:
图2.16中,红线所示数据,输入C0为1,数值A3-A0为0101,B3-B0为1001,其真实输出为1111。

对于蓝线所示数据,输入C0为1为0,数值A3-A0为1011,B3-B0为1001,其真实输出为1111。

从仿真结果分析,对于给定的例子,其输出与预想的输出完全一致,说明电路的实现符合设计要求。

2.3 总电路仿真测试
仿真测试试主要验证设计电路逻辑功能、时序的正确性,本次设计为浮点数加法器,设计完成主要采用功能仿真方法对设计的电路进行仿真从而验证其电路功能的正确性。

(1)建立仿真波形文件及仿真信号选择
功能仿真时,首先建立仿真波形文件,数据输入AJ3-AJ0、AS11-AS0、BJ3-BJ0、BS11-BS0,结果输出为OJ3-OJ1、OS11-OS0。

(2)功能仿真结果与分析
图2.17 总电路仿真波形
图2.18 总电路输出结果
仿真图说明:
如图 2.17、2.18从波形可以清楚的看出输入和输出结果,在本次测试中输入的两个数为分别为0,010,0,01101011001与1,011,1,00011010100。

从图2.17、2.18可以看到输出结果为0,010,0,01101010010,经过对比正确无误,即说明总的电路设计成功,符合课设题目的基本要求。

第3章编程下载与硬件测试
3.1 编程下载
在编译完成后,利用COP2000仿真软件的编程下载功能,将得到的zyks.bit 文件下载到XCV200实验板的XCV200可编程逻辑芯片中。

3.2 硬件测试及结果分析
利用XCV200实验板进行硬件功能测试。

浮点数加法器的全部输入数据通过XCV200实验板的输入开关实现,输出数据通过XCV200实验板的LED指示灯实现,其对应关系如表3.1所示。

表3.1 XCV200实验板信号对应关系
OS7 P147 A7
OS6 P152 A6
OS5 P178 A5
OS4 P184 A4
OS3 P185 A3
OS2 P203 A2
OS1 P111 A1
OS0 P110 A0 利用表2.2中的输入参数作为输入数据,逐个测试输出结果,即用XCV200实验板的开关组K4、K3、K2、K1输入数据,同时观察LED指示灯显示结果,得到如图3.1所示的硬件测试结果。

图3.1 硬件测试结果图
参考文献
[1] 曹昕燕. EDA技术实验与课程设计[M].北京:清华大学出版社,2006
[2] 唐朔飞.计算机组成原理(第二版)[M].北京:高等教育出版社,2008
[3] 李景华. 可编程程逻辑器件与EDA技术[M].北京:东北大学出版社,2001
[4] 王爱英.计算机组成与结构(第4版)[M].北京:清华大学出版社,2006
[5] 王冠.Verilog HDL与数字电路设计[M].北京:机械工业出版社,2005
[6] 江国强.EAD技术习题与实验[M].北京:电子工业出版社,2005
[7] 杜建国.Verilog HDL硬件描述语言[M].北京:国防工业出版社,2004
沈阳航空航天大学课程设计报告附录。

相关文档
最新文档