山一程 水一程 https://bbs.21ic.com/?809790 [收藏] [复制] [RSS] OPTIMISM, PASSION & HARDWORK

日志

CORDIC原理与FPGA实现(1)

已有 1049 次阅读2013-10-24 18:49 |个人分类:FPGA|系统分类:EDA/PLD


CORDIC算法的来历与用途大家网上随处可以见到,这里写 一下自己的理解。


将P(x,y)旋转角度a得到新的坐标P’(x’,y’)。这里的坐标变换为:


x’= x cos(a) – y sin(a)  = cos(a)(x-y *tan(a))


y’= y cos(a) + xsin(a) = cos(a)(y+x*tan(a))


旋转角度a为常数时,如果tan(a)=2-i ,即可用移位代替乘法便于快速高效在FPGA中实现。每次都旋转固定角度delta,
则cos(delta)=cos(arctan(2-i)).


从而得到简便计算如下:


K­i =cos(arctan(2-i))


X­i+1­­­ =k­i ­[x­i ­– y­i
x di x 2-i]


Y­i+1 ­=K­i ­[y­I + X­I
x d­i x 2-i]


K­i­ 可以看做处理增益,当i->无穷大时 clip_image002[4]clip_image004[4]


取Z­为累加每次旋转的角度,clip_image006[4]


CORDIC有两种模式 1 rotation模式 每次旋转Z一个角度 直到等于要求的角度 即从极坐标变换到直角坐标


$$ z_{i+1} = z_{i} - d_{i}*.mbox{atan}(2^{-i}) $$


$$ x_{i+1} = x_{i} - y_{i}*d_{i}*2^{-i} $$


$$ y_{i+1} = y_{i} + x_{i}*d_{i}*2^{-i} $$
where $$  d_{i} = -1 $$ if <img alt="$$ z_{i}  
and $$ +1  $$ otherwise


2 vectoring 模式 。旋转使与x轴对齐 y=0时得到的z值即所要旋转的角度,由直角坐标到极坐标的变换


CORDIC算法实现极坐标到直角坐标系的变换。
   1:   
       
  1. function [horizonal,vertical]=polar2car(mag, pha);
  2. x =mag;
  3. y =0;
  4. z=pha;
  5. d=0;
  6. i=0;
  7. k = 0.6073; %K 增益
  8. x = k*x;
  9. while i<50
  10.     if z<0 d =-1;
  11.     else d = 1;
  12.     end
  13.     xNew=x-y*d*(2^(-i));
  14.     y=y+x*d*(2^(-i));
  15.     z=z-d*atan(1/2^(i));
  16.     i=i+1;
  17.      
  18.      
  19.     x=xNew;
  20. end
  21. horizonal = x;
  22. vertical = y;
复制代码

CORDIC算法实现直角坐标到极坐标系的变换。
       
  1. function [mag, pha]= car2polar(x,y);
  2.   
  3. %y =0;
  4.   
  5. d=0;
  6. i=0;
  7. z=0;
  8. k = 0.6073; %K 增益

  9. while i<50
  10.     if y<0 d = 1;
  11.     else d = -1;
  12.     end
  13.     xNew=x-y*d*(2^(-i));
  14.     y=y+x*d*(2^(-i));
  15.     z=z-d*atan(1/2^(i));
  16.     i=i+1;
  17.      
  18.      
  19.     x=xNew;
  20. end
  21.  x =  x*k;
  22.  mag=x;
  23.  pha=z;
  24.  
复制代码

验证:

[a,b]= polar2car( 1,pi/3)


a =


    0.5000



b =


    0.8661


[a,b]=  car2polar( 0.5000, 0.8661)


a =


    1.0001



b =


    1.0472





路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)