Programa Em Matlab Para Calcular a BER
-
Upload
diogo-ferreira -
Category
Documents
-
view
164 -
download
6
Transcript of 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
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].
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.
4Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba
Simulação de um sistema de comunicação digitalDiagrama em blocos e implementação
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).
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
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);
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):
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):
10Introdução ao MATLABCopyright@2007 Prof. Gustavo B. Borba
Simulação de um sistema de comunicação digital
Resultado:
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.
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: