RF Data Converter receive carrier wave signal

I discovered that when I transmit a signal to the RF data converter DAC, the ADC receives a carrier wave signal instead of the signal I transmitted.
As I change the mixer settings ‘freq’, the received signal changes accordingly.
Has anyone ever encountered this issue before?
transmitted signal:
Screenshot 2024-06-18 055444

received signal:
image
Thank you!

Did you generate and observe the transmitted signal via this notebook?
( RFSoC-PYNQ/boards/RFSoC4x2/base/notebooks/rfdc/02_rf_spectrum_analysis.ipynb at master · Xilinx/RFSoC-PYNQ · GitHub)

hi @matthew,

Have you met this problem?
Now, the amplitudes of the real part and the imaginary part of the signal are different. However, the transmitted signal is formatted as [imaginary part (15:0), real part (15:0)], and a DAC is used to transmit this to an ADC.
waveform transmitted:
image

waveform received:
image

thank you!

How did you generate and observe the transmitted signal, via which code? Via the notebook previously mentioned?

I generated the sin function and cosine function


and use tx_ch0.transfer(buffer_tx_ch0) to transfer

I observe the signal through the ADC channel, or I can use the ILA to view the input of the RF data converter IP

What is the real part and the imaginary part in your graphs?
Do you have a carrier signal?
With which board are you working?

Imaginary part is the orange line
I remove the carrier signal by setting nco freq=0
RFSOC zcu216

Thank you

If I understand correctly, your issue is that the signal received in the ADC is different from the one sent via the DAC, right?

Can you please provide the whole code you used for this transmission and this display of the signals? To understand what is tx_ch0

My issue is that the IQ signal is transmitted from the same DAC channel and received by the same ADC channel. Why is the amplitude different?
You can see the real part is 2^14sin and imaginary part is 2^14cos, but the result is different in amplitude
I don’t have my notebook with me right now, but I tried to restore all the code.

points_tx = 4096
points_rx = 4096
tx_ch0 = ol.qpsk_tx.dma_tx_data_ch0.sendchannel
rx = ol.qpsk_rx.dma_rx_data.recvchannel
buffer_tx_ch0 = allocate(shape=(points_tx,), dtype=np.int32)
buffer_rx = allocate(shape=(points_rx,), dtype=np.int32)
data_tx_ch0_i = np.zeros((points_tx,), dtype=np.int16)
data_tx_ch0_q = np.zeros((points_tx,), dtype=np.int16)

for index in range(points_tx):
data_tx_ch0_i[index] = (2^14)np.sin(2np.piindex/2048)
data_tx_ch0_q[index] = (2^14)np.cos(2np.pi
index/2048)
buffer_tx_ch0[index] = data_tx_ch0_q[index] * (2^16) + data_tx_ch0_i[index]

tx_ch0.transfer(buffer_tx_ch0)
rx.transfer(buffer_rx)
tx_ch0.wait()
rx.wait()

Ok. And how do you display your signals via the graphs?

Why do you multiply data_tx_ch0_q[index] by (2^16) and not data_tx_ch0_i[index]?

i use this format to transmit a 32 bit I/Q data

And via which code are you obtaining your graphs?