Sơ đồ chũm sao tớn hiệu thu/phỏt

Một phần của tài liệu giáo trình mô hình hóa và mô phỏng (Trang 43 - 67)

7 Mụ phỏng với Ansoft Designer

4.4 Sơ đồ chũm sao tớn hiệu thu/phỏt

Bước 6. Giải điều chế tớn hiệu 16-QAM

Để thực hiện giải điều chế tớn hiệu 16-QAM chỉ cần ỏp dụng hàm

demodulate vào tớn hiệu thu sử dụng đối tượng: modem.qamdemod, cụ thể là

%% Demodulation

% Demodulate signal using 16-QAM.

zsym = demodulate(modem.qamdemod(M),yrx);

Đầu ra của MODEM là chuỗi số thập phõn tương ứng với chuỗi đó phỏt đi bờn phỏt.

Bước 7. Chuyển cỏc giỏ trị thập phõn về tớn hiệu nhị phõn

Để tỏi tạo lại chuỗi bit nhị phõn đó phỏt từ vộc-tơ cỏc số nguyờn (decimal- to-binary), sử dụng hàm de2bi để chuyển đổi một số nguyờn thành tổ hợp 4 bit tương ứng, mỗi tổ hợp tương ứng với một hàng của ma trận sau z=de2bi(zsym, ’left-msb’). Sau đú, sử dụng hàm reshape để chuyển ma trận nhị phõn thành vộc-tơ

4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THễNG75

nhị phõn: z = reshape (z.’, numel(z), 1), trong đú nemel là hàm xỏc định số phần tử của z (number of elements). Chi tiết tập hợp cỏc lệnh này như sau:

%% Symbol-to-Bit Mapping

% Undo the bit-to-symbol mapping performed earlier. z = de2bi(zsym,’left-msb’); % Convert integers to bits. % Convert z from a matrix to a vector.

z = reshape(z.’,numel(z),1);

Bước 8. Tớnh toỏn tỷ lệ BER

Để tớnh toỏn tỷ lệ BER giữa chuỗi bit phỏtx và chuỗi bit thu được

z, sử dụng hàm: biterr như sau

%% BER Computation

% Compare x and z to obtain the number of errors and % the bit error rate.

[number_of_errors,bit_error_rate] = biterr(x,z)

Kết quả cho biết số lỗi xảy ra trong chuỗi bit nhận được:number-of-error

và tỉ lệ lỗi bit bit-error-rate. Cỏc số liệu thống kờ này sẽ được hiển thị trờn cửa sổ cõu lệnh của MATLAB. Kết quả thực tế cú thể khỏc chỳt ớt do vớ dụ sử dụng cỏc số ngẫu nhiờn.

number_of_errors =

71

bit_error_rate =

76CHƯƠNG 4. Mễ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX

Vớ dụ này cú sẵn trong phần demo của Matlab với tờn gọi

commdoc_const. Để xem lại toàn bộ vớ dụ này sử dụng cõu lệnh sau từ cửa sổ cõu lệnh:

edit commdoc_const

Vớ dụ 2. Biểu diễn quỏ trỡnh ỏnh xạ lờn chũm sao tớn hiệu

Vớ dụ 1 ở trờn đó cú biểu diễn tớn hiệu trờn sơ đồ chũm sao tớn hiệu (signal constellation). Tuy nhiờn, việc mụ tả quỏ trỡnh ỏnh xạ một số nguyờn trong dải từ 0 đến M-1 chưa được rừ ràng. Vớ dụ này sẽ trỡnh bày phương phỏp hiển thị cỏc điểm tớn hiệu của sơ đồđiều chế 16-QAM tương ứng với cỏc số nguyờn kốm theo đỏnh dấu chỳ giải cỏc điểm tớn hiệu.

Bước 1. Tỡm tất cả cỏc điểm tớn hiệu thuộc chũm sao tớn hiệu 16-QAM

Để làm việc với chũm sao tớn hiệu của một bộ điều chế sử dụng tớnh chất “Constellation” của một đối tượng MODEM điều chế như

modem.qammod cho trường hợp điều chế QAM. Đối tượng được tạo ra h=modem.qammod(M) sẽ chứa đầy đủ cỏc điểm tớn hiệu và cỏc thụng tin liờn quan. Để thực hiện khởi tạo một đối tượng MODEM điều chế và thu thập cỏc tớnh chất liờn quan đến chũm sao tớn hiệu như vec-tơ ỏnh xạ mapping và vec-tơ chứa cỏc điểm tớn hiệu pt, thực hiện cỏc cõu lệnh mẫu sau đõy

