Lời nói đầu Trong lĩnh vực truyền thông, các quá trình mã hóa và giải mã được sử dụng nhiều với các chức năng khác nhau nhằm đảm bảo tính bảo mật, độ tin cậy cao khi truyền tin. Do đó, việc xây dựng các phương pháp mã hóa, giải mã, việc chọn lựa các tham số cho bộ tạo mã (encoder) và các bộ giải mã (decoder) là rất quan trọng trong truyền tin an toàn. Cho đến nay, thông thường các phương pháp mã hóa và giải mã chỉ được phân tích trên cơ sở phương pháp xử lý tín hiệu truyền thống, biểu diễn theo thời gian, tần số hay không gian. Tuy vậy, dù được phân tích trên cơ sở nào, thì việc thiết lập các bộ tạo mã hay giải mã đều được thực hiện dựa vào các mô hình khối ở bước ban đầu. Hay nói cách khác, việc thiết lập các bộ tạo mã hay giải mã chính là việc xây dựng một mô hình hệ thống với đầu vào là tin tức, đầu ra là các từ mã và các biến trạng thái có trong hệ thống. Vì vậy, việc nhìn nhận mã hóa và giải mã trên quan điểm lý thuyết hệ thống là có cơ sở thực hiện. Đặc biệt, việc nghiên cứumã sửa sai trên quan điểm lý thuyết hệ thống có tầm quan trọng đối với việc tìm các mã có khả năng sửa sai tốt, cần ít bit dư thừa, hay tìm ra các mã mạnh kết hợp với khả năng quan sát, điều khiển đồng thời để tối ưu hóa quá trình mã hóa và giải mã. Page 1
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Lời nói đầu
Trong lĩnh vực truyền thông, các quá trình mã hóa và giải mã được sử dụng
nhiều với các chức năng khác nhau nhằm đảm bảo tính bảo mật, độ tin cậy cao khi
truyền tin. Do đó, việc xây dựng các phương pháp mã hóa, giải mã, việc chọn lựa
các tham số cho bộ tạo mã (encoder) và các bộ giải mã (decoder) là rất quan trọng
trong truyền tin an toàn. Cho đến nay, thông thường các phương pháp mã hóa và
giải mã chỉ được phân tích trên cơ sở phương pháp xử lý tín hiệu truyền thống,
biểu diễn theo thời gian, tần số hay không gian. Tuy vậy, dù được phân tích trên
cơ sở nào, thì việc thiết lập các bộ tạo mã hay giải mã đều được thực hiện dựa vào
các mô hình khối ở bước ban đầu. Hay nói cách khác, việc thiết lập các bộ tạo mã
hay giải mã chính là việc xây dựng một mô hình hệ thống với đầu vào là tin tức,
đầu ra là các từ mã và các biến trạng thái có trong hệ thống. Vì vậy, việc nhìn
nhận mã hóa và giải mã trên quan điểm lý thuyết hệ thống là có cơ sở thực hiện.
Đặc biệt, việc nghiên cứumã sửa sai trên quan điểm lý thuyết hệ thống có tầm
quan trọng đối với việc tìm các mã có khả năng sửa sai tốt, cần ít bit dư thừa, hay
tìm ra các mã mạnh kết hợp với khả năng quan sát, điều khiển đồng thời để tối ưu
hóa quá trình mã hóa và giải mã.
Trong khuôn khổ của môn học, mã chập được sử dụng để phân tích và làm
rõ thêm về việc biểu diễn mã trong không gian trạng thái. Ngoài ra, project còn
biểu diễn một bộ tạo mã và giải mã chập sử dụng phần mềm Matlab2010 nhằm có
cái nhìn rõ hơn về quá trình tạo mã và giải mã. Do hạn chế về thời gian tìm hiểu
nên để tài còn nhiều thiếu sót và kính mong cô chỉ bảo để đề tại được bổ sung
trong thời gian tới.
Page 1
Mục LụcChương 1.Lý thuyết về mã chập.......................................................................................................3
1.1. Bộ tạo mã chập.............................................................................................................3
1.2. Bộ giải mã chập............................................................................................................5
Chương 2: Mô phỏng bộ mã hóa và giải mã mã chập.....................................................................8
2.1. Mô hình của bộ mã hóa................................................................................................8
2.2. Kết quả mô phỏng......................................................................................................10
Kết luận.............................................................................................................................................12
Tài liệu tham khảo...........................................................................................................................13
Page 2
Chương 1.Lý thuyết về mã chập
1.1. Bộ tạo mã chập
Mã chập là một loại mã sửa sai được sử dụng trong mã hóa kênh với từ mã
được tạo ra nhờ việc cộng các bit thông tin và các bit có trong các thanh ghi dịch.
Để tạo ra mã chập, ta dùng bộ lập mã chập có nguyên tắc hoạt động dựa vào việc
“chập” dòng bit thông tin đầu vào với đáp ứng xung của bộ tạo mã. Do đó, một
dãy thông tin nhị phân u được chia thành kí tự dk=(dk(0),…..,dk
(k-1)). Các kí tự này
được ánh xạ thông qua bộ tạo mã gồm n bit. Hai tham số quan trọng của một từ
mã chập là tốc độ mã R = k/n và độ dài ràng buộc Kc = M+1 với M là số lượng
các thanh ghi dịch có trong bộ mã (độ dài ràng buộc là thời gian trải rộng của các
bit mà mỗi bít đầu vào ảnh hưởng lên). Hình 1 mô tả một bộ giải mã có tốc độ là
½, độ dài ràng buộc Kc = 3.
Hình 1. Sơ đồ khối và sơ đồ chuyển trạng thái của bộ tạo mã chập
Hình 1 cũng chỉ ra sơ đồ chuyển trạng thái tương ứng với các thanh ghi
dịch phía bên trái.Với các mã chập, việc mô tả bộ tạo mã bằng sơ đồ trạng thái sẽ
thuận lợi hơn. Nếu bộ lập mã có M thanh ghi dịch thì sẽ có 2M trạng thái S(m) với m
= 0,…,2M-1. Mỗi trạng thái được biểu diễn bởi một nút và sử chuyển đổi các trạng
thái được biểu diễn bằng các mũi tên. Trên các mũi tên mô tả bit đầu vào dk tương
ứng với các kí tự đầu ra xk được viết là dk/xk(0)x(1)
k.
Biểu đồ mắt cáo (trellis diagram) trong hình 2 mô tả sự chuyển đổi các
trạng thái theo thời gian. Với mỗi đầu vào dk, biểu đồ mắt cáo sẽ có tất cả các khả
năng dịch chuyển trạng thái có thể xảy ra.
Page 3
Hình 2. Biểu đồ mắt cáo thể hiện quá trình chuyển trạng thái theo thời gian
Giả sử trạng thái ban đầu của bộ tạo mã là trạng thái S(0). Biểu đồ mắt cáo
có thể được chia thành 3 pha: Với một bản tin có chiều dài là L, sau pha khởi tạo
của M bit được mã hóa dk, sẽ có L – M segment giống hệ nhau. Sau khi bản tin có
chiều dài L được mã hóa hết, thì bộ tạo mã sẽ chuyển về trạng thái ban đầu bằng
cách thêm vào M kí tự. Do đó, chiều dài của từ mã được tăng lên LT = L + M. Kĩ
thuật thêm M kí tự này sẽ làm cải thiện khả năng bị lỗi tại điểm cuối của bản tin
được mã hóa.
Để hiểu rõ hơn về biểu đồ mắt cáo, ta xem xét hình 3. Hình 3 biểu diễn quá
trình tạo từ mã sử dụng biểu đồ mắt cáo với bản tin có độ dài 12 bit với nội dung
d= (0,1,0,1,1,0,0,1,1,1,0,0) và được 24 bit từ mã đầu ra xk
Hình 3. Ví dụ về sử dụng biểu đồ mắt cáo với đầu vào cho trước
1.2. Bộ giải mã chập
Page 4
Có nhiều phương pháp giải mã chập. Tuy nhiên, trong project này, chúng ta
sẽ đề cập đến thuật toán giải mã chập Viterbi. Lý thuyết chung của thuật toán này
là nhằm tìm ra đường ngắn nhất có trong biểu đồ mắt cáo , đường dẫn đến một
trạng thái S(k) phải là đường ngắn nhất có thể. Thuật toán này có thể được chia
thành hai bước: 1) tính toán giá nhánh (branch metric), giá đường (path metric) và
các bit quyết định. 2) traceback. Trong pha 1, sự sai khác giữa kí tự nhận yk và tất
cả các kí tự khác mà có khả năng nhận được được tính toán. Trong trường hợp
hard decision mà các kí tự chỉ là bit 0 hoặc 1, thì khoảng cách Hamming đươc sử
dụng để tính brach metric. Khoảng cách Hamming sẽ tính số bit sai khác trong kí
tự nhận được với số bit trong các kí tự có khả năng nhận được. Trong ví dụ ở phần
1, khoảng cách Hamming có thể là 0, 1, 2. Kết quả sẽ được lưu trong path
metric.Với mỗi bước k, khoảng cách Hamming cho mỗi trạng thái Sk được tính
toán và được cộng vào path metric của các trạng thái trước đó (k-1). Trong pha
thứ 2, thuật toán Viterbi sẽ dò ngược lại để xác định ra chuỗi kí tự gần nhất. Trạng
thái ban đầu trong pha dò ngược là trạng thái có path metric thấp nhất.
Để hiểu rõ hơn về thuật toán Viterbi. Chúng ta tiếp tục xét ví dụ trong phần
1 với từ mã cuối cùng nhận được yk bị sai khác so với từ mã sau bộ lập mã xk do
quá trình truyền dữ liệu. (Hình 4)
Hình 4. Ví dụ về thuật toán Virterbi
Sau quá trình truyền, yk bị sai khác so với xk tại những bit được tô màu đỏ
như trên hình 4. Bước đầu để giải mã kí tự thu là tạo ra bảng tra LUT mô tả sơ đồ
chuyển trạng thái. Bảng tra này được dùng để tính toán khoảng cách Hamming.
Page 5
Hình 5. Ma trận chuyển trạng thái
Như trong hình 4, S(0) sẽ chuyển đến 1 trong hai trạng thái là S(0) hoặc S(2)
sau khi nhận kí tự truyền đầu tiên. Do kí tự nhận được y1 = 00, nên kí tự này sẽ
được so sánh với hai kí tự tại hai trạng thái chuyển có thể có là S(0) và S(2). Nếu
S(0)-> S(0) thì khoảng cách Hamming là 0 và nếu chuyển tới S(2) thì khoảng cách
Hamming là 2. Giá trị này sẽ được lưu lại tại các nút tương ứng bên trong mắt
cáo.Giá trị này sẽ được tiếp tục tính toán tại các mắt khác nhau sau mỗi lẫn
chuyển trạng thái và được cộng dồn cả giá trị của trạng thái trước. Tại mỗi trạng
thái, sẽ có những giá trị path metric của các trạng thái trước đó được cộng dồn ,
những giá trị này được so sánh với nhau và giá trị nhỏ hơn sẽ được trọn là path
metric tại thời điểm đó. Nối tất cả các mắt cáo có path metric nhỏ nhất tại từng
thời điểm, ta sẽ có sơ đồ chuyển trạng thái tối ưu nhất. (đường màu đỏ trên Hình
6).
Hình 6. Kết quả thực hiện pha 1 của thuật toán Virterbi
Sau khi kết thúc pha 1, pha 2 sẽ thực hiện việc traceback dựa theo sơ đồ
chuyển trạng thái đã có của pha 1. Để khởi tạo traceback, trạng thái có path metric
Page 6
nhỏ nhất sẽ được đưa vào một thanh ghi dịch 2 bit, trong ví dụ này là 00. Giá trị
này chính là con trỏ để chọn các bit lựa chọn. Quá trình traceback được mô tả
trong hình 7.
Hình 7. Quá trình Traceback
Tổ hợp các bit được đẩy ra khỏi thanh ghi dịch 2 bit tạo thành bản tin ban
đầu (các bit màu vàng). Từ đó ta kết thúc quá trình giải mã mã chập.
Page 7
Chương 2:
Mô phỏng bộ mã hóa và giải mã mã chập
Trong chương này, một bộ tạo mã chập và giải mã được xây dựng và mô
phỏng sử dụng công cụ Simulink của Matlab 2010.Đầu tiên, mô hình của bộ mã
hóa được đưa ra.Sau đó; chúng ta thiết lập sơ đồ khối sử dụng các khối trong
Simulink để thực hiện việc mã hóa và giải mã mã chập.Cuối cùng, kết quả mô
phỏng sẽ được đưa ra để kiểm chứng.
2.1. Mô hình của bộ mã hóa
Bộ mã hóa mã chập được mô tả trong hình 8 như sau:
Hình 8. Mô hình bộ mã hóa mã chậpMô hình trên biểu diễn bộ tạo mã có tốc độ code rate = 1/2 (1 đầu vào, 2
đầu ra), có độ dài ràng buộc là Kc = 7 (6 thanh ghi dịch + 1 đầu vào). Về mặt toán
học, bộ mã chập trên được hình thành bởi ma trận đa thức có dạng:
Z4+Z3+Z2+Z+1Z6+Z5+Z 4+Z3+Z+1
Từsơđồ mô hình bộ mã hóa mã chập trên, chúng ta sử dụng công cụ
Simulink của Matlab nhằm xây dựng một bộ mã hóa và giải mã mã chập với mô
hình như trong hình 8 như sau:
Page 8
Hình 9.Mô hình mã hóa và giải mã mã chập
Trong mô hình trên, quá trình mã hóa và giải mã mã chập được mô tả
thông qua 4 khối.Đầu tiên, tín hiệu bản tin bất kì được tạo ra một cách ngẫu nhiên
thôn qua bộ tạo mã nhị phân Bernoulli. Sau đó, chuỗi bit nhị phân này được đưa
lần lượt vào bộ mã hóa mã chập rồi đưa quá kênh truyền nhị phân với một xác
suất lỗi kênh truyền nhất định và cuối cùng được giải mã qua bộ giải mã sử dụng
thuật toán Virterbi. Bộ mã hóa mã chập được xây dựng bằng việc khai báo các
thông số cho biểu đồ chuyển trạng thái (Trellis structure) được có trong bộ mã hóa
mã chập. Cách khai báo như sau:
Trellis = poly2trellis ([chiều dài ràng buộc], [ hệ số trong đa thức sinh dưới dạng
bát phân])
Hàm Poly2trellis có nhiệm vụ chuyển đổi dạng đa thức sang sơ đồ chuyển
trạng thái của bộ mã hóa. Cấu trúc Trellis bao gồm các trường sau (hình 10).
Field in trellis Structure Dimensions Meaning
numInputSymbols Scalar Number of input symbols to the encoder: 2k
numOutputSymbols Scalar Number of output symbols from the encoder: 2
numStates Scalar Number of states in the encoder
nextStates numStates-by-2k matrix Next states for all combinations of current state and current input
outputs numStates-by-2k matrix Outputs (in octal) for all combinations of current state and current input
Hình 10. Các trường trong cấu trúc Trellis
Page 9
Trong các trường trên thì chiều dài ràng buộc của mã chập sẽ quy định số
đầu vào mã chập. Nếu số chiều dài ràng buộc là 2 thì số đầu vào mã chập sẽ là 2
và số kí tự đầu vào sẽ là 4…Ngoài ra các hệ số trong đa thức sinh dưới dạng nhị
phân sẽ được biểu diễn dưới dạng bát phân trong cấu trúc Trellis. Vi dụ, với bộ
lập mã trong hình 8 có hai đa thức sinh với các hệ số lập thành dạng nhị phân là
(1 1 1 1 0 0 1) ứng với đầu ra của bit thứ nhất và (1 0 1 1 0 1 1), trong khai báo
Trellis, dạng nhị phân này sẽ được đổi sang dạng bát phân là hai số 171 và 133.
Với bộ mã hóa như trên, cấu trúc trellis sẽ có 27 trạng thái trong bộ mã hóa.
Để hiểu rõ hơn về quá trình mã hóa và giải mã mã chập, kết quả mô phỏng
của bộ mã hóa này sẽ được đưa ra trong phần sau.
2.2. Kết quả mô phỏng
Với mô hình được cho trong hình 9, chúng ta thiết lập các thông số cho
từng khối như sau:
Khối tạo chuỗi bit nhị phân:
- Proballity of a zero: 0.5
- Initial seed: dùng hàm randseed
- Sample time: 0.5
Khối tạo mã chập: thiết lập Trellis poly2trellis ( 7, [171 133])
Khối kênh truyền đối xứng: xét xác suất lỗi: 0.02
Khối giải mã sử dụng thuật toán Virterbi: thiết lấp tương tự khối mã chập
Chọn thời gian mô phỏng từ 0 đến 100 s.
Sau khi đã thiết lập các khối, ta tiến hành mô phỏng và thu đươc kết quả
như trên hình 11
Page 10
Hình 11. Kết quả mô phỏng
Từ kết quả mô phỏng, ta thấy rằng quá trình mã hóa và giải mã một chuỗi
bit thông tin bất kì đã thành công. Với xác suất lỗi kênh truyền là 2% thì bit thông
tin sau khi giải mã bằng thuật toán Virterbi giữ nguyên được nội dung tin truyền.
Page 11
Hai chuỗi bit đầu ra
bộ mã chập
Bit thông tin
đầu vào
Chuỗi bit thông tin
sau giải mã
Tín hiệu sau khi đi
qua kênh truyền
Kết luận
Như vậy, quá trình mô phỏng việc mã hóa và giải mã mã chập đã được
thực hiện.Việc thiết lập mã và giải mã đều dựa vào biểu đồ mắt cáo và thuật toán
giải mã Virterbi.Sự tiện lợi của công cụ Simulink trong phần mềm Matlab cho
phép chúng ta có thể xây dựng được bất kì bộ tạo mã chập chỉ bằng cách thay đổi
các tham số trong sơ đồ khối của bộ tạo mã.
Tuy nhiên, project còn nhiều thiếu sót. Đó là chưa nêu ra được vai trò làm
giảm thiểu lỗi kênh truyền của mã chập bằng cách thiết lập mối quan hệ đồ thị
giữa tỉ số tín hiệu trên nhiễu SNR và tỉ lệ lỗi bit BER. Ngoài ra, việc xây dựng bộ
tạo mã chập theo quan điểm lý thuyết hệ thống chưa được thực hiện. Đây là những
hướng cần khắc phục trong thời gian tới của project.
Page 12
Tài liệu tham khảo
[1] Eric V. York (1997), Algebraic Description and Construction of Error Correcting
Codes: A Linear Systems point of view, Dissertation for the degree of Philosophy
Doctor of the University of Notre Dame, Notre Dame Indiana, USA.
[2] Brian M. Allen, (1999). Linear systems analysis and decoding of convolutional
codes.
[3] www.mathwork.com
Page 13
PHỤ LỤC CODE/* This code was developed as part of graduate coursework at Embry-
Riddle Aeronautical University
* under the guidance of Dr. Pat Anderson and Dr. Hever Moncayo.
*
* Author: Robert F. Hartley
* Assistant Developers: Francois Hugon, Brian DeRosa, and Christopher
#include "cg_sfun.h" /* Code generation registration function */
#endif
/*FreeRTOS.org V5.0.4 - Copyright (C) 2003-2008 Richard Barry.
Page 35
This file is part of the FreeRTOS.org distribution.
FreeRTOS.org is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published
bythe Free Software Foundation; either version 2 of the License, or(at your option) any later version.
FreeRTOS.org is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied
warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See theGNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with FreeRTOS.org; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-
1307 USA
A special exception to the GPL can be applied should you wish to distribute
a combined work that includes FreeRTOS.org, without being obliged to provide
the source code for any proprietary components. See the licensing section
of http://www.FreeRTOS.org for full details of how and when the exception
can be applied.
*************************************************************************** *************************************************************************** * * * SAVE TIME AND MONEY! We can port FreeRTOS.org to your own hardware, * * and even write all or part of your application on your behalf. * * See http://www.OpenRTOS.com for details of the services we provide to *
Page 36
* expedite your project. * * * *************************************************************************** ***************************************************************************
Please ensure to read the configuration and relevant port sections of the
online documentation.
http://www.FreeRTOS.org - Documentation, latest information, license and
contact details.
http://www.SafeRTOS.com - A version that is certified for use in safety
/* Create the gatekeeper task. This is the only task that is permitted
to access standard out. */xTaskCreate( prvStdioGatekeeperTask, "Gatekeeper", 1000,
NULL, 0, NULL );
/* Start the scheduler so the created tasks start executing. */vTaskStartScheduler();
}
/* If all is well we will never reach here as the scheduler will now be running the tasks. If we do reach here then it is likely that there was insufficient heap memory available for a resource to be created. */