Verilog浮点加法器设计

计算机组成原理的大作业,用Verilog HDL设计的一个带四舍五入功能的浮点加法器,使用比较容易入门的行为级建模。呈上以便后人。。。

拖到最后两天天才写,比较仓促,会有一些bug。

项目地址:https://github.com/Candyroot/Floating-Point-Addition

代码依照GNU GENERAL PUBLIC LICENSE发布。

一.    设计思路

使用Verilog HDL的行为级建模方式,根据浮点加法器组成的参考设计图来进行设计。符合IEEE754短实数浮点数格式标准。

程序共分为14个模块,模块名及各自的功能分别为:

  1. Mux_1:选通器1。根据Control信号选择,使其中较大的阶码输出。
  2. Mux_2:选通器2。根据Control信号选择,使阶码较小的数输出。
  3. Mux_3:选通器3。根据Control信号选择,使阶码较大的数输出。
  4. Small_Alu:阶码运算器。计算出两个浮点数阶码之差的绝对值。将结果送到Control。
  5. Shift_Right:右移模块。根据Control送来的移位位数,对阶码较小数的尾数向右移位。
  6. Big_Alu:浮点加法运算模块。将Shift_Right与Mux_3送来的数进行相加,最后保留两位以供四舍五入,并且增加符号位,溢出位。
  7. Mux_5:选通器5。根据Control信号,对Mux_1与Rounding信号进行选通。
  8. Mux_4:选通器4。根据Control信号,对Big_Alu结果与Rounding结果进行选通。
  9. Incre_Decre:阶码增减模块。根据Control信号,对阶码进行调整,以符合IEEE754标准。
  10. Shift_Left_Right:尾数移位模块。根据Control信号,对尾数进行移位调整,以符合IEEE754标准。
  11. Rounding:四舍五入模块。根据Control信号,对尾数进行四舍五入,并返回四舍五入结果以验证是否计算正确。最后对符号位、阶码、尾数进行组装,输出符合IEEE754标准的计算结果。
  12. Control:控制模块。对整个计算流程进行分析控制。给出选通器的使能信号,根据Small_Alu结果来判断左移右移并送出移位位数,根据Big_Alu结果来对阶码进行移位,根据四舍五入结果来进行阶码调整。

设计图:

二.    测试用例及仿真

1.两负数相加,带尾数右移,阶码增加。

X=32'b1001_1110_1100_0000_0000_0000_0001_1101
Y=32'b1001_1111_1111_1111_1111_1111_1111_0101
Result = 1010_0000_0001_0111_1111_1111_1111_1110
 
2. 两正数相加,由于阶码相差63,所以小数可以忽略,结果与输入大数相等。
x=32'b0001_0000_1010_0000_0010_0000_0001_1101
y=32'b0001_1111_1111_1111_1111_1111_1111_0101
Result=0001_1111_1111_1111_1111_1111_1111_0101

 

 

3. 一个正数,一个负数,尾数相减,符号位为负
x=32'b0001_1110_1010_0010_0010_1000_0001_1101
y=32'b1001_1111_1111_1111_1111_1111_1111_0101
Result=1001_1111_1101_0111_0111_0101_1110_1101
 
4. 一个负数,一个正数,尾数相减,符号位为正
x=32'b1001_1110_1110_0010_0010_1000_0001_1101;
y=32'b0001_1111_1111_1111_1111_1111_1111_0101;
Result=0001_1111_1100_0111_0111_0101_1110_1101;

 

5. 两个正数,带阶码增加,四舍五入
x=32'b0001_1110_1110_0010_0010_1000_0001_1111
y=32'b0001_1111_1111_1111_1111_1111_1111_0000
Result=0010_0000_0001_1100_0100_0100_1111_1100
 
6. 一正一负,尾数向左移位,指数减小。
x=32'b0001_1111_1111_1111_1111_1111_1111_1111
y=32'b1001_1111_1111_1111_1111_1111_1111_0000
Result=0001_0101_1111_0000_0000_0000_0000_0000

 

文章来源:UnixOSS.com

转载请保留出处。

Tag: 

posted on 2011-12-19 23:13  Candyroot  阅读(2242)  评论(1编辑  收藏  举报