(^^Bắt đầu^^
Hình 4.4: Lưu đồ mô phỏng phát tín hiệu QAM
Với lưu đồ thuật toán mô phỏng phát tín hiệu ỌAM tham khảo mã nguồn tại file chương trình: QAM.m, read.m
Hình 4.5: Lưu đồ mô phỏng thu tín hiệu ỌAM
Với lưu đồ thuật toán mô phỏng thu tín hiệu ỌAM tham khảo mã nguồn tại fíle chương trình: QAM.m, read.m
Bắt đầu
Hình 4.6: Lưu đồ mô phỏng thuật toán tính BER
4.2. Kết quả mô phỏng
Hình 4.7: Giao diện của chương trình được đặt tên là “DATN”
4.2.1. So sánh BER của các phương pháp điêu chê trong OFDM (BPSK, QPSK, 16QAM, 64QAM)
Hình 4.9: Thể hiện BER của kỹ thuật điều chế BPSK
Hình 4.11: Thể hiện BER của kỳ thuật điều chế 16QAM
Hình 4.13: So sánh BER của các kỹ thuật điều chế trong OFDM
Nhận xét:
- Ket quả cho thấy sai số BER giữa lí thuyết và mô phỏng điều chế không đáng kể. Ta thấy tỉ số BER tăng dần từ BPSK, QPSK < 16QAM< 64QAM.
- Kỳ thuật điều chế BPSK và QPSK có tỷ lệ BER là như nhau vậy nên điều chế QPSK thì có thể xem như hệ thống điều chế pha nhị phân trên các song mang trực giao.
4.2.2. Mô phỏng hệ thống OFDM bằng simulink
Hình 4.14: Sơ đồ khối bộ phát và thu tín hiệu OFDM
Đầu tiên, bộ phát nhị phân Bernoulli sẽ tạo chuỗi tín hiệu. Chuồi dữ liệu đầu vào được mã hoá bởi bộ mã Reed-Solommon và được điều chế bởi bộ Mapping QPSK. ĨFFT là hữu ích cho OFDM vì nó phát ra các mẫu của dạng sóng có thành phần tần số thoả mãn điều kiện trực giao. Dữ liệu sau khi được biến đối sẽ được chèn thêm CP và chuỗi huấn luyện để giúp cho qua trình ước lượng kênh và đồng bộ ở máy thu.
Mô phỏng kênh truyền đưa ra các đặc trưng của kênh truyền vô tuyến chung như nhiễu, đa đường và xén tín hiệu. Dùng hai khối trong Matlab: Multipath Rayleigh Fading, AWGN
Tín hiệu thu sau khi loại bỏ CP và chuồi huấn luyện sẽ được đưa vào IFFT để chuyến các mẫu miền thời gian trở lại miền tần số. Đưa vào bộ ước lượng kênh và
4?* iv
'ị £
Frame: 2308 Frequency (MHz)
Hình 4.15: Phổ tín hiệu OFDM truyền
Frame: 2308 Frequency (MHz)
Hình ,4.16: Phổ tín hiệu OFDM,nhập
Hình 4.15 và 4.16 cho thấy tác động của kênh truyền đến phố tín hiệu OFDM. Vì kênh truyền là một kênh ĩading chọn lọc tần số nên phố tín hiệu OFDM nhận ở
Hình 4.17: Dạng sóng tín hiệu OFDM truyên đi Hình 4.18: Dạng sóng tín hiệu OFDM nhận được
Hình 4.17 và 4.18 cho thấy biên độ tín hiệu OFDM nhận được nhỏ hơn biên độ tín hiệu OFDM truyền đi.
In-phase Amplitude
Hình 4.19: Chòm sao QPSK trước CE
-1 -0.5 0 0.5 1
In-phase Amplitude
Hình 4.20: Chòm sao QPSK sau CE Hình 4.19 và 4.20 cho thấy tác dụng của bộ ước lượng và bù kênh. Hình 4.19 chòm sao ỌPSK trước khi ước lượng kênh có biên độ và pha rất không ổn định. Hình 4.20 chòm sao QPSK sau khi ước lượng kênh những điếm chỉ dao động nhỏ quanh một vị trí cố định tức là biên độ và pha gần như ốn định.
4.2.3. Sơ sánh tín hiệu QAM và OFDM
Hình 4.21: Tín hiệu QAM và OFDM bên phát ở miền tần số
Hình 4.23: So sánh tín hiệu âm thanh được điều chế bằng phương thức
Nhận xét:
Hình 4.21, 4.22 và 4.23 cho chúng ta thấy pho của tín hiệu và âm thanh qua bộ điều chế OFDM rất giống với phố tín hiệu và âm thanh ban đầu, bên cạnh đó BER của OFDM nhỏ hơn đáng kể so với BER của ỌAM. Chứng tỏ phương thức điều chế OFDM tổt hơn rất nhiều so với QAM.
4.3. Kết luận chương
KÉT L UẬN VÀ HƯỞNG PHÁ T TRIỂN ĐÊ 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ưong 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 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.
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),...
TÀ I LIỆU THA M KHẢO
[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 Wineless Communications Systems, Artech House, 2004.
[4] Nguyễn Văn Đức, Lý thuyết về Kênh Vô Tuyến, Nhà xuất bản Khoa Học và Kỹ
Thuật, 2006.
[5] Nguyễn Văn Đức, Các Bài tập Matlab về Thông Un Vô Tuyến, Nhà xuất bản
Khoa Học và Kỹ Thuật, 2006.
[6] TS. Cao Phán & KS. Cao Hồng Sơn, Ghép Kênh Tín Hiệu số, HVCN - BCVT,
6/2000
[7] 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.
[8] Th.s Nguyễn Ngọc Tiến, Một số vấn đề kỹ thuật trong OFDM, Tạp chí Bưu
Chính Viễn Thông & Công Nghệ Thông Tin, Kỳ 1 (10/2003).
PHỤ LỤC
^^^^^^^“k^huân hóct dũ* liêu triĩữc khi SÍT ỔUĨIỊ^**''Ỉ''1*'ỈÍỶ^'1*'ỈÍỶ^''! *^'Ỉ''Ỉ''Ỉ'^'Ỉ'^'1*
if channelon == 1
disp('Simulating Channel') norm_factor = max(abs(recv)); recv = (l/norm_factor) * recv; chclipping
chmultipath ch_noise
recv = norm_factor * recv; end EbN0dB=-4:l :24; EbN01in= 10. A(EbN0dB/l 0); %BPSK BPSK = 0.5*erfc(sqrt(EbN01in)); plotHandle=plot(EbNOdB,loglO(BPSK),'r-d'); set(plotHandle,'LineWidth', 1.5); hold on; %M-PSK QPSK = l/2*erfc(sqrt(EbN01in*2)*sin(pi/4)); plotHandle=plot(EbNOdB,loglO(QPSK),'b-*); set(plotHandle,'LineWidth', 1.5); hold on;
set(plotHandle,'LineWidth', 1.5); hold on; %64-QAM QAMD = 2/6*(l-l/sqrt(64))*erfc(sqrt(3*EbN01in*6/(2*(64-l)))); plotHandle=plot(EbNOdB,loglO(ỌAMD),'r-h'); set(plotHandle,'LineWidth', 1.5); hold on; legend('BPSK','QPSKV 16-QAM764-QAM’); axis([-4 24 -8 0]);
set(gca,'XTick’,-4:2:24); %re-name axis accordingly ylabel('Bit Error Rate (BER) in dB');
xlabel('Eb/N0 (dB)');
title('Bit Error Rate (BER) in dB Vs Eb/N0'); grid on;
**********************jyỊộ pị^Q^Ịg hiêu h*n^2j xén
tín
for i = l:length(recv) if recv(i) > clip level
recv(i) = clip_level; end
if recv(i) < -clip level recv(i) = -cliplevel; end
end
if already_made_noise == 0 % only generate once and use for both QAM and OFDM noise = (rand(l,length(recv))-0.5)*2*noise_level; already_made_noise = 1; P Ị-Ị^Ị- SyiTlbol oFDỉ^l disp('Transmitting')
read % Đọc dữ liệu vào
data_in_pol = bin2pol(data_in); lieu phan cuc
txchunk
% Chuyên doi du lieu nhi phan thanh du
*******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 txdechunk
**************0ộị dữ liệu nhị phân (0,1) thanh du lieu cuc (-1,1)*************
y = ones(l,length(x)); for i = 1 :length(x) if x(i) — 0
^'h 4^'h'h'h'h'1''h 'h'1''h 'h'h'1''h'h'1' 'h'1''h 'k-Ị^Qị liêu. íìhi pllâĩl
thành 2ịc2ịc2Ịc ^^2ịc2Ịc2ịc
y = 0; k = 0;
fori= 1:8
% 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(l) = 2; set(2) = 4; set(3) = 8; for j=l:l:3 M = set(j); i=l; for esno=0:l:18 sigma = sqrt(10A(-esno/10)/2); X = floor(M*rand(N,l)); 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+i; end j end
M = set(j); 1=1:1:M;
aux = sum(abs(modmap(l-l,Fd,Fs,method,M)).A2)/M;
energy(j) = aux( 1 )+aux(2);
i=l; for esno=0:2:26; sigma = sqrt(10A(-esno/10)/2)*sqrt(energy(j)); X = floor(M*rand(N,l)); 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+l; end j end semilogy(snr,ber(l,:),'-bA',snr,ber(2,:),'-bo',snr,ber(3,:),'-bs'); grid on; ylabel( BER'); xlabel('E/N_0 (dB)');
% Run OFDM simulation
tic % Start stopwatch to calculate how long QAM simulation takes dispC '),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
num2str(OFDM_simulation_time/60),' minutes.')); else
disp(strcat('Time for OFDM
num2str(OFDM_simulation_time),' seconds.')); end
íunction y = pol2bin(x) % pol2bin
%
% Chuyên doi cac so phan cuc (-1,1) thanh cac so nhi phan (0,1)
simulation
simulation
% ỌAM.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
read % Doc du lieu cho QAM - Khong anh huong den OFDM
d a t a i n p o l = bin2pol(data_in); % Chuyên 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_ỌAM == 0 t e m p d o Q A M = rem(is_pow_2,2); is_pow_2 = is_pow_2/2; if is_pow_2 == 2 temp_do_ỌAM = -99; end end else
temp_do_ỌAM = -99; % 2 la luy thua cua 2
end
if temp_do_ỌAM ~= -99
do_ỌAM = 0; % Khong the thuc hien
dispC '),disp('ERROR: Cannot run ỌAM because num_carriers is not valid.') dispC Please see "setup.m" for details.')
end
if do_QAM == 1 cai thien
end
data_length = length(data_in_pol);
%Cap nhat sau khi them num_OFDM_symbols = ceil(data_length / (2*num_carriers)); % So ky hieu ỌAM duoc bieu dien bang so luong cua du lieu tren mot ky % hieu OFDM
num_QAM_symbols = numcarriers / 2; % So mau tren ky hieu QAM
numsymbolsamples = 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(l,data_length/2);
for i = 1:2:data_length
data_in_4(i - (i-l)/2) = data_in_pol(i)*2 + data_in_pol(i+l); end
% Dinh ro diem lay mau giua 0 va 2*pi
ts = linspace(0, 2*pi*QAM_periods, num_symbol_samples+l); 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+l)*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 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)
muc
for i = l:2:data_length/2 % "cheating" for k = 1 :num_symbol_samples
* * * * ********Tang so song mang de tao tan so cao va du lieu goc**********
costemp(k) = QAMjrx_data(k+((i-
l)/2)*num_symbol_samples) * cos(ts(k));
sintemp(k) = QAM_rx_data(k+((i-
l)/2)*num_symbol_samples) * sin(ts(k)); end
% LPF va xac dinh - chung ta se rat don gian LPF bang phep trung %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;
% 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)); end
Hc*************^^ hjen 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, ỌAM_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(l,data_length); % "cheating"
for i = l:2:data_length
switch QAM_data_out_4( 1 + (i-l)/2) case -3 QAM_data_out_pol(i) = -1; QAM_data_out_pol(i+l) = -1; case -1 QAM_data_out_pol(i) = -1; QAM_data_out_pol(i+l) = 1; % Chuyên doi ve du