I am currently working on a product(cant disclose too much details of the actual project) in which some data is being sent via audible(but on the higher freq) sound that is encoded with dqpsk.
However, it gets very inaccurate at times since the receiver and the broadcaster does not have the same sampling windows. I am not trained academically for DSP and therefore having a lot of problem finding out what are the correct terms to search for.
Basically after a lot of debugging and simulation, i found that the most major issue is that the phase information gets more and more inaccurate as the output and the input gets more out of sync... Are there some techniques to find the beginning of the actual signal in the samples? The data isnt contained in just one sample window(they can span through quite a lot of windows)
Thanks! (I would appreciate any sort of help, even if it is just some term i should use to search on google... )
And on a seperate note, when the timing is relatively accurate, I am already able to get the data properly decoded, so I am not really having much problem with the psk side
Answer
So not only do you need to do timing synchronization to recover the baud clock, you need to do some form of turn on detection. You could start your PSK synchronization at the first sample, but the metrics you get out of any synchronization algorithm would be worse than meaningless with no signal present.
You should read a little about detection theory https://en.wikipedia.org/wiki/Detection_theory. If there is a known pattern at the beginning of the signal such as an equalizer training sequence, you can use a matched filter https://en.wikipedia.org/wiki/Matched_filter to detect the signal. This has the added benefit of providing metrics for timing and phase synchronization. If you don't know anything a priori about the data at the start of the signal and you are guaranteed to have positive SNR, you can simply look for an increase in signal energy. You can use a rising edge detector to detect an increase in power or simply look for energy to cross a threshold (if the noise and signal powers will be effectively constant). You can do this in the time domain if you aren't worried about any co-channel interference and you have enough SNR. If the bandwidth of the last filter in the receiver chain lets in a lot of noise or if there may be other signals nearby in frequency, you could do the energy detection in the frequency domain.
Regarding your statement that the "phase information gets more and more inaccurate as the output and the input gets more out of sync", do you mean that, as you move through the signal in time the phase error progressively increases or you have seen from run to run that if you don't lock well you get worse results. If it is the former, then I second the suggestion to look up qpsk synchronization. When you are demodulating a psk signal, you need to be tracking the symbol timing, the carrier frequency, and the carrier phase. A second order PLL can track the phase and frequency. You can also use an early-late gate for tracking the symbol timing.
No comments:
Post a Comment