3.2浮点加法运算的实现
浮点加法运算可总结为比较、移位、相加、规范化等四个步骤,分别对应于compare、shift、sum、normalize四个模块。
(1)compare模块
本模块主要完成两输入浮点数的比较,若din_a、din_b为两个输入单精度浮点数,则在一个时钟周期内完成的运算结果如下:
◇大数指数b_exp这里的大数指绝对值的比较;
◇两浮点数的指数差sube,正数;
◇大数尾数b_ma;
◇小数尾数s_ma,该尾数已加入隐含1;
◇和符号c_sgn,为确定输出结果的符号;
◇加减选择add_sub,两输入同符号时为0(相加)、异符号时为1(相减),sum模块中使用实现加减选择。
(2)shift模块
shift模块的作用主要是根据两个输入浮点数的指数差来执行小数尾数(已加入隐含1)向右移动相应的位数,以将输入的两个浮点数指数调整为相同的数(同大数),若b_exp、sube、b_ma、s_ma、c_sgn、add_sub为输入信号(其含义见compare模块),则可输出如下运算结果(在一个时钟周期内完成):
◇大数指数(sft_bexp),将b_exp信号用寄存器延迟一个周期,以实现时序同步;
◇小数尾数(sft_sma),已完成向右移动相应的sube位;
◇大数尾数(sft_bma),将b_ma信号用寄存器延迟一个周期,以实现时序同步;
◇和符号(sft_csgn),将c_sgn信号用寄存器延迟一个周期,以实现时序同步;
◇加减选择(sft_addsub),将add_sub信号用寄存器延迟一个周期,以实现时序同步;
(3)sum模块
本模块可根据加减选择(sft_addsub(信号完成两输入浮点数尾数(已加入隐含1)的加减,若sft_bexp、sft_sma、sft_bma、sft_csgn、sft_addsub为输入信号(其含义见shift模块),则可输出如下运算结果(在一个时钟周期内完成):
◇大数指数(sum_bexp),将sft_bexp信号用寄存器延迟一个周期,以实现时序同步;
◇尾数和(sum_ma),为大数尾数与移位后小数尾数的和,差(两尾数已加入隐含1);
◇和符号(sum_csgn),将sft_csgn信号用寄存器延迟一个周期,以实现时序同步;
(4)normalize模块