0
Tải bản đầy đủ (.pdf) (87 trang)

Lưu đồ mô phỏng thu phát tín hiệu QAM:

Một phần của tài liệu NGHIÊN CỨU VỀ OFDM VÀ VẤN ĐỀ ĐỒNG BỘ TRONG HỆ THỐNG OFDM VÀ MÔ PHỎNG HỆ THỐNG OFDM (Trang 72 -87 )

Với lưu đồ thuật toán mô phỏng phát tín hiệu QAM tham khảo mã nguồn tại file chương trình: Hình 4.11 Lưu đồ mô phỏng phát tín hiệu QAM Kết thúc Phát 16-QAM Chuyển đổi dữ liệu nhị phân {0,1} thành phân cực {-1,1} N hập số sóng mang Chuyển dữ liệu phân cực {-1,1} thành 4 mức {-3,-1,1,3} Số sóng mang = lũy thừa của 2 Nhập lại.Số sóng mang phải là lũy thừa của 2 Đ S Bắt đầu Đọc dữ liệu vào

Chương 4 Chương trình mô phng h thng OFDM www.4tech.com.vn

Với lưu đồ thuật toán mô phỏng thu tín hiệu QAM tham khảo mã nguồn tại file chương trình: QAM.m, write.m

Hình 4.12 Lưu đồ mô phỏng thu tín hiệu QAM

Bắt đầu

Khởi tạo mức 0 cho tốc độ

Tăng số lượng sóng mang cho dữ

liệu gốc và thời hạn tần số cao Khôi phục dữ liệu thành dạng nối tiếp Sắp xếp chính xác giữa các mức {-3,-1,1,3} Chuyển dữ liệu phân cực {-1,1} thành nhị phân {0,1} Kết thúc Ghi dữ liệu ra

Chương 4 Chương trình mô phng h thng OFDM www.4tech.com.vn

4.3.4 Lưu đồ mô phỏng thuật toán tính BER

4.4 Kết quả chương trình mô phỏng 4.4.1 So sánh tín hiệu QAM và OFDM 4.4.1 So sánh tín hiệu QAM và OFDM Hình 4.13 Lưu đồ mô phỏng thuật toán tính BER Bắt đầu Số lượng bit lỗi = 0 i = 1 Lỗi = | Dữ liệu vào(i) - Dữ liệu ra(i)| Số bit lỗi = số bit lỗi + 1 Kết thúc i=i+1

BER = 100*số bit lỗi/ Độ dài dữ

liệu (%) Lỗi>0 i<= Độ dài dữ liệu vào Đ S Đ S

Chương 4 Chương trình mô phng h thng OFDM www.4tech.com.vn

Hình 4.14: Tín hiệu QAM và OFDM phát ở miền tần số

Chương 4 Chương trình mô phng h thng OFDM www.4tech.com.vn

4.4.2 So sánh tín hiệu âm thanh được điều chế bằng QAM và OFDM

Hình 4.17 cho chúng ta thấy phổ của tín hiệu OFDM rất giống với phổ tín hiệu của âm thanh ban đầu. Chứng tỏ phương thức điều chế OFDM tốt hơn so với QAM.

4.5 Kết luận chương

Trong chương cuối cùng này đã mô phỏng hệ thống OFDM bằng simulink của Matlab, với những scope để hiện thị tín hiệu giúp cho việc phân tính đánh giá tác

động của kênh truyền đến tín hiệu, tác dụng của bộ ước lượng và bù kênh. Tuy nhiên, simulink này chỉ dừng lại ở mức độđơn giản, tức là chỉ mô phỏng hệ thống OFDM băng gốc với phương thức điều chế QPSK. Trong chương cũng đã so sánh tín hiệu OFDM và tín hiệu QAM, file âm thanh của chúng để thấy rõ những ưu

điểm của OFDM.

Hình 4.16 So sánh tín hiệu âm thanh được điều chế bằng phương thức QAM và OFDM

Kết lun và hướng phát trin đề tài www.4tech.com.vn

KT LUN VÀ HƯỚNG PHÁT TRIN ĐỀ TÀI

Công nghệ ghép kênh phân chia theo tần số trực giao - OFDM là một công nghệ hiện đại cho truyền thông tương lai. Hiện nay việc nghiên cứu và ứng dụng OFDM không ngừng được nghiên cứu và mở rộng phạm vi ứng dụng bởi những ưu

