[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Discuss-gnuradio] Half-Band Filter Module Output Clipping?
From: |
Bruce McGuffin |
Subject: |
[Discuss-gnuradio] Half-Band Filter Module Output Clipping? |
Date: |
Wed, 2 Sep 2009 18:48:18 -0400 |
User-agent: |
Thunderbird 2.0.0.22 (X11/20090625) |
Hi
I've been looking at the USRP2 filter characteristics, to see if it will
work for me. After going through the
half-band filter code (hb_dec.v from gnu-radio 3.2) I understand what
the filter coefficients are, but I have
a question about the output from this module.
Near the end of the module the filtered data is clipped and rounded in
lines 152-153:
143 wire [ACCWIDTH:0] final_sum_unrounded;
...
149 add2_reg /* add2_and_round_reg */ #(.WIDTH(ACCWIDTH+1))
150 final_adder (.clk(clk), .in1({acc_out,1'b0}),
.in2({data_even_signext,1'b0}), .sum(final_sum_unrounded));
151
152 round_reg #(.bits_in(ACCWIDTH-4),.bits_out(OWIDTH))
153 final_round
(.clk(clk),.in(final_sum_unrounded[ACCWIDTH-5:0]),.out(final_sum));
where ACCWIDTH = 24
and OWIDTH = 18
and the module round_reg just calls round and puts the result in a
register, and round.v is
module round
#(parameter bits_in=0, // for this instantiation,
bits_in = ACCWIDTH-4 = 20
parameter bits_out=0) // for this instantiation,
bits_out = OWIDTH = 18
(input [bits_in-1:0] in,
output [bits_out-1:0] out);
assign out = in[bits_in-1:bits_in-bits_out] + (in[bits_in-1] &
|in[bits_in-bits_out-1:0]);
endmodule // round
It looks to me like final_sum_unrounded is 25-bits long, so the input to
final_round is the
20 LSBs of final_sum_unrounded (final_sum_unrounded[19:0]), and the
output final_sum is those 20
bits rounded to 18 bits in the usual way. But this data is two's
complement, so clipping the 5 MSBs from
final_sum_unrounded can drasticaly change the data value, for example
changing both the sign and
magnitude, even when the magnitude of final_sum_unrounded < 2^17.
What am I missing here?
Thanks
Bruce
- [Discuss-gnuradio] Half-Band Filter Module Output Clipping?,
Bruce McGuffin <=