本帖最后由 ucx 于 2022-11-23 22:10 编辑
在通信领域,相干或非相干解调中常会用到正交解调(一个I,一个Q)方法。
通过I和Q获得幅度和辐角信息。获得辐角的方法在matlab里就是P=atan2(Y,X)函数。
本帖提供的VHDL代码就是应用cordic算法完成atan2功能的模块,
模块的输入x,y是以1比特符号(0正1负)加16比特幅度的形式表示,bgn输入触发计算16个时钟后qTheta输出有效并保持不变直到下一次bgn输入触发更新。qTheta可以看作是0~360°范围的无符号18位整数,也可以看作是-180°到+180°的有符号整数。
由于本模块中用到的自定义函数库ucx_std库包含了使用VHDL2008语句的函数,所以本模块必须在VHDL2008环境下编译才能成功。当然,可以通过删除ucx_std中包含VHDL2008语句的部分即可使本模块在VHDL1993环境下编译通过。
如果同仁有需要,本人选个清闲的时间再把modelsim或vivado环境下的仿真结果贴上来。
|
你好楼主,可以发一下仿真结果吗