lOMoARcPSD| 58833082
I. RRC filter
a) Code:
clc; clear all; close all;
Ts = 1; % Chu kỳ của một symbol L = 16; % Số mẫu
trên mỗi symbol span = 6; % Độ dài của xung (số
symbol) roll_offs = [0, 0.25, 0.75, 1]; % Các giá trị roll-
off cần vẽ
% Tạo vector thời gian phù hợp t =
linspace(-span/2, span/2, span * L + 1);
% Định nghĩa màu sắc cho các đường vẽ
colors = ['b', 'r', 'g', 'k']; figure; hold on; grid on;
for i = 1:length(roll_offs) pt =
rcosdesign(roll_offs(i), span, L, 'normal');
plot(t, pt, 'Color', colors(i), 'LineWidth', 1.5);
end xlabel('Time (Symbol Periods)'); ylabel('Amplitude');
title('Raised Cosine Pulses for Different Roll-Off
Factors'); legend({'r=0', 'r=0.25', 'r=0.75', 'r=1'},
'FontSize', 12); hold off;
MATLAB
lOMoARcPSD| 58833082
b) Độ dài của xung
Hàm rcosdesign() tạo ra một xung cosine nâng bị cắt xén (truncated).
Độ dài của xung (theo đơn vị symbol period) được tính theo công thức:
T pulse=span×T s
Trong mã trên, span = 6 nên tổng độ dài của xung (từ điểm đầu đến điểm cuối)
là 6 symbol periods.
c) (a) Điều kiện loại bỏ nhiễu liên ký hiệu (ISI)
Dựa trên tiêu chuẩn Nyquist, để đảm bảo không có ISI, xung p(t) phải có giá trị
bằng 0 tại các thời điểm lấy mẫu t = nT
s
(n ≠ 0) và có giá trị cực đại tại t = 0.
(b) Kiểm tra ISI dựa trên đồ thị của p(t)
lOMoARcPSD| 58833082
Từ đồ thị MATLAB với xung cosine nâng (span = 6), ta thấy rằng tại các thời điểm
t = nT
s
, giá trị của p(t) bằng 0, ngoại trừ t = 0.
Điều này chứng tỏ rằng khi sử dụng xung này để truyền tín hiệu, không có ảnh
hưởng ISI giữa các symbol nếu lấy mẫu tại đúng thời điểm t = nT
s
.
Do đó, bộ lọc Raised Cosine thỏa mãn tiêu chuẩn Nyquist Zero ISI và có thể được
sử dụng để truyền dữ liệu mà không gây ISI.
II. M-PAM TRANSMISSION:
B1: Xác định các tham số hệ thống
SNR = 10 dB (tỷ lệ tín hiệu trên nhiễu).
N = 10 ký hiệu (số lượng symbols được truyền).
M = 4 (điều chế 4-PAM).
Với 4-PAM, mỗi ký hiệu mang log (M) = 2 bits.
Các mức biên độ tương ứng: [-1.5, -0.5, 0.5, 1.5].
Hệ thống tạo ra một chuỗi bit nhị phân ngẫu nhiên.
Đầu ra: Chuỗi bit đầu vào để sử dụng trong quá trình điều chế.
lOMoARcPSD| 58833082
B2: Điều chế M-PAM (M-PAM Modulation)
Ánh xạ bit nhị phân sang các mức biên độ trong 4-PAM:
00 → -1.5
01 → -0.5
11 → 0.5
10 → 1.5
Mỗi ký hiệu biểu diễn 2 bit.
Đầu ra: Biểu đồ tín hiệu đã được điều chế.
lOMoARcPSD| 58833082
B3: Lấy thêm mu
Chèn (L-1) số 0 giữa các ký hiệu để tăng tốc độ lấy mẫu.
Mục đích: Chuẩn bị tín hiệu cho quá trình định hình xung.
Đầu ra: Biểu đồ tín hiệu sau khi được lấy mẫu lại.
lOMoARcPSD| 58833082
B4: Định hình xung bằng SRRC
Sử dụng bộ lọc SRRC với hệ số roll-off β = 0.3 để làm mịn tín hiệu truyền, giúp tín
hiệu trở nên liên tục thay vì rời rạc.
Quá trình này được thực hiện trong khối lọc truyền (Transmit Filter) g(t).
Kết hợp tín hiệu đã lấy mẫu với xung SRRC.
Đầu ra: Biểu đồ tín hiệu sau khi định hình xung.
lOMoARcPSD| 58833082
B5: Thêm nhiễu AWGN:
Thêm nhiễu Gaussian (AWGN) để mô phỏng kênh truyền thực tế với giá trị SNR
xác định (w(t)).
=> Đầu ra: Biểu đồ tín hiệu bị nhiễu tại bộ thu sau khi truyền qua kênh và chịu ảnh
hưởng của nhiễu.
lOMoARcPSD| 58833082
B6: Lọc và lấy mẫu tín hiệu (Matched Filter)
Kết hợp hai bước: sử dụng bộ lọc matched filter để lọc xung bằng thuật toán SRRC
đảo ngược thời gian, sau đó lấy mẫu tại các thời điểm chính xác
t=nT
(với T là chu kỳ của một symbol).
(*) Lấy mẫu tại các thời điểm ký hiệu chính xác để khôi phục các symbol đã
truyền.
=> Đầu ra: Biểu đồ tín hiệu sau khi được lọc và lấy mẫu.
lOMoARcPSD| 58833082
B7: Giải điều chế M-PAM
Tín hiệu nhận được được ánh xạ lại thành chuỗi nhị phân ban đầu dựa trên mức
biên độ đã thiết lập trong quá trình điều chế.
(Việc giải điều chế M-PAM được thiết kế giống hệt quá trình điều chế để khôi phục
tín hiệu sát với bản gốc.)
=> Đầu ra: Biểu đồ tín hiệu nhị phân được phục hồi.
(Lưu ý: Tín hiệu nhị phân sau khi phục hồi có thể khác so với đầu vào do lỗi bit
trong quá trình truyền.)
(+) Trong mô phỏng, nhiễu thực tế thể cao hơn hoặc bị ảnh hưởng bởi méo tín
hiệu, giao thoa ký hiệu (ISI), dẫn đến tăng BER.
(+) SNR ban đầu là giá trị thiết lập, trong khi SNR tính từ BER phản ánh chất
lượng thực tế sau khi đo đạc.
lOMoARcPSD| 58833082
(+) Nếu BER quá cao (>15%), có thể hệ thống không hoạt động tốt ở mức SNR =
10 dB hoặc có thêm nhiễu trong kênh truyền (channel/AWGN noise).
III. Truyền Dẫn M-PAM (Biểu Đồ Mắt - Eye Diagram) Thông
số cấu hình (Khác với phần II): snr = 40 dB: Tỉ số tín hiệu trên
nhiễu (Eb/N0) cho kênh AWGN
N = 1000: Số lượng ký hiệu (symbols) được truyền đi
M = 4: Số mức điều chế của M-PAM
pam = [-1.5 -0.5 0.5 1.5]: Các giá tr biên độ tương ứng ca M-PAM L = 4:
Số lượng mẫu (samples) trên mỗi symbol β = 0.3: Hệ số roll-off của bộ lọc
SRRC (Square Root Raised Cosine) trong bước định hình xung (pulse
shaping)
Gọi hàm vẽ biểu đồ mắt (Eye Diagram):
lOMoARcPSD| 58833082
figure; plotEyeDiagram(r,L,3*L,delay,100);
Giải thích các tham số đầu vào của hàm plotEyeDiagram:
r: Tín hiệu nhận được sau khi truyền qua kênh và bộ lọc khớp (matched filter).
L: Số lượng mẫu trên mỗi symbol, giúp xác định tỷ lệ lấy mẫu.
3*L: Khoảng thời gian quan sát trên cửa sổ vẽ (Window Span in Samples), tương
ứng với 3 symbols liên tiếp.
delay: Độ trễ tín hiệu (timing offset), giúp căn chỉnh chính xác vị trí lấy mẫu để vẽ
biểu đồ mắt.
100: Số lượng khung (number of traces to plot), xác định số lần lặp của tín hiệu
trên biểu đồ mắt. Giá trị này cần đủ lớn để quan sát rõ mẫu tín hiệu. Src code:
function [eyeVals] = plotEyeDiagram(x,L,nSamples,offset,nTraces)
%Function to plot eye diagram, save this to a separate file
%If the signal processing toolbox is not available, put M=1
M=4; %oversampling factor for eyediagram - for smoother plot tnSamp =
(nSamples*M*nTraces); %total number of samples
y=interp(x,M); %interpolate the signal with the oversampling factor if
(M*offset+tnSamp) > length(y) tnSamp = floor((length(y)-
M*offset)/(nSamples*M))*(nSamples*M); nTraces =
tnSamp/(nSamples*M); % Điều chỉnh nTraces cho phù hợp end eyeVals =
reshape(y(M*offset + 1:(M*offset+tnSamp)),nSamples*M,nTraces); t=( 0 : 1 :
M*(nSamples)-1)/(M*L); plot(t,eyeVals); title('Eye
Plot');xlabel('t/T_{sym}');ylabel('Amplitude'); end

Preview text:

lOMoAR cPSD| 58833082 I. RRC filter a) Code: clc; clear all; close all;
Ts = 1; % Chu kỳ của một symbol L = 16; % Số mẫu
trên mỗi symbol span = 6; % Độ dài của xung (số
symbol) roll_offs = [0, 0.25, 0.75, 1]; % Các giá trị roll- off cần vẽ
% Tạo vector thời gian phù hợp t =
linspace(-span/2, span/2, span * L + 1);
% Định nghĩa màu sắc cho các đường vẽ
colors = ['b', 'r', 'g', 'k']; figure; hold on; grid on;
for i = 1:length(roll_offs) pt =
rcosdesign(roll_offs(i), span, L, 'normal');
plot(t, pt, 'Color', colors(i), 'LineWidth', 1.5);
end xlabel('Time (Symbol Periods)'); ylabel('Amplitude');
title('Raised Cosine Pulses for Different Roll-Off
Factors'); legend({'r=0', 'r=0.25', 'r=0.75', 'r=1'}, 'FontSize', 12); hold off; MATLAB lOMoAR cPSD| 58833082 b) Độ dài của xung
Hàm rcosdesign() tạo ra một xung cosine nâng bị cắt xén (truncated).
Độ dài của xung (theo đơn vị symbol period) được tính theo công thức:
T pulse=span×T s
Trong mã trên, span = 6 nên tổng độ dài của xung (từ điểm đầu đến điểm cuối) là 6 symbol periods.
c) (a) Điều kiện loại bỏ nhiễu liên ký hiệu (ISI)
Dựa trên tiêu chuẩn Nyquist, để đảm bảo không có ISI, xung p(t) phải có giá trị
bằng 0 tại các thời điểm lấy mẫu t = nTs (n ≠ 0) và có giá trị cực đại tại t = 0.
(b) Kiểm tra ISI dựa trên đồ thị của p(t) lOMoAR cPSD| 58833082
Từ đồ thị MATLAB với xung cosine nâng (span = 6), ta thấy rằng tại các thời điểm
t = nTs , giá trị của p(t) bằng 0, ngoại trừ t = 0.
Điều này chứng tỏ rằng khi sử dụng xung này để truyền tín hiệu, không có ảnh
hưởng ISI giữa các symbol nếu lấy mẫu tại đúng thời điểm t = nTs.
Do đó, bộ lọc Raised Cosine thỏa mãn tiêu chuẩn Nyquist Zero ISI và có thể được
sử dụng để truyền dữ liệu mà không gây ISI. II. M-PAM TRANSMISSION:
B1: Xác định các tham số hệ thống
SNR = 10 dB (tỷ lệ tín hiệu trên nhiễu).
N = 10 ký hiệu (số lượng symbols được truyền). M = 4 (điều chế 4-PAM).
Với 4-PAM, mỗi ký hiệu mang log (M) = 2 bits.₂
Các mức biên độ tương ứng: [-1.5, -0.5, 0.5, 1.5].
Hệ thống tạo ra một chuỗi bit nhị phân ngẫu nhiên.
Đầu ra: Chuỗi bit đầu vào để sử dụng trong quá trình điều chế. lOMoAR cPSD| 58833082
B2: Điều chế M-PAM (M-PAM Modulation)
Ánh xạ bit nhị phân sang các mức biên độ trong 4-PAM: 00 → -1.5 01 → -0.5 11 → 0.5 10 → 1.5
Mỗi ký hiệu biểu diễn 2 bit.
Đầu ra: Biểu đồ tín hiệu đã được điều chế. lOMoAR cPSD| 58833082 B3: Lấy thêm mẫu
Chèn (L-1) số 0 giữa các ký hiệu để tăng tốc độ lấy mẫu.
Mục đích: Chuẩn bị tín hiệu cho quá trình định hình xung.
Đầu ra: Biểu đồ tín hiệu sau khi được lấy mẫu lại. lOMoAR cPSD| 58833082
B4: Định hình xung bằng SRRC
Sử dụng bộ lọc SRRC với hệ số roll-off β = 0.3 để làm mịn tín hiệu truyền, giúp tín
hiệu trở nên liên tục thay vì rời rạc.
Quá trình này được thực hiện trong khối lọc truyền (Transmit Filter) g(t).
Kết hợp tín hiệu đã lấy mẫu với xung SRRC.
Đầu ra: Biểu đồ tín hiệu sau khi định hình xung. lOMoAR cPSD| 58833082
B5: Thêm nhiễu AWGN:
Thêm nhiễu Gaussian (AWGN) để mô phỏng kênh truyền thực tế với giá trị SNR xác định (w(t)).
=> Đầu ra: Biểu đồ tín hiệu bị nhiễu tại bộ thu sau khi truyền qua kênh và chịu ảnh hưởng của nhiễu. lOMoAR cPSD| 58833082
B6: Lọc và lấy mẫu tín hiệu (Matched Filter)
Kết hợp hai bước: sử dụng bộ lọc matched filter để lọc xung bằng thuật toán SRRC
đảo ngược thời gian, sau đó lấy mẫu tại các thời điểm chính xác t=nT
(với T là chu kỳ của một symbol).
(*) Lấy mẫu tại các thời điểm ký hiệu chính xác để khôi phục các symbol đã truyền.
=> Đầu ra: Biểu đồ tín hiệu sau khi được lọc và lấy mẫu. lOMoAR cPSD| 58833082
B7: Giải điều chế M-PAM
Tín hiệu nhận được được ánh xạ lại thành chuỗi nhị phân ban đầu dựa trên mức
biên độ đã thiết lập trong quá trình điều chế.
(Việc giải điều chế M-PAM được thiết kế giống hệt quá trình điều chế để khôi phục
tín hiệu sát với bản gốc.)
=> Đầu ra: Biểu đồ tín hiệu nhị phân được phục hồi.
(Lưu ý: Tín hiệu nhị phân sau khi phục hồi có thể khác so với đầu vào do lỗi bit trong quá trình truyền.)
(+) Trong mô phỏng, nhiễu thực tế có thể cao hơn hoặc bị ảnh hưởng bởi méo tín
hiệu, giao thoa ký hiệu (ISI), dẫn đến tăng BER.
(+) SNR ban đầu là giá trị thiết lập, trong khi SNR tính từ BER phản ánh chất
lượng thực tế sau khi đo đạc. lOMoAR cPSD| 58833082
(+) Nếu BER quá cao (>15%), có thể hệ thống không hoạt động tốt ở mức SNR =
10 dB hoặc có thêm nhiễu trong kênh truyền (channel/AWGN noise).
III. Truyền Dẫn M-PAM (Biểu Đồ Mắt - Eye Diagram) Thông
số cấu hình (Khác với phần II): snr = 40 dB: Tỉ số tín hiệu trên
nhiễu (Eb/N0) cho kênh AWGN
N = 1000: Số lượng ký hiệu (symbols) được truyền đi
M = 4: Số mức điều chế của M-PAM
pam = [-1.5 -0.5 0.5 1.5]: Các giá trị biên độ tương ứng của M-PAM L = 4:
Số lượng mẫu (samples) trên mỗi symbol β = 0.3: Hệ số roll-off của bộ lọc
SRRC (Square Root Raised Cosine) trong bước định hình xung (pulse shaping)
Gọi hàm vẽ biểu đồ mắt (Eye Diagram): lOMoAR cPSD| 58833082
figure; plotEyeDiagram(r,L,3*L,delay,100);
Giải thích các tham số đầu vào của hàm plotEyeDiagram:
r: Tín hiệu nhận được sau khi truyền qua kênh và bộ lọc khớp (matched filter).
L: Số lượng mẫu trên mỗi symbol, giúp xác định tỷ lệ lấy mẫu.
3*L: Khoảng thời gian quan sát trên cửa sổ vẽ (Window Span in Samples), tương
ứng với 3 symbols liên tiếp.
delay: Độ trễ tín hiệu (timing offset), giúp căn chỉnh chính xác vị trí lấy mẫu để vẽ biểu đồ mắt.
100: Số lượng khung (number of traces to plot), xác định số lần lặp của tín hiệu
trên biểu đồ mắt. Giá trị này cần đủ lớn để quan sát rõ mẫu tín hiệu. Src code:
function [eyeVals] = plotEyeDiagram(x,L,nSamples,offset,nTraces)
%Function to plot eye diagram, save this to a separate file
%If the signal processing toolbox is not available, put M=1
M=4; %oversampling factor for eyediagram - for smoother plot tnSamp =
(nSamples*M*nTraces); %total number of samples
y=interp(x,M); %interpolate the signal with the oversampling factor if
(M*offset+tnSamp) > length(y) tnSamp = floor((length(y)-
M*offset)/(nSamples*M))*(nSamples*M); nTraces =
tnSamp/(nSamples*M); % Điều chỉnh nTraces cho phù hợp end eyeVals =
reshape(y(M*offset + 1:(M*offset+tnSamp)),nSamples*M,nTraces); t=( 0 : 1 :
M*(nSamples)-1)/(M*L); plot(t,eyeVals); title('Eye
Plot');xlabel('t/T_{sym}');ylabel('Amplitude'); end