Hi,
I developed a custom RFNoC block that implements an FIR filter
having complex taps (using 2 instances of Xilinx FIR IP with 2 inputs
each).  The taps are reloadable via an AXI bus.  After implementing a
successful testbench, I later discovered an issue when running with UHD and
the actual image.  The reloaded taps had I/Q swapped.  So, I changed my
block controller to perform this swap and now things work.

I'm trying to understand if this makes sense or if I have fooled myself.
My implementation uses the legacy "axi_settings_reg" to load coefficients
on the IPs reload axi input.  The register width is 32 and I use the upper
16 bits as the input to the "real" FIR instance and the lower 16 bits as
the input to the "imag" FIR instance.

When I run the testbench, I get the expected results without needing to
swap real/imag.  When I run with UHD and the built FPGA image, I must swap
the real/imag parts in the block controller in order to get the correct
results.  I wondered why I did not have to do something similar when
streaming I/Q data to my block (or other blocks), but then figured that
maybe UHD takes care of such swapping automatically.  Is this true?  If so,
am I going about this the right way by swapping I/Q in the block
controller?  Why does the testbench work without swapping?
Rob
_______________________________________________
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