# [USRP-users] Purpose of 24-bit CORDIC in DDC chain?

Florian Schlembach florian.schlembach at tu-ilmenau.de
Wed Apr 3 07:48:53 EDT 2013

```On 04/03/2013 09:29 AM, Ian Buckley wrote:
>
> Florian, Your understanding at this point is very good: The CIC provides
> arbitrary programable decimation at very little FPGA resource usage but
> has very significant pass band roll off. The two half bands have fixed
> decimation of 2 each but have very linear passband response. Having the
> Halfbands cascaded after the CIC allows us to keep the total system
> passband within the largely linear portion of the CIC frequency
> response…thus the reason it is highly desirable in practical
> applications using USRPs to have a total system decimation within the
> USRP that factors by 4 so that both Halfbands can be enabled…..

Ian, thanks for your explanations. It's not yet clear to me whether the
CIC is activated for the decim_rate being multiples of four.
Let's assume a decimation rate of 8, then both HB1 and HB2 are
activated, decimating by the input sample rate by a factor of 8. I am
little bit puzzled because I do not see the point how the CIC could
possibly be switched off if the decim_rate is a multiple of 4, according

cic_decim #(.bw(WIDTH)) decim_i
(.clock(clk),.reset(rst),.enable(ddc_enb),
.rate(cic_decim_rate),.strobe_in(1'b1),.strobe_out(strobe_cic),
.signal_in(i_cordic_clip),.signal_out(i_cic));

and

// Second (large) halfband  24 bit I/O
wire [8:0]  cpi_hb = enable_hb1 ? {cic_decim_rate,1'b0} :
{1'b0,cic_decim_rate};

hb_dec #(.WIDTH(WIDTH)) hb_i
(.clk(clk),.rst(rst),.bypass(~enable_hb2),.run(ddc_enb),.cpi(cpi_hb),

.stb_in(strobe_hb1),.data_in(i_hb1),.stb_out(strobe_hb2),.data_out(i_hb2));

It seems both HB filters are activated by the UHD interface
(enable_hb1/2), how is the actual decimation rate fed to both decim_i
and hb_i if both are fed through a common wire cic_decim_rate?

Is the CIC then actually be activated using decim_rate with multiples of 4?

```