điểm trong việc tiết kiệm băng tần và khả năng chống lại fading chọn lọc tần sốcũng như xuyên nhiễu băng hẹp. Đồ án đã tìm hiểu, trình bày những vấn đề cơ bản của kỹ thuật OFDM cũng như một số vấn đề kỹ thuật cho công nghệ OFDM và khả

năng ứng dụng OFDM vào các công nghệ tương lai này.

Đồng bộ là một vấn đề quan trọng không chỉ trong hệ thống OFDM mà còn cả trong các hệ thống khác cũng vậy. Hệ thống OFDM yêu cầu khắt khe về vấn đề đồng bộ vì sự sai lệch về tần số, ảnh hưởng của hiệu ứng Doppler khi di chuyển và lệch pha sẽ gây ra nhiễu giao thoa tần số (ICI). Trong bất kỳ một hệ thống OFDM nào, hiệu suất cao phụ thuộc vào tính đồng bộ hóa giữa máy phát và máy thu, làm mất tính chính xác định thời dẫn đến nhiễu ISI và ICI khi mất độ chính xác tần số

Chương trình mô phỏng tín hiệu OFDM ởđồ án này chỉ mới thực hiện được bước đầu là mô phỏng tổng quan và và mô phỏng so sánh tín hiệu. Có thể thiết kế

hệ thống OFDM với Simulink trong Matlab và đi vào mô phỏng các thuật toán, các phương pháp cụ thể trong từng vấn đề. Ngoài ra, để nâng cao chỉ tiêu chất lượng hệ

thống OFDM, người ta sử dụng mã hóa tín hiệu OFDM. Do đó chúng ta có thể bổ

sung vấn đề mã hóa vào trong đồ án này.

Việc tìm hiểu tổng quan về OFDM và giải quyết các vấn đề kỹ thuật trong hệ

thống OFDM, chúng ta có thể hướng đến ứng dụng của OFDM trong tương lai như:

® Nghiên cứu, tìm hiểu một số hệ thống OFDM nâng cao như VOFDM (Vector OFDM), COFDM (Coded OFDM), WOFDM (Wideband OFDM),...

® Kết hợp OFDM với các công nghệ khác như FDMA, TDMA và CDMA để

tạo thành các kỹ thuật đa truy cập trong thông tin di động.

®Ứng dụng OFDM trong DVB-T, WLAN, OFDMA, ...

Tài liu tham kho www.4tech.com.vn

TÀI LIU THAM KHO

[1]. Nguyễn Phạm Anh Dũng, Phạm Khắc Kỷ, Hồ Văn Cừu, "Ứng dụng kỹ thuật

điều chế đa sóng mang OFDM trong thông tin di động CDMA", Tạp chí Bưu chính Viễn thông & Công nghệ Thông tin, số 12 tháng 8 năm 2004, trang 33.

[2]. Nguyễn Văn Đức,“Lý thuyết và các ứng dụng của kỹ thuật OFDM”, Nhà xuất bản khoa học và kỹ thuật Hà Nội, 2006.

[3]. Ramjee Prasad “OFDM for Wireless Communications Systems” Artech House, 2004.

[4]. Ye(Geoffrey) Li, Gordon Stuber “Orthogonal Frequency Division Multiplexing for Wireless Communications” ,Springer , 2006 .

[5] Hui Liu, Guoqing Li “ OFDM- Based Broadband Wireless Networks” Wiley Interscience, 2005.

[6] L.Hanzo, M.Munster, B.J.Choi and T.Keller “ OFDM and MC-CDMA for Broadband Multi-User Communications, WLANs and Broadcasting ” All of Univesity of Southampton,UK, IEEE Press/ Wiley 2003.

[7] Juha Heikala, John Terry, Ph.D. “OFDM Wireless LANS : A Theoritical and Practical Guide” ISBN :0672321572.

[8]. Henrik Schulze and Christian Luders, “Theory and Application of OFDM and CDMA, Fachhochschule Sudwestfalen Meschede, Germany-2005.

[9]. L.HANZO,W.WEBB,and T.KELLER,"Single-and Multi-Carrier Quadrature Amplititude Modulation". New York: IEEE Press/ Wiley, Apr.2000.

[10]. Richard van Nee, Ramjee Prasad, " OFDM for wireless multimedia communications", Artech House, 2000.

