03-26-2020 01:10 AM
Hi. I'm a RFSoC newbie. The board what i'm using is htg-zrf8 by Hitech-global.
Currently, I am configuring an 8 channel system using RF data converter IP.
Since all 8-channel DACs are used, calibration between the output RF signals of each converter is required.
The calibration will be performed by adjusting the phase value of the NCO inside the RF dac, and this part will be implemented through SDK C-code.
Because the physical routing of the board is fixed, it is difficult to implement the SYSREF for the MTS, so we decided to adjust the phase of the NCO.
The problem is that I am writing code using the rfdc API provided by Xilinx, but the phase offset value of the mixer is not applied well.
I'm not sure what to set the update event to and how to proceed with the code.
When SYSREF is set as the update event, the phase difference of the RF output passing through the DAC of 2 channels is changed each time the code is executed. (In a single tile)
When TILE is set as the update event, the phase difference of the RF output that passes through the DAC of 2 channels is kept constant every time the code is executed, but the phase offset value that I want is not input.(Single tile)
The below picture shows the basic setup of my system.
Attached is my ugly c-code in SDK.
Thank you in advance and we are waiting for your reply.
03-27-2020 01:48 AM
I had a look into you code. it seems that phase for all channels were set to 0. Since there is no phase difference between channels, I would like to know how you could know that the output signal phase is not as expected.
And also I can see you run getmixersettings after update event, I think the code itself is fine but I would recommend you try different phase value and then check if the output changes with it.
03-30-2020 06:43 PM
Thanks for the reply.
After adjusting the DUC phase of all channels to 0 degrees, the RF signal was observed with an oscilloscope.
Then, after changing the DUC phase value of the desired channel and running the SDK code again, there is no difference from the previous result.
Currently, I am trying to figure out what is wrong, but the problem is that I cannot find any problems in the code.