Professional Documents
Culture Documents
I. TỔNG QUAN
1. Lịch sử phát triển của LDPC
− LDPC được phát triển bởi Robert G. Gallager, trong luận án tiến sĩ của ông tại Viện
Công nghệ Massachusetts vào năm 1960. Vì vậy, các mã này còn được gọi là mã
Gallager.
− Không thực tế để triển khai khi được Gallager phát triển lần đầu tiên vào năm 1963,
mã LDPC đã bị lãng quên cho đến khi công trình của ông được phát hiện lại vào
năm 1996. Mã Turbo, một loại mã tiếp cận dung lượng khác được phát hiện vào
năm 1993, đã trở thành sơ đồ mã hóa được lựa chọn vào cuối những năm 1990,
được sử dụng cho các ứng dụng như mạng không gian sâu và thông tin vệ tinh. Tuy
nhiên, những tiến bộ trong mã kiểm tra chẵn lẻ mật độ thấp đã giúp chúng vượt qua
mã turbo về mức lỗi sàn và hiệu suất trong phạm vi tốc độ mã cao hơn, khiến mã
turbo chỉ phù hợp hơn với tốc độ mã thấp hơn.
2. Khái niệm LDPC
- Mã kiểm tra chẵn lẻ mật độ thấp (LDPC-Low Density Parity Check Code) là mã
khối sửa lỗi tuyến tính, thích hợp để sửa lỗi truyền trong hệ thống truyền thông và
sử dụng để truyền thông tin qua kênh truyền nhiễu.
- Cấu trúc của một mã khối tuyến tính được mô tả bởi ma trận G hoặc ma trận kiểm
tra chẵn lẻ H. Khả năng sửa lỗi kí tự trong một từ mã được xác định bởi khoảng
cách tối thiểu Dmin.Dmin là một tham số quan trọng xác định khả năng sửa lỗi của
mã, nó đề cập đến đường đi ngắn nhất giữa hai từ mã bất kỳ trong mã.
- Mã LDPC được xây dựng bằng biểu đồ Tanner, là một đồ thị có các đỉnh và cạnh.
Mỗi đỉnh đại diện cho một bit dữ liệu, và mỗi cạnh đại diện cho một ràng buộc chẵn
lẻ.
Mã hóa LDPC được chia thành 2 loại
+ Mã hóa LDPC có quy tắc : Số lượng của 1 mỗi hàng và cột là hằng số.
+ Mã hóa LDPC bất quy tắc : Số lượng của 1 mỗi hàng và cột không cố định.
- Mã bất quy tắc có hiệu suất tốt hơn so với mã có quy tắc.
3. Đặc điểm
− Mã LDPC có 2 đặc điểm:
+ Mật độ thấp: mã LPDC được biểu diễn bằng một ma trận kiểm tra chẵn lẻ
H là các ma trận thưa (sparse matrix), có nghĩa hầu hết các phần tử là 0 và
chỉ một số ít là 1 . Tính chất thưa của ma trận H đảm bảo cho độ phức tạp
tính toán.
+ Chẵn lẻ: mỗi hàng chứa đúng i phần tử 1 và mỗi cột chứa đúng j phần tử
1. Một mã LDPC như vậy sẽ được gọi là một mã LDPC đều (n, j, i), trong
đó n là độ dài khối mã và cũng chính là số cột của ma trận H.
Đồ thị Tanner:
Trong lý thuyết mã hóa , đồ thị Tanner , được đặt theo tên của Michael Tanner, là biểu đồ
lưỡng cực được sử dụng để nêu các ràng buộc hoặc phương trình chỉ định mã sửa lỗi . Đồ thị
Tanner được sử dụng để xây dựng các mã dài hơn từ các mã nhỏ hơn bằng cách sử dụng kỹ
thuật đệ quy. Cả bộ mã hóa và bộ giải mã đều sử dụng các biểu đồ này một cách rộng rãi.
Đồ thị Tanner được phân chia thành các nút mã con và các nút chữ số. Đối với mã khối tuyến
tính, các nút mã con biểu thị các hàng của ma trận kiểm tra chẵn lẻ H. Các nút chữ số biểu thị
các cột của ma trận H. Một cạnh kết nối một nút mã con với một nút chữ số nếu tồn tại một
mục khác 0 trong giao điểm của hang và cột tương ứng.
Tanner Graphs đặc biệt hiệu quả trong việc thiết kế mã LDPC (Low-Density Parity-Check).
Cụ thể, Tanner Graphs giúp biểu diễn cấu trúc của mã LDPC và mối quan hệ giữa các bit
thông tin và các bit kiểm tra (parity bits) trong mã.
Ứng dụng chính của Tanner Graphs trong mã LDPC là giúp hiểu rõ cấu trúc của mã và có thể
được sử dụng để phân tích hiệu suất của hệ thống mã hóa-kênh. Các thuật toán giải mã LDPC
thường sử dụng thông tin từ Tanner Graph để tối ưu hóa quá trình giải mã. Cụ thể, đồ thị này
giúp mô tả cách mà các bit ở mức bit nodes kết nối với các bit ở mức check nodes, thể hiện
cách thông tin được chuyển đổi và kiểm tra trong quá trình giải mã.
II. MÃ HÓA LDPC
1. Mã hóa sử dụng ma trận sinh G
− Các mã LDPC được định nghĩa trên cơ sở là ma trận chẵn lẻ H, từ ma trận H ta
xây dựng ma trận sinh G theo phương pháp khử Gaus-Jordan. Phương phap này
đưa ma trận H về dạng:
H= [ I n−k|P ]
G = [ P |I k ]
T
Quá trình mã hóa đến đây sẽ thực hiện phép nhân giữa ma trận biểu diễn chuỗi tin đầu vào
với ma trận sinh tìm được:
[ ]
1 1 01 1 00 1 00
0 1 10 1 11 0 00
H= 0 0 01 0 00 1 11
1 1 00 0 11 0 10
0 0 10 0 10 1 01
[ ]
1 1 01 1 00 1 00
0 1 10 1 11 0 00
Hr = 0 0 10 0 10 1 01
0 0 01 1 11 1 10
0 0 00 1 11 0 01
[ ]
1 0 00 0 01 1 10
0 1 00 0 10 1 00
H rr = 0 0 10 0 10 1 01
0 0 01 0 00 1 11
0 0 00 1 11 0 01
[ ]
0 1 10 1 10 0 00
1 0 00 1 01 0 00
G= 1 1 11 0 00 1 00
1 0 01 0 00 0 10
0 0 11 1 00 0 01
- Nếu sau khi thực hiện các bước của phép thử Gauss-Jordan mà cho ta một ma trận bậc
thang hàng có một hàng toàn 0 thì ta được phép bỏ hàng đó.
- Khó khăn ở phương pháp này là ma trận G không đảm bảo được tính thưa như ma
trận H. Phương trình mã hóa c = uG được thực hiện ở bộ mã hóa có độ phức tạp gần
chính xác bằng n2 phép tính.
2. Mã hóa sử dụng ma trận chẵn lẻ H
H=
[ CA B T
D E ]
- Với T là ma trận tam giác dưới, nghĩa là T có các giá trị 1 trên đường chéo từ trái qua
phải, các phần tử ở trên đường chéo bằng 0, kích thước (m−g)x (m−g)
- Trong đó k là chiều dài bản tin, n là độ dài khối của mã, m là số bit kiểm tra. m=n−k
và g gọi là gap, nói một cách gần đúng thì g càng nhỏ độ phức tạp của mã hóa càng
thấp.
[ ]
1 1 01 1 00 1 00
0 1 10 1 11 0 00
Ví dụ: H = 0 0 01 0 00 1 11
1 1 00 0 11 0 10
0 0 10 0 10 1 01
u=[1 1 0 0 1]
Đưa về dạng gần tam giác dưới
[ ]
1 1 01 1 00 1 00
0 0 01 0 10 1 10
t
H=0 1 10 1 01 0 01
1 1 00 0 01 0 11
0 0 10 0 10 1 01
[ I m− g
−ET −1
0
Ig ] và ma trận H t
Với ~ −1
C=−E T A+C
~ −1
D=−E T B+ D
Ta xét:
[ ]
1 0 00 0
[ ] [ ]
1 0 0 I m− g 0 0 1 00 0
−1
T = 1 1 0 và =0 0 10 0
0 0 1 −ET −1 Ig
1 1 11 0
1 0 10 1
[ ]
1 1 01 1 00 1 00
0 0 01 0 10 1 10
t
H = 0 1 10 1 01 0 01
0 1 10 0 10 0 00
1 0 01 0 11 0 00
Ta có:
T T T
A u + Bp1 + T p2 =0
~ T ~ T T
C u + D p1 + 0 p 2 =0
[]
1
1
T ~−1 ~ T
p1 = D C u = [ ][
1 0 0 1 10 0
1 1 1 0 01 0
0=
0
1
0 ] []
1
c= [ 1 1 0 0 1 1 0 1 0 0 ]
Bj được dùng để biểu diễn tập hợp các bit trong phương trình kiểm tra tính chẵn lẻ của
H.
Ai được dùng để biểu diễn các phương trình kiểm tra tính chẵn lẻ cho bit thứ i của mã.
Ví dụ:
Thuật toán truyền tin nhắn chuyển các tin nhắn qua lại giữa các bit và CN lặp đi lặp
lại cho đến khi quá trình này dừng lại.
Thông báo có nhãn mi, biểu thị 0 hoặc 1 cho các giá trị bit đã biết và e cho bit bị xóa.
> Bước 3: Nếu tất cả các thông điệp đưa vào kiểm tra j ngoài m đều đã biết, tính toán
tất cả kiểm tra tổng E = ∑ mi, nếu không E = e.
ji ; ' j, i
i ∈B j ,i ≠i
> Bước 4: Nếu mi = e và nếu j thuộc A; tùy thuộc vào Ej, i ≠ e, đặt mi = Ej,i
> Bước 5: Nếu tất cả m đều đã biết hoặc iter = itermax, dừng, ngược lại
Các ký hiệu nhận được được “hard” giải mã thành 1 và 0 để tạo thành vectơ nhận nhị
phân r.
Trong mỗi lần lặp, nó tính toán tất cả check sums, cũng như số lượng kiểm tra chẵn lẻ
không thỏa mãn liên quan đến từng n bit của vectơ r.
Tiếp theo, các bit của r sẽ bị đảo ngược nếu chúng liên quan đến số lượng lớn nhất các
phép kiểm tra tính chẵn lẻ không được thỏa mãn.
Quá trình này sẽ được lặp lại cho đến khi tất cả các tổng kiểm tra đều được thỏa mãn
hoặc đạt đến số lần lặp được xác định trước.
Quy trình các bước:
Bước 1: Đặt vectơ mã nhận được m, xác định B, để biểu diễn phương trình kiểm tra chẵn lẻ
thứ j của H.
Bước 2: l=1
Bước 3: Tính tất cả các số “tiền/trước” kiểm tra.
Bước 4: Tính số lần kiểm tra tính chẵn lẻ không thỏa mãn liên quan đến mỗi n bit
của tin nhắn.
Bước 5: Lật các bit của tin nhắn khi chúng có số lượng lớn nhất
kiểm tra chẵn lẻ không thỏa mãn.
Bước 6: Tính the syndrome S = mHT
Bước 7: Nếu S = 0 hoặc l = lmax thì dừng, ngược lại
Bước 8: l=1+1, chuyển sang Bước 3.
Bước dọc: tại nút biến n được dành riêng để xử lý các giá trị đến từ các nút kiểm tra
Rm→n để tính toán các giá trị trả lời Qn→m cho mọi m ∈ m{n}. Vì vậy, đối với mỗi nút
biến n:
Bước quyết định: Đối với mỗi nút biến, các giá trị LLR được cập nhật theo
• Các giá trị LLR được áp dụng cho quyết định cứng để quyết định về giá trị có thể có
của xn là 1 nếu L(xn ) < 0 và 0 nếu ngược lại. Syndrome HxT sau đó được tính toán và
kiểm tra để quyết định giải mã thành công nếu Syndrome bằng 0 hoặc tiến hành lặp
lại tiếp theo nếu điều kiện Syndrome không được thỏa mãn.
• Quá trình này tiếp tục cho đến khi từ mã được giải mã thành công hoặc số lần lặp tối
đa đã hết