[11]. Ahmad R.S. Bahai, Burton R. Saltzberg, “Multicarier Digital Communications Theory and Applications of OFDM”, Kluwer Academic Publishers, 2002.

Ph lc www.4tech.com.vn

PH LC

******************ChuNn hóa dữ liệu trước khi sử dụng******************* if channel_on == 1

disp('Simulating Channel') norm_factor = max(abs(recv)); recv = (1/norm_factor) * recv; ch_clipping

ch_multipath ch_noise

recv = norm_factor * recv; end **********************Mô phỏng hiệu ứng xén tín hiệu************** for i = 1:length(recv) if recv(i) > clip_level recv(i) = clip_level; end if recv(i) < -clip_level recv(i) = -clip_level; end end ************************Mô phỏng hiệu ứng đa đường******************* copy1=zeros(size(recv)); for i=1+d1:length(recv) copy1(i)=a1*recv(i-d1); end copy2=zeros(size(recv)); for i=1+d2:length(recv) copy2(i)=a2*recv(i-d2); end recv=recv+copy1+copy2;

Ph lc www.4tech.com.vn

*******************Tính toán nhiễu ( thực hiện ở phiá thu) *********** if already_made_noise == 0 % only generate once and use for both QAM and OFDM

noise = (rand(1,length(recv))-0.5)*2*noise_level; already_made_noise = 1;

end

recv = recv + noise; % khôi phục biên độ dữ liệu

****************** Phát symbol OFDM *********************** disp('Transmitting')

read % Đọc dữ liệu vào

data_in_pol = bin2pol(data_in); % Chuyen doi du lieu nhi phan thanh du lieu phan cuc

tx_chunk

*******Thuc hien IFFT de tao dang song mien thoi gian bieu dien du lieu***** td_sets = zeros(num_chunks,fft_size);

for i = 1:num_chunks

td_sets(i,1:fft_size) = real(ifft(spaced_chunks(i,1:fft_size))); end

tx_dechunk

**************Đổi dữ liệu nhị phân (0,1) thanh du lieu cuc (-1,1)************ y = ones(1,length(x)); for i = 1:length(x) if x(i) == 0 y(i) = -1; end end **********************Đổi dữ liệu nhị phân thành hexa******************* y = 0; k = 0; for i = 1:8 y = y + x(8-k)*2^k; k = k+1; end

Ph lc www.4tech.com.vn

*******************

% Simulation of digital M-PSK modulation schemes over an AWGN channel % November 2004. Robert Morelos-Zaragoza. San Jose State University. % Needs the Communications toolbox.

clear

Fd = 1; Fs = 1;

N = 100000 ; method='psk'; set(1) = 2; set(2) = 4; set(3) = 8; for j=1:1:3 M = set(j); i=1; for esno=0:1:18 sigma = sqrt(10^(-esno/10)/2); x = floor(M*rand(N,1)); y = modmap(x,Fd,Fs,method,M); ynoisy = y + sigma*randn(N*Fs,2); z = demodmap(ynoisy,Fd,Fs,method,M); s = symerr(x,z); ber(j,i) = (s/N)/log2(M); snr(i) = esno; i=i+1; end j end semilogy(snr,ber(1,:),'-b^',snr,ber(2,:),'-bo',snr,ber(3,:),'-bs'); grid on; ylabel('BER'); xlabel('E/N_0 (dB)'); legend('BPSK', 'QPSK', '8PSK',1);

title('Simulated error performance of M-PSK. SJSU - Fall 2004.'); ***************************

% Simulation of digital M-QAM modulation schemes over an AWGN channel % November 2004. Robert Morelos-Zaragoza. San Jose State University. % Needs the Communications toolbox.

clear

Fd = 1; Fs = 1;

N= 100000 ; method='qask'; set(1) = 4; set(2) = 16; set(3) = 64;

Ph lc www.4tech.com.vn for j=1:1:3 M = set(j); l=1:1:M; aux = sum(abs(modmap(l-1,Fd,Fs,method,M)).^2)/M; energy(j) = aux(1)+aux(2); i=1; for esno=0:2:26; sigma = sqrt(10^(-esno/10)/2)*sqrt(energy(j)); x = floor(M*rand(N,1)); y = modmap(x,Fd,Fs,method,M); ynoisy = y + sigma*randn(N*Fs,2); z = demodmap(ynoisy,Fd,Fs,method,M); s = symerr(x,z); ber(j,i) = (s/N)/log2(M); snr(i) = esno; i=i+1; end j end semilogy(snr,ber(1,:),'-b^',snr,ber(2,:),'-bo',snr,ber(3,:),'-bs'); grid on; ylabel('BER'); xlabel('E/N_0 (dB)');

