Forums

16-QAM with root raised cossine filter

Started by "diogo.rodrigues" November 7, 2007
Can someone help me with a simulating 16-qam using square root raised
cossine filter?
This is the problem: even without noise, the filter are generanting
errors. What am i doing wrong?

Thanks,

Diogo

This is the code:

M = 16;
Simbolo = randint(750,1,M); % Simbol generator
SimboloModulado = qammod(Simbolo,M); % Modulation

% Tx filter
SimboloEnviado = 2*rcosflt(SimboloModulado,1,8,'sqrt/fir',rolloff,1);

clear j
n = sqrt(pn)*randn(length(SimboloEnviado),1);
n2 = j*sqrt(pn)*randn(length(SimboloEnviado),1);
%SimboloComRuido = SimboloEnviado + n + n2;
SimboloComRuido = SimboloEnviado; % Channel without noise

% Rx filter
SimboloRecebido = 2*rcosflt(SimboloComRuido,1,8,'sqrt/fir',rolloff,1);

SimboloRecebido2 = downsample(SimboloRecebido,64); % Downsample
SimboloDecidido = qamdemod(SimboloRecebido2,M); % Demodulation

% Delay elimination
SimboloDecidido2 = SimboloDecidido(2:(length(Simbolo)+1));

biterr(SimboloDecidido2,Simbolo)
It seems you are upsampling at both the TX as well as at the RX filter.

You signal is operating at 8 samples / symbol. So once you go through the
TX filter,
you are at 8samples/symbol, the RX filter needs to operate at this symbol
rate (not at a further
upsampled rate of 8samp/symb). Then the final downsampling needs to be by a
factor of 8 (not 64).

hope this helps...
Nandan

On Nov 6, 2007 10:11 AM, diogo.rodrigues
wrote:

> Can someone help me with a simulating 16-qam using square root raised
> cossine filter?
> This is the problem: even without noise, the filter are generanting
> errors. What am i doing wrong?
>
> Thanks,
>
> Diogo
> This is the code:
>
> M = 16;
> Simbolo = randint(750,1,M); % Simbol generator
> SimboloModulado = qammod(Simbolo,M); % Modulation
>
> % Tx filter
> SimboloEnviado = 2*rcosflt(SimboloModulado,1,8,'sqrt/fir',rolloff,1);
>
> clear j
> n = sqrt(pn)*randn(length(SimboloEnviado),1);
> n2 = j*sqrt(pn)*randn(length(SimboloEnviado),1);
> %SimboloComRuido = SimboloEnviado + n + n2;
> SimboloComRuido = SimboloEnviado; % Channel without noise
>
> % Rx filter
> SimboloRecebido = 2*rcosflt(SimboloComRuido,1,8,'sqrt/fir',rolloff,1);
>
> SimboloRecebido2 = downsample(SimboloRecebido,64); % Downsample
> SimboloDecidido = qamdemod(SimboloRecebido2,M); % Demodulation
>
> % Delay elimination
> SimboloDecidido2 = SimboloDecidido(2:(length(Simbolo)+1));
>
> biterr(SimboloDecidido2,Simbolo)
>