CORDIC Translate

随便记录一下下:

Cordic IP核使用说明以及避坑记录-CSDN博客

本次只用到了Translate,记录一下自己遇到的坑坑

实际配置:

`timescale 1ns / 1ns
 
 
module cordic_tb();
 
    reg clk;
    wire m_axis_dout_tvalid;
    reg s_axis_cartesian_tvalid = 0;
    wire [31 : 0] s_axis_cartesian_tdata;
    wire [31 : 0] m_axis_dout_tdata;
    
    wire [15:0] x_abs   = m_axis_dout_tdata[15:0];  //abs(15:0) fix16_14; 
    wire [15:0] x_phase = m_axis_dout_tdata[31:16]; //Phase(31:16) fix16_13;
    
    reg [15:0] x_r = 0;
    reg [15:0] x_i = 0;
    
    always #10 clk = ~clk;
    
    reg [5:0] cnt ;
    reg [1:0] index;
    always@(posedge clk) 
    if(cnt==22) begin cnt <= 0;  index <= index + 1;end
    else    cnt <= cnt + 1;
    
    always@(posedge clk) 
    case (index)
        2'b00: begin 
                    x_r <= 16'b0011_0000_0000_0000; 
                    x_i <= 16'b0011_0000_0000_0000; 
               end //fix16_14   0.75+0.75i    1
        2'b01: begin 
                    x_r <=~16'b0100_0000_0000_0000 + 1'b1; 
                    x_i <= 16'b0011_0000_0000_0000; 
               end //fix16_14   -1+0.75i   2
        2'b10:begin 
                    x_r <=~16'b0001_0000_0000_0000 + 1'b1; 
                    x_i <=~16'b0010_0000_0000_0000 + 1'b1; 
               end //fix16_14   -0.25-0.5i  3
        2'b11: begin 
                    x_r <= 16'b0001_0000_0000_0000; 
                    x_i <=~16'b0010_1000_0000_0000 + 1'b1; 
               end //fix16_14   0.25-0.625i   4
    endcase
    
    assign s_axis_cartesian_tdata = {x_i, x_r}; 
    
    initial begin
         clk = 0;
         index = 0;
         cnt = 0 ;
         index = 0 ;
         s_axis_cartesian_tvalid <= 0;
        #100 
        s_axis_cartesian_tvalid <= 1;
    end    
    
cordic_translate cordic_ (
                          .aclk(clk),                                        // input wire aclk
                          .s_axis_cartesian_tvalid(s_axis_cartesian_tvalid),  // input wire s_axis_cartesian_tvalid
                          .s_axis_cartesian_tdata(s_axis_cartesian_tdata),    // input wire [31 : 0] s_axis_cartesian_tdata
                          .m_axis_dout_tvalid(m_axis_dout_tvalid),            // output wire m_axis_dout_tvalid
                          .m_axis_dout_tdata(m_axis_dout_tdata)              // output wire [31 : 0] m_axis_dout_tdata  
                        );    
 //input  Real(15:0) fix16_14; Imag(31:16) fix16_14
 //output Real(15:0) fix16_14; Phase(31:16) fix16_13 
    
endmodule

// 调试后还是比较简单捏~

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 03:38:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 03:38:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 03:38:02       58 阅读
  4. Python语言-面向对象

    2024-07-17 03:38:02       69 阅读

热门阅读

  1. linux高级编程(广播与组播)

    2024-07-17 03:38:02       22 阅读
  2. hexdump -C 实现

    2024-07-17 03:38:02       23 阅读
  3. 掌握Conda包管理:精通版本控制的艺术

    2024-07-17 03:38:02       20 阅读
  4. 【ubuntu】没有声音??连不上网络???

    2024-07-17 03:38:02       17 阅读
  5. bat 设置防火墙指定ip范围 指定时间段放行访问

    2024-07-17 03:38:02       18 阅读
  6. 微信小程序实现省市区级联选择组件

    2024-07-17 03:38:02       20 阅读
  7. Linux硬件中断(IRQ)的基础知识

    2024-07-17 03:38:02       19 阅读