legend('QPSK', '16-QAM', '64-QAM',1);

title('Cac kieu dieu che M-QAM khac nhau trong kenh truyen AWGN'); ************************

function y = eight2bin(x) % eight2bin

%

% Converts eight bit data (0-255 decimal) to a binary form for processing. y = zeros(1,8); k = 0; while x > 0 y(8-k) = rem(x,2); k = k+1; x = floor(x/2); end

Ph lc www.4tech.com.vn

********************** % Run OFDM simulation

tic % Start stopwatch to calculate how long QAM simulation takes disp(' '),disp('---') disp('OFDM Simulation')

tx ch rx

% Stop stopwatch to calculate how long QAM simulation takes OFDM_simulation_time = toc;

if OFDM_simulation_time > 60

disp(strcat('Time for OFDM simulation=', num2str(OFDM_simulation_time/60), ' minutes.')); else

disp(strcat('Time for OFDM simulation=', num2str(OFDM_simulation_time), ' seconds.')); end ********************* function y = pol2bin(x) % pol2bin %

% Chuyen doi cac so phan cuc (-1,1) thanh cac so nhi phan (0,1) % Chap nhan mot mang 1-D cua cac so phan cuc

% Loai bo cac zeros, khi chung khong hop le % % Loai bo cac zeros - Khong can cho giai ma

y = ones(1,length(x)); for i = 1:length(x) if x(i) == -1 y(i) = 0; end end *****************************

% QAM.m So sanh OFDM (Da song mang) voi QAM da muc (Don song mang) % Khi chung ta phat cung mot so luong bit giong ngau tren mot chu ky thoi % gian

Ph lc www.4tech.com.vn

read % Doc du lieu cho QAM - Khong anh huong den OFDM

data_in_pol = bin2pol(data_in); % Chuyen doi du lieu nhi phan thanh du lieu phan cuc

% Kiem tra so song mang co phai la luy thua cua 2 is_pow_2 = num_carriers; temp_do_QAM = 0; if is_pow_2 ~= 2 while temp_do_QAM == 0 temp_do_QAM = rem(is_pow_2,2); is_pow_2 = is_pow_2/2; if is_pow_2 == 2 temp_do_QAM = -99; end end else

temp_do_QAM = -99; % 2 la luy thua cua 2 end

if temp_do_QAM ~= -99

do_QAM = 0; % Khong the thuc hien

disp(' '),disp('ERROR: Cannot run QAM because num_carriers is not valid.') disp(' Please see "setup.m" for details.')

end

if do_QAM == 1

tic % Bat dau de tinh toan thoi gian mo phong thuc hien QAM disp(' '), disp('---')

disp('QAM simulation'), disp('Transmitting')

****** Them cac muc zeros de du lieu duoc chia thanh cac phan bang nhau data_length = length(data_in_pol);

r = rem(data_length,num_carriers); if r ~= 0

for i = 1:num_carriers-r

data_in_pol(data_length+i) = 0; %Them dau vao voi cac zeros vao tap hop du lieu

end %Toc do co the duoc cai thien

end

Ph lc www.4tech.com.vn

num_OFDM_symbols = ceil(data_length / (2*num_carriers));

% So ky hieu QAM duoc bieu dien bang so luong cua du lieu tren mot ky % hieu OFDM

num_QAM_symbols = num_carriers / 2; % So mau tren ky hieu QAM

num_symbol_samples = fft_size / num_QAM_symbols;

**** *Chuyen doi du lieu phan cuc [-1, 1] thanh du lieu 4 muc [-3, -1, 1, 3]**** data_in_4 = zeros(1,data_length/2);

for i = 1:2:data_length

data_in_4(i - (i-1)/2) = data_in_pol(i)*2 + data_in_pol(i+1); end

% Dinh ro diem lay mau giua 0 va 2*pi

ts = linspace(0, 2*pi*QAM_periods, num_symbol_samples+1); % Phat du lieu 16-QAM

% Tong do dai cua truyen dan 16-QAM

