作者vapaa (...)
看板Electronics
标题[问题] 与FFT相关的问题
时间Thu Aug 19 18:31:30 2010
目前利用verilog
做出架构为1024点 SDF pipeline的IFFT和FFT
并把他们对接起来
之後要烧到FPGA板
当作模拟OFDM的一部分
可是用xilinx测试跑过模拟後
发现input进去的信号(IFFT端进入)
到output出来的值(FFT的输出)会有一点差距
大约5%上下
如果将input data的bit数或是twiddle factor bit增加的话
能够达到完全准确吗(input进去的data和output出来的bit都完全相同)
还是有其他细节也需要做修改吗
目前data的大小是16 bits 而twiddle factor是10个bits(都是2's补数)
在ifft和fft内部运算的大小都用到26 bits(加法或乘法)
麻烦板上的各位大大帮忙解答了
谢谢~!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.136.16
1F:推 arloha:如果是用浮点数运算可以减少误差...但硬体面积大很多 08/19 21:40
2F:→ arloha:定点数运算的话...只能增加位元宽度来减少误差 08/19 21:41
3F:推 bighead319:你的5%是怎麽算的? 08/19 22:54
4F:→ vapaa:5%大概就像是input:-7584 output:-8101这样(转成10近位来看) 08/19 23:19
5F:→ vapaa:换成2进位的话 应该是在LSB附近error发生的比较多 08/19 23:20
6F:→ vapaa:请问a大提到的浮点运算 能在硬体上实现吗 08/19 23:24
7F:→ vapaa:我做的这个是定点的 把资料转换成2进位 再位移到16个bit 08/19 23:27
8F:→ vapaa:谢谢 08/19 23:28
9F:推 bighead319:FFT设计好不好一般是看SQNR,但差距5%还满大的,SQNR 08/19 23:32
10F:→ bighead319:应该不高,此外,你widdle factor只用10 bits太少了 08/19 23:33
11F:→ bighead319:input有16bits满多的,但里面大概只要18bits,最多 08/19 23:35
12F:→ bighead319:20 bits就可以做出不错的效果了,你用到26bits,应该 08/19 23:36
13F:→ bighead319:误差可以做到非常小了 08/19 23:36
14F:→ bighead319:事实上,1K点,16 bits应该就可以把SQNR做到60dB了 08/19 23:37
15F:→ vapaa:嗯 谢谢b大的建议 我把twiddle factor在给多一点bit试看看 08/19 23:42
16F:→ vapaa:我选16bits和10bits是用c语言模拟整个OFDM BER vs SNR的结果 08/19 23:45
17F:→ vapaa:看定点的结果和浮点曲线的密合度 所以可能没有测SQNR来得准 08/19 23:47
18F:推 arloha:浮点数的运算可以用硬体实现阿! 08/20 16:45
19F:→ arloha:不过硬体面积大很多就是了 08/20 16:46
20F:推 appendixisu:看这篇学到好多!!!以前也尝试用ALTERA做过FFT!! 08/20 21:46
21F:→ appendixisu:最後是选择ALTERA的FFT的IP来做!! 08/20 21:46