M = 16; % Number of points in constellation h=modem.qammod(M); % Modulator object

mapping=h.SymbolMapping; % Symbol mapping vector

pt = h.Constellation; % Vector of all points in constellation

Bước 2. Vẽ sơ đồ chũm sao tớn hiệu

Để thực hiện vẽ sơ đồchũm sao tớn hiệu, chỳng ta sử dụng cõu lệnh

4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THễNG77

% Plot the constellation. scatterplot(pt);

Bước 3. Bổ sung chỳ thớch cho cỏc điểm ỏnh xạ

Để chỳ thớch hỡnh vẽ biểu diễn mối quan hệ giữa mapping vàpt, sử dụng hàm text để thay thế một số hiển thị bờn cạnh điểm chũm sao thành tổ hợp cỏc bit nhị phõn. Tọa độ của điểm đặt chỳ thớch được lựa chọn gần với cỏc giỏ trị của phần thực và phần ảo của điểm tớn hiệu, nhưng được đặt lệch một chỳt để trỏnh chồng lấn lờn điểm tớn hiệu. Để cú được tổ hợp bit nhị phõn tương ứng với điểm ỏnh xạ, sử dụng hàm dec2binđể tạo ra một xõu cỏc ký tự số phục vụ cho cõu lệnh text. Kết quả thu được sơ đồ chũm sao tớn hiệu như ở Hỡnh 4.5.

% Include text annotations that number the points. text(real(pt)+0.1,imag(pt),dec2bin(mapping));

axis([-4 4 -4 4]); % Change axis so all labels fit in plot.

Bước 4. Chuyển đổi từ ỏnh xạ tự nhiờn sang ỏnh xạ Gray

Quan sỏt Hỡnh 4.5 chỳng ta cú thể thấy hai điểm tớn hiệu kế nhau

0001 và 0010 khỏc nhau hai bit. Điều này cho thấy đối tượng MODEM tạo ra modem.qammod khụng sử dụng phương phỏp ỏnh xạ (mó húa) Gray. Trong thực tế, cỏc hệ thống truyền thụng đều sử dụng ỏnh xạ Gray sao cho cỏc điểm tớn hiệu kề nhau chỉ khỏc biệt một bit. Ánh xạ Gray cho phộp nõng cao chất lượng truyền dẫn tớn hiệu. Vớ dụ, trờn kờnh pha-đinh Rayleigh, ỏnh xạ Gray cho phộp thu được BER tốt hơn so với ỏnh xạ tự nhiờn khoảng 0,5dB. Để nhận được ỏnh xạ Gray, cần đưa vào tựy chọn’Gray’ khi định nghĩa đối tượng modem.qammod như sau:

%% Modified Plot, With Gray Coding

78CHƯƠNG 4. Mễ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX −4 −2 0 2 4 −4 −3 −2 −1 0 1 2 3 4 Quadrature In−Phase Scatter plot 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Hỡnh 4.5: Sơ đồ chũm sao tớn hiệu phỏt sử dụng ỏnh xạ tự nhiờn.

h = modem.qammod(’M’,M,’SymbolOrder’,’Gray’); % Modulator object mapping = h.SymbolMapping; % Symbol mapping vector

pt = h.Constellation; % Vector of all points in constellation

scatterplot(pt); % Plot the constellation.

% Include text annotations that number the points. text(real(pt)+0.1,imag(pt),dec2bin(mapping));

axis([-4 4 -4 4]); % Change axis so all labels fit in plot.

Kết quả chỳng ta thu được chũm sao tớn hiệu biểu diễn ỏnh xạ Gray như ở Hỡnh 4.6. Cú thể nhận thấy từ hỡnh vẽ rừ ràng là cỏc điểm tớn hiệu kề nhau chỉ khỏc nhau một bit.

Vớ dụ 3. Sử dụng bộ lọc Cosine nõng

Trong vớ dụ sau đõy sẽ biểu diễn phương phỏp sử dụng bộ lọc căn bậc hai cosine nõng ở phớa phỏt và phớa thu nhằm tạo dạng tớn

4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THễNG79 −4 −2 0 2 4 −4 −3 −2 −1 0 1 2 3 4 Quadrature In−Phase Scatter plot 0000 0001 0011 0010 0100 0101 0111 0110 1100 1101 1111 1110 1000 1001 1011 1010

Hỡnh 4.6: Sơ đồ chũm sao tớn hiệu phỏt sử dụng ỏnh xạ Gray.

