Você está na página 1de 12

Introduo ao MATLAB

(Aula 4)

XVII Curso de Especializao em Teleinformtica e Redes de Computadores Departamento Acadmico de Eletrnica Universidade Tecnolgica do Paran

26 de agosto de 2007

Simulao de um sistema de comunicao digital


Caractersticas:
Fonte binria equiprovvel. Mensagens de 4 bits. Modulao binria antipodal (bipolar). Canal AWGN (additive white Gaussian noise). Demodulao por deciso abrupta.

Avaliao de desempenho:
Curva da taxa de erro de bit (BER [ou Pe: probabilidade de erro]) em funo da relao sinal rudo (SNR [ou Eb/N0] em dB). Para o sistema especificado, implementar um script Matlab que recebe como parmetro uma SNR em dB mxima (SNRdbMax), calcula a BER(k) para as SNRs em dB (SNRdb) de 0 at SNRdbMax com passo igual a 1 e, finalmente, plota a curva BER x SNR [dB].
Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

Objetivo:

Simulao de um sistema de comunicao digital


Curva BER x SNR [dB] tpica:
BER = nmero de bits errados recebidos

nmero total de bits transmitidos

Interpretao: Uma BER de 10-4, por exemplo, indica que em 10.000 bits transmitidos, 1 bit poder ser recebido errado.

Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

Simulao de um sistema de comunicao digital


Diagrama em blocos e implementao

Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

Simulao de um sistema de comunicao digital


Diagrama em blocos e implementao

A simulao consite em calcular a BER(k) para diferentes SNRdb(k), onde k = 0,1,2,...,SNRdbMax. Com isso possvel plotar a curva BER x SNR[db]. Para cada SNRdb(k), o critrio de parada um nmero de erros limite (neLim).
Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

Simulao de um sistema de comunicao digital


Script (arquivo sim_com_dig1.m): Cdigo % sim_com_dig1 [script] %------------------------------------------------------------------------ USURIO SNRdbMax = 9; %SNR[db] mxima a ser simulada neLim = 400; %nmero de erros limite para a parar clculo de cada BER %-----------------------------------------------------------------------------------SNRdb = 0:SNRdbMax; %SNRdb de 0 at SNRdbMax %mostra progresso e calcula BER para cada SNRdb for k=1:length(SNRdb) disp(['Calculando BER para SNR[dB] = ' num2str(SNRdb(k))]) BER(k) = simComDig1(SNRdb(k), neLim); end figure %nova figura semilogy(SNRdb, BER, 'r-d'); %eixo y em escala logartmica xlabel(gca, 'SNR [dB]'); %nome do eixo x ylabel(gca, 'BER'); %nome do eixo y title('Desempenho do sistema'); %ttulo
Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

Simulao de um sistema de comunicao digital


Funo simComDig1() (arquivo simComDig1.m): Cdigo
function [ber] = simComDig1(snrdb, nelim) nmsg = 0; %inicializa contador do nmero de mensagens ne = 0; %inicializa contador do nmero de erros sgma = 1/sqrt(2*10^(snrdb/10)); %varincia do rudo Gaussiano em funo da snrdb while(ne < nelim) %FONTE (binria equiprovvel, mensagens de 4 bits) ... %MODULADOR (modulao binria antipodal) ... %CANAL (AWGN) ... %DEMODULADOR (demodulao por deciso abrupta) ... %COMPARADOR ... %CONTADOR DE ERROS ... %CONTADOR DE MENSAGENS ... end ber = ne/(nmsg*4);

Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

Simulao de um sistema de comunicao digital


Funo simComDig1() (arquivo simComDig1.m): Cdigo

%FONTE (binria equiprovvel, mensagens de 4 bits)* un = rand(1, 4); %vetor com 4 nmeros aleatrios entre 0 e 1 de distribuio uniforme mt = double(un > 0.5); %transforma em binrio %* %Outra possibilidade: funo randint() da Communication Toolbox; m = randint(1,4,[0,1]); %MODULADOR (modulao binria antipodal) %se m = 0 -> sinal = -1 %se m = 1 -> sinal = +1 sinal = mt*2 - 1; %sinal (mensagem modulada)

%CANAL (AWGN) %rudo Gaussiano com mdia 0 e varincia sgma sinal = sinal + randn(1, 4)*sgma; %sinal com rudo

Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

Simulao de um sistema de comunicao digital


Funo simComDig1() (arquivo simComDig1.m): Cdigo

%DEMODULADOR (demodulao por deciso abrupta) %se sinal(i) positivo -> mr(i) = 1 %se sinal(i) negativo -> mr(i) = 0 mr = double(sinal > 0);

%COMPARADOR pe = bitxor(mt, mr); %vetor 4 posicoes; 1 significa erro naquela posio de mr


%CONTADOR DE ERROS ne = ne + sum(pe); %acumula o nmero de erros %CONTADOR DE MENSAGENS nmsg = nmsg + 1; %acumula o nmero de mensagens

Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

Simulao de um sistema de comunicao digital


Resultado:

Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

10

Simulao de um sistema de comunicao digital


Exerccio:
1 Escreva a funo simComDig2() (arquivo simComDig2.m) que calcula a BER em funo da SNRdb para o sistema com as seguintes caracterstcas:

Fonte binria equiprovvel. Mensagens de 4 bits. Modulao binria on-off. Canal AWGN. Demodulao por deciso abrupta (limiar = 1/2).

2 Escreva o script sim_com_dig_cmp (arquivo sim_com_dig_cmp.m) que chama as funes simComDig1() e simComDig2() e plota a curva BERxSNR[db] de cada sistema no mesmo grfico.

Objetivo:
Comparar o desempenho dos dois sistemas.

Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

11

Simulao de um sistema de comunicao digital


Para a simulao de sistemas de comunicao digital com codificao, o Communication Toolbox do Matlab oferece funes como:

syndtable() encode() decode()

Introduo ao MATLAB Copyright@2007 Prof. Gustavo B. Borba

12