widen cordic on tx side
authormatt <matt@221aa14e-8319-0410-a670-987f0aec2ac5>
Mon, 19 Jan 2009 04:39:47 +0000 (04:39 +0000)
committermatt <matt@221aa14e-8319-0410-a670-987f0aec2ac5>
Mon, 19 Jan 2009 04:39:47 +0000 (04:39 +0000)
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10258 221aa14e-8319-0410-a670-987f0aec2ac5

usrp2/fpga/sdr_lib/dsp_core_tx.v

index 54889fa2a41b583d54bbb46c047e8c1d3a1c2ae1..346d65ced81e234e3da78fc0f96bffd0ecffb42c 100644 (file)
@@ -103,15 +103,21 @@ module dsp_core_tx
                  .signal_in(hb2_q),.signal_out(q_interp));
 
    assign      strobe = strobe_hb1;
-                  
-   cordic #(.bitwidth(18),.zwidth(16))
+
+   localparam  cwidth = 24;  // was 18
+   localparam  zwidth = 24;  // was 16
+
+   wire [cwidth-1:0] da_c, db_c;
+   
+   cordic_z24 #(.bitwidth(cwidth))
      cordic(.clock(clk), .reset(rst), .enable(run),
-           .xi(i_interp),.yi(q_interp),.zi(phase[31:16]),
-           .xo(da),.yo(db),.zo() );
+           .xi({i_interp,{(cwidth-18){1'b0}}}),.yi({q_interp,{(cwidth-18){1'b0}}}),
+           .zi(phase[31:32-zwidth]),
+           .xo(da_c),.yo(db_c),.zo() );
    
    MULT18X18S MULT18X18S_inst 
      (.P(prod_i),    // 36-bit multiplier output
-      .A(da),    // 18-bit multiplier input
+      .A(da_c[cwidth-1:cwidth-18]),    // 18-bit multiplier input
       .B({{2{scale_i[15]}},scale_i}),    // 18-bit multiplier input
       .C(clk),    // Clock input
       .CE(1),  // Clock enable input
@@ -120,7 +126,7 @@ module dsp_core_tx
    
    MULT18X18S MULT18X18S_inst_2 
      (.P(prod_q),    // 36-bit multiplier output
-      .A(db),    // 18-bit multiplier input
+      .A(db_c[cwidth-1:cwidth-18]),    // 18-bit multiplier input
       .B({{2{scale_q[15]}},scale_q}),    // 18-bit multiplier input
       .C(clk),    // Clock input
       .CE(1),  // Clock enable input