aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp2/sdr_lib/small_hb_dec.v
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2011-07-19 14:18:58 -0700
committerJosh Blum <josh@joshknows.com>2011-07-19 14:18:58 -0700
commit07c2e795b2d3fbf77d548e902c558d810c76156d (patch)
treea5a5f8536025d2ec97d697c9f528f07902aedefe /fpga/usrp2/sdr_lib/small_hb_dec.v
parent64382c4c8626e429f91865ab27c9e0a69da5edf3 (diff)
downloaduhd-07c2e795b2d3fbf77d548e902c558d810c76156d.tar.gz
uhd-07c2e795b2d3fbf77d548e902c558d810c76156d.tar.bz2
uhd-07c2e795b2d3fbf77d548e902c558d810c76156d.zip
fpga: squashed new_work fpga changes onto uhd next
Diffstat (limited to 'fpga/usrp2/sdr_lib/small_hb_dec.v')
-rw-r--r--fpga/usrp2/sdr_lib/small_hb_dec.v10
1 files changed, 6 insertions, 4 deletions
diff --git a/fpga/usrp2/sdr_lib/small_hb_dec.v b/fpga/usrp2/sdr_lib/small_hb_dec.v
index a7f93e056..c05a48b81 100644
--- a/fpga/usrp2/sdr_lib/small_hb_dec.v
+++ b/fpga/usrp2/sdr_lib/small_hb_dec.v
@@ -103,22 +103,24 @@ module small_hb_dec
wire [17:0] coeff = go_d1 ? coeff_b : coeff_a;
wire [35:0] prod;
MULT18X18S mult(.C(clk), .CE(go_d1 | go_d2), .R(rst), .P(prod), .A(coeff), .B(sum) );
+
+ localparam ACCWIDTH = 30;
+ reg [ACCWIDTH-1:0] accum;
- reg [35:0] accum;
always @(posedge clk)
if(rst)
accum <= 0;
else if(go_d2)
- accum <= {middle_d1[17],middle_d1[17],middle_d1,16'd0} + {prod};
+ accum <= {middle_d1[17],middle_d1[17],middle_d1,{(16+ACCWIDTH-36){1'b0}}} + {prod[35:36-ACCWIDTH]};
else if(go_d3)
- accum <= accum + {prod};
+ accum <= accum + {prod[35:36-ACCWIDTH]};
wire [WIDTH:0] accum_rnd;
wire [WIDTH-1:0] accum_rnd_clip;
wire stb_round;
- round_sd #(.WIDTH_IN(36),.WIDTH_OUT(WIDTH+1)) round_acc
+ round_sd #(.WIDTH_IN(ACCWIDTH),.WIDTH_OUT(WIDTH+1)) round_acc
(.clk(clk), .reset(rst), .in(accum), .strobe_in(go_d4), .out(accum_rnd), .strobe_out(stb_round));
clip #(.bits_in(WIDTH+1),.bits_out(WIDTH)) clip (.in(accum_rnd), .out(accum_rnd_clip));