Dear GNURADIO friends,
I'm wondering if I am making a fundamental mistake or an implementation mistake.
You don't have to debug; thanks for sharing your thoughts! Summarized: The RTL-SDR has an 28.8MHz oscillator and I'm feeding this clock-signal into a fractional divider which brings it to a 500Hz audio tone. Please notice this process is carried out with hardware components and is not affected by computer interrupts etc.
The 500Hz audio signal is fed into a regular HAM FM 145MHz transmitter.
The signal is received by an RTL-SDR USB and goes in a SOAPY GNURADIO source block and is decimated to 256000 sampless and demodulated resulting into 500Hz audio tone.I assume(!) that the IQ sample rate is defined by the SDR receiver and deducted from its 28.8Mhz clock.
I calculated that with an sample rate of 256K it takes 512 samples =(1500)(1256000) to cover the cycle time of a 500Hz sine wave.
In a GNURADIO C++ OOT block (based on the very useful GR OOT Cpp tutorial) I re-create (based on the incoming a IQ-stream) with a sample counter in combination with a look-up table a synthetic sine wave of 500Hz.
I expect that the demodulated 500Hz FM signal and created synthetic 500Hz signal have exactly the same frequency but I am facing a phase drift between them…
Both 500Hz signals though origin from the same source (the 28.8MHz) SDR clock which defines the audio tone and the sample rate.
I'm wondering if I (still a beginner) am making a fundamental digital signal processing mistake or simply making an implementation mistake which I have to deep dive further into.
After several months I am still learning but got stuck and highly appreciate if you share your thoughts.
My question: Is this approach theoretically possilbe?
Thanks,
Robert PA0BRT
files fyi: Recorded IQ, 2Ch_audio, GRC, Video, OOT_Cpp, lookup_table_synthetic_sine
https://tinyurl.com/3pryf9kb
No comments:
Post a Comment