FPGA定點小數計算中截位形式的探討


  在FPGA設計過程中難免會碰到需要進行截位,那定點小數的計算過程中我們需要注意些什么呢?

  首先,我們考慮如下計算式。

  sin cos 數據形式是 FIX_32_30

  X Y Z 數據形式是 FIX_32_20

  φ 是角度 最后需要計算 exp(jπφ),可以看出來φ具有周期性,是可以-1~+1。要求的數據形式是 FIX_32_29

 

1、首先 分析 temp = sin*cos 結果

兩個FIX_32_30相乘得到的數據是 FIX_64_60,我們發現這個結果最大值為-1~+1,所以只需要保留兩位整數位即可(其中一位為符號位)即通過截位使其變成FIX_32_30,所以 temp 為 sin*cos [61:20]。

2、接着分析 X*temp y*temp的結果

一個FIX_32_20乘以FIX_32_30結果為FIX_64_50。

在一般情況下sin*cos結果為-1~+1之間,也就是說相乘之后X Y數只會變小,最大為其本身。所以一般情況下通過截位使得結果為FIX_32_20,即保留12位整數位,20位小數位即可。

但我們觀察到計算exp(jπφ)中,是存在周期性的φ的循環周期為-1~1,所以我們只需要截取成 FIX_32_31就可以(做了一個近似,類似exp(jπφ) = exp(-j0.9999999πφ)),以截取的部分為[50 : 19] ,結果為FIX_32_31

3、再分析Z*COS的結果

一個FIX_32_20乘以FIX_32_30結果為FIX_64_50,同樣的將其截取成FIX_32_31即可。

4、其次三個之和的計算過程中,因為周期性,不需要擴展高位,計算結果為FIX_32_31。

5、最后FIX_32_31算術左移兩位即可得到FIX_32_29。

 

總結,

1.定點小數計算過程中,需要注意小數點的位置。

2.不同小數點位置的數據是不能相加的。

3.可以通過數據計算本身的周期性質,進行截位可以保留更多的小數點位。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM