CHƯƠNG 4: MÔ PHỎNG 4.1 Tổng quan về MATLAB
4.1.3. Hệ thống MATLAB
Hệ thống giao diện của MATLAB được chia thành 5 phần - Môi trường phát triển.
Đây là nơi đặt các thanh công cụ, các phương tiện giúp chúng ta sử dụng các lệnh với các file, ta có thể liệt kê một số như sau.
+ Desktop
+ Command Window + Command History
+ Browsers for viewinghelp - Thư viện, các hàm toán học
Đó là các ngôn ngữ cao về ma trận và mảng, với các dòng lệnh, các hàm, cấu trúc dữ liệu vào, có thể lập trình hướng đối tượng.
- Đồ họa trong MATLAB
Bao gồm các câu lệnh thể hiện đồ họa trong môi trường 2D và 3D, tạo các hình ảnh chuyển động, cung cấp các giao diện tương tác giữa người sử dụng và máy tính.
- Giao tiếp với các ngôn ngữ khác
MATLAB cho phép tương tác với các ngôn ngữ khác như c, Fortran,...
Trong đồ án này em sẽ tạo nên giao diện đồ hoạ (GUI - Graphic User Interface) giữa người dùng và MATLAB. Trong giao diện này ta có thể xuất dữ liệu dưới 2 dạng: văn bản và đồ hoạ. Mỗi một GUI có một hay nhiều layout (diện mạo). Để tạo ra và xử lý layout của GUI ta nhập lệnh guide và nhận được một layout rỗng và cửa so Guide Control Panel. Việc tạo GUI tạo nên một công cụ đồ hoạ phục vụ nhập xuất dữ liệu một cách trực giác, rất thuận tiện, ẩ goài ra có thể dùng GUI để giám sát các quá trình, hiển thị các đối tượng.
Để mô phỏng quá trình mã hóa dùng mã chập, truyền tín hiệu trên kênh truyền có nhiễu và sử dụng thuật toán Viterbi để giải mã hóa, người thực hiện đề tài đã sử dụng các hàm có sẵn trong Matlab để thực hiện. Đe dễ dàng hơn cho việc quan sát và trình bày, tác giả đã sử dụng giao diện đồ họa GUI để mô phỏng thuật giải viterbi. Quá trình mô phỏng sẽ được trình bày rõ ràng trong phần sau.
Hinh 4.1. Sa dô khôi hê thông.
Tin hiêu loi vào sau khi duçrc sô hôa thành câc dang bit, câc bit này duçrc dira dên khôi ma hôa mâ chap. Sau khi duçrc ma hôa, tin hiêu (câc bit) duçrc truyèn trên kcnh truyèn cô tac dông nhiêu, c dây tac già chî xét nhiêu Gauss träng. Tin hiêu da bi thay dôi bai nhiêu duçrc thu va giâi mâ nhd bô giâi mâ Viterbi. Nhô thuât toân Viterbi, tin hiêu duçrc giâi mâ së gân giông nhât vcri tin hiêu ban dâu.
AWGN
Channels
Black I 11 Block
Input convolution 1 \ ! xr S i J Viterbi Output
bits Encoded; J¡received bits
4.2.1. Khối tạo bit ngõ vào
Ở đây ta đưa ra hai lựa chọn cho việc tạo bit tín hiệu ngõ vào. Thứ nhất là tạo bit ngẫu nhiên theo số lượng bit nhập từ người dùng, và thứ hai là nhập trực tiếp chuỗi bit vào.
Để tạo bit vào ngẫu nhiên, trong Matlab tác giả sử dụng hàm randint. inbits = randint(l, numbit) ;
Với mbits là chuỗi bit ngõ vào, numbit là số lượng bit ngõ vào được nhập bởi người dùng trên giao diện GUI. Hàm randint với 2 thông số sẽ mặc định tạo một ma trận số nhị phân với chiều của ma trận tương ứng với 2 thông số đó. Kích thước tối đa có thể tạo ra phụ thuộc vào bộ nhớ dành cho chương trình. Với câu lệnh như trên thì numbit tối đa chỉ là 106.
4.2.2. Khối mã hóa
Đối với bộ mã hóa mã chập, như đã giới thiệu, có rất nhiều cách để người ta quy ước cho một bộ mã hóa mã chập dựa trên số thanh ghi, ngõ vào, ngõ ra, đa thức sinh, tốc độ bộ mã..v.v. và tương ướng với mỗi bộ mã có một phương pháp tính toán riêng.
Ở đây ta mô tả việc tính toán mã chập dựa trên bộ mã được quy ước bởi các nhà sản xuất chip thực hiện mã chập bao gồm các thông số: chiều dài ràng buộc K và tốc độ của bộ mã R. Và GI và G2 là các đa thức sinh, được nhập bởi người sử dụng.
Để tạo sơ đồ trellis, trong Matlab ta sử dụng hàm poly2trellis: trellis = poly2trellis (len, [gl g2]);
Dùng hàm convene để mã hóa mã chập tín hiệu: encbits = convenc(inpbits,trellis);
4.2.3. Khối cộng nhiễu Gausse trắng
Khối này mô phỏng cho việc tín hiệu bị can nhiễu khi truyền trên kênh truyền. Tín hiệu bị cộng nhiễu Gauss với thông số SNR đã xác định trước.
Sử dụng hàm AWGN để cộng nhiễu vào tín hiệu:
awgnbits = awgn(encbits,snr,measured);
Tín hiệu sau khi được cộng nhiễu được đưa đến bộ thu, tại đây tín hiệu được lượng tử trước khi sử dụng thuật toán viterbi để giải mã. Tùy vào kiểu quyết định giải mã mà sử dụng các lượng tử khác nhau.
a) Với quyết định cứng
Tín hiệu thu được lượng tử về 2 mức 0 và 1 tương ứng với tín hiệu có mức điện áp nhỏ hơn và lớn hơn 0. Sử dụng hàm quantiz để lượng tử tín hiệu, partition = [0]; codebook = [0 1];
quanbits = quantiz(awgnbits,partition,codebook); Sử dụng hàm vitdec với quyết định cứng để giải mã Viterbi
decbits = vitdec(quanbits, trellis, numbit-l,”term”,”hard”);
b) Với quyết định mềm
Tín hiệu thu được lượng tử về 8 mức và việc sử dụng hàm quantiz như sau:
partition =[-.8571 -.5714 -.2857 0 .2857.5714.8571]; codebook = [-.99 -.8571 -.5714 -.2857 0 .2857 .5714 .8571]; quanbits = quantiz(awgnbits,partition,codebook);
Sử dụng hàm vitdec với quyết định mềm
decbits = vitdec(quanbits,trellis,numbit -1,’’term”,’’soft”,3);
4.2.5. Tính toán và vẽ BER
Tỉ số bit lỗi là số tỉ số bit lỗi sau khi giải mã so với tổng số bit ngõ vào. Trong Matlab tác giả sử dụng hàm semilogy để vẽ BER.
Hình 4.5. Sơ đồ bộ mã tốc độ R = Vi. 4.3.1. Mô phỏng cho chế độ nhập bit tự động
Với giao diên chương trình như hình 4.4 ta nhập số bit cho lối vào ngẫu nhiên. Ví dụ ở đây nhập vào là 15 (hình 4.6).
□ doantn3 BO MA TOC DO R=1/2
Hình 4.7. Dãy bít cho lối vào bộ mã hóa.
Sau khỉ bắt đầu mã hóa và giải mã chập cho với tốc độ mã hóa R=l/2 ta có dãy bit sau khỉ mã hóa và giải mã như sau (hình 4.8).
Hình 4.8. Kết quả khi mã hóa và giải mã chập với tốc độ mã hóa R=l/2. Như hình 4.7 ta thấy có số bit lỗi là 4 và tỷ lệ lỗi bit là 0.4. Tiếp tục sẽ có BER cho quyết định mềm như hình 4.9 sau.
Suoo ntỊỊ Ịtq dviỊU ôp BtịD OtịD SuotịdOỊXỊ ■Z'£'p
‘ẵuno quip ỊSẤnb BA I U 9 U I quịp pẤnb -ggg quBS 0§ " I Y P quiỊỊ Hình 4.10. Mô phỏng quyết định cúng.
•uxẹux quip lẹẤnb oqo IVANVIM Uỏq3 - £ Ị - p quỊH £9
S9
UIOUI
quip igÂnbBA Snọo quipỊgXnb TVDNVW ộp f qo Ọ aaa qn?s OS ¿í t’ qtqH
> Nhận xét hai phưong pháp
- Với cùng số lượng bit đầu vào, giải mã mềm sẽ giải mã với số bit sai nhiều hơn so với giải mã quyết định cứng. Bởi vì, giải mã mềm sử dụng số lượng bít nhiều hơn so với giải mã quyết định cứng để lượng tử hoá.
- Khi SNR càng tăng thì hai phương pháp giải mã quyết định cứng, mềm sẽ cho kết quả xấp xỉ nhau (dựa vào hình minh hoạ BER cho cả quyết định cứng, mềm).
- Cùng một tỷ lệ SNR, giải mã quyết định mềm luôn có BER nhỏ hơn so với giải mã quyết định cứng hay xác suất sai bit là nhỏ hơn.
4.4. Kết luận chương
Toàn bộ chương 4 là những hình ảnh mô phỏng thuật toán viterbi cho giải mã chập với hai phương pháp quyết định cứng và quyết định mềm. Qua mô phỏng cho thấy được những ưu nhược điểm của hai phuong pháp nói trên, qua đó giúp người thưc hiện có thể rút ra được nhiều bài học và kinh nghiệm cho những lần thực hiện sau này.
KET LUẠN
Mã chập là một trong những số những mã kênh được sử dụng rộng rãi nhất trong các hệ thống truyền thông thực tế. Các mã này được phát triển với một cấu trúc toán học riêng biệt, mạnh mẽ và chủ yếu được sử dụng để sửa lỗi thời gian thực. Mã chập chuyển đổi toàn bộ các luồng dữ liệu vào từ mã duy nhất. Các bit mã hóa không chỉ phụ thuộc vào k bit đầu vào hiện tại mà còn phụ thuộc vào các bit đầu vào trước đó. Giải pháp chính để giải mã chập là dựa trên thuật toán Viterbi dùng hai phương pháp quyết định cứng và quyết định mềm với những đặc điểm: - Thuật toán giải mã viterbi đạt hiệu quả cao, xác suất lỗi thấp.
- Trên kênh truyền có lỗi Gauss trắng, tín hiệu có thể được phục hồi tốt.
- Thuật toán viterbi với quyết định mềm cho kết quả tốt hơn quyết định cứng. - Đối với các lỗi nhiều bit liên tiếp, thuật toán Viterbi không mang lại hiệu
- Trong kênh truyền có tỉ số SNR cao, thuật toán viterbi với cả 2 quyết định cứng và mềm đều cho kết quả tốt gần nhu nhau.
Đồ án thực hiện mô phỏng trên Matlab chỉ mới tiến hành với bộ mã đơn giản tốc độ Vi với chiều dài ràng buộc thấp. Vì thế, kết quả mô phỏng có thể sẽ không bao quát và nói hết được ưu nhược điểm của thuật toán Viterbi.
- Việc giải mã Viterbi quyết dinh mềm chỉ mới thực hiện với phương pháp dùng khoảng cách Euclidean.
Trong thời gian tới, nếu điều kiện cho phép các vấn đề như: - Mô phỏng trên bộ kit DE2.
- Nghiên cứu tiến hành xây dựng bộ mã hóa nguồn, là những vấn đề em muốn được tiếp tục
Hy vọng rằng, với những gì đã nghiên cứu trong đồ án sẽ rất hữu ích cho những ai đang quan tâm tới lĩnh vực này.