Vivado cordic IP求模求角教程


前言

當需要對復數求模的時候,用FPGA怎么求呢?怎么開根號?

方法1:先求幅值平方和,再使用cordic IP開根號。(蠢辦法)

方法2:直接用cordic求取模值。

此處只介紹方法2,資源占用更少,更方便。

 

求模原理如下圖所示。已知(x0,y0),即復信號的實部和虛部,要求模值和角度,即為(r,ɵ)。

 

 流程

(1)既然是用IP,自然首先要看官方的IP說明文檔。

文檔名稱:pg105-cordic

查看文檔得知,需要使用codic的translate模式。

Vector translation rotates the vector (X_IN,Y_IN) around the circle until the Y component equals zero as illustrated in Figure 3-9. The outputs from vector translation are the magnitude, X’, and phase,  , of the input vector (X,Y).

 

 

由下圖可知,角度最高bit表示符號位,高2bit表示整數,其余位表示小數位。

對下圖中的0.707,也可看做是707(小數點右移3),則結果為750。

 

 (2)例化IP仿真,本次使用18bit的輸入,則IP配置界面可如下圖所示。注意選中縮放補償,否則求模結果被縮放,結果需要乘縮放值Z才是模值結果。注意端口與實際含義的對應關系。

 

 

(3)仿真驗證:假定X=32000,Y=32750,則模值輸出為45788。角度為高3bit(最高bit為符號位)為整數部分,其余為小數部分。則實際的角度弧度值為26115/2^15。可以看到與matlab算出的結果是一致的。

 

 

 

 

以上。

 


免責聲明!

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



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