OpenCores
URL https://opencores.org/ocsvn/cordic_atan_iq/cordic_atan_iq/trunk

Subversion Repositories cordic_atan_iq

[/] [cordic_atan_iq/] [cordic_atan_abs.sv] - Rev 8

Compare with Previous | Blame | View Log

`ifndef _cordic_atan_abs_
`define _cordic_atan_abs_
`include "cordic_atan_iq.sv"

module cordic_atan_abs(clk, IS, QS, angle, abs);
        import ConstPkg::K_u32;

        input wire clk;
        input wire signed [29:0] IS, QS;
        output reg signed [31:0] angle;
        output reg [30:0] abs; // sqrt(I^2 + Q^2)
        
        wire signed [31:0] angle_res;
        wire [31:0] coe_radius;
        
        cordic_atan_iq cordic_inst(.clk, .IS, .QS, .angle(angle_res), .coe_radius);

        reg [($bits(coe_radius) + $bits(K_u32) - 1):0] abs_reg;
        
        always_ff @(posedge clk)
                abs_reg <= coe_radius * K_u32;
                
        assign abs = abs_reg[$bits(K_u32)+:31];
        
        always_ff @(posedge clk)
                angle <= angle_res;

endmodule :cordic_atan_abs

`endif

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.