hiệu để khống chế phổ của tớn hiệu.

Để thực hiện chức năng này, Communications Toolbox cú hai hàmrcosineđể thiết kế bộ lọc căn bậc hai cosine nõng vàrcosflt

để lọc phối hợp tớn hiệu thu. Người dựng cũng cú thể sử dụng hàm

rcosflt để thực hiện cả hai chức năng. Người dựng cú thể xem thờm hướng dẫn nhờ cõu lệnh rcosdemo.

Để thực hiện điều chế 16-QAM cú sử dụng ỏnh xạ Gray, cần định nghĩa modem điều chế và giải điều chế với cỏc tham số như sau:

hMod = modem.qammod(M); hMod.imputType = ‘Bit’; hMod.symbolOrder = ‘Gray’; hDemod = modem.qamdemod(hMod)

Dựa trờn cỏc định nghĩa cho hai MODEM điều chếhModvà giải điều chế hDemod này cú thể thực hiện điều chế sử dụng cõu lệnh

80CHƯƠNG 4. Mễ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX

sau: y = modulate (hMod, x) cho điều chế và z = demodulate (hDemod, yRx) cho giải điều chế. Cỏc bước thực hiện được tiến hành như sau

Bước 1. Định nghĩa tham số

So với vớ dụ 1 thay định nghĩa tỉ lệ lấy mẫu quỏ hạn (oversampling rate), nsamp thành 4 như sau

nsamp = 4; % Oversampling rate

Đồng thời, định nghĩa cỏc tham số chớnh của bộ lọc bằng cỏch bổ sung thờm cỏc cõu lệnh sau vào sau phần điều chế và tạo tớn hiệu phỏt.

%% Filter Definition

% Define filter-related parameters. filtorder = 40; % Filter order

