Hello all,

I apologize in advance for data dumping. I have made a 2 input/1 output
RFNoC block that requires repeatable synchronized DDC starts. My current
method of starting the DDC is not working as desired.

*Question - **How can I correctly start both DDC's so samples are available
on the same clock cycle, similar to the rx_samples_to_file, while still
using my 2 in/1 out RFNoC block? *
I would like to focus the conversation on my C++ implementation for now.
All my simulations have convinced me my block is consuming AXI-Stream data
correctly.

*Problem*
When starting two DDCs with timed commands sent to DDC in my C++
application, I am not getting the same result as the
rx_samples_to_file.cpp... rx_samples_to_file has repeatable alignment, and
mine has random. This has led me to believe the problem is in my
application and not my block. My Vivado simulations show my block is able
to consume the AXI-Stream transactions in parallel as I expect.

Considering sampling noise from a sig gen that is split to both inputs, I
see the following behavior:
rx_samples_to_file (base image) davids_samples_to_file (custom image)
DDC A samples ... X_1 Y_1 Z_1 ... DDC A samples ... X_1 Y_1 Z_1 ...
DDC B samples ... X_2 Y_2 Z_2 ... DDC B samples X_2 Y_2 Z_2 ... ...

*sample_1 is not equal to sample_2, but over a large number of samples they
will correlate well.

In the above example, the noise correlates as expected, but it is delayed
by 1 sample. When using my application, I have seen no delay (desired), and
also delay in the range of 5 samples.

*C++ Implementation*
[image: image.png]

I am using* uhd::rfnoc::ddc_block_control* types to issue the stream
command because I was having issues with my block propagating. Issuing to
the DDCs lets the data flow from 2 inputs to the 1 output, where the output
is either a file or loopback to transmit.

The base image with rx_samples_to_file uses a multi_usrp type, which
propagates the stream command from the rx_streamer.

*RFNoC laydown*

[image: image.png]

Data flows in both Tx loopback configuration and Rx to file configuration.

*Methods and Symptoms*
I have two methods of measuring the synchronization, with data collected by
ILA cores at either the output of DDC or input of custom block:

   1. *Math: *When receiving correlated noise, I can measure the cross
   correlation and show that the correlation peaks as expected, and show the
   delay between channels in samples.
   2. *Vivado Waveform Viewer*: When the ILA cores are collecting DDC
   channel data, I can see that the base image samples are available on the
   same clock. My image does not have that behavior.


Thanks,

David
_______________________________________________
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