매트랩을 이용한 BPSK 시스템 BER 구현
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

매트랩을 이용한 BPSK 시스템 BER 구현에 대한 보고서 자료입니다.

목차

1. 서론
2. 본론
실험 목표
1-1. 그림 1-1의 블록도를 보고, 아래의 내용에 답하시오
(a) 일반적인 coherent/non-coherent receiver의 차이점에 대하여 간략히 서술하시오.
(b) ????의 역할을 간단히 설명하시오.
1-2.
(a) 그림 1-1에서 데이터 1을 보냈다고 가정하자.w(t)가 0인 경우 correlator output
x(t)를 구하라.
(b) 다음 sample function은 잡음 성분의 correlator 출력 신호를 나타낸다.
w^(t) 의 mean 과 variance를 각각 구하라.
(c)(a)와 (b)의 결과를 바탕으로 AWGN 환경에서 BPSK 시스템의 비트오류율
수식을 계산 하시오.
1-3. 그림 1-2는 BPSK 시스템 모의실험을 위한 블록도를 나타낸다.
(a) 변수 SNR을 다음과 같이 정의하자.
SNR=Eb/N0 (db)
문제 1-2 (b)의 결과를 이용하여 ?Eb를 (linear scale) ?w(t)의 variance
?? 와 변수 SNR 의 식으로 나타내시오.
(b) 아래 블록도와 (a)의 결과를 바탕으로 ? Eb/N0(dB) 변화에 따른 비트오류율을
모의실험을 통해 구하고 문제 1-2의 (c)에서 구한 결과와 비교하시오.
3. 설계 및 실험 결과.
▶사용 파라미터
▶작동방법
▶실행 결과 화면
▶결과 분석
4. 결론
5.프로그램 소스코드

본문내용

