I’m writing a Soapy SDR plugin for the FL2K-SDR. Soapy SDR expects plugins to produce and consume IQ samples. However, the FL2K-SDR driver consumes only real samples. I know you can convert a real signal to a complex signal using a Hilbert transform. How do I convert IQ samples to real samples? Do I use an inverse Hilbert transform? Do I just drop every other sample to get only the I samples? One of my goals is to minimize the processing latency of this plugin (I.e. use lookup tables if possible).
Part of my quandary is that I don't know how the user is going to configure their flow-graph. They may:
- Simply feed me a complex cosine and expect some sort of real cosine output.
- Sample the PC microphone, convert that to a complex signal, and send that to me (no modulation involved).
- Attach an analog low-pass filter (~ 70 MHz), do their modulation in their flow-graph, and use the FL2K USB VGA dongle for an HF Ham radio transmitter
- Generate an IF in their flow graph, and then attach an analog band-pass filter to transmit an image frequency higher than 70 MHz.
Unfortunately, I don't know which of these they might do.