To begin with we have already built the HDL - reference design along with no-OS drivers and we have captured with the built-in example a spectrum using a spectrum analyzer.
Now we would like to know where and how the data are transmitted through FMCOMMS5 and if there is a function like dac_write( *ptr_data, *len). Could you provides us with a pseudo-code of how we could do that or is there any already defined function that provide this functionality?
The dac_init() function initializes the DAC HDL core. If the DATA_SEL_DDS source is chosen, the core will generate sinewaves of specified frequencies, phases and scales. Using DATA_SEL_DMA option (no-OS/dac_core.c at master · analogdevicesinc/no-OS · GitHub), custom data can be sent. In our example, the sine_lut array is sent (no-OS/dac_core.c at master · analogdevicesinc/no-OS · GitHub). The DMA is by default configured cyclic, so the data will be sent continuously.
In our example, the same data is transmitted on all channels (I0, Q0, I1, Q1) - the only difference is that the I and Q signals are shifted by 90 degrees with respect to each other. If this is what you want, you can just replace sine_lut with your data. Otherwise, you should also change the dac_init() function in order to store in memory independent data for all the channels.
From your answer i can conclude that if i use the DATA_SEL_DMA and i change the sine_lut to my own array i can transmit my own values. Is there anything else that has to be done?
It doesn't matter how your data looks like (it's a simple sine wave or you want to transmit some OFDM modulated data) - if you want to use the DATA_SEL_DMA option, just store the data in memory and configure the DMA to transfer it to AD9361 TX core.
The dac_init() function (no-OS/dac_core.c at master · analogdevicesinc/no-OS · GitHub) is an example of doing what you want.
Firstly, thank you for your quick reply.
We would like to know how we could send a LTE (OFDM-modulated) waveform. As far as I know an OFDM signal sends multiple I/Q symbols simultaneously. Is there any configuration of AD9361 that can send an OFDM signal, just by providing the desired bandwidth or we have to make that in the digital front-end.
To sum up can we send a bandwidth of 20Mhz simultaneously for example?
Could you provide us with a reference design of sending two different streams (I1, Q1, I2,Q2) using a single AD9361 chip?