浮点IP FFT
? ? 因為FFT ip的處理是浮點類型,輸入輸出數據都為浮點。需要將16bitI/Q數據轉換為32bit浮點。首先是在網上搜索整數轉二進制浮點方法,想verilog代碼實現,無意中發現有整數轉浮點IPcore。
?
-
在Modelsim中驗證整數轉換浮點IP的使用正確性;
-
通過計算浮點的覆蓋范圍知道3.4e+38;可以包括四次方運算的最大值范圍;
-
FFT IP core的閱讀使用,根據輸入輸出信號,分別確定各信號的作用 與時序;
-
在FFT仿真時,TB文件給入數據沒有考慮輸入數據應該是二進制浮點類型,導致第一次仿真無數據輸出;在仿真時應該關注IP core 輸出的任何有效指示信號,反饋信號。確保IP core 正常使用之后再添加 到別的模塊中;
-
浮點運算中間數據也應該使用浮點類型乘除,加減方法。千萬不可以使用常規減加方法;
-
數據源一定要保持穩定,不然非常容易影響后續的數據處理模塊;很難分析原因;
-
在修改項目文件時,修改部分相關的部分都需要考慮是否需要修改。不可以遺忘,所以說模塊化設計,按功能劃分好處就是修改時能夠更加輕松準確;
-
在項目中輸出管腳千萬記得對其約束位置,不可以閑置!因為閑置會使得這些個輸出隨機分配到FPGA引腳,也就是會給fpga輸入隨機的信號干擾fpga的正常工作,非常危險!
-
數據的延時和數據的有效使能必須在輸入和輸出模塊時對齊!不可以遺留延時問題到下一個模塊;
-
不要隨意懷疑軟件不正常工作,更加不要隨意重裝這種大型軟件。在做重大決策,要在排除其他可能的情況下做出。不要輕易處理。最好的方法是對比。
-
在signalTap中添加信號不要將post synthesis 類型和pre synthesis類型混合!!!選擇presybthesis類型可能更費時間查找相應的node。可以縮小查找范圍,模糊查找;
-
要完整的顯示一幀數據頻譜,必須要采集到完整的一幀以上數據;并且signalTap中采樣時鐘一定要跟數據匹配;
-
添加四次運算模塊之前,先仿真確保數據無溢出現象;存在個別向下溢出!
-
先確定輸入數據無問題,在查看輸出數據是否有誤!
-
Matlab讀取的signalTap的數據方式是否不合適?編寫整數型轉化為二進制浮點型數據;
-
一直擔心四次方運算結果在FFT中運算超過了單精度浮點運算范圍,所以在16bitI/Q進入時先除以2^14.再進行FFT運算;
-
關于延時模塊:用移位寄存器方法比用always模塊延時更加節省資源;
-
盡量減少PLL的使用,這樣可以更好的約束時序;
-
仿真之前一定要想好預期的目標信號,目標波形時序;
-
嚴謹確保每一步的正確,否則會影響下一步處理。
?
?
?
?
?
?
?
總結
- 上一篇: 图像处理——图像的增强技术
- 下一篇: 111111111