高速流水线浮点加法器的FPGA实现.docx
文本预览下载声明
【Word版本下载可任意编辑】
PAGE
1 - / NUMPAGES 1
高速流水线浮点加法器的FPGA实现
本设计中的器件选用Stratix IIEP2S15F484C3。Stratix II是Altera公司的高性能FPGA Stratix系列的第二代产品,具有非常高的内核性能,在存储能力、架构效率、低功耗和面市及时等方面均有优势。 本系统的顶层框图如图2所示。为了显示清楚,图2被分成两个部分显示。本工程采用异步置位的同步电路设计方法,其中clk、reset、enab分别为系统时钟、系统异步置位、系统使能信号。din_a、din_b分别为两个输入的单精度浮点数,data_out则是符合IEEE 754标准的两输入浮点数之和。 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模块 normalize模块的作用主要是将前三个模块的运算结果规范为IEEE 754单精度浮点数标准,若sum_bexp、sum_ma、sum_csgn为输入信号(其含义见sum模块),则其输出的运算结果(在一个时钟周期内完成)只有一个和输出(data_out),也就是符合IEEE754浮点数标准的两个输入浮点数的和。 4系统综合与仿真 由于本工程是由compare、shift、sum、normalize四个模块组成的,而这四个模块通过串行方式开展连接,每个模块的操作都在一个时钟周期内完成,因此,整个浮点数加法运算可在四个时钟周期内完成。这使得工程不仅有确定的数据运算时延(latency),便于流水线实现,而且方便占用的时钟周期尽可能减少,从而极大地提高了运算的实时性。 4.1工程综合结果 经过Quartus II综合可知,本设计使用的StratixⅡEP2S15F484C3芯片共使用了641个ALUT(查找表)、188个存放器、0位内存和可到达80 MHz的时钟频率,因此可证明,本系统利用合理的资源实现了高速浮点数加法运算。 4.2工程仿真结果 本工程仿真可使用Quartus II 8.0内嵌式仿真工具来编写Matlab程序,以生成大量随机单精度浮点数(以便于提高仿真代
显示全部