Programa Em Matlab Para Calcular a BER

12
1 Introdução ao MATLAB (Aula 4) XVII Curso de Especialização em Teleinformática e Redes de Computadores Departamento Acadêmico de Eletrônica Universidade Tecnológica do Paraná 26 de agosto de 2007

Transcript of Programa Em Matlab Para Calcular a BER

Page 1: Programa Em Matlab Para Calcular a BER

1

Introdução ao MATLAB (Aula 4)

XVII Curso de Especialização em Teleinformática e Redes de Computadores

Departamento Acadêmico de EletrônicaUniversidade Tecnológica do Paraná

26 de agosto de 2007

Page 2: Programa Em Matlab Para Calcular a BER

2Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digital

Características: Fonte binária equiprovável. Mensagens de 4 bits. Modulação binária antipodal (bipolar). Canal AWGN (additive white Gaussian noise). Demodulação por decisão abrupta.

Avaliação de desempenho: Curva da taxa de erro de bit (BER [ou Pe: probabilidade de erro]) em função da relação sinal ruído (SNR [ou Eb/N0] em dB).

Objetivo: Para o sistema especificado, implementar um script Matlab que

recebe como parâmetro uma SNR em dB máxima (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].

Page 3: Programa Em Matlab Para Calcular a BER

3Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digital

Curva BER x SNR [dB] típica: número de bitserrados recebidos

número total de bits transmitidos

BER =

Interpretação:Uma BER de 10-4, por exemplo, indica que em 10.000 bits transmitidos, 1 bit poderá ser recebido errado.

Page 4: Programa Em Matlab Para Calcular a BER

4Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digitalDiagrama em blocos e implementação

Page 5: Programa Em Matlab Para Calcular a BER

5Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digitalDiagrama em blocos e implementação

A simulação consite em calcular a BER(k) para diferentes SNRdb(k), onde k = 0,1,2,...,SNRdbMax. Com isso é possível plotar a curva BER x SNR[db].Para cada SNRdb(k), o critério de parada é um número de erros limite (neLim).

Page 6: Programa Em Matlab Para Calcular a BER

6Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digitalCódigo

Script (arquivo sim_com_dig1.m):

% sim_com_dig1 [script]%------------------------------------------------------------------------ USUÁRIOSNRdbMax = 9; %SNR[db] máxima a ser simuladaneLim = 400; %número de erros limite para a parar cálculo de cada BER%------------------------------------------------------------------------------------

SNRdb = 0:SNRdbMax; %SNRdb de 0 até SNRdbMax

%mostra progresso e calcula BER para cada SNRdbfor k=1:length(SNRdb) disp(['Calculando BER para SNR[dB] = ' num2str(SNRdb(k))]) BER(k) = simComDig1(SNRdb(k), neLim); end

figure %nova figurasemilogy(SNRdb, BER, 'r-d'); %eixo y em escala logarítmicaxlabel(gca, 'SNR [dB]'); %nome do eixo xylabel(gca, 'BER'); %nome do eixo ytitle('Desempenho do sistema'); %título

Page 7: Programa Em Matlab Para Calcular a BER

7Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digitalCódigo

Função simComDig1() (arquivo simComDig1.m):

function [ber] = simComDig1(snrdb, nelim)nmsg = 0; %inicializa contador do número de mensagensne = 0; %inicializa contador do número de errossgma = 1/sqrt(2*10^(snrdb/10)); %variância do ruído Gaussiano em função da snrdbwhile(ne < nelim) %FONTE (binária equiprovável, mensagens de 4 bits)

...%MODULADOR (modulação binária antipodal)...%CANAL (AWGN)...%DEMODULADOR (demodulação por decisão abrupta)...%COMPARADOR...%CONTADOR DE ERROS...%CONTADOR DE MENSAGENS...

endber = ne/(nmsg*4);

Page 8: Programa Em Matlab Para Calcular a BER

8Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digitalCódigo

%FONTE (binária equiprovável, mensagens de 4 bits)*un = rand(1, 4); %vetor com 4 números aleatórios entre 0 e 1 de distribuição uniformemt = double(un > 0.5); %transforma em binário

%*%Outra possibilidade: função randint() da Communication Toolbox; m = randint(1,4,[0,1]);

%MODULADOR (modulação binária antipodal)%se m = 0 -> sinal = -1%se m = 1 -> sinal = +1 sinal = mt*2 - 1; %sinal (mensagem modulada)

%CANAL (AWGN)%ruído Gaussiano com média 0 e variância sgmasinal = sinal + randn(1, 4)*sgma; %sinal com ruído

Função simComDig1() (arquivo simComDig1.m):

Page 9: Programa Em Matlab Para Calcular a BER

9Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digitalCódigo

%DEMODULADOR (demodulação por decisão abrupta)%se sinal(i) positivo -> mr(i) = 1%se sinal(i) negativo -> mr(i) = 0mr = double(sinal > 0);

%COMPARADORpe = bitxor(mt, mr); %vetor 4 posicoes; 1 significa erro naquela posição de mr

%CONTADOR DE ERROSne = ne + sum(pe); %acumula o número de erros

%CONTADOR DE MENSAGENSnmsg = nmsg + 1; %acumula o número de mensagens

Função simComDig1() (arquivo simComDig1.m):

Page 10: Programa Em Matlab Para Calcular a BER

10Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digital

Resultado:

Page 11: Programa Em Matlab Para Calcular a BER

11Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digital

Exercício:

1º Escreva a função simComDig2() (arquivo simComDig2.m) que calcula a BER em função da SNRdb para o sistema com as seguintes característcas: Fonte binária equiprovável. Mensagens de 4 bits. Modulação binária on-off. Canal AWGN. Demodulação por decisão abrupta

(limiar = 1/2).

2º Escreva o script sim_com_dig_cmp (arquivo sim_com_dig_cmp.m) que chama as funções simComDig1() e simComDig2() e plota a curva BERxSNR[db] de cada sistema no mesmo gráfico.

Objetivo: Comparar o desempenho dos dois sistemas.

Page 12: Programa Em Matlab Para Calcular a BER

12Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba

Simulação de um sistema de comunicação digital

syndtable() encode() decode()

Para a simulação de sistemas de comunicação digital com codificação, o Communication Toolbox do Matlab oferece funções como: