Các bộ cân bằng
298
Trong chế độ liên tục, nếu ta có mức độ dò (traceback depth) bằng
tblen
thì ngõ ra sẽ bị trễ
đi
tblen
ký hiệu. Điều này có nghĩa là tblen ký hiệu ngõ ra đầu tiên sẽ không liên quan đến
tín hiệu vào, trong khi đó
tblen
ký hiệu cuối cùng của ngõ vào cũng không liên quan đến tín
hiệu ngõ ra. Trong ví dụ sau, hàm mlseeq sử dụng mức traceback bằng 3 và 3 ký hiệu đầu tiên
của ngõ ra không liên quan đến các ký hiệu ngõ vào (là vector
ones(1,10)
).
>> y = mlseeq(ones(1,10),1,[-7:2:7],3,'cont')
y =
-7 -7 -7 1 1 1 1 1 1 1
Vấn đề delay có ý nghĩa quan trọng khi ta cần so sánh chuỗi dữ liệu ngõ ra và ngõ vào, chẳng
hạn để tính tỷ lệ lỗi ký hiệu, v.v....
Ví dụ 18-5. Sử dụng bộ cân bằng MLSE với traceback depth bằng 10 hoạt động ở chế độ
liên tục để cân bằng một tín hiệu điều chế 4-PSK được phân hoạch thành nhiều chuỗi dữ liệu
nối tiếp. Tính toán tỷ lệ lỗi ký hiệu và vẽ đồ thị phân bố cho các tín hiệu trước và sau khi cân
bằng.
Đầu tiên, cần tạo ba ma trận
sm
,
ts
và
ti
để lưu các thông số khởi đầu cho hoạt động của bộ
cân bằng trong mỗi vòng lặp, các thông số này sẽ thay đổi sau mỗi lần lặp. Trong mỗi vòng
lặp, tiên hành tạo thông điệp ngẫu nhiên, điều chế, lọc và cân bằng. Đồng thời, cuối mỗi vòng
lặp, phải cập nhật các giá trị của
sm
,
ts
và
ti
.
Cuối cùng, tiên hành tính tỷ lệ lỗi ký hiệu tích luỹ qua toàn bộ các vòng lặp. Khi tính toán, ta
lưu ý rằng do có hiện tượng delay ở ngõ ra, nên ta phải bỏ đi tblen ký hiệu đầu tiên của chuỗi
thu được và tblen ký hiệu cuối cùng của chuỗi phát trước khi so sánh. Điều này bảo đảm các
ký hiệu được so sánh là các ký hiệu thật sự có nghĩa và có tính tương ứng với nhau.
Dưới đây là toàn bộ chương trình:
n = 200; % Số ký hiệu trong mỗi lần lặp
numiter = 25; % Số lần lặp
M = 4; % Điều chế 4-PSK.
const = pskmod(0:M-1,M); % Dạng tín hiệu 4-PSK
chcoeffs = [1 ; 0.25]; % Các hệ số của kênh truyền
chanest = chcoeffs; % Ước lượng kênh truyền
tblen = 10; % Mức độ traceback của bộ cân bằng
nsamp = 1; % Số mẫu dữ liệu vào trên một ký hiệu
sm = []; ts = []; ti = []; % Khởi tạo dữ liệu cho bộ cân bằng.
% Khởi tạo các dữ liệu có tính tích lũy.
fullmodmsg = []; fullfiltmsg = []; fullrx = [];
for jj = 1:numiter
msg = randint(n,1,M); % Vector tín hiệu ngẫu nhiên
modmsg = pskmod(msg,M); % Tín hiệu PSK
filtmsg = filter(chcoeffs,1,modmsg); % Tín hiệu sau khi qua kênh truyền
% Thực hiện cân bằng, sử dụng các giá trị khởi đầu là các giá trị có được
khi
% kết thúc lần lặp trước, và lưu lại các giá trị cuối lần lặp này.
[rx sm ts ti] = mlseeq(filtmsg,chanest,const,tblen,...