FPGA逻辑实现CORDIC算法中求COS值与平方根值

一、实现计算COS值

利用CORDIC算法中圆周旋转的旋转模式。理论公式如下:

        取初始坐标值x0=1/Kn=0.6073,y0=0时,输入待求的初始相位数据,并进行旋转,旋转足够多次数时(一般16次足够),可以得到初始相位的cos值=xn,初始相位的sin值等于yn。

        具体实现参考示例工程(内含仿真程序和详细备注):

 https://download.csdn.net/download/yindq1220/86736305

 工程实现中需要重点关注的几点如下:

        1、提前使用查找表,按照Q码格式(Q3.13)保存16次旋转的弧度数据。

        2、使用查找表记录初始化的(x0,y0)数值。

        3、计算cos值,sin值时,不需要使用补偿因子。

        4、右移过程中,可能会涉及到负数的除2操作。当负数除2时,不应该做简单的右移,而应该按照此方式进行处理:符号位不变,其余位右移i位,高位补1。这样就是得到的就是负数除2后的补码结果。

二、实现计算平方根值

 利用CORDIC算法中双曲旋转的向量模式。理论公式如下:

        当要求M的平方根值时,取初始坐标值x0=A+1/4,y0=A-1/4,并进行旋转,旋转足够多次数时(一般16次足够),可以得到M 的平方根=xn/Kn=xn*An。

        具体实现参考示例工程(内含仿真程序和详细备注):

 https://download.csdn.net/download/yindq1220/86736305

 工程实现中需要重点关注的几点如下:

        1、提前使用查找表,按照Q码格式(Q3.13)保存16次旋转的弧度数据。

        2、使用Q2.14表示1/4:16'b00_01_0000_0000_0000。

        3、双曲旋转时,i取值为1,2,3,4,4,5,6,7,8,9,10,11,12,13,13···。

        4、双曲旋转时,Kn趋近于0.82815936,An=1/Kn=1.20750。使用Q2.14码表示An:16'b01_00_1101_0100_1000。

        5、右移过程中,可能会涉及到负数的除2操作。当负数除2时,不应该做简单的右移,而应该按照此方式进行处理:符号位不变,其余位右移i位,高位补1。这样就是得到的就是负数除2后的补码结果。

        6、两个Q数据的乘法,不同Q格式数据相乘。Qm3.n3 =Qm1.n1*Qm2.n2。乘法后得到的数据格式如下:n3=n1+n2;m3=m1+m2。

        7、两个Q数据除法,不同Q格式数据相除。Qm3.n3 =Qm1.n1/Qm2.n2。乘法后得到的数据格式如下:n3=n1-n2;m3=m1-m2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值