基于cordic ip核实现arctan 您所在的位置:网站首页 cordic计算幅度 基于cordic ip核实现arctan

基于cordic ip核实现arctan

2023-10-11 03:49| 来源: 网络整理| 查看: 265

基于cordic ip核实现arctan@TOC

基于cordic ip核实现arctan

最近在研究相位补偿电路,需要用到反正切函数求解相位差,因此学习了该ip核的使用,写一篇小记录,希望能帮到有需要的盆友。

IP核介绍

简单粗暴地介绍一下IP核的使用。 在这里插入图片描述

首先将functional selection选为arc tan,随后设置输入位宽和输出位宽。 需要注意的是,输入数据默认格式为“有2bit整数位的有符号定点小数”,输出数据默认格式为“有3bit整数位的有符号定点小数”,依据需要制定位宽即可。 在这里插入图片描述

图中设置的input width为16bit,即cos和sin值都用16bit来表示,因此可以看到数据端口的输入数据总位宽为32bit。在实际写入数据时,将sin值写在[31:16]处,将cos值写在[15:0]处。 需要注意的是,输入数据的总位宽一定为8的倍数。例如如果input width都为10bit,则有效数据为20bit,实际数据端口位宽为32bit。在实际写入数据时,需要将sin值写在[25:16]处,将cos值写在[9:0]处,[15:10]和[31:26]处补0即可。 在这里插入图片描述

一通设置完以后,可以在左边栏看到延迟的时钟周期,如图所示延迟了20个时钟。 在这里插入图片描述

仿真实现

为了验证该ip核的功能,写了一个.v文件,依次写入30°、45°、60°、60°、45°、30°、-30°、-45°、-60°、-60°、-45°、-30°… 的cos值和sin值,求取反正切的结果。 代码如下,较为基础,不做解释。

// A code block module test_arctan( input clk, input rst_n, output reg [15:0] arctan_out_tdata, output wire arctan_out_tvalid ); reg [2:0] state; reg [2:0] next_state; reg [4:0] cnt; reg [15:0] cos,sin; reg [31:0] arctan_in_tdata; reg arctan_in_tvalid; wire[15:0] arctan_dout; localparam S_IDLE =3'b001; localparam S_START =3'b101; localparam S_CPT =3'b100; localparam S_STOP =3'b110; always@(posedge clk or negedge rst_n) begin if(rst_n==1'b0) state


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有