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