tx_length = num_OFDM_symbols * num_QAM_symbols * num_symbol_samples; QAM_tx_data = zeros(1,tx_length); for i = 1:2:data_length/2 for k = 1:num_symbol_samples QAM_tx_data(k+((i-1)/2)*num_symbol_samples) = data_in_4(i)*cos(ts(k)) + data_in_4(i+1)*sin(ts(k)); end end

% Do channel simulation on QAM data

xmit = QAM_tx_data; % ch dung du lieu 'xmit' va tra ve 'recv' ch

QAM_rx_data = recv; % Luu du lieu QAM sau khi mo phong kenh

clear recv %Loai bo 'recv' sao cho no khong nhieu voi OFDM

clear xmit % Loai bo 'xmit' sao cho no khong nhieu voi OFDM

disp('Receiving') % Khoi phuc du lieu nhi phan (Giai ma QAM)

cos_temp = zeros(1,num_symbol_samples); % sin_temp = cos_temp; %

Ph lc www.4tech.com.vn

xxx = zeros(1,data_length/4); % Khoi tao muc khong cho toc do

yyy = xxx; % QAM_data_out_4 = zeros(1,data_length/2); %

for i = 1:2:data_length/2 % "cheating" for k = 1:num_symbol_samples

************Tang so song mang de tao tan so cao va du lieu goc********** cos_temp(k) = QAM_rx_data(k+((i-

1)/2)*num_symbol_samples) * cos(ts(k));

sin_temp(k) = QAM_rx_data(k+((i- 1)/2)*num_symbol_samples) * sin(ts(k));

end

% LPF va xac dinh - chung ta se rat don gian LPF bang phep trung % binh

xxx(1+(i-1)/2) = mean(cos_temp); yyy(1+(i-1)/2) = mean(sin_temp);

************ Khoi phuc du lieu thanh dang noi tiep******************** QAM_data_out_4(i) = xxx(1+(i-1)/2);

QAM_data_out_4(i+1) = yyy(1+(i-1)/2); end

********************** %Tinh toan giua cac muc khong

zeros_between = ((fft_size/2) - (num_carriers + num_zeros))/(num_carriers + num_zeros);

spaced_chunks = zeros(num_chunks,fft_size); %Them vao giua cac muc khong

i = 1;

for k = zeros_between +1:zeros_between +1:fft_size/2

spaced_chunks(1:num_chunks,k) = padded_chunks(1:num_chunks,i); i = i+1;

end

% Gap du lieu de tao ra mot ham le cho dau vao IFFT for i = 1:num_chunks

% Chu y: chi muc = 1 that ra la tan so mot chieu de ifft -> no khong % tao ban sao len truc y do thi

spaced_chunks(i,fft_size:-1:fft_size/2+2) = conj(spaced_chunks(i,2:fft_size/2));

Ph lc www.4tech.com.vn

********Thuc hien xac dinh giua cac muc [-3, -1, 1, 3]****** for i = 1:data_length/2

if QAM_data_out_4(i) >= 1, QAM_data_out_4(i) = 3; elseif QAM_data_out_4(i) >= 0, QAM_data_out_4(i) = 1; elseif QAM_data_out_4(i) >= -1, QAM_data_out_4(i) = -1;

else QAM_data_out_4(i) = -3; end

end

******Chuyen doi du lieu 4 muc [-3, -1, 1, 3] ve du lieu phan cuc [-1, 1]****** QAM_data_out_pol = zeros(1,data_length); % "cheating"

for i = 1:2:data_length

switch QAM_data_out_4(1 + (i-1)/2) case -3 QAM_data_out_pol(i) = -1; QAM_data_out_pol(i+1) = -1; case -1 QAM_data_out_pol(i) = -1; QAM_data_out_pol(i+1) = 1; case 1 QAM_data_out_pol(i) = 1; QAM_data_out_pol(i+1) = -1; case 3 QAM_data_out_pol(i) = 1; QAM_data_out_pol(i+1) = 1; otherwise

disp('Error detected in switch statment - This should not be happening.');

end end

QAM_data_out = pol2bin(QAM_data_out_pol); % Chuyen doi ve du lieu nhi phan

Một phần của tài liệu NGHIÊN CỨU VỀ OFDM VÀ VẤN ĐỀ ĐỒNG BỘ TRONG HỆ THỐNG OFDM VÀ MÔ PHỎNG HỆ THỐNG OFDM (Trang 72 -87 )

×