.
▶사용 파라미터
bit = round(rand(1000000,1))
->0~1의 범위를 갖는 백오십만개의 수를 랜덤으로 생성하였다. 그리고 0.5이상은 반올림을 하여 010101110110 .... 과 같은 비트를 생성하였다.
k=1.38*10^-23;
T= 300;
N0=k*T;
var_n=0.5*N0;
noise=randn(1000000,1)*sqrt(var_n);
->분산을 구하기위해 볼쯔만 상수와 잡음평균온도를 더하여서 N0를 구하였다.
SNR =[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15];
->SNR을 0부터 15까지 표현하였다.
signal= bit*2-1;
-> Polar NRZ 신호 생성하였다.
Eb=2*var_n*10.^(SNR(a)/10);
->SNR에 따른 bit에너지를 구한 식으로 표현하였다.
r_signal= signal.*sqrt(Eb);
->Polar NRZ에 실제 크기 부여하였다
receive=r_signal+noise;
->AWGN 채널을 거친 신호를 표현하였다.
utput = (receive+1)./2;
->수신신호를 비트 넘버로 변환하였다.
compare= xor(output , bit);
->수신신호와 송신신호비교(같으면0 다르면1을 의미한다)
error= sum(compare)/1000000;
->compare의 합(다른bit의 개수)/보낸bits수
BER(a)=error;
->SNR이 0~15일때 각각의 에러확률을 BER 행렬에 대입하였다.
▶작동방법
우선 비트를 생성하고, AWGN을 생성한다. for문을 사용하였는데 SNR이 0부터 15까지 변하는 것을 의미한다. for문 내부에서는 각각의 SNR에 대하여 잡음과 송신신호가 더해지고, 수신단에서는 수신된 신호를 받아서 threshold를 기준으로 정보를 판단하는데, 이 때 이것은 if문으로 표현된다. 즉 수신된 신호가 0보다 크거나 같으면 1로 판단하고 작으면 -1로 판단한다. 그 후에 신호를 비트배열로 변환하는 식을 통해 01011101..과 같은 비트배열로 바뀌고, xor 과 sum 함수를 이용하여 에러가 난 비트의 개수를 찾아낸다. 그리고 BER을 구한다. for문 외부에서는 각각의 SNR에서 적용된 BER과 SNR 그리고 이론적으로 구한 SNR을 로그스케일로 플랏한다.
▶실행 결과 화면
백만 개의 bit를 가지고 실험 하였을 때
천만 개의 bit를 가지고 실험하였을 때
▶결과 분석
실험결과는 오차가 거의 없을 정도로 아주 이론값과 잘 맞아떨어진 것을 볼 수 있다. 하지만 첫 번째 그림에서 보다시피 백만 개의 비트로 실험하였을 때 Eb/N0이 10을 넘어가면 시뮬레이션 결과로는 아무런 bit error가 없는 것을 확인할 수 있는데, 이는 실험에 수행된 bit의 개수가 제한되어있었기 때문이다. 따라서 그 이상에서는 에러확률이 백만분의 1보다 낮아서 아예 에러가 없는 걸로 뜨는 것이다. 그래서 2번째 그림에서 보다시피 이번에는 천만번의 비트를 가지고 실험해보았다. 그 결과 SNR이 11일때까지 에러확률이 이론값과 비슷하고 그 이후로는 역시 에러확률은 0으로 나왔다. 시뮬레이션 결과가 완전히 이론값과 일치하기 위해서는 대략 수백조번의 비트를 실험해야 하는데 컴퓨터의 처리속도의 한계로 그 이상으로는 실험하지 않았다.
4. 결론
본 과제에서는 이론적으로 배웠던 BPSK를 실제로 설계해 보았다. 모의실험을 통하여 SNR이 높아지면 BER은 현저하게 줄어드는 것을 확인 할 수 있었다. 그렇게 어려운 코드는 아니었지만 처음에 작성했던 코드가 너무 무거워서 여러 차례 수정을 하였음에도 불구하고 최종 코드 역시 약간은 무거운 점을 지울 수는 없었다. 앞으로 여러 가지 설계를 하여서 좀 더 효율적인 코드를 작성하기 위해 연습을 해야겠다는 느낌을 받은 실험이었다. 하지만 결과가 제대로 나온 점은 스스로 만족한다.
5.프로그램 소스코드
->백만 개의 비트를 생성시킨 소스코드를 첨부한다.
bit = round(rand(1000000,1)); %백만개의 임의의 bit 생성
k=1.38*10^-23; %볼쯔만상수
T= 300; %상온27도에서 절대온도
N0=k*T; %N0를 kT로 표현
var_n=0.5*N0; %잡음의 분산
noise=randn(1000000,1)*sqrt(var_n); %AWGN 표현
SNR =[0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]; %SNR을 0부터 15까지 나타냄
signal= bit*2-1; %Polar NRZ 신호 생성
for a= 1:16 %for문을 16번 돌림(내부에서는 각각의 SNR에 따른 내용을 수행)
Eb=2*var_n*10.^(SNR(a)/10); %해당 SNR을 만족시키는 bit에너지
r_signal= signal.*sqrt(Eb); %Polar NRZ에 실제 크기 부여함
receive=r_signal+noise; %AWGN 채널을 거친 신호
for j = 1:1000000
if receive(j) >=0 %수신신호가 threshold 0보다 크거나 같으면
receive(j)= 1; %1로 판단하고
else %작으면
receive(j)= -1; %-1로 판단한다.
end
end
output = (receive+1)./2; %신호를 비트 넘버로 변환ex)1->1,-1->0
compare= xor(output , bit); % 수신비트와 송신비트비교(같으면0 다르면1)
error= sum(compare)/1000000; %compare의 합(다른bit의개수)/보낸bits수
BER(a)=error; %SNR이 0~15일때 각각의 에러확률을 BER 행렬에 대입
end
BER_Theo=qfunc(sqrt(2*10.^(SNR./10))); %이론적인 에러확률
semilogy(SNR,BER_Theo,SNR, BER,'*'); %동시에 log scale로 플랏
title('BER curves for BPSK system in AWGN channel');
legend('Theory','Simulation');
xlabel('Eb/N0');
ylabel('Bit error rate');

키워드

  • 가격2,000
  • 페이지수10페이지
  • 등록일2009.05.17
  • 저작시기2009.5
  • 파일형식한글(hwp)
  • 자료번호#535616
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니