新闻中心

EEPW首页>EDA/PCB>设计应用> 基于FPGA高精度浮点运算器的FFT设计与仿真

基于FPGA高精度浮点运算器的FFT设计与仿真

作者: 时间:2012-03-09 来源:网络 收藏

1.3.1 蝶形处理单元
蝶形处理单元是整个的中心环节,采用复数表示,将实部与虚部分别存储,利用基2的DIT-算法实现运算。

本文引用地址://m.amcfsurvey.com/article/190672.htm

e.jpg


蝶形运算过程包括一个乘法运算o.jpg和一个加/减法运算f.jpg。数据的读取由时钟单元的信号来控制:当时钟为c0时,读取y;c1时,读取Y;c2时,读取x;c3时,读取X。经蝶形运算后得到x’=x+(ycosφ+Ysinφ),X’=X+(Ycosφ-ysinφ),y’=x-(ycosφ+Ysinφ),Y’=X-(Ycosφ-ysinφ)然后将数据写入同样地址的RAM中,至此,2点的蝶形运算单元完成。在蝶形运算共需一个乘法器和两个加法器。
(1)浮点乘法器。乘法过程对浮点数的符号位、指数以及尾数分别进行计算,符号异或,指数相加再减127,尾数加入隐含的‘1’后再进行乘法运算,如果尾数相乘的结果有溢出则指数加1尾数取前23位,若无溢出,则取最高位后的23位。但若输入的数据有一个是0,则输出为0。
g.jpg
图5的波形为两浮点数的乘法运算,输入以16进制表示,分别将不同类型的数据搭配进行测试,结果表示仿真正确。

h.jpg


(2)浮点加法器。加法运算是将两数指数比较,存储较大的指数,将指数小的尾数移位,再进行加减操作,规格化后输出。加法过程由多个模块组合实现,包括比较模块,右移模块、加/减法模块、前导零检测模块、左移模块和结果整合输出模块。
比较模块主要对指数操作,判断指数的大小,较大的指数暂作结果的指数,较小指数的数做移位操作,其阶差为移位量。以下程序采用for循环来实现移位,S(5 downto 0)存储阶差,最大值是32。
i.jpg

fpga相关文章:fpga是什么




评论


相关推荐

技术专区

关闭