利用Xilinx的cordic ip做开方运算

Xilinx的 CODRIC IP利用的coordic算法,可以求三角函数和开方运算。

  进行开方运算时,需要注意输入和输出位数的问题:

1)输入为整数的情况:(如2321)

  INPUT :  24bit 整数

  OUTPUT :  24bit开方后,整数值占输入总位数的一半加1    等于 13bit,即[23:11] ; 小数值占 11bit,即 [10:0]。

  如: input  i_value = 97 ;

     output  o_sqrt_bvalue[10:0] 为小数部分,    o_sqrt_bvalue[23:11] 为整数部分。

2)输入为整数+小数的情况:(如23.75  ----->  10111.11 )

  input :  24bit =  整数位数 +  小数位数

  output : 开方后,整数值占输入总位数的一半 加1  即 整数位数/2+ 1, 占输出的高位。小数占剩下的位置。

  如: 输入位为  23.75  ----->  10111.11   小数为占两位,  整数位为 (24-2)/2 + 1  = 12 bit

    即 输出:  o_sqrt_bvalue[11:0] 为小数部分,    o_sqrt_bvalue[23:12] 为整数部分。

      sqrt_int =  o_sqrt_bvalue[23:12]  = b 0100 ;

      sqrt_decmail =   o_sqrt_bvalue[11:0]  = b 110111111001

 

 

 

    通过和计算器求得结果比较,误差在0.0001之内,还是比较准确的。不过crodic算法会延迟10个cycle输出。

原文地址:https://www.cnblogs.com/pangshian/p/14252938.html