Post Go back to editing

AD9371+zc706 transmit and receive signal

I am using the hdl reference design of ad9371 + zc706. I added my own IP, it was connected to upack and I did not change the design of the receiving part. I enabled two rx channels, using axi_dmac_transfer (rx_dmac, DDR_MEM_BASEADDR + 0x900000,16384 * 8) Function saves data. When I use my ip to generate a 15M IF signal and transmit it through tx. The data received by rx1 is shown in the figure below. At the same time, when the data of rx1 is wrong, the data of rx2 is not normal, but I did not connect the receiving antenna of rx2 !!! When I use the dds mode of no-os software to send data, the received signal is normal. I want to know why the amplitude of the received signal changes when using my own IP? My hdl version is 2019 r1.

fid=fopen('03271818.bin','rt');
[iqdata,count]=fread(fid,[15000*2 1],'int16');
fclose(fid);

fs = 122.88*1e6;
figure(1);
subplot 211, plot(iqdata(1:4:end),'r-'); % rx1 i
subplot 212, plot(iqdata(2:4:end),'b-'); % rx1 q

Parents
  • The clock of dds in my ip is 122.88Mhz. The generated iq data is written into fifo in 64-bit form according to the data format requirement of upack, and the write clock is 128.88Mhz. The read clock frequency of fifo is the same as that of upack, which is 61.44Mhz, and the read data word length is 128bit. The iq data rate configured by tx in the software is 122.88Mhz.

  • Hi,

    Sorry for the delayed reply.

    Things just don't add up. When you use the internal DDS you obtain the expected sine for Rx1, but when using your core you get data on the Rx2 without and any antenna connected...? Can you do more tests, comparing with the DDS?

    So with red is Rx1 and with blue is Rx2? Can you plot fewer samples? to get a better idea of how the signal looks. For example 5-10 periods.

    Is the data that you are sending comparable with the sinewave generated by the DDS?
    A sine with the same frequency and amplitude?

    Because of filtering at different frequencies the signal might suffer different attenuation.

    Andrei

  • The red channel is the rx1 I channel, and the blue channel is the rx2 Q channel. I chose many points to draw the picture because the received data is stable in a short time, but it's amplitude will change greatly with time. I tried to send the value of sine_lut_iq using DMA, the result is correct. But I noticed that the maximum value of the sine amplitude in the table is 0x2666, my own DDS output is 16 bits, the maximum value of the positive number is 0x7fff, and the negative number is represented by the complement. Is this problem caused by the output amplitude of the DDS? Also in ug992 the DAC is 14 bits and I see that the DAC uses higher 14 bits of data on other issues. But the data for the 9371 ip core is 32 bits and contains the sampled values at two moments. Does this mean that the lower two bits of each 16 bits data do not work? 

Reply
  • The red channel is the rx1 I channel, and the blue channel is the rx2 Q channel. I chose many points to draw the picture because the received data is stable in a short time, but it's amplitude will change greatly with time. I tried to send the value of sine_lut_iq using DMA, the result is correct. But I noticed that the maximum value of the sine amplitude in the table is 0x2666, my own DDS output is 16 bits, the maximum value of the positive number is 0x7fff, and the negative number is represented by the complement. Is this problem caused by the output amplitude of the DDS? Also in ug992 the DAC is 14 bits and I see that the DAC uses higher 14 bits of data on other issues. But the data for the 9371 ip core is 32 bits and contains the sampled values at two moments. Does this mean that the lower two bits of each 16 bits data do not work? 

Children
  • my own DDS output is 16 bits, the maximum value of the positive number is 0x7fff, and the negative number is represented by the complement. Is this problem caused by the output amplitude of the DDS?

    No.

    Also in ug992 the DAC is 14 bits and I see that the DAC uses higher 14 bits of data on other issues. But the data for the 9371 ip core is 32 bits and contains the sampled values at two moments. Does this mean that the lower two bits of each 16 bits data do not work? 

    Yes,
    For the Tx side only the MSB part is actually used. The data being truncated corresponding to the device resolution.

    Andrei