I am working on device which receive and demodulate FM signal, then audio samples are going through FPGA to perform some realtime DSP on it, after this I want to modulate and transmit audio back again using other FM frequency.
I modified custom HDL design to bypass audio output. Now I have signal after DSP on both zedboard audio outputs and 48kHz samples on AXI register to which I have easy access from Linux running on zedboard.
Is there any easy way to FM transmit data from AXI register?
I tried transmission directly from audio drivers(It's easy to make that kind of audio source in gnu-radio). I connected output and input by jack cable but it resulted huge delays. There was no way to make audio playback using software. I tried to make virtual sound cards, modify settings in pavucontrol, JACK(tons of errors using it) etc.
Also I tried to modify that method: Simple FM transmitter using gnuradio - Opendigitalradio but there were much bigger delays and corrupted signal.
Next idea was to modify "AD9361_iiostream.c" file, but I am not sure how to prepare audio samples to send. I got repeated silent breaks in transmitted signal.
Btw. Each time I received signal and transmitted something at the same moment, I got overruns and underruns while moving the cursor or open some other apps.
There is no way to transmit data from an AXI register. I don't think there is a point to add this functionality, as you won't be able to update the register at the rate of AD9361.
On the zedboard, if running at the maximum sampling rate and using the video, the DDR will not be able to keep up, that's why you get the underrruns and overruns.
In order to improve the responsiveness, you can try implementing the FM modulator in HDL, but we don't have an example on how to do that.