作者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