MATLAB을 이용한 DS-CDMA 신호의 표현 실험(5)Project MATLAB을 이용한 DS-CDMA 신호의 표현 9715242 이동주
DS-CDMA 방식 Direct-Sequence Code-Division Multiple Access (DS-CDMA) 방식은 다중 채널 무선을 이용하는 사용자들을 위한 통신 방법 중에 한가지. 개개인의 사용자가 자신만의 독특한 코드를 부여 받아서 다른 사용자와의 구별을 통해 통신 하게 됨. CDMA에서는 모든 사용자가 동시에 통신을 할 수 있음. 각각의 사용자는 전송을 위한 주파수 영역 전체를 통해서 정보를 전송 또는 수신할 수 있음. 이런 이유로 CDMA는 Spread Spectrum Multiple Access(SSMA) 또는 간단하게 Spread spectrum communication 이라고도 불림 본 프로젝트에서는 m-file 을 통해 간단한 DS-CDMA 신호를 알아 보도록 하겠음. Data 전송 방식은 BPSK 를 사용하였음.
DS-CDMA 방식 CDMA 방식의 대역확산. (spectrum spreading) 통화에 필요한 데이터의 전송을 위해 필요한 최소의 주파수 대역폭에 비해 훨씬 넓은 대역폭을 사용하여 데이터를 확산하여 낮은 에너지로 송신하는 개념을 의미함.
Baseband signal generate PN-code 를 생성 PN-code(Pseudo code) : 가상잡음. CDMA는 P-Noise을 코드로 저장하고 있다가 신호에 곱함. 그러면 신호는 PN의 특성을 그대로 가지게 되어 전체적으로 잡음처럼 변하게 됨. 수신시에는 송신시 곱해준 PN을 그대로 다시 곱하여 잡음을 신호로 변환시켜줌. d = [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0]; pn = [0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0]; tx = xor(d,pn); %exclusive or 사용 rx = xor(tx,pn); % 수신단과 송신단에 pn코드를 곱해줌 d = 보내고자 하는 DATA signal tx = 송신코드 rx = 수신코드
Baseband signal generate dn = (length(t)-1)/length(d); % 2진 비트 당 시간 샘플 수 % 정보코드의 baseband signal for i=1:length(d); b(:,i)=d(i)*ones(dn,1); end base=[b(:)' b(length(t)-1)]; % 2진 비트 데이터의 신호 파형 % PN코드의 baseband signal b_pn(:,i)=pn(i)*ones(dn,1); base_pn=[b_pn(:)' b_pn(length(t)-1)]; % 송신코드의 baseband signal base_tx = xor(base,base_pn); % 수신정보코드의 baseband signal b_rx(:,i)=rx(i)*ones(dn,1); base_rx=[b_rx(:)' b_rx(length(t)-1)]; baseband signal generate
Baseband signal 반전이 일어난 부분 위의 신호가 Data signal 이고 아래쪽의 그림이 PN-code 그리고 차례로 수신signal 송신signal 이다.
BPSK 변수의 설정 % --- 비트 수 n, symbol 의 종류 M, 심벌 개수 Tn 설정 --- % M-ary (symbol당 비트 수가 n 이면 가능한 상태 수는 M=2^n) n = 1; % symbol 당 비트 수 n=1 BPSK M = 2^n; % symbol 의 종류 M=4 Tn = length(d)/n; % symbol개수=총 비트 수/symbol당 비트 수 % - symbol 주기 T, 전송시간 Td, symbol 최대진폭 A 설정 - T = 1e-6; % symbol 주기 T Td = T*Tn ; % 데이터 전송시간 = symbol 주기 * symbol 수 Es = T/2 ; % T 구간 당 symbol 의 최대 에너지 설정 A = sqrt(2*Es/T); % symbol 의 최대 진폭 = 1 % --- 시간 축 만들기 --- t = linspace(0,Td,length(d)*100+1); % 비트 당 100 샘플 dt = t(2) - t(1); % 시간 축의 시간 증분 %LINSPACE(x1, x2, N) generates N points between x1 and x2.
대역 확산하지 않은 BPSK 신호 % 2진 비트 데이터에서 m 번째 심벌 데이터의 10진 값 만들기 for m = 1:Tn % m 번째 심벌 bsum = 0; for bn =1:n % 비트 자리 수 1 to n bsum = bsum + 2^(n-bn)*d((m-1)*n+bn); end i(m) = bsum; % m 번째 심벌 데이터의 10진 값 phi(m) = 2*pi*i(m)/M; % m 번째 심벌의 위상 end % = 최대진폭 x 심벌의 크기 % --- MPSK 심벌신호 만들기 --- for k = 1:length(t)-1 s(k) = A*cos(wc*t(k)+phi(floor((k-1)/Ns)+1)); s(length(t))=s(length(t)-1); %floor : -무한대방향으로 가장 가까운 정수로 mapping
대역 확산한 BPSK 신호 % 2진 비트 데이터에서 m 번째 심벌 데이터의 10진 값 만들기 for m = 1:Tn % m 번째 심벌 bsum = 0; for bn =1:n % 비트 자리 수 1 to n bsum = bsum + 2^(n-bn)*tx((m-1)*n+bn); end i(m) = bsum; % m 번째 심벌 데이터의 10진 값 phi(m) = 2*pi*i(m)/M; % m 번째 심벌의 위상 end % = 최대진폭 x 심벌의 크기 % --- MPSK 심벌신호 만들기 --- for k = 1:length(t)-1 s_ds(k) = A*cos(wc*t(k)+phi(floor((k-1)/Ns)+1)); s_ds(length(t))=s_ds(length(t)-1);
대역확산 signal 의 비교 subplot(4,1,1); plot(s); grid; axis([0 1800 -1.5 1.5]); subplot(4,1,2); plot(s_ds); subplot(4,1,3); plot (base); axis([1 1800 -0.5 1.5]); subplot(4,1,4); plot(base_tx); 1. 대역확산되지 않은 signal 2. 대역확산된 signal 3. baseband data signal 4. baseband 송신 signal
주파수 변환 % Nyquist 주파수를 가정하므로 fs = 2*BW 에서 BW = fs/2; % 신호의 대역폭 % 신호의 +/- 대역폭으로 주파수 축을 잡으면 f = linspace(-BW,BW,length(t)); % 주파수 축, %LINSPACE(x1, x2, N) generates N points between x1 and x2. df = f(2)-f(1); % 주파수 축의 주파수 증분 [Hz] dw = 2*pi*df; % 주파수 축의 주파수 증분 [rad/sec] % --- fft 함수를 이용한 푸리에 변환 --- F = fftshift(fft(s))/fs; % 주파수영역 계산 (복소수 성분) FT = abs(F); % 주파수영역 크기 (절대값 크기) F_ds = fftshift(fft(s_ds))/fs; % 대역확산 FT_ds = abs(F_ds); % 대역확산 % --- 임펄스 함수가 나타나는 푸리에 변환 --- FT2 = df*FT; % 단위 임펄스 함수 크기를 1 로 표시 FT2_ds = df*FT_ds; % 대역확산
주파수 스펙트럼 대역확산하지 않은 주파수 스펙트럼 대역 확산한 주파수 스펙트럼 대역 확산된 쪽의 주파수 스펙트럼이 대역확산하지 않은 주파수 스펙트럼 대역 확산한 주파수 스펙트럼 대역 확산된 쪽의 주파수 스펙트럼이 고주파부분이 적음을 알수 있다.
주파수 스펙트럼 & 입,출력 signal <참 고 자 료> 최신통신이론 – 윤남일. 복두 출판사 Multi-User Detection by Using Parallel Interference Cancellation for DS-CDMA Communications. - 아주대학교 전자전기공학부, 이호상외 www.rhdh.com