You are on page 1of 10

LDPC (LOW DENSITY PARITY CHECKS CODE)

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 ]

Trong đó: P là ma trận kích thước ( n−k ) x k


I n−k là ma trận đơn vị

Ma trận sinh G được xác định:

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:

Ví dụ: Mã hóa từ mã có độ dài 10 với tỉ lệ mã LDPC ½

[ ]
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

- Đầu tiên, đưa ma trận H về dạng bậc thang

[ ]
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

- Tiếp theo, đưa ma trận về dạng bậc thang thụ gọn

[ ]
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

- Cuối cùng ta được ma trận:

[ ]
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)

- B là ma trận kích thước ( m−g )x g

- A là ma trận kích thước (m−g)xk

- C có kích thước là gxk


- D có kích thước là gx g

- E có kích thước là gx (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

Ta nhân hai ma trận sau:

[ 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

Từ mã c= [ c1 c 2 ….. c n ] được hình thành bởi các thành phần như:

c= [u , p1 , p 2 ] với u=[ u1 , u2 ….. uk ], p1=[ p1 p 1 … .. p 1 ] và p2=[ p2 p 2 … .. p2


1 2 g 1 2 m−g
].
Từ mã c= [u , p1 , p 2 ] phải thỏa mãn phương trình kiểm tra chẵn lẻ ~ T
H c =0

Ta có:
T T T
A u + Bp1 + T p2 =0
~ T ~ T T
C u + D p1 + 0 p 2 =0

Trở lại ví dụ trên ta có:


c= [ c1 , c 2 … .. c 10 ] =[ u , p 1 , p2 ]

Với p1=[ c6 c 7 ] và p2=[ c8 , c 9 , c10 ]

[]
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

 p1=[ 1 0 ] => p2=[ 1 0 0 ]

c= [ 1 1 0 0 1 1 0 1 0 0 ]

III. GIẢI MÃ LDPC


-Giải mã LDPC (Low Density Parity Check Code) là quá trình khôi phục thông tin
gốc từ một chuỗi mã LDPC đã được mã hóa trước đó.
− Quá trình giải mã LDPC thường sử dụng các giải thuật giải mã lặp như giải thuật
Sum-Product Algorithm (SPA) hoặc giải thuật Min-Sum Algorithm (MSA). Các
giải thuật này dựa trên sự đa dạng của các kỹ thuật giải mã LDPC và cho hiệu suất
giải mã được xem là tốt nhất hiện nay.
1. Giải mã LDPC trên kênh xóa nhị phân bằng thuật toán truyền tin nhắn (LDPC
Decoding on Binary Erasure Channel Using Message Passing Algorithm)

 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ụ:

B₁ = {1, 2, 3}, B₂ = {1, 4, 5}, B3 = {2, 4, 6}, B4 = {3, 5, 6}


A₁ = {1, 2}, A2 = {1,3}, A3 = {1,4}, A4 = {2, 3}, A5 = {2,4}, A6 = {3, 4}
Thuật toán truyền tin nhắn

 Thuật toán truyền tin nhắn là thuật toán giải mã lặp

 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.

Quy trình từng bước giải mã

 > Bước 1: Đặt vectơ mã nhận được m, tìm Bj và Ai; của H

 > Bước 2: iter = 1

 > 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

 > Bước 6: iter = iter +1, chuyển sang Bước 3.

2. Thuật toán giải mã lật bit

 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.

IV. The Sum-Product Algorithm SPA


Thuật toán Sum-Product để giải mã LDPC là thuật toán truyền thông điệp dựa trên quyết định
mềm. Thông báo trong quá trình giải mã được biểu thị bằng xác suất của từng bit đầu vào
nhận được.
Sum-product là tên chung cho một lớp thuật toán giải mã Maximum Likelihood (ML).
Thuật toán sử dụng thông tin kênh truyền và các giá trị từ kênh truyền.
Thuật toán tạo ra một giá trị xác suất cho mỗi bit nhận được và làm mới giá trị này sau nhiều
lần lặp để tìm ước lượng cho bit đó.
Thuật toán sum-product xử lý lặp đi lặp lại các bit nhận được theo các bước nối liền nhau có
thể được nhìn thấy trên đồ hình Tanner dưới dạng bước ngang tiếp theo là bước dọc để cải
thiện độ tin cậy của mỗi bit được giải mã.
Các thước đo độ tin cậy được tính toán của các bit ở cuối bất kỳ lần lặp giải mã nào được sử
dụng làm đầu vào của lần lặp tiếp theo. Thuật toán giải mã lặp này tiếp tục cho đến khi thỏa
mãn một tiêu chí dừng nào đó
 Quá trình giải mã
Quá trình giải mã sử dụng thuật toán sum-product có thể được thực hiện theo các bước
liên tiếp.
Bước khởi tạo: Các giá trị ban đầu của LLR có thể nhận được từ đầu ra của bộ giải
điều chế yn. Các giá trị ban đầu này được sử dụng làm Qn→m của lần lặp đầu tiên cho
bước cập nhật nút kiểm tra (Bước ngang).
Bước ngang: Bước ngang tại nút kiểm tra m được dành riêng để xử lý các giá trị đến
từ các nút biến Qn→m để tính toán các giá trị trả lời Rm→n cho mọi n ∈ N{m}. Vì vậy,
đối với mỗi nút kiểm tra m:

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

V. Giải thuật Min-Sum Algorithm (MSA)


Giải thuật Min-Sum Algorithm (MSA) là một phương pháp giải mã cho mã kiểm tra chẵn
lẻ mật độ thấp (LDPC) dựa trên thống kê. MSA có độ phức tạp tính toán thấp hơn so với
giải thuật Sum-Product Algorithm (SPA) nhưng vẫn đảm bảo hiệu suất sửa lỗi tốt1. MSA
được cải tiến bằng cách sử dụng các giá trị nhỏ nhất thứ hai hoặc thứ ba để xấp xỉ giá trị
nhỏ nhất thứ nhất234. MSA có thể áp dụng cho các kênh truyền khác nhau như kênh
Gauss, kênh Fadin,...

Cách hoạt động của giải thuật MSA:


1. Xác định loại thu thập dữ liệu, ví dụ như đo lường liên tục hay phân loại.
2. Thu thập mẫu và lựa chọn người vận hành, ví dụ như lấy ít nhất 10 mẫu ngẫu
nhiên và chọn ba người vận hành thường xuyên thực hiện kiểm tra.
3. Quy trình đo lường, ví dụ như yêu cầu từng người vận hành đo các mẫu và ghi lại
dữ liệu.
4. Tính toán các chỉ số thống kê để đánh giá độ lặp lại và độ tái lập của hệ thống đo
lường, ví dụ như sai số đo lường, phương sai, độ nhạy, v.v.
5. Đưa ra kết luận và khuyến nghị để cải thiện hệ thống đo lường nếu cần.
VI. Ưu nhược điểm của LDPC

Ưu điểm Nhược điểm


+ Hiệu suất mã hoá cao: LDPC có khả năng + Độ phức tạp tính toán cao: Mã hoá và giải
đạt hiệu suất mã hoá gần sát ngưỡng mã LDPC yêu cầu nhiều tính toán
Shannon, giúp tăng tốc độ truyền thông và phức tạp, đòi hỏi sử dụng tài nguyên tính
giảm lỗi truyền. toán cao.
+ Độ linh hoạt: LDPC có thể được tùy chỉnh + Độ trễ lớn: Quá trình giải mã LDPC mất
để phù hợp với nhiều ứng dụng truyền thời gian, dẫn đến độ trễ lớn trong
thông khác nhau. truyền thông.
+ Dễ triển khai: LDPC có cấu trúc đơn giản, + Độ tin cậy thấp: LDPC có thể bị ảnh
dễ triển khai trên phần cứng hoặc hưởng bởi nhiễu và sai sót trong quá trình
phần mềm. truyền thông, dẫn đến kết quả giải mã không
+ Khả năng chống nhiễu tốt: Mã hoá LDPC chính xác.
có khả năng chống lại nhiễu và sai sót + Độ phức tạp thiết kế: Thiết kế mã hoá và
trong quá trình truyền thông. giải mã LDPC đòi hỏi kiến thức chuyên
sâu và kỹ năng kỹ thuật cao.
VII. Ứng dụng
− Truyền thông không dây: LDPC được sử dụng trong các chuẩn truyền thông không dây như
Wi-Fi, 5G để tăng tốc độ và độ tin cậy của truyền thông. LDPC được sử dụng trong việc mã
hoá và giải mã dữ liệu để tăng tốc độ và độ tin cậy của truyền thông không dây.
− Lưu trữ dữ liệu: LDPC được sử dụng trong các hệ thống lưu trữ dữ liệu như ổ cứng, đĩa
Blu-ray để giảm lỗi và tăng dung lượng lưu trữ.
− Mạng viễn thông: LDPC được sử dụng trong các hệ thống truyền thông quang, mạng cáp
quang, LDPC được sử dụng trong việc mã hoá và giải mã dữ liệu trong mạng viễn thông để
tăng tốc độ truyền thông và giảm lỗi truyền.
− Mạng xã hội: LDPC được sử dụng trong việc mã hoá và giải mã dữ liệu trong mạng xã hội
để bảo vệ thông tin cá nhân và tăng bảo mật dữ liệu.

You might also like