e. Số bít cùn gA và số bít khá cD khi dãy PN7 dịch một bít
3.1. MÔ TẢ MÔ PHỎNG
Mô phỏng hệ thống thu phát trải phổ trực tiếp nhằm đánh giá tỷ lệ lỗi bít (BER) tại máy thu phụ thuộc tỷ số tín/tạp và phụ thuộc số lượng người sử dụng. Hệ thống mô phỏng bao gồm các thành phần sau:
• Máy phát trải phổ trực tiếp
• Máy thu trải phổ trực tiếp
• Mô hình của kênh truyền sử dụng kênh truyền đa đường có tác động của
nhiễu trắng phân bố Gaussian. Đây là mô hình kênh truyền phổ biến nhất được sử dụng khi mô phỏng hệ thống CDMA. Mô hình này giả thiết tín hiệu phát đi được cộng thêm nhiễu trắng có phổ công suất phân bố đều trên mọi khoảng tần số.
• Số lượng người dùng đồng thời trong hệ thống (số lượng người phát tín
hiệu đồng thời) có thể thay đổi
• Tỷ số tín/tạp tại máy thu thay đổi trong một khoảng cho trước
• Sử dụng điều chế BPSK
Hệ thống mô phỏng giả thiết không sử dụng các sơ đồ mã hóa có sửa sai hoặc sử dụng nhiều an ten thu phát. Mô phỏng cũng bỏ qua hiệu ứng Fading gây ra khi máy thu nhận được nhiều hơn một tín hiệu do phản xa từ các vật chắn của môi trường.
Sơ đồ mô phỏng được thể hiện trên Hình 3.1 dưới đây. Trong sơ đồ có các thành phần sau:
• Người dùng n: mô phỏng máy phát thứ n do người dùng tương ứng sử
dụng để phát tín hiệu lên kênh truyền. Mỗi người dùng sử dụng một máy phát hoàn chỉnh được mô tả trong Hình 3.2. Tín hiệu cần phát đi được tạo ra ngẫu nhiên từ một bộ sinh số ngẫu nhiên. Độ dài của chuỗi tín hiệu cần phát đi được tính theo bit và có thể thay đổi. Chú ý: nếu chiều dài càng lớn thì càng mất nhiều thời gian để xử lý. Giả thiết, tất cả n người dùng đều phát đi các chuỗi dữ liệu có độ dài bằng nhau.
• Kênh truyền: có chứa n tín hiệu tương ứng với nu máy phát. Kênh truyền
được giả thiết có sự tác động của nhiễu trắng dẫn đến tín hiệu thu được ở máy thu sẽ khác với tín hiệu phát ra.
• Máy thu: mô phỏng máy thu tại trạm BTS sử dụng trong mạng di động để
đồng thời thu tín hiệu của nu người dùng, tách tín hiệu của mỗi người và đánh giá tỷ lệ lỗi bit khi truyền. Sơ đồ máy thu hoàn chỉnh được mô tả trong Hình 3.3.
Hình 3.1: Sơ đồ mô phỏng hệ thống trải phổ trực tiếp 3.2. Mô hình hệ thống máy thu phát trải phổ trực tiếp
Hình 3.1 mô tả mô hình hệ thống trải phổ trực tiếp, chuỗi dữ liệu ban đầu được đem đến khâu điều chế. Sau đó tín hiệu được đem đi trải phổ bằng cách cho nhân với chuỗi PN. Tần số của PN cao hơn nhiều lần của tín hiệu dữ liệu. Sau đó tín hiệu được phát đi
Hình 3.2: Sơ đồ máy phát DS-SS Dữ liệu vào Sóng mang fc Điều chế BPSK PN mk Sd(t ) Sss(t) P(t) PN PN PN PN
Ở phần thu ta thực hiện quá trình ngược lại. Trước hết chúng ta thực hiện nén phổ rồi sau đó đem tín hiệu đã được nén phổ đi giải điều chế BPSK, cuối cùng khôi phục lại tín hiệu gốc.
Hình 3.3: Sơ đồ khối thu DS-SS
Cần chú ý là do môi trường nên luôn có nhiễu tác động khi truyền tín hiệu. Do đó, tín hiệu thu được bao gồm tín hiệu phát và nhiễu.
Đây là lược đồ phổ của tiến trình trên:
Hình 3.4: Phổ của dữ liệu được điều chế với tần số sóng mang f0
Hình 3.5: Phổ của dữ liệuđược trải phổ 1/2PT f0 0 mk Sss(t) PN Sóng mang fc Dữ liệu Giải điều chế BPSK Bộ lọc dải thông p(t) f0 0 1/2PTc
Hình 3.6: Tín hiệu nhận được có nhiễu
Hình 3.7: Phổ tín hiệu trước khi lọc nhiễu
Hình 3.8: Tín hiệu sau khi nén phổ qua bộ lọc
Hình 3.9: Phổ Tín hiệu và nhiễu cuối cùng thu được Tín hiệu sau
khi nén phổ
Nhiễu sau khi giãn phổ
Tín hiệu
3.3. Mô phỏng sử dụng môi trường Matlab 3.3.1. Chương trình
%% MO PHONG HE THONG CDMA SU DUNG TRAI PHO TRUC TIEP
nu = input('So luong nguoi dung dong thoi = '); u =[];
s = [];
ml = input('Do dai chuoi tin hieu goc (tinh theo bit) = '); hl = 2^nextpow2(nu);
user = input('Ve do thi tin hieu cua nguoi dung thu = '); if user > nu
errordlg('STT cua nguoi dung phai nho hon so luong nguoi dung', 'Loi nhap du lieu');
exit; end
% Tao chuoi ngau nhien co bien do trong khoong [0 - 1] cho NU nguoi dung. Chuoi ngau nhien duoc su dung nhu chuoi thong tin ma nguoi dung can truyen di
% Tao ra gia tri khoi dau khac nhau dua tren dong ho may cho bo tao so ngau nhien. Khi do, moi lan chay ham randi se tra lai cac ket qua khac nhau
RandStream.setDefaultStream(RandStream('mt19937ar','seed',sum(100*clock)) ); for k = 1:nu u_binary(k,:) = randi([0 1], 1, ml); end % Dieu che BPRK for k = 1:nu u_BPSK(k,:) = u_binary(k,:)*2-1; end
% Lan luot phat cac chuoi ngau nhien cua moi nguoi dung len kenh truyen co nhieu trang
for n = 1:nu
s(n,:) = cdmat(u_BPSK(n,:), hl, n); end
% Lay tong cua cac tin hieu truyen di cua NU nguoi dung cd1 = sum(s);
%% Lay mau tin hieu can truyen cd = rectpulse(cd1, 4);
loo = 0;
for SNR = 0:0.1:4 loo = loo + 1;
% Mo phong nhieu trang tren duong truyen tac dong len tin hieu can % truyen di voi ty so tin/tap SNR
t = awgn(cd, SNR, 'measured');
%% Ket hop va tao ra tin hieu truyen di co nhieu (downsampling) or = intdump(t, 4);
% Thu NU tin hieu tuong ung voi NU nguoi dung phat di sr = []; for p = 1:nu sr(p,:) = cdmar(or, hl, p, ml); end binary_rx = (sr + 1) / 2;
% Tinh toan BER (ty le loi bit cua tin hieu phat so voi tin hieu thu [n(loo), r(loo)] = symerr(u_BPSK, sr);
end
%% Ve tin hieu phat va tin hieu thu. Day la tin hieu tong cua NU nguoi dung figure;
% Tin hieu phat di subplot(211); plot(cd1);
title(['Tin hieu tong cua ', num2str(nu), ' nguoi dung']); xlabel('Thoi gian');
ylabel('Bien do'); grid;
% Tin hieu thu ve subplot(212); plot(or);
title('Tin hieu thu duoc co nhieu'); xlabel('Thoi gian');
ylabel('Bien do'); grid;
%% Ve bieu do tin/tap phu thuoc ty le loi bit SNR = 0:0.1:4;
figure;
semilogy(SNR, r, 'r-x');
title(['Ty le loi bit phu thuoc ty so tin/tap']); xlabel('Ty so tin/tap');
ylabel('Ty le loi bit'); grid;
%% Ve tin hieu cho 1 nguoi dung nao do (duoc chon o dau chuong trinh) figure;
% Tin hieu goc
subplot(221); stem(u_binary(user, 1:ml), 'filled');grid xlabel('Bit');
ylabel('Bien do');
title(['Tin hieu goc cua nguoi dung ', num2str(user)]); % Tin hieu sau dieu che BPSK
subplot(222); stem(u_BPSK(user, 1:ml), 'filled');grid xlabel('Bit');
ylabel('Bien do');
title(['Tin hieu dieu che BPRK cua nguoi dung ', num2str(user)]); % Tin hieu sau trai pho
subplot(223);
stem(s(user, 1:ml), 'filled'); grid
xlabel('Bit'); ylabel('Bien do');
title(['Tin hieu sau trai pho cua nguoi dung ', num2str(user)]); % Tin hieu thu duoc voi nhieu
stem(sr(user, 1:ml), 'filled'); grid
xlabel('Bit'); ylabel('Bien do');
title(['Tin hieu thu da giai ma cua nguoi dung ', num2str(user)]);