MATLAB ỨNG DỤNG TRONG VIỄN THÔNG - Trang 329

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

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

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,...

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.