On Wed, Aug 3, 2011 at 6:30 PM, Page Jack <jack.page...@gmail.com> wrote:
> the code below is in sdr_lib/rssi.v I don't understand especially this > line: rssi_int <= #1 rssi_int + abs_adc - rssi_int[25:10]; > > wire [11:0] abs_adc = adc[11] ? ~adc : adc; > > reg [25:0] rssi_int; > always @(posedge clock) > if(reset | ~enable) > rssi_int <= #1 26'd0; > else > rssi_int <= #1 rssi_int + abs_adc - rssi_int[25:10]; > > assign rssi = rssi_int[25:10]; > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > > It appears to be a clever way to implement a single pole IIR filter. Josh? If you recall an IIR is defined as y[n] = (1-alpha) * y[n-1] + x[n] Since multiplier are expensive in hardware, lets use a multiples of two so you can bit shift, then add and subtract. :D In this case alpha is 2^-10 --Colby
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio