If you prefer the coefficients in decimal, they are pulled from this file
for the first and second stage:

https://github.com/EttusResearch/uhd/blob/master/fpga/usrp3/top/x300/coregen_dsp/hb47.coe

And this file for the third stage:

https://github.com/EttusResearch/uhd/blob/master/fpga/usrp3/top/x300/coregen_dsp/hb63.coe

Those COE files are referenced in the CoreGen IP files for these filters.
You can see all the IP settings here:

https://github.com/EttusResearch/uhd/blob/master/fpga/usrp3/top/x300/coregen_dsp/hbdec1.xco
https://github.com/EttusResearch/uhd/blob/master/fpga/usrp3/top/x300/coregen_dsp/hbdec2.xco
https://github.com/EttusResearch/uhd/blob/master/fpga/usrp3/top/x300/coregen_dsp/hbdec3.xco

Wade

On Thu, May 26, 2022 at 10:22 AM Brian Padalino <bpadal...@gmail.com> wrote:

> On Thu, May 26, 2022 at 10:43 AM <luca.vi...@argotecgroup.com> wrote:
>
>> Hi all!
>>
>>
>> I am starting to look through some of the FPGA code of the USRP X300 in
>> order to understand which is the DDC chain configuration in the default
>> image.
>>
>>
>> I have understood that in the DDC chain there is 1 CIC filter + 3
>> Halfband filters. Since I want to characterize the DDC chain I have the
>> following questions:
>>
>>    1.
>>
>>    How are they used? I suppose that the halfband filters are used based
>>    on the decimation factor we need (max. 1024)
>>    2.
>>
>>    Which is the order of the CIC filter?
>>    3.
>>
>>    How many taps each halfband filters have? Which are the taps?
>>
>>
> Taking a look at the ddc.v file is the best insight.  The cic_decimate has
> an N which is the order it's given:
>
>
> https://github.com/EttusResearch/uhd/blob/5333d3d12ffc21229ec4203a9ea1c7f68d82e57f/fpga/usrp3/lib/rfnoc/ddc.v#L283
>
> Here it's listed as 4.
>
> In general, the CIC is used for bulk decimation up to 2, 4, or 8x
> oversampled - ideally 8x.  The hbdec1 is the first, hbdec2 is the next, and
> hbdec3 is the last.  Their coefficients can be found here:
>
>
> https://github.com/EttusResearch/uhd/blob/5333d3d12ffc21229ec4203a9ea1c7f68d82e57f/fpga/usrp3/top/x300/coregen_dsp/hbdec1.mif
>
> https://github.com/EttusResearch/uhd/blob/5333d3d12ffc21229ec4203a9ea1c7f68d82e57f/fpga/usrp3/top/x300/coregen_dsp/hbdec2.mif
>
> https://github.com/EttusResearch/uhd/blob/5333d3d12ffc21229ec4203a9ea1c7f68d82e57f/fpga/usrp3/top/x300/coregen_dsp/hbdec3.mif
>
> If the desired decimation rate is divisible by 8, then all 3 halfbands are
> used.  If not, a division by 4 is checked, and 2 are used.  If not, a
> division by 2 is checked and 1 is used.  If not, only the CIC is used.
>
> If you want to test your model against the HDL itself, a testbench is
> located here:
>
>
> https://github.com/EttusResearch/uhd/blob/5333d3d12ffc21229ec4203a9ea1c7f68d82e57f/fpga/usrp3/lib/rfnoc/blocks/rfnoc_block_ddc/rfnoc_block_ddc_tb.sv
>
> But it's probably easier and much faster to pass samples through the
> actual RFNoC block in a custom graph that just exercises the DDC.
>
> Brian
> _______________________________________________
> USRP-users mailing list -- usrp-users@lists.ettus.com
> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to