delay = filtorder/(nsamp*2); % Group delay (# of input samples) rolloff = 0.25; % Rolloff factor of filter

Cú thể thấy bộ lọc sử dụng cú bậc bằng 40, trễ nhúm bằng 5 và hệ số uốn lọc bằng 0,25.

Bước 2. Tạo bộ lọc cosine nõng căn bậc hai

Để thiết kế bộ lọc cosine sử dụng hàmrcosine với cỏc tham số đó định nghĩa và để vẽ đỏp ứng xung của nú, sử dụng cõu lệnh vẽ đỏp ứng xung impz

% Create a square root raised cosine filter.

rrcfilter = rcosine(1,nsamp,’fir/sqrt’,rolloff,delay); % Plot impulse response.

figure;

impz(rrcfilter,1);

4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THễNG81 0 5 10 15 20 25 30 35 40 −0.1 0 0.1 0.2 0.3 0.4 0.5 0.6 n (samples) Amplitude Impulse Response

Hỡnh 4.7: Đỏp ứng xung của bộ lọc Cosine nõng.

Bước 3. Tạo dạng tớn hiệu điều chế

Để lọc tớn hiệu điều chế, sử dụng bộ lọc cosine nõng nhờ hàm

rcosfltvà để xem sơ đồmẫu mắt tớn hiệu sử dụng hàmeyediagram

như ở cỏc cõu lệnh sau

%% Transmitted Signal

% Upsample and apply square root raised cosine filter. ytx = rcosflt(y,1,nsamp,’filter’,rrcfilter);

% Create eye diagram for part of filtered signal. eyediagram(ytx(1:2000),nsamp*2);

Cõu lệnh rcosflt tự động lấy mẫu lờn (upsample) đối với tớn hiệu điều chế y với hệ sốnsamp và chốn thờm 0 vào tớn hiệu đó lấy mẫu lờn để làm sạch bộ lọc ở phần cuối trước khi thực hiện lọc. Sử dụng cõu lệnh eyediagramcho phộp tạo ra một sơ đồmẫu mắt của một phần (2000 mẫu) của tớn hiệu khụng cú tạp õm đó được lọc. Hỡnh 4.8 biểu diễn sơ đồmẫu mắt của tớn hiệu cho hai thành phần đồng pha (In-phase) và vuụng pha (Quadrature). Cú thể nhận thấy

82CHƯƠNG 4. Mễ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX

tớn hiệu chịu ảnh hưởng lớn của nhiễu liờn ký tự (ISI) do bộ lọc chỉ là căn bậc hai cosine nõng, khụng phải là bộ lọc cosine nõng đầy đủ. −0.5 0 0.5 −3 −2 −1 0 1 2 3 Time Amplitude

Eye Diagram for In−Phase Signal

−0.5 0 0.5 −3 −2 −1 0 1 2 3 Time Amplitude

Eye Diagram for Quadrature Signal

Hỡnh 4.8: Sơ đồ mẫu mắt của tớn hiệu.

Bước 4. Lọc tớn hiệu thu

Để lọc tớn hiệu thu, chỳng ta cũng sử dụng một bộ lọc căn bậc hai cosine nõng giống bờn phỏt, sau đú lấy mẫu xuống (downsample) kết quả với hệ số nsamp. Cõu lệnh mẫu thực hiện như sau:

%% Received Signal

% Filter received signal using square root raised cosine filter. yrx = rcosflt(ynoisy,1,nsamp,’Fs/filter’,rrcfilter);

4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THễNG83

yrx = downsample(yrx,nsamp); % Downsample.

yrx = yrx(2*delay+1:end-2*delay); % Account for delay.

Cõu lệnh cuối cựng loại bỏ2*delayký hiệu đầu tiờn và2*delay

ký hiệu cuối cựng ở trong tớn hiệu đó lấy mẫu xuống do chỳng đại diện cho thành phần trễ tớch lũy của hai thao tỏc lọc. Nhờ vậy, tớn hiện đầu vào bộ giải điều chế yrx và tớn hiệu đầu ra bộ điều chếy

cú cựng kớch thước để tớnh tỉ lệ lỗi sau này.

Bước 5. Điều chỉnh đồ thị tỏn xạ

Để thấy được hiệu quả của bộ lọc thu, cú thể điều chỉnh để vẽ hai đồthị tỏn xạ trờn cựng một hỡnh vẽ. Để làm được điều này, thực hiện cỏc cõu lệnh sau.

−5 0 5 −5 −4 −3 −2 −1 0 1 2 3 4 5 Quadrature In−Phase

Received Signal, Before and After Filtering Before Filtering After Filtering

Hỡnh 4.9: Đồ thị tỏn xạ tớn hiệu trước (ã) và sau khi lọc (ì).

%% Scatter Plot

84CHƯƠNG 4. Mễ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX

% after filtering.

h = scatterplot(sqrt(nsamp)*ynoisy(1:nsamp*5e3),nsamp,0,’g.’); hold on;

scatterplot(yrx(1:5e3),1,0,’kx’,h);

title(’Received Signal, Before and After Filtering’); legend(’Before Filtering’,’After Filtering’);

axis([-5 5 -5 5]); % Set axis ranges.

Để ý rằng để bự lại cụng suất thay đổi do thao tỏc lọc, cõu lệnh vẽ đồthị tỏn xạ đầu tiờn đó điều chỉnh ynoisy bởi một hệ số tương ứng với hệ số lấy mẫu quỏ hạn sqrt(nsamp). Kết quả được minh họa ở Hỡnh 4.9. Cú thể thấy rừ hiệu quả lọc cho phộp giảm tỏn xạ của tớn hiệu rất nhiều.

Vớ dụ 4. Sử dụng mó chập đểmó húa và giải mó

Vớ dụ này sẽ mụ tả phương phỏp sử dụng mó chập (connvolutional code) để thực hiện mó húa và giải mó khi biết độ dài ràng buộc (constraint length) và đa thức sinh. Communications Toolbox hỗ trợ mó chập bằng hai hàmconvencđể mó húa vàvitdecđể giải mó bằng thuật toỏn Viterbi. Để định nghĩa lưới mó Communications Toolbox sử dụng hàm poly2trellis.

Bước 1. Tăng số ký hiệu phỏt

Do mó chập cải thiện phẩm chất BER, nờn tỉ lệ lỗi sẽ nhỏ. Vỡ vậy, để thu được tỉ lệ lỗi tin cậy cần phải tăng số ký hiệu phỏt. Trong phần Setup, thay định nghĩa số bit bằng cõu lệnh sau:

n = 5e5; % Number of bits to process

Bước 2. Mó húa dữ liệu nhị phõn

Để mó húa dữ liệu nhị phõn trước khi ỏnh xạ thành cỏc số nguyờn phục vụ cho điều chế, bổ sung thờm cỏc cõu lệnh sau vào sau phần

4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THễNG85

Signal Source và trước phần Bit-to-Symbol Mappingcủa vớ dụ trước.

%% Encoder

% Define a convolutional coding trellis and use it % to encode the binary data.

t = poly2trellis([5 4],[23 35 0; 0 5 13]); % Trellis code = convenc(x,t); % Encode.

coderate = 2/3;

Cõu lệnh poly2trellis định nghĩa lưới mó (trellis) biểu diễn mó chập hàm convenc sử dụng để mó húa vộc-tơ dữ liệu nhị phõn x. Cõu lệnh poly2trellis sử dụng hai đối số là độ dài ràng buộc (constraint length) và đa thức sinh (generator polynomials). Sơ đồ trờn Hỡnh 4.10 biểu diễn một bộ mó húa chập cú tỉ lệ mó 2/3.

z-1 z-1 z-1 z-1 z-1 z-1 z-1 + + + Đầu ra 1 Đầu ra 2 Đầu ra 3 Đầu vào 1 Đầu vào 2 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 Hỡnh 4.10: Sơ đồ bộ mó húa tỉ lệ 2/3.

Độ dài ràng buộc (constraint length) là một vộc-tơ cú chiều dài bằng 2 do bộ mó húa cú hai đầu vào. Cỏc phần tử của vộc-tơ này cho biết số bit được lưu lại trong mỗi thanh ghi dịch, bao gồm cả cỏc bit đầu vào hiện thời. Từ hỡnh vẽ cú thể đếm được số ụ nhớ ở

86CHƯƠNG 4. Mễ PHỎNG VỚI MATLAB COMMUNICATION TOOLBOX

trong mỗi thanh ghi dịch cộng với một bit hiện thời nờn chiều dài ràng buộc là [5 4].

Để xỏc định tham số bộ tạo mó theo ma trận 2 hàng 3 cột chứa cỏc số cơ số 8 (bỏt phõn), sử dụng phần tử ở hàng thứivà cột thứ

j để chỉ thị ảnh hưởng của đầu vào thứ i tới đầu ra thứ j. Vớ dụ, để tớnh phần tử ở hàng thứ hai và cột thứ 3, phần tử ngoài cựng bờn trỏi và hai phần tử ngoài cựng bờn phải ở thanh ghi dịch thứ 2 được đưa đến bộ cộng, tạo nờn đầu ra thứ 3. Thụng tin này được được biểu diễn ở dạng số nhị phõn là 1011, tương đương với số 13 bỏt phõn. Như vậy, ma trận tạo mó được biểu diễn đầy đủ như sau

[23 35 0; 0 5 13].

Bước 3. Thực hiện ỏnh xạ Bit-to-Symbol cho tớn hiệu đó mó húa

Ở bước này, chỳng ta thực hiện chuyển cỏc bit đó được mó húa thành cỏc ký hiệu. Thao tỏc này được thực hiện bằng cỏch thay

xsym ở vớ dụ trước bằng cõu lệnh sau:

% B. Do ordinary binary-to-decimal mapping.

xsym = bi2de(reshape(code,k,length(code)/k).’,’left-msb’);

Tham số k bằng 4 chớnh là số bit trong 1 ký hiệu điều chế 16-QAM.

Bước 4. Tớnh toỏn lại tỉ số SNR cú tớnh đến tỉ lệ mó húa

Do tớn hiệu đó được mó húa nờn tỉ số SNR sẽ phụ thuộc vào tỉ lệ mó húa. Trong vớ dụ trước một ký hiệu cú chứa k bit dữ liệu. Tuy nhiờn, bõy giờ mỗi ký hiệu sẽ tương ứng với k*coderate bit thụng tin. Cụ thể hơn, ba ký hiệu 16-QAM chứa 12 bit mó. Do sử dụng mó húa với tỉ lệcoderate=2/3 nờn trong một 16-QAM ký hiệu chỉ chứa 12*2/3 bit thụng tin. Tức là, tỉ số bit thụng tin với ký hiệu là8/3 = 4*(2/3) = k*coderate. Vỡ vậy, cần thay đổi định nghĩa về tỉ lệ SNR như sau:

4.3. KHAI THÁC CÁC PHẦN TỬ CỦA HỆ THỐNG TRUYỀN THễNG87

snr = EbNo + 10*log10(k*coderate)-10*log10(nsamp);

Bước 5. Giải mó chập

Để thực hiện giải mó chập trước khi tớnh tỉ lệ lỗi BER, bổ sung thờm cỏc cõu lệnh sau phần Symbol-to-Bit Mappingvà trướcBER Computation.

%% Decoder

% Decode the convolutional code.

tb = 16; % Traceback length for decoding

Một phần của tài liệu giáo trình mô hình hóa và mô phỏng (Trang 43 - 67)

Tải bản đầy đủ (PDF)

(67 trang)