zoukankan      html  css  js  c++  java
  • 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算出的结果是一致的。

     

    以上。

  • 相关阅读:
    矩阵树定理
    随机乱搞算法
    数学
    BZOJ——3412: [Usaco2009 Dec]Music Notes乐谱
    BZOJ—— 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
    洛谷—— P2884 [USACO07MAR]每月的费用Monthly Expense
    洛谷—— P2417 课程
    洛谷—— P1577 切绳子
    COGS 2598. 美丽的感觉
    10.23 模拟赛
  • 原文地址:https://www.cnblogs.com/kingstacker/p/11508326.html
Copyright © 2011-2022 走看看