báo cáo mã hóa kênh
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Hà Mạnh Hùng
MÃ HÓA KÊNH
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Hệ thống viễn thông
Cán bộ hướng dẫn: Đinh Thị Thái Mai
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Hà Mạnh Hùng
MÃ HÓA KÊNH
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Điện tử - Viễn thông
HÀ NỘI - 2015
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Hà Mạnh Hùng
MÃ HÓA KÊNH
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Điện tử - Viễn thông.
Cán bộ hướng dẫn: Đinh Thị Thái Mai.
HÀ NỘI – 2015
Trang 3LỜI CẢM ƠN
Sau quá trình học tập và nghiên cứu, em đã hoàn thành khóa luận của mình về
“Mã Hóa Kênh” dưới sự hướng dẫn và chỉ bảo tận tình của Thạc sỹ Đinh Thị Thái
Sự tiến bộ trong học tập và nghiên cứu của em cũng có phần rất lớn từ sự giúp
đỡ và động viên của các bạn cùng lớp và người thân Em xin cảm ơn những tình cảm quý báu đó
Vì thời gian làm Khóa luận không nhiều nên bài Khóa luận của em không thể tránh khỏi sai sót, do đó, em rất mong nhận được ý kiến đóng góp của thầy cô và các bạn
Em xin chân thành cảm ơn!
Hà nội, ngày 21 tháng 05 năm 2015
Trang 4TÓM TẮT
Tác động của kênh truyền lên tín hiệu có thể chia thành hai loại: Thứ nhất là loại xác định như suy giảm, méo tuyến tính hoặc phi tuyến Thứ hai là loại không xác định như ồn cộng tính, suy giảm đa đường… Các tác động này gây ra lỗi tín hiệu với một xác suất nào đó, và có thể làm giảm xác suất lỗi này bằng cách biến đổi trước bản tin được truyền bằng cách đặt thêm vào bản tin một số bit nào đó, sau đó tạo mối quan hệ giữa các bit được thêm vào và các bit gốc, từ đó làm tăng độ tin cậy của việc truyền tin qua kênh Quá trình trên gọi là MÃ HÓA KÊNH Hiện nay, nhu cầu việc truyền tin tin cậy ngày càng cao, và cũng ngày càng có nhiều phương pháp mã hóa kênh ra đời để đáp ứng yêu cầu đó
Khóa luận sẽ đề cập đến ba phương pháp mã hóa kênh chính là mã Hamming, mã Xoắn và mã Turbo, quá trình tạo và giải mã của từng phương pháp cũng như mô phỏng một cách tổng quan hoạt động của ba mã đó Ngoài ra, khóa luận cũng đề cập đến các kiến thức cơ bản liên quan đến các loại mã như Khoảng cách Hamming, Sơ đồ lưới, Giải thuật MAP…
Trang 5CÁC TỪ VIẾT TẮT
ASCII: American Standard Code for Information Interchange: Chuẩn mã trao đổi thông tin Hoa Kì
AWGN: Additive White Gaussian Noise: Nhiễu Gauss trắng
APP : A Posterior Probability: Xác suất Posterior.
BCH: Là mã có tên viết tắt của ba người sáng lập ra là Bose, Chaudhuri và Hocquenghem
BER: Bit Error Rate: Tỉ lệ lỗi bit
BPSK: Binary Phase Shift Keying: Điều chế pha nhị phân
FER: Frame Error Rate: Tỉ lệ lỗi khung
Inter: Interleaver: Bộ chèn
IIR: Infinite Impulse Response: Bộ lọc số có đáp ứng xung chiều dài vô hạn
LLR: Log likelihodd Ratio: Tỉ số tin cậy
LSB: Least Significiant Bit - Bit có trọng số thấp nhất
MAP: Maximum A Posteriori: Là xác suất lớn nhất của 1 bit nào đó được truyền dựa trên tín hiệu nhận được
ML: Maximum Likelihood: Khả năng xảy ra lớn nhất
PCCC: Parallel Concatenated Convolutional Code: Mã tích chập kết nối song song
RSC: Recursive Systemtic Convolutional Code: Mã tích chập hệ thống đệ quy
SOVA: Soft VA: thuật toán Viterbi quyết định mềm
SNR: Signal to Noise Ratio: Tỉ số tín hiệu / nhiễu
Trang 6MỤC LỤC
Hà Mạnh Hùng 1
HÀ NỘI - 2015 1
Hà Mạnh Hùng 1
Hà Mạnh Hùng 2
HÀ NỘI – 2015 2
LỜI CẢM ƠN 3
TÓM TẮT 4
CÁC TỪ VIẾT TẮT 5
MỤC LỤC 6
Chương 1: Tổng quan về mã hóa kênh 8
1.1: Giới thiệu chung: 8
Chương 2: Mã Hamming 10
2.1: Giới thiệu chung: 10
2.2: Mã Hamming: 10
2.3: Kết luận 17
Chương 3: Mã Xoắn 17
3.1: Giới thiệu chung: 17
3.2: Mã Xoắn: 18
3.4: Kết luận 29
Chương 4: Mã Turbo 30
4.1: Giới thiệu chung: 30
4.3: Giải mã mã Turbo: 42
5.2: Xây dựng hệ thống sử dụng khối mã xoắn: 56
5.3: Xây dựng hệ thống sử dụng mã Turbo: 59
Trang 75.4: So sánh tỉ lệ SNR và BER giữa các mã: 59
5.5: Kết luận: 60
Phụ lục 61
Tài liệu tham khảo 67
Trang 8Chương 1: Tổng quan về mã hóa kênh
1.1: Giới thiệu chung:
Trong thông tin vệ tinh, tín hiệu luôn bị ảnh hưởng lớn bởi nhiễu do nhiễu vô tuyến
từ các thiên hà hoặc quá trình phát xạ từ mặt trời Còn trên mặt đất, tín hiệu của một thiết
bị phát luôn bị ảnh hưởng bởi nhiễu do môi trường, do phản xạ Sự có mặt của nhiễu gây nên lỗi dữ liệu hay sai lệch giữa lối vào và ra trong hệ truyền tin Do đó, nhu cầu đặt
ra là phải tách tín hiệu cần thiết ra khỏi nhiễu Để thực hiện điều đó, người ta đã dùng
giải pháp mã hóa kênh các tín hiệu, tức là thêm vào thông tin gốc các bit dư để bảo vệ
trước khi chúng được phát qua kênh truyền có nhiễu
Ý tưởng cơ bản của phương pháp mã hóa kênh là nếu như một trong số các ký hiệu phát qua kênh bị méo do nhiễu thì những ký hiệu đó sẽ bị ảnh hưởng bởi nhiễu ít hơn, do
đó giúp giải mã các bit thông tin thực tế với độ tin cậy cao hơn Nguyên tắc chung của
mã kênh là đưa thêm các bit dư vào dữ liệu để dựa vào đó, bộ giải mã bên thu có thể khôi phục lại dữ liệu ít sai lệch hơn so với khi không dùng mã kênh
Hình 1.1: Sử dụng mã hóa kênh trong truyền tin
Bằng cách mã hóa kênh như vậy, các bit thông tin có thể được biểu diễn không chỉ biểu diễn bằng một góc dịch pha (nếu sử dụng điều chế khóa pha M-PSK) mà còn có thể
Trang 9được biểu diễn bằng 4, 8 hoặc nhiều hơn nữa các ký hiệu Với hệ thống dùng mã hóa kênh, ở phía thu chúng ta không tách các bit thông tin thực tế mà thay vào đó là các ký hiệu mã hóa để từ các ký hiệu đó chúng ta có thể khôi phục lại các bit thông tin gốc… Có hai loại mã hóa kênh chính là mã khối (block code) và mã chập (convolutional code)
Mã khối tiến hành trên từng khối bản tin k bit, cho thêm (n - k) bit dư tạo nên từ mã
n bit có tốc độ bit R 0 = (n/k)R s
Rs : Tốc độ nguồn thông tin
R0 : Tốc độ dữ liệu kênh
R = k/n : Tốc độ mã
Có nhiều loại mã khối, như:
• Mã tuần hoàn (Cyclic codes) (Mã Hamming là một bộ phận nhỏ của mã tuần hoàn)
Trong khuôn khổ của luận án, tôi chỉ trình bày về một số mã điển hình là mã
Trang 10Chương 2: Mã Hamming
2.1: Giới thiệu chung:
Trong những năm của thập niên kỷ 1940, Hamming làm việc tại Bell Labs trên máy tính Bell Model V và một máy điện cơ (electromechanical) dùng rơ-le với tốc độ rất chậm, mấy giây đồng hồ một chu kỳ máy Nhập liệu được cho vào máy bằng những cái thẻ đục lỗ (punch cards), và hầu như máy luôn luôn gây lỗi trong khi đọc Trong những ngày làm việc trong tuần, những mã đặc biệt được dùng để tìm ra lỗi và mỗi khi tìm được, nó nhấp nháy đèn báo hiệu, báo cho người điều khiển biết để họ sửa, điều chỉnh máy lại Trong thời gian ngoài giờ làm việc hoặc trong những ngày cuối tuần, khi người điều khiển máy không có mặt, mỗi khi có lỗi xảy ra, máy tính tự động bỏ qua chương trình đương chạy và chuyển sang công việc khác
Hamming thường làm việc trong những ngày cuối tuần và ông càng ngày càng trở nên bực tức mỗi khi ông phải khởi động lại các chương trình ứng dụng từ đầu, do chất lượng kém, không đáng tin cậy của bộ máy đọc các thẻ đục lỗ Mấy năm tiếp theo, ông dồn tâm lực vào việc xây dựng hằng loạt các thuật toán có hiệu quả cao để giải quyết vấn
đề sửa lỗi Năm 1950, ông đã công bố một phương pháp mà hiện nay được biết là Mã Hamming
2.2: Mã Hamming:
2.2.1: Khoảng cách Hamming:
Khoảng cách Hamming được sử dụng trong kỹ thuật viễn thông để tính số lượng các bit trong một từ nhị phân (binary word) bị đổi ngược, như một hình thức để ước tính số lỗi xảy ra trong quá trình truyền thông, và vì thế, đôi khi nó còn được gọi là khoảng cách tín hiệu (signal distance) Việc phân tích trọng số Hamming của các bit còn được sử dụng trong một số ngành, bao gồm lý thuyết tin học, lý thuyết mã hóa, và
Trang 11mật mã học.
Trước tiên ta tìm hiểu về trọng số Hamming: trọng số Hamming của một từ mã là
số số 1 có trong từ mã đó Ví dụ với từ mã 00111010 có trọng số Hamming là 4 Khoảng cách Hamming được định nghĩa là các bít khác nhau giữa hai từ mã Khoảng cách Hamming giữa hai từ mã được lấy bằng cách dùng toán tử XOR từng bít của hai
từ mã với nhau và khoảng cách Hamming là trọng số của kết quả tìm được trong phép XOR trên Ví dụ ta có hai từ mã 0110101 và 1110001 ta có:
Mã Hamming là một mã sửa lỗi tuyến , mã này có thể phát hiện một bit hoặc hai bit
bị lỗi Mã Hamming còn có thể sửa các lỗi do một bit bị sai gây ra
Có thể tóm tắt các bước cho việc sử dụng mã Hamming như sau:
1)Các vị trí trong một khối được bắt đầu đánh số từ 1: Bit 1, 2, 3…
• Bít chẵn lẻ ở vị trí số 1 (20) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự của
vị trí đó trong hệ nhị phân có bít ngoài cùng là 1 Vd: 1 (1), 3 (11), 5 (101), 7 (111), 9
Trang 12• Bít chẵn lẻ ở vị trí số 2 (10) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự của vị trí đó trong hệ nhị phân có bít thứ 2 là 1 Vd: 2 (10), 3 (111), 6 (110), 7 (111), 10 (1010)…
• Bít chẵn lẻ ở vị trí số 4 (100) sẽ kiểm tra tính chẵn lẻ của các vị trí mà số thứ tự của vị trí đó trong hệ nhị phân có bít thứ 3 là 1 Vd: 4, 5, 6, 7, 12, 13, 14, 15…
• Tương tự với các bít chẵn lẻ ở vị trí cao hơn: 8, 16, 32…
• Tóm lại, mỗi bít chẵn lẻ trong mã Hamming sẽ tính giá trị chẵn lẻ mà tại đó, bit nhị phân của vị trí AND với các bit vị trí sẽ là một số khác không
2.2.3: Ví dụ đối với mã ASCII 7 bit:
Mã ASCII 7 bit cần 4 bit dư thừa để thêm vào dữ liệu gốc Sở dĩ ta chọn là 4 bít vì
24 = 16 sẽ xác định được 16 trường hợp bị lỗi đơn bít (trong dãy ta xét có 11 bit: 7 bit dữ liệu và 3 bit mã)
Các bít dư thừa được đặt vào vị trí 1, 2, 4 và 8
Trang 14Hình 2.2: Vòng tròn Hamming
Do mã hamming sử dụng bit chẵn-lẻ-chẵn nên tổng số bít 1 trong 1 vòng tròn là số chẵn Giả sử trong quá trình truyền xảy ra lỗi tại bit 11, tại phía thu, thuật toán sẽ phát hiện ra tổng số bit 1 trong 3 vòng tròn (vòng bên trái và hai vòng trên dưới) là một số lẻ, trái với quy tắc nên nó sẽ thay đổi giá trị của bít nằm ở vùng giao của 3 vòng tròn này
Hình 2.3: Bit thứ 11 bị lỗi khiến tổng số bít 1 của 3 vòng tròn bên phải
là một số lẻ
2.2.4: Mô tả bằng thuật toán:
Như ta đã biết, mã Hamming là một mã khối Và với mọi m > 2, luôn tồn tại mã Hamming với các thông số sau:
•Chiều dài từ mã: n = 2m-1
Trang 15•Chiều dài phần tin: k=2m-m-1
•Chiều dài phần kiểm tra: m=n-k
•Khả năng sửa sai: t=1
Để việc tạo các mã đơn giản, ta chọn các bit kiểm tra x, y, z ở các vị trí tương ứng 2i
với i=0, 1, 2… nghĩa là tại các vị trí thứ nhất, thứ hai và thứ tư của các ký hiệu (đối với khối có 4 bit dữ liệu): t=(x, y, u0 ,z, u1, u2, u3 )
Trang 17cơ bản trong lý thuyết mã hóa và được sử dụng thực tế trong thiết kế máy tính Ưu điểm của mã này là đơn giản, số bit kiểm tra ít, ngoài ra, mã này hoạt động tốt trong việc phát hiện các lỗi đơn bit và một số trường hợp lỗi hai bit Tuy nhiên, mã Hamming không thể sửa được bản tin bị lỗi đa bit
Chương 3: Mã Xoắn
3.1: Giới thiệu chung:
Như ta đã biết, xác suất xảy ra lỗi có thể được giảm bằng cách truyền nhiều bít hơn
số bít cần thiết, và các bít cạnh nhau phải có sự liên quan nào đó với nhau để nếu có lỗi xảy ra thì sẽ đủ thông tin để xác định ra bít bị lỗi Đối với mã khối, chúng được coi là các
mã không có sự ghi nhớ, với ý nghĩa là từ mã hoặc các bít dư được thêm vào chỉ là một hàm của khối bít hiện tại Trái lại, các mã xoắn hoạt động có sự ghi nhớ Đối với mã xoắn, các bit sau khi mã hóa là các hàm của các bit thông tin và các hàm của độ dài giới hạn (constraint length) Đặc biệt, mỗi bit sau khi mã hóa (tại đầu ra của bộ mã hóa xoắn)
là tổ hợp tuyến tính của một số bit thông tin trước đó
Trang 18Trong mã xoắn, tỉ lệ R = bit thông tin / bit truyền gọi là tỷ lệ mã hóa (code rate), tỷ
lệ này nhỏ hơn 1 Còn số bit thông tin xảy ra mã xoắn là độ dài giới hạn k (contraint
length)
Ví dụ, ta sẽ mã hóa một bản tin sử dụng mã xoắn, với tỷ lệ mã hóa là R = 0.5 thì với mỗi 1 bit thông tin sẽ có 2 bit được truyền đi và sử dụng độ dài giới hạn k=3 Khi đó, bộ
mã hóa xoắn sẽ gửi ra ngoài 16 bit với mỗi 8 bit thông tin đầu vào, với mỗi 1 cặp bit ra sẽ
phụ thuộc vào bit đầu vào hiện tại và 2 bit trước đó (vì độ dài giới hạn k=3).
Trang 19Hình 3.2: Sơ đồ khối của mã xoắn
Với k=0.5 thì với mỗi bit đầu vào sẽ có 2 bit đầu ra Ta có:
z1 = x(n) ⊕ x(n-1) ⊕ x(n-2)
z2 = x(n) ⊕ x(n-2)Đầu vào được nối với các bộ XOR có thể được viết dưới dạng các vector nhị phân
[1 1 1] và [1 0 1], các vector này được gọi là các vector sinh.
3.2.2: Giải mã bằng sơ đồ trạng thái:
Dưới đây là sơ đồ trạng thái của bộ mã xoắn
Trang 203.3.3: Sơ đồ giải mã sử dụng giản đồ lưới:
Sơ đồ này nhận được từ sơ đồ trạng thái ở trên khi đặt S0, S1, S2, S3 trên một đường thẳng, đường thẳng này biểu diễn vị trí của các trạng thái tại thời gian hiện tại t=n Sau
đó, ta đặt S0, S1, S2, S3 biểu diễn thời gian t=n+1 ở bên phải như hình vẽ
Ta được sơ đồ như sau:
Hình 3.4: Sơ đồ lưới
Trang 21Giả sử đầu vào được bắt đầu từ trạng thái S0 = 00 và dữ liệu đầu vào lần lượt là:
101100 (đầu vào 1 được biểu diễn bằng nét đứt, 0 bằng nét liền) Với phương pháp như trên ta thu được sơ đồ phức tạp hơn như sau:
Hình 3.5: Sơ đồ lưới với t=6
Khi đó, dãy dữ liệu đầu ra sẽ là: 11 10 00 01 01 01 (do tốc độ mã là 0.5 nên số bit lối ra sẽ gấp đôi số bit lối vào)
3.3.4: Giải mã xoắn:
3.3.4.1 Giải mã sử dụng giản đồ lưới:
Giả sử một bộ mã xoắn nhận được chuỗi tín hiệu 11 01 01 00 10 11 trong thời gian
từ t=0 tới t=6 (Giả sử trạng thái khởi tạo S 0 =00) Khi đó với đầu vào là 11 thì bộ giải
mã sẽ giải mã và cho ra output = 1, sơ đồ chuyển sang trạng thái S1 tại t=1 Sau đó, với input = 01 thì bộ giải mã sẽ quyết định cho output = 1, cứ như vậy đi hết giản đồ lưới thì chuỗi bit nhận được sẽ là 1 1 0 1 0 0
Trang 22Hình 3.6: Đi hết giản đồ lưới thì chuỗi bit nhận được là 110100
3.3.4.2 Khoảng cách Hamming trong giải mã xoắn:
Như ta đã biết, khoảng cách Hamming h là số ký tự khác nhau giữa 2 số nhị phân Xét ví dụ trên, giả sử xảy ra lỗi bit đơn đối với 4 bit đầu tiên, chuỗi bit nhận được là 1111 (thay vì 1101)
Từ sơ đồ dưới, ta thấy có 2 cách đi từ S0, một cho input = 11 (h=0) và một cho input = 00 (h=2).
Hình 3.7: Khoảng cách Hamming h của 2 nhánh trại S 0
Trang 23Rõ ràng rằng, ta sẽ chọn đường phía dưới, đường mà có khoảng cách Hamming h nhỏ hơn
Tiếp theo, tại t=1, đầu vào có 1 bít lỗi, và cả hai đường đi rời từ S1 đều có khoảng
cách Hamming giống nhau h=1 Do đó, bộ giải mã sẽ xem xét cả hai đường này trong
các bước tiếp theo
Tại t=2, input=01, thì đường đi từ S3 sẽ có h=0 Còn đường đi từ S2 sẽ có h=1 (có
hai đường) Do khoảng cách Hamming đã khác nhau nên ta có thể chọn đường dưới để xác định dữ liệu ra
Hình 3.8: Khoảng cách Hamming trong từng đoạn.
Tuy nhiên, để nâng cao độ tin cậy cho thuật toán, trong thực tế, ta sẽ tính tổng khoảng cách Hamming H trên n đoạn mà nó đi qua:
H = h 0 + h 1 + … + h n
Trang 24Từ sơ đồ trên, ta thấy khoảng cách Hamming sẽ được tích lũy qua từng đoạn, và sau
khi qua một số đơn vị thời gian nào đó (trong trường hợp này là t=5) thì bộ giải mã sẽ
quyết định chọn đường mà có tổng khoảng cách Hamming là nhỏ nhất
Theo sơ đồ trên thì đường có H=1là đường đi tốt nhất, do đó, dữ liệu đầu ra sẽ là
11010.
3.3.5: Thuật toán Viterbi trong giải mã xoắn:
Ví dụ trên thể hiện 5 đường đi trong sơ đồ lưới, sau đó dựa trên tổng khoảng cách
Hamming mới quyết định chọn đường có H là nhỏ nhất
Tuy nhiên, đối với các bộ mã xoắn lớn hơn, như trong mạng di động, độ dài giới
hạn k có thể lên tới 6 hoặc 9 thì số đường cần xét có thể lên tới 32 hoặc 256 đường.
Thuật toán Viterbi (được phát triển vào năm 1967) cho phép loại trừ rất nhiều đường trong tổng số các đường
Thuật toán chỉ ra rằng, nếu có 2 đường được giao nhau thành 1 trạng thái thì ta chỉ cần quan tâm tới đường có khoảng cách Hamming nhỏ hơn Nói cách khác, nếu k là độ
dài giới hạn thì ta chỉ cần quan tâm tới 2 k-1 đường thay vì 2 k đường, và độ dài đường đi (theo đơn vị thời gian) gấp 4 hoặc 5 lần độ dài giới hạn k thì có thể nhận được thông tin chính xác trong hầu hết các trường hợp
Sơ đồ dưới thể hiện cách mà bộ mã hóa xác định đường đi tốt nhất ngay cả khi có lỗi xảy ra
- Tại t=0 , bắt đầu từ trạng thái S0, có 2 đường đi tiếp là đi tới S0 với h=2 hoặc đi tới
S1 với h=0.
- Tại t=1, có lỗi bit đơn xảy ra và có tất cả 4 đường đi từ hai trạng thái S0 và S1, do
có lỗi xảy ra nên không có đường nào có tổng Hamming H=0
Trang 25Hình 3.10: Thuật toán Viterbi trong giải mã xoắn
- Tại t=3, do tại mỗi trạng thái có 2 đường nên sẽ có 8 đường cần phải xét với các
tổng khoảng cách Hamming khác nhau
Hình 3.11: Có 8 đường đi tới thời điểm t=3
Theo Viterbi, các đường có H lớn hơn sẽ không thể là đường chính xác nên bộ giải
Trang 26Hình 3.12: loại bỏ các đường có H lớn
- Tại t=4, giả sử có tiếp lỗi bit đơn xảy ra, cũng sẽ có 8 đường đi tới trạng thái t=4
nhưng bộ mã hóa sẽ bỏ đi 4 đường có H cao nhất
Hình 3.13: Lỗi thứ 2 xảy ra trong quá trình truyền
- Tại t=5, tiếp tục có 8 đường được tạo ra, bộ giải mã sẽ vẫn chỉ xét 4 đường có H
là nhỏ nhất Tuy nhiên, ở đây xảy ra trường hợp là có 4 đường có cùng tổng khoảng cách Hamming, vì không có cách nào để lựa chọn nên bộ giải mã sẽ lựa chọn ngẫu nhiên 2 trong 4 đường này để đưa vào nhóm 4 đường có tổng khoảng cách Hamming nhỏ nhất
Trang 27Hình 3.14: Chọn ngẫu nhiên 2 trong số 4 đường có cùng tổng khoảng cách
Hamming
- Tại t=6, chúng ta có thể chọn được đường đi có H là min, từ đó suy ra được dữ
liệu gốc Kết thúc quá trình giải mã
Hình 3.15: Chọn được đường có H min
Từ việc xác định được H min, đi ngược trở lại, ta được đường như sau:
S 0 <= S 1 <= S 2 <= S 3 <= S 4 <= S 5 <= S 6
Trang 28Trên đây là toàn bộ quá trình giải mã của mã xoắn sử dụng thuật toán Viterbi, với giả thiết là có 2 lỗi trên đường truyền, bộ giải mã sẽ chọn được đường đi tốt nhất dựa trên tổng khoảng cách Hamming, từ đó suy ngược ra dữ liệu gốc Ở các thời điểm tiếp theo, quá trình giải mã cũng xảy ra tương tự
3.3.6: Gi ả i mã qu y ết định mềm
Lối vào của bộ giải mã Viterbi cũng là lối ra của bộ giải điều chế, là dãy r jm Với
m=1,2,…n; j=1,2… r jm cho BPSK được định nghĩa như sau:
rjm = (2.cjm - 1) + njm
Với j là chỉ số nhánh, m là chỉ số bit trong nhánh đó, cjm là các bit truyền
đi và njm biểu diễn nhiếu trắng Bộ giải mã quyết định mềm Viterbi sau đó chọn đường truyền có giá trị đo lớn nhất Nếu một đường truyền sai mà có giá trị lớn nhất thì lỗi xảy
ra Giả sử đường truyền đầu tiện ký hiệu i=1, là đường truyền đúng và đường truyền thứ 2, ký hiệu là i=2 là đường truyền sai nhưng lại có giá trị đo lớn hơn so với đường thứ nhất Nếu giá trị đo của đường truyền I là PM(i), thì xác suất lỗi là:
P2(d) = P (PM(2) = P(PM(2) – PM(1) 0)
Với B là số nhánh khi đường truyền sai nhập vào đường truyền đúng lần thứ nhất Vì các bit mã hóa trong hai đường này là giống hệt nhau chỉ trừ d vị trí, nên công thức trên có thể được viết ngắn gọn dưới dạng sau:
Với chỉ số l chạy trong tập hợp d bit mà trong tập này hai đường chỉ khác nhau và tập {rj}biểu diễn lối vào của bộ giải mã cho d bit này
Trang 29Giả sử từ mã đúng là toàn 0 thì tập {rj’} là độc lập và là những biến ngẫu nhiên được phân bố Gauss giống nhau với những giá trị trung bình là –N0/2 Do đó, xác suất để hai đường khác nhau d bit là:
với Rc là tỷ lệ mã Es=RcEb
Vì hàm truyền T(D,I) miêu tả tất cả các đường truyền có thể nhập vào đường toàn
0 nên ta có thể cộng toàn bộ xác suất sự kiện lỗi theo tất cả khoảng cách của đường truyền với nhau để thu được giới hạn trên của xác suất sự kiện thứ nhất
Hệ số ad của P2(d) là số đường truyền có khoảng cách d từ đường toàn 0, đó là những đường nhập vào đường toàn 0 lần đầu tiên Vì các sự kiện dẫn tới xác suất lỗi P2(d) là không giống nhau và ta giả sử mã nhân chập có độ dài vô hạn nên trong công thức trên có thể rút ngắn đi bởi tổng các sự kiện lỗi cho dtd d B Giới hạn mới này
giúp cho việc phân tích mã nhân chập chính xác hơn, nhưng ảnh hưởng lên hiệu quả là không đáng kể nếu B lớn
3.4: Kết luận
Có thể nói, Mã xoắn là một mã nhị phân sửa lỗi phổ biến nhất hiện nay và được tìm thấy trong rất nhiều ứng dụng: trong thông tin di động (IMT-2000; GSM; IS - 95), trong thông tin vệ tinh số và các hệ thống thông tin truyền đại chúng… Và hầu hết các
bộ giải mã ngày nay đều sử dụng thuật toán Viterbi Mã xoắn được sử dụng phổ biến
vì có hệ số mã cao và giảm nhiều tỷ lệ lỗi, hiệu quả mà chúng đạt được thì không thua
Trang 30giải mã quyết định mềm.
Chương 4: Mã Turbo
4.1: Giới thiệu chung:
4.1.1 Giới thiệu mã turbo:
Mã Turbo được giới thiệu đầu tiên vào năm 1993, là sự kết nối gồm hai hay nhiều
bộ mã riêng biệt để tạo ra một mã tốt hơn và cũng lớn hơn Mô hình ghép nối mã đầu tiên được Forney nghiên cứu để tạo ra một loại mã có xác suất lỗi giảm theo hàm mũ tại tốc
độ nhỏ hơn dung lượng kênh trong khi độ phức tạp giải mã chỉ tăng theo hàm đại số Mô hình này bao gồm sự kết nối nối tiếp một bộ mã trong và một bộ mã ngoài
Phần này trình bày:
• Sự kết nối các mã và sự ra đời của mã Turbo (TC)
• Giới thiệu về mã chập hệ thống đệ quy (Recursive Systematic Convelutional Code_RSC), là cơ sở của việc tao ra mã TC
• Chi tiết cấu trúc bộ mã hóa PCCC
4.1.2 Sự kết nối mã và ra đời của mã turbo (TURBO CODE ) :
Forney đã sử dụng một bộ mã khối ngắn hoặc một bộ mã tích chập với giải thuật giải mã Viterbi xác suất lớn nhất làm bộ mã trong và một bộ mã Reed-Salomon dài không nhị phân tốc độ cao với thuật toán giải mã sửa lỗi đại số làm bộ mã ngoài
Mục đích lúc đầu chỉ là nghiên cứu một lý thuyết mới nhưng sau này mô hình ghép nối mã đã trở thành tiêu chuẩn cho các ứng dụng cần độ lợi mã lớn Có hai kiểu kết nối
cơ bản là kết nối nối tiếp và kết nối song song
Trang 31Hình 4.1: Mã kết nối nối tiếp
Bộ mã hoá 1 được gọi là bộ mã ngoài, còn bộ mã hoá 2 là bộ mã trong
Đối với mã kết nối nối tiếp, tốc độ mã hoá: Rnt=k1k2/n1n2
Đối với mã song song, tốc độ mã hoá tổng: Rss=k/(n1+n2)
Hình 4.2: Mã kết nối song song
Trên chỉ là các mô hình kết nối lý thuyết.Thực tế các mô hình này cần phải sử dụng thêm các bộ chèn giữa các bộ mã hoá nhằm cải tiến khả năng sửa sai
Năm 1993, Claude Berrou, Alain Glavieux, Puja Thitimajshima cùng giới thiệu loại
mã gọi là mã Turbo, thực chất là sự kết nối song song các bộ mã tích chập đặc biệt cùng với các bộ chèn Cấu hình này gọi là: “Kết nối song song các mã tích chập” (Parallel Concatenated Convolutional Code - PCCC)
Ngoài ra cũng có “Kết nối nối tiếp các mã tích chập” (Serial Concatenated Convolutional Code – SCCC) và dạng “Kết nối hỗn hợp các bộ mã tích chập” (Hybrid Concatenated Convolutional Code - HCCC)
Các loại mã này có nhiều đặc điểm tương tự nhau và cùng xuất phát từ mô hình của
Berrou nên gọi chung là Turbo Code (TC)
Các thuật toán giải mã Turbo thường có đặc tính giống nhau được kết hợp giữa
Trang 32Có hai kiểu giải mã thành phần phổ biến cho mã Turbo là giải mã ước lượng theo chuỗi (Sequence Estimation) như SOVA (Soft Out Viterbi Algorithm) và thuật toán ước lượng theo ký hiệu (Symbol by Symbol) như MAP (Maximum a posteriori), cùng những cải tiến của chúng
4.2: Mã hóa Turbo:
4.2.1: Tổng quan chung:
Một bộ mã hóa Turbo cơ bản bao gồm hai bộ mã xoắn đặt song song hoặc nhiều
hơn, thường có tỉ lệ mã giống nhau R=1/2, thực hiện trong hệ thống đệ quy hoặc hệ
thống phản hồi, và một bộ xáo trộn như hình dưới
Hình 4.3: Sơ đồ khối bộ mã hóa Turbo với hai bộ mã xoắn và một bộ xáo trộn
Cấu trúc này được gọi là kết hợp song song vì hai khối mã hóa hoạt động trên các khối đầu vào giống nhau của chuỗi bit vào
Bộ xáo trộn dùng để hoán vị các bit đầu vào, mục đích là làm cho hai bộ mã hóa
Trang 33hoạt động trên cùng một khối bit đầu vào nhưng với thứ tự bit là khác nhau.
Ở nhánh đầu tiên, chuỗi bit vào sẽ được đưa ra trực tiếp, không qua xử lý Tại nhánh thứ hai, bộ mã hóa đầu tiên sẽ xử lý trực tiếp chuỗi bít đầu vào ur và cho ra chuỗi là vr1 trong khi bộ mã hóa thứ hai sẽ nhận chuỗi bit đầu vào là u’r và cho ra hai chuỗi là vr Thứ tự của các bit này sẽ được nhóm vào các khối có độ dài giới hạn N, bằng với kích thước của bộ xáo trộn Do đó, ta có thể thấy là bộ mã hóa đã có tính hệ thống, hai bộ mã hóa hoạt động trên cùng một khối bit, và cả khối có tốc độ mã là
R=1/3.
Trong quá trình hợp các chuỗi mã hoá thành một chuỗi mã hoá duy nhất ta có thể dùng một kỹ thuật khá mới mẻ đó là kỹ thuật xoá (puncture) Kỹ thuật xoá là kỷ thuật dùng để tăng tốc độ mã của một bộ mã hoá mà không làm thay đổi cấu trúc của bộ mã hoá Tốc độ mã càng thấp thì chất lượng càng cao nhưng băng thông tăng Ví dụ bộ mã tốc độ 1/3 có thể trở thành bộ mã hoá tốc độ 1/2 bằng cách thay vì 1 bit ngõ vào sẽ có tương ứng 3 bit ngõ ra mã hoá thì ta cho ngõ ra mã hoá chỉ còn 2 bit Như ở hình 4.3, bộ Puncturing sẽ lấy lần lượt, xen kẽ các bít ở cả hai chuỗi vr1 và vr2
Sau đó, các đầu ra này sẽ được ghép kênh và truyền trên kênh, kết thúc quá trình mã hóa
Hình 4.4: Mã hóa Turbo
Trang 34Bây giờ chúng ta sẽ xét đến các đa thức chứa trong khối mã xoắn h 0 (D) và h 1 (D) cùng với bộ xáo trộn có độ dài N Chúng ta sẽ biểu diễn các thông số này dưới (h 0 , h 1 , N).
Giả sử bộ mã hóa ở hình 4.3 có tham số là:
(h0, h1, N) = (2, 1, 2)Với các đa thức kiểm tra là:
Trong ví dụ này, bộ xáo trộn sẽ xáo trộn chuỗi bit đầu vào ur thành chuỗi u’r có thứ
Thì sau đi qua bộ xáo trộn, theo thứ tự, chuỗi u’r sẽ là:
u’r = 16 ={u’0 u’15}={1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0}
cũng chính là đầu vào của bộ mã hóa thứ hai
Sơ đồ lưới của đầu vào của cả hai bộ mã hóa này được biểu diễn như hình dưới đây: