Impulse Noise Protection and Mitigation for OFDM

So your transmitter builds an OFDM symbol and sends it out into the world. There it is, traveling along, minding its own business, not bothering anybody when WHAM! Impulse noise!

ofdm_packet_plus_impulse_noise

Our symbol crawls, limps, scratches its way to the receiver, where he’s greeted with alarm and quickly wheeled into the operating room. A doctor takes a quick scan of the vitals. They should look like this…

RX QPSK Constellation Symbol Error Rate = 0.000
RX QPSK Constellation
Symbol Error Rate = 0.000

But instead they look like this:

RX QPSK Constellation Symbol Error Rate = 0.0527
RX QPSK Constellation
Symbol Error Rate = 0.0527

What to do? The easy answer for the doc is to amputate. That’s right, just clip the time domain waveform to limit the impulse amplitude in hopes of improving the RX constellation. It’s nasty, but often better than nothing. He takes out the scalpel and is walking towards the patient when the emergency room doors burst open behind him!

“STOP!!!”

“Wha?”

“STOP, I say! Before you do a complete hatchet job on this waveform, why don’t you let me do the procedure instead?”

“Why?”

“Well I attended a Globecom conference in 2004, where I was trained in a more… shall we say… refined technique for impulse mitigation. More of the patient’s data might be saved.”

“And just what is this fancy pants technique you’re going on about?”

“Here, let me draw it for you on the whiteboard…”

J. Armstrong and H. A. Suraweera “Decision directed impulse noise mitigation for OFDM in frequency selective fading channels”, Proc. IEEE GLOBECOM 2004, Dallas, TX, USA, 2004
J. Armstrong and H. A. Suraweera
“Decision directed impulse noise mitigation for OFDM in frequency selective fading channels”,
Proc. IEEE GLOBECOM 2004, Dallas, TX, USA, 2004

The doctor attempts to make sense of the diagram, but his eyes begin to glaze over. “Ah… sure… go right ahead…”

Yes, the diagram has a lot of boxes and arrows, but the technique isn’t hard to understand.

1. Perform normal OFDM demodulation in frequency domain
2. Assume nearest neighbor constellation points were what were actually transmitted
3. Subtract nearest neighbor constellation points from actual
4. Take IFFT of that to create time domain estimate of noise waveform.
5. Keep only the large spikes and zero the rest (non-linear operation)
6. Subtract this waveform from the original received RX waveform (noise canceling for the impulse).
7. Demodulate a second time.

Does it work? Yes it does, amazingly. And, this technique can even be used to subtract out impulses that are below the envelope of your RX waveform! Obviously, clipping isn’t even an option there since you don’t even know if or where its been hit.

How did it perform for the OFDM symbol above? First, here’s a zoomed in shot of the RX waveform with and without the impulse noise canceling.

impulse_noise_canceling_ofdm

You already saw the nasty unmodified constellation above. Here’s the constellation after impulse mitigation.

RX QPSK Constellation Symbol Error Rate = 0.0107
RX QPSK Constellation
Symbol Error Rate = 0.0107
.

Still not pretty, but a step in the right direction. More importantly, look at that reduction in symbol error rate!

Steal my matlab code for the implementation here: imp_mit.m

12 thoughts on “Impulse Noise Protection and Mitigation for OFDM”

  1. plz help me to remove impulse using threshold blanking or show me the plot of ser estimation for ur coding in graph..

  2. hey i can’t code the whole project! 🙂 why don’t you give it a try and let me know where you get stuck.

    (1) detect impulse locations by identifying where waveform voltage exceeds some threshold.

    (2) set those samples to 0 (maybe add a few samples on either side, and smoothly ramp down to 0 and back up rather than a step change).

    (3) play around with threshold and # of samples to blank until you find the one that improves SER the most.

    good luck!

  3. hi prayalhalder – my code just computes SER at one noise level. you want to put the whole thing in a loop so that the SER is computed at a series of noise levels by varying the variable NM, which scales the noise power.

Leave a Reply

Your email address will not be published.