2
\$\begingroup\$

Using a 32MHz pic processor, and over sampling the demodulated analog output of an RF receiver (instead of the data slicer output) is it possible to use averaging to reduce increase the SNR of the system? The data is NRZ OOK at 4.5kHz.

Update I found this article from Chipcon on the subject, but it addresses Manchester encoding, though somewhat applicable to NRZ.

\$\endgroup\$
  • 6
    \$\begingroup\$ Wouldn't you rather increase the SNR? \$\endgroup\$ – Scott Seidman Aug 28 '16 at 23:42
  • \$\begingroup\$ ...thanks for pointing that out... I was walking when I wrote this. I had in mind to reduce the noise floor... \$\endgroup\$ – Lance Beasley Aug 29 '16 at 11:50
  • \$\begingroup\$ @LanceBeasley can you add the part number for the 32MHz pic processor and the analog input you will use for sampling? \$\endgroup\$ – SeanJ Aug 29 '16 at 13:57
  • \$\begingroup\$ The processor is a Pic 16F1825. \$\endgroup\$ – Lance Beasley Aug 29 '16 at 17:56
  • \$\begingroup\$ @Lance Beasley: Why is the title "RF oversampling..." when you really mean sampling of quite low frequency in the audio range (4.5kHz)? \$\endgroup\$ – Curd Sep 3 '16 at 21:16
1
\$\begingroup\$

Assuming the PIC has an analog input capable of operating at 32MHz or significantly higher than 9kHz (Nyquist Frequency), then yes it is possible to use averaging to increase the SNR.

It is important to consider the issues with respect to your SNR. For example, if the SNR is low due to transmission distance (attenuation), then averaging may not be very effective, whereas if transient spikes or emi are the source of your issues the averaging could be very helpful. In both cases, you may decide you need a hardware solution such as a pre-amlifier or a bandpass filter respectively.

I suggest you use an oscilloscope to look at the eye diagram, this will help reveal the specific problem with your received signal.

enter image description here

Silabs have a useful note on oversampling and averaging here.

\$\endgroup\$
  • \$\begingroup\$ Doesn't averaging push the noise floor down in any case? If it does, then will oversample/averaging extend the range a little? \$\endgroup\$ – Lance Beasley Aug 29 '16 at 17:53
0
\$\begingroup\$

By "averaging", you apparently really mean low pass filtering. Averaging, or more specifically, box filtering, is a form of low pass filter, but not a particularly good one for most usages.

Yes, low pass filtering to reduce the high frequencies you know aren't relevant increases signal to noise ratio. You can look at this in the frequency domain and try to eliminate everything above the highest frequency you care about. Or, you can look at this in the time domain and throw as much filtering as possible at the system while making sure the step response is still sufficient within the time of the shortest possible level.

True averaging is really only useful if you know when the bit times are. Then you can average with as many samples as you can manage during one bit time. The average is then the best indication of the measured bit level. Put another way, this is really synchronous averaging, and can be quite effective.

Unsynchronized averaging is just silly. If you don't know where the bit boundaries are, then some IIR (equation based) low pass filter will be better.

\$\endgroup\$
  • \$\begingroup\$ The poster isn't just proposing averaging, but also increasing the sample rate. Where the ratio of initial sample rate to desired bandwidth is very high, box decimation filters implemented with the efficient CIC method are common; at lower ratios (or following them) better filters are indeed preferable. \$\endgroup\$ – Chris Stratton Sep 9 '16 at 2:07
0
\$\begingroup\$

You want to improve upon bit error rate of the receiver's internal data slicer. In on-off-keying (OOK), internal data slicers do a pretty good job in the face of signal strength that varies greatly. Yes, you can oversample the receiver's analog RSSI output, and likely improve error rates, but you may be expecting too much. The programming effort in implementing an adaptive data slicer is considerable. OOK decoding requires different algorithms than Manchester as well. For example, your NRZ OOK modulation bandwidth extends to zero Hertz, whereas Manchester bandwidth does not.

A truly excellent reference is Steven W Smith's e-book "The Scientist and Engineer's Guide to Digital Signal Processing", where he gives a good explanation of how averaging reduces broadband noise proportional to square root of number of samples. Chapter 15 is relevant to your situation. Yes, there's math, but also many examples and illustrations. Free PDF download. Not much help with modem algorithms though, and how your receiver's on-board filtering already does some signal averaging. If on-board analog filters are optimal, you'll not improve much on them with DSP oversampling.

\$\endgroup\$
  • \$\begingroup\$ Your observation that I may be expecting too much is really why I asked the question. Is there a good resource that gives the theoretical limit on improved SNR from oversampling? If there is 6dB on the table, it may be worth the effort, but less than 3 would be questionable. Turns out the modulation isn't Manchester, but is otherwise very similar. \$\endgroup\$ – Lance Beasley Sep 7 '16 at 15:33
  • \$\begingroup\$ The degree of possible advantage would depend on the oversampling factor and if your noise floor is currently set by the ADC, or by something else. \$\endgroup\$ – Chris Stratton Sep 9 '16 at 2:05
  • \$\begingroup\$ I don't have time to elaborate, but I have found that a data slicer comparing the average demodulated signal to the instantaneous isn't the best way to go. \$\endgroup\$ – Lance Beasley Mar 28 '17 at 13:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.