DSPRelated.com
Forums

Re: problem in 8psk demodulation-decision region

Started by oa00...@surrey.ac.uk April 6, 2011
Well I had a similar challenge with the decision region but not any more. From you code, what you need to do is, when you work out the decision angles (phases)from 0 to pi (anti-clockwise on the constellation), its positive but from 0 to -pi (clockwise) the phases used should be negative. Also take into account the wrap around regions and take decisions seperately for it. Check below to have a better idea what i'm talking about.(the code below applies to gray coded 8psk DVB-S2 standard constellation decision regions, so you'll need to work your's out if the position of your constellation point is different).....cheers

w1=[0 0 1];w2=[0 0 0];w3=[1 0 0];w4=[1 1 0];
w5=[0 1 0];w6=[0 1 1];w7=[1 1 1];w8=[1 0 1];
x=1;
for i=1:length(Received)
t=angle(Received(i));
if t>=0 && t R(x:x+2)=w1;
elseif t>=pi/8 && t<3*pi/8
R(x:x+2)=w2;
elseif t>=3*pi/8 && t<5*pi/8
R(x:x+2)=w3;
elseif t>=5*pi/8 && t<7*pi/8
R(x:x+2)=w4;
elseif t>=7*pi/8 && t<=pi
R(x:x+2)=w5;
elseif t<=0 && t>-pi/8
R(x:x+2)=w1;
elseif t<=-pi/8 && t>-3*pi/8
R(x:x+2)=w8;
elseif t<=-3*pi/8 && t>-5*pi/8
R(x:x+2)=w7;
elseif t<=-5*pi/8 && t>-7*pi/8
R(x:x+2)=w6;
elseif t<=-7*pi/8 && t>=-pi
R(x:x+2)=w5;
end
x=x+3;
end
>
>
>
> Hi everyone,
>
>I am trying to simulate 8PSK modulation-demodulation scheme in matlab. The
>problem arises in the decision making after matched filtering and re-sampling.
>
>I am comparing the angles of received signal and taking decision accordingly as
>shown in the code below. But seems that it misses out few symbols or is not
>working properly. Any idea???? what would be the optimum decision?????????
>
>Thanks,
>
>kunal.
>
>( Here, ym is the Received signal after Matched filtering and Re-sampling. and
>
>s1=[1 1 1]; s2=[0 1 1]; s3=[0 1 0]; s4=[0 0 0];
>s5=[0 0 1]; s6=[1 0 1]; s7=[1 0 0]; s8=[1 1 0]; )
>
>k2=1;
>for i=1:length(ym)
>ang1=angle(ym(i));
>
>if(ang1>15*pi/8 & ang1<=pi/8)
>Rx(1,k2:k2+2)=s1;
>elseif(ang1>pi/8 & ang1<=3*pi/8)
>Rx(1,k2:k2+2)=s2;
>elseif(ang1>3*pi/8 & ang1<=5*pi/8)
>Rx(1,k2:k2+2)=s3;
>elseif(ang1>5*pi/8 & ang1<=7*pi/8)
>Rx(1,k2:k2+2)=s4;
>elseif(ang1>7*pi/8 & ang1<=9*pi/8)
>Rx(1,k2:k2+2)=s5;
>elseif(ang1>9*pi/8 & ang1<*pi/8)
>Rx(1,k2:k2+2)=s6;
>elseif(ang1>11*pi/8 & ang1<*pi/8)
>Rx(1,k2:k2+2)=s7;
>elseif(ang1>13*pi/8 & ang1<*pi/8)
>Rx(1,k2:k2+2)=s8;
>else
>
>end;
>k2=k2+3;
>
>end;
>
>after this I am comparing Rx with the original data using biterr.
>
>
>
>
>
>
>
>
>
>
>
>
>