DSPRelated.com
Forums

Removing modulation of a PAM signal and reconstruction the information

Started by darkstar September 18, 2006
Hi! 
Using Matlab, I need to send a message through a simulated AWGN channel.
I have defined the signal pulse to be a square pulse with different
amplitudes depending on the bit, a0 for a 0 and a1 for a 1.

I modulate the signal by tx =  tx .* cos(2*pi*fmod) where tx is
kron(bits,signalpulse).

If I do not add any noise, I am able to retreive the message using first a
filter to remove the modulation, then a matched filter on each of the bits.
If I add noise, the result of the matched filters looks almost the same for
every bit.

If I don't use any modulation, I can use negative amplitued and just check
the sign of the result from the matched filter, but I can't do that when
using the modulation.

Do you have any tips for me on how to change my signal to make it possible
to distinguish different bits?

Thanks in advance.

Martin



darkstar said the following on 18/09/2006 15:40:
> Hi! > Using Matlab, I need to send a message through a simulated AWGN channel. > I have defined the signal pulse to be a square pulse with different > amplitudes depending on the bit, a0 for a 0 and a1 for a 1. > > I modulate the signal by tx = tx .* cos(2*pi*fmod) where tx is > kron(bits,signalpulse).
Is fmod a vector? If not, cos(2*pi*fmod) will be a scalar, and you will not be performing modulation.
> If I do not add any noise, I am able to retreive the message using first a > filter to remove the modulation
What kind of filter? Generally, one removes modulation by mixing with a cosine wave (or passing through a non-linearity), and then low-pass filtering the result.
> then a matched filter on each of the bits.
Incidentally, with a square pulse, there is no need to perform matched filtering, as the matched filter will also be a square, which is just integration!
> If I add noise, the result of the matched filters looks almost the same for > every bit. > > If I don't use any modulation, I can use negative amplitued and just check > the sign of the result from the matched filter, but I can't do that when > using the modulation. > > Do you have any tips for me on how to change my signal to make it possible > to distinguish different bits?
-- Oli
>> I modulate the signal by tx = tx .* cos(2*pi*fmod) where tx is >> kron(bits,signalpulse). >Is fmod a vector? If not, cos(2*pi*fmod) will be a scalar, and you will
> not be performing modulation.
Well, no, but n (which is supposed to be there) is.
>What kind of filter? [snip]
I am using fir1 in matlab to produce a low pass filter. When checking the plots, the square pulse looks just as before with expected ripples.
>> then a matched filter on each of the bits.
Just convolving a part of the data where I know a bit is with the pulse shape.
>> Do you have any tips for me on how to change my signal to make it
possible
>> to distinguish different bits?
What I was seeking was how to make the SNR greater. I have now used 4 different amplitudes so I can use a greater number of samples per symbol. But with 4 amplitudes, the difference between the the symbols is smaller. When using the matched filter I have tried looking at the energy sum(s.^2) and max(s), since the they all have the same number of samples, the max(s) should give the same result, but faster. Without noise there are four different amplitudes. With noise the amplitudes is all over the place. Choosing the closest match doesn't work, since the noise has too high energy. I am making any sense? ;-) Thanks!
darkstar said the following on 18/09/2006 22:06:
>>> then a matched filter on each of the bits. > Just convolving a part of the data where I know a bit is with the pulse > shape. > >>> Do you have any tips for me on how to change my signal to make it > possible >>> to distinguish different bits? > > What I was seeking was how to make the SNR greater. I have now used 4 > different amplitudes so I can use a greater number of samples per symbol. > But with 4 amplitudes, the difference between the the symbols is smaller.
In a matched filter system, the receiver SNR is independent of the pulse shape, and is given by: SNR = 2 Es/No Therefore, the only way to increase SNR is by increasing the pulse energy.
> When using the matched filter I have tried looking at the energy sum(s.^2) > and max(s), since the they all have the same number of samples, the max(s) > should give the same result, but faster.
What you're describing is actually a correlation detector. You should be calculating: s = SUM x[n].g[n] n where x[n] is the received pulse, and g[n] is the pulse shape. Therefore, for each given symbol position, there is only one value, s, associated with it. So I'm not sure what you mean when you talk about max(s) or sum(s.^2).
> Without noise there are four different amplitudes. With noise the > amplitudes is all over the place. Choosing the closest match doesn't work, > since the noise has too high energy.
To ensure that you're doing the right thing, run a simulation to find the BER you're getting, and compare it against the standard curves for PAM. (You can find these in Proakis, on the web, or MATLAB can draw them for you if you have the Comms Toolbox). -- Oli
"darkstar" <martin.isaksson@gmail.com> wrote in message 
news:C8SdnXN-d97Yl5LYnZ2dnUVZ_r2dnZ2d@giganews.com...
>>> I modulate the signal by tx = tx .* cos(2*pi*fmod) where tx is >>> kron(bits,signalpulse). >>Is fmod a vector? If not, cos(2*pi*fmod) will be a scalar, and you will > >> not be performing modulation. > > Well, no, but n (which is supposed to be there) is.
So your modulated signal looks like tx(n).*cos(2*pi*fmod*n/C) where C>>2*pi*fmod? and your signalpulse is ? (long enough that you get several cycles at fmod in a signalpulse? ) you say that it's a square wave so signalpulse looks like ones(32,1) or something?
>ter. When checking the > plots, the square pulse looks just as before with expected ripples. >
So this just sees part of the lower sideband ? Where is your LPF 3dB frequency w.r.t. fmod?
>>> then a matched filter on each of the bits. > Just convolving a part of the data where I know a bit is with the pulse > shape.
That's the pulse shape including the expected ripples? Otherwise it's nothing like a matched filter any more.
> >>> Do you have any tips for me on how to change my signal to make it > possible >>> to distinguish different bits? > > What I was seeking was how to make the SNR greater. I have now used 4 > different amplitudes so I can use a greater number of samples per symbol.
I don't understand how more amplitudes will help increase the number of samples per symbol you can use.
> But with 4 amplitudes, the difference between the symbols is smaller.
> > When using the matched filter I have tried looking at the energy sum(s.^2) > and max(s), since the they all have the same number of samples, the max(s) > should give the same result, but faster. > Without noise there are four different amplitudes. With noise the > amplitudes is all over the place. Choosing the closest match doesn't work, > since the noise has too high energy. > > I am making any sense? ;-)
I don't know yet. Best of Luck - Mike