Chương 3 LDPC
August 2, 2017 | Author: CUc GAch | Category: N/A
Short Description
Download Chương 3 LDPC...
Description
CHƯƠNG 3: MÃ LDPC Cuối thế kỷ 20 và đầu thế kỷ 21, hàng loạt các loại mã được phát minh. Trong đó phải kể tới một số loại mã điển hình như : Reed-Solomon, Turbo, mã xoắn, mã TCM…Chính vì vậy đã có người nói rằng đây là thế kỷ của lý thuyết mã hóa. Cũng trong thời gian đó, một loại mã có tên là mã kiểm tra chẵn lẻ mật độ thấp LDPC (Low Density Parity Codes) đã ra đời. Khi Mackay chứng minh nó có khả năng tiệm cân tới hạn Shannon ngay lập tức nó gây được sự chú ý tới các nhà khoa học. 3.1 Khái quát về mã LDPC Nếu như trong khoảng 20 năm trước, người ta thường nói nhiều tới mã Turbo như là một loại mã tốt nhất để cải tiến hiệu suất kênh thì giờ đây điều đó đã không còn đúng nữa. Một hướng phát triển mới đã mở ra có tên là LDPC_ mã kiểm tra chẵn lẻ mật độ thấp, đang trở thành một lựa chọn tốt nhất để thay thế cho mã Turbo trong tương lai không xa. Mã LDPC cho phép các nhà thiết kế có thể tiệm cận được tới hạn Shannon. Về lý thuyết người ta đã chứng mình được rằng : mã LDPC không có độ dài mã lớn để có thể đạt được điều đó. Tuy nhiên, ít người biết được rằng mã LDPC đã được Gallager đề xuất từ những năm 60 của thế kỷ trước. Nhưng vào thời đó, khoa học máy tính chưa được phát triển, khả năng tính toán của các chiếc “computer” thời đó vẫn còn hạn chế. Chính điều này đã không thể nhận thấy được những ưu điểm vượt trội của mã LDPC, và làm nó rơi vào quên lãng. Mãi tới những năm 90 thì Mackay bằng thuật giải tổng tích (Sum-product Agorithm ) mới chứng minh được rằng các mã LDPC không đều trên kênh Gauss chỉ cách tới hạn Shannon 0.054 dB. Về cơ bản chúng ta co thể định nghĩa mã LDPC như sau. LDPC (Low
Density Parity Check Code), hay gọi là mã kiểm tra chẵn lẻ mật độ thấp , kỹ thuật mã hóa mã sửa lỗi trước FEC (Forward-Error Correction) thuộc họ mã khối (Block Codes). LDPC đặc trưng bởi ma trận sửa sai kích thước lớn gồm các giá trị 0 và 1 với mật độ giá trị 1 thấp (low density). Theo như đinh nghĩa của Gallager, thì mã LDPC (n, γ , ρ ) như một mã khối tuyến tính nhị phân có độ dài n được đặc trưng bởi ma trận kiểm tra H với mỗi cột chứa γ phần tử 1 và mỗi hàng chứa ρ phẩn tử 1. Số lượng cột của H bằng độ dài khối là n và số lượng hàng bằng số dấu kiểm tra chẵn lẻ nγ (j=n-k ≤ ρ , trong đó k là độ dài của bản tin). Đồng thời, γ , ρ phải rất nhỏ so
γ
với n. Và tỉ lệ mã hóa R ≥ 1 − ρ . Dưới đây là ví dụ của mã Gallager LDPC [1] có cấu trúc thể hiện trong hình 3.1 thể hiện một mã LDPC (20,3,4 ) :
Hình 3.1.Ma trận kiểm tra chẵn lẻ cho mã LDPC ( 20,3,4) Do mã LDPC thuộc lớp mã khối truyến tính do đó nó mang đầy đủ cá tính chất của một mã khối tuyến tính. Chuỗi bít tin chiều dài là k sau khi mã
hóa sẽ thu được một từ mã có độ dài tương ứng là n. Tỉ lệ giữa R=k/n sẽ được coi là tỉ lệ mã. Trong một từ mã LDPC bất kỳ đều có n-k bít mã kiểm tra. Kích thước ma trận kiểm tra H cũng có kích thước không ngoại lệ đó chính là (n-k) x n. Điều kiện để một mã LDPC được coi la thỏa mãn cũng giống như mã khối tuyến tính C.HT=0. Trong đó, HT là ma trận chuyển vị của ma trận H. 3.2 Đồ hình Tanner Lúc đầu, mã LDPC được biểu diễn qua ma trận chẵn lẻ H. Tuy nhiên, hiện nay, một trong những cách được coi là hiệu quả nhất đề biều điễn mã LDPC đó chình là thông qua đồ hình Tanner. Trước khi, tìm hiều cách biểu diễn của mã LDPC thì chúng ta sẽ tìm hiểu qua về đồ hình Tanner. Đây là một đồ thị hai phía, bên trái gọi là nut bit còn bên phải gọi là nut kiểm tra. Đối với mã khối tuyến tính thì đồ hình tanner tỏ ra rất hiệu quả.Thật vây, ta đi xét ví dụ 3.1. Ví dụ 3.1:
Cho ma trận chẵn lẻ H như sau: 1 0 H = 1 0
Khi đó, đồ hình sẽ biểu diễn như sau:
1 1 0 0
0 1 0 1
1 0 0 1
0 1 1 0
0 0 1 1
(3.1)
c1 c2 z1 c3 z2 c4 z3 c5 z4 c6 Check nodes
Bit nodes
Hình 3.2. Đồ hình Tanner với ma trân H Trong đồ hình Tanner trên chúng ta có thể thấy rằng : Các nút bít và các nút kiểm tra được bố trí ở 2 bên đối xứng nhau. Nút kiểm tra zi nối với nút bít cj khi và chỉ khi H(i,j)=1
Thực chất của việc biểu diễn này là biểu diễn hệ phương trình được suy ra từ ma trân kiểm tra H. Trong đó, các nút kiểm tra zi tương ứng với các hàng còn các nút bit cj tương ứng với các cột của ma trận kiểm tra H. Chú ý rằng, zi ở đây là tổng nhưng mà là tổng modul2 của tất cả các phần tử cj khi H(I,j)=1. Xét ví dụ 3.1 ta sẽ có hệ phương trình sau: z 1 = c1 ⊕ c 2 ⊕ c 4 z 2 = c 2 ⊕ c3 ⊕ c5
(3.2)
z 3 = c1 ⊕ c 5 ⊕ c 6 z 4 = c3 ⊕ c4 ⊕ c6
Tại đây, chúng ta cũng đưa ra một khái niệm đó là chu kỳ tanner nhằm phục vụ để đánh giá chất lượng xây dựng mã LDPC tại các phần tiếp theo.
Chu kỳ Tanner: là một đường khép kín liên kết từ một nút bất kỳ đi một vòng rồi lại quay lại chính nó. Giả sử như trong ví dụ 3.1 ta có một trong những chu kỳ Tanner đó chính là c6 → z4→ c4 → z1 → c1 → z3 → c6. Chiều dài của chu kỳ này là 6 tức là số bước để khép kín một vòng của một chu kỳ Tanner. Người ta đã chứng minh được rằng nếu như một mã LDPC có chiều dài chu kỳ Tanner nhỏ hơn 4 thì hiệu quả của mã này sẽ rất thấp. Do đó, trong khi xây dựng một mã LDPC chúng ta phải đặt biệt quan tâm tới điều này. Có thế coi đây là một trong những tiêu chuẩn quan trọng để xây dựng một mã LDPC tốt. 3.3 Xây dựng mã LDPC Khi nói về các cách xây dựng mã LDPC thì hiện nay tồn tại rất nhiều phương pháp. Nhưng trong khuôn khổ đồ án này, em xin chỉ trình bày mốt số cách điển hình đó là phương pháp cổ diển của Gallager, phương pháp của Mackay-Neal, và phương pháp của Eleftheriou và Olcer. 3.3.1 Phương pháp của Gallager Mã LDPC được Gallager đưa ra trong nhưng năm 60 với cấu trúc cũng rất đơn giản. Đó là một loại mã được đặc trưng bởi 1 ma trận rất nhiều số 0 và rất ít số 1. Để xây dựng loại mã này thì ông đã đưa ra cấu trúc của ma trận kiểm tra H như sau: H1 H 2 H = H3 .. H w c
(3.3)
Trong đó, các ma trân con Hd với 1 ≤ d ≤ wc thỏa mãn điều kiện sau:
Các số nguyên bất kỳ µ và wr lớn hơn 1 hay nói cách khác, ma trận con Hd sẽ có kích thước µ × µ wr trong đó wr là số hàng và trọng số cột bằng 1.
Ma trận con H1 có dạng với các hạng thứ i=1,2,3, … , µ thì hàng thứ i bao gồm tất cả wr giá trị 1 trong đó các cột từ (i1)wr+1 tới iwr.
Các ma trận con khác là hoán vị của ma trận H1.
Điều này sẽ được rõ ràng hơn khi xét ví dụ sau: Ví dụ 3.2: Cho từ mã độ dài 12 với ma trận H có wc=3, wr=4 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 11 1 1 0 1 0 0 1 0 0 0 1 0 0 H = 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1
(3.4)
Tuy nhiên, cấu trúc này tồn tại một nhược điểm ảnh hưởng rất lớn tới chất lượng của mã LDPC. Đó là nó có chiều dải chu kỳ Tanner nhỏ hơn 4. 3.3.2. Phương pháp của Mackay Dựa trên phương pháp của Gallager, Mackay đã đưa ra một số các phương pháp nhằm cải tiến hơn nữa hiệu quả khi xây dưng mã LDPC. Cũng chính ông đã là người đầu tiên chứng minh lợi ích khi sử dụng ma trận nhị phân thưa. Các phương pháp của ông đưa ra rất nhiều, có thể điểm qua tên một số phương pháp như sau:
1. Khởi tạo ma trận H toàn 0 sau đó cho giá trị 1 trượt ngẫu nhiên trên
các cột 2. Khởi tạo ngẫu nhiên ma trận H có trọng lượng cột bằng wc. 3. Khởi tạo ma trận H ngẫu nhiên có trọng số cột là wc và trọng lượng
hàng xấp xỉ hơặc bằng wc. 4. Khởi tạo ma trận H như trên nhưng trong H không có 2 cột nào trùng
nhau các vị trí của số 1. 5. Khởi tạo ma trận H như phương pháp 4 nhưng chiều dài chu kỳ Tannner phải lớn hơn 4. 6. Khởi tạo ma trận H như phương pháp 5 nhưng H có dạng H=[H1, H2]
trong đó H2 phải là ma trận khả nghịch tức là tồn tại ma trận nghịch đảo. Phương pháp của Mackay đưa ra có thể tránh được chu kỳ Tanner ngắn. Nhưng xét về tính cấu trúc thì phương pháp này chưa được hoàn hảo. Vì mục đích muốn đạt được là có thể tạo ra một bộ mã hóa tự động tức là có thể lập trình được, đồng thời độ phức tạp thấp. Do phương pháp này thiếu tính cấu trúc do đó khó mà có thế đảm bảo độ phức tạp của thuật toán như mong muốn.
3.3.3 Phương pháp của Eleftheriou và Olcer Thực chất của các phương pháp này đều tập trung đi vào xây dựng ma trân H. Tuy nhiên, các phương pháp trên vẫn tồn tại các nhược điểm hoặc là độ phức tạp thuật toán cao. Thật vậy, đơn cử như phương pháp của Gallager và Mackay thì nó không có tính cấu trúc do dó rất khó khăn trong việc xây dựng bộ mã hóa với độ phức tạp thấp. Còn phương pháp thiết kế khối không
cân bằng BIBD thì quá phức tạp để đưa ra một ma trận H mong muốn. Do đó, chúng ta sẽ đi xét một thuật toán xây dựng ma trận H khá đơn giản mà hiệu quả. Đó là thuật toán của Eleftheriou và Olcer [2]. Thuật toán tạm chia làm 2 bước chính sau: Bước 1 : Chúng ta có ma trân H dạng như sau :
I I I I A A2 H = I A2 A4 M M M I A j-1 A 2( j-1)
I A k-1 2(k-1) A O M L A ( j-1)(k-1) L L L
(3.5)
Trong đó, I là ma trân đơn vị kích thước p × p. A là ma trận thu được khi dịch vòng trái hoặc phải 1 bít các hàng I. Chúng ta thực hiện dịch vòng ma trận như sau : - Hàng thứ nhất giữ nguyên - Hàng thứ 2 dịch 1 lần về phía phải - Hàng thứ 3 dịch 2 lần về phía phải Cứ làm như vậy sẽ thu được ma trân Hs như sau
(3.6) Bước 2: Tam giác hoá ma trận Hs
Ta chia ma trận ra làm 2 ma trận Hs=[H1s|H2s], trong đó H1s là ma trận jp×jp và H1s là ma trận kích thức jp×(k-j)p. Sau đó, chúng ta thay bộ nửa dưới hình tam giác của ma trận H1s bằng 0. Do đó, ta thu được ma trận Hsu
khá đơn giản và có thể lập trình bằng máy tính để đưa ra một cách dễ dàng.
I 0 s Hu = 0 M 0
I L
I
I
I A L 0 I L M M O 0 L
j− 2
A 2 ( j− 3) A M
0
I
I
L
I
j 1−
k 2 −
A L 2 ( j −2 ) A L M O j− 1
A 2 ( k 3) − A M ( j 1)( − k 1)−
L
A
A
(3.7)
Một đặc điểm đáng chú ý của thuật toán này là thu được được ma trân kiểm tra tránh được lặp vòng 4 (free 4-cycles). Một điều rất nguy hiểm trong thành lập mã LDPC vì nó sẽ là giảm hiệu quả của mã. Bước 3: Đưa ra từ mã Khi có ma trận H hoàn toàn có thể tính được từ mã C như sau: H u s .cT = 0
(3.8) P
⇒ [ H 1| H 2] * C T = 0 ⇒ [ H1| H2] * = 0 U
⇒ H1 * PT ⊕ H 2 * S T = 0
⇒ H1 * P T = H 2 * S T
(3.9)
Nên PT = H 2 S T H1−1 hoặc P = ( H 2 S T H1−1 ) , T
Cuối cùng ta thu được từ mã : C=[p|u] Với P = ( H 2 S T H1−1 ) . T
3.4 Mã hóa 3.4.1 Mã hóa dùng ma trận sinh G
(3.10)
Các mã LDPC được định nghĩa trên cơ sở là ma trận kiểm tra 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 pháp này đưa ma trận H về dạng: H=[In-k|P]
(3.11)
Với P là ma trận kích thước (n-k)×k và In-k là ma trận đơn vị kích thước (n-k)×(n-k). Ma trận sinh G được xác định theo công thức: G=[PT|Ik]
(3.12)
Quá trình mã hóa đến đây chỉ đơn giản là thực hiện phép nhân giữa ma trận hàng đơn biểu thị chuỗi tin đầu vào với ma trận sinh tìm được. c= uG= [u1 u2….uk][PT|Ik]
(3.13)
c= [c1 c2 ..cn] Ví dụ 3.3:
Thực hiện mã LDPC với chiều dài từ mã bằng 10, tỷ lệ mã bằng 1/2, ma trận kiểm tra H có dạng: 1 0 H = 0 1 0
1 1 0 1 0
0 1 0 0 1
1 0 1 0 0
1 1 0 0 0
0 1 0 1 1
0 1 0 1 0
1 0 1 0 1
0 0 1 1 0
0 0 1 0 1
(3.14)
Trước hết ta đưa ma trận H về dạng ma trận bậc thang hàng (rowechelon) bằng các phép toán trên các phần tử hàng trong trường nhị phân GF(2). Theo đại số tuyến tính, phép toán trên các phần tử hàng không làm thay đổi cấu trúc của mã. Với ma trận H trên ta thay thế hàng thứ 4 bằng tổng modul2 của hàng 1 và hàng 4, hoán vị hàng 3 và hàng 5. Cuối cùng thay thế hàng 5 bằng tổng modul2 của hàng 5 và hàng 4, kết quả ta được ma trận dạng row-echelon.
1 0 H r = 0 0 0
1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 1
(3.15)
Bước tiếp theo ta đưa ma trận về dạng bậc thang thu gọn (reduced row –echelon) bằng cách thực hiện phương pháp khử để khử các phần tử phía trên đường chéo. Thứ tự thực hiện như sau: khử phía trên đường chéo cột 2 bằng cách thay thế hàng 1 bằng tổng modul2 của hàng 1 và hàng 2, tương tự cho đường chéo cột 3, thay thế hàng 2 bằng tổng modul2 của hàng 2 và hàng 3, với cột 4 thay thế hàng 1 bằng tổng modul2 của hàng 1 và hàng 4. Cuối cùng với cột 5 ta thay thế hàng 1 bằng tổng modul2 của hàng 1 hàng 5 và hàng 3, hàng 2 bằng tổng modul2 của hàng 2 và hàng 5, hàng 4 bằng tổng modul2 của hàng 4 và hàng 5. Kết quả ta có ma trận dạng thu gọn :
1 0 H rr = 0 0 0
0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1
(3.16)
Từ đây suy ra :
G=
0 1 1 1 0
1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 0
0 0 0 1
(3.17)
Chú ý Trong trường hợp sau khi thực hiện các bước của phép khử GaussJordan 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 đó. Điều này sẽ làm giảm số hàng của ma trận sinh G từ đó làm giảm tỉ lệ mã. Tuy nhiên vấn đề khó khăn ở phương pháp này là ma trận G không bảo đảm đượ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. Đối với các mã có độ dài từ mã lớn, hàng ngàn đến hàng trăm ngàn bít thì bộ mã hóa sẽ trở nên cực kỳ phức tạp. Để giảm bớt tính phức tạp trong mã hóa ta có thể sử dụng các ma trận có dạng cấu trúc. Tuy nhiên với những ma trận có tính ngẫu nhiên ta có thể sử dụng phương pháp mã hóa trực tiếp trên ma trận H thông qua biến đổi H về dạng ma trận tam giác dưới. Phương pháp này được trình bày ở phần sau đây. 3.4.2 Mã hóa LDPC dùng ma trận kiểm tra chẵn lẻ H Khác với phương pháp trên là tìm ma trận G từ ma trận H cho trước sau đó thực hiện mã hóa với G. Một mã LDPC cũng có thể được mã hóa bằng việc sử dụng trực tiếp ma trận H nhờ biến đổi về dạng gần tam giác dưới. Ý tưởng của phương pháp này là sử dụng chủ yếu các hoán vị hàng và cột sao cho vẫn giữ được đặc điểm thưa của ma trận H. Trước hết chỉ hoán vị hàng và cột để đưa ma trận về dạng gần như tam giác dưới. A
B
D
Ht= C
T E
(3.18)
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)×(m-g). B là ma trận kích thước (m-g) ×g và A là ma trận kích thước (m-g) ×k, C có kích thước là g×k và D có kích thước là g×g, E có kích thước là g×(m-g). Trong đó k là chiều dài bản tin, n là độ dài khối của mã, m là số bít 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. Để minh họa phương pháp này ta xét ví dụ sau: Thực hiện mã hóa bản tin u=[1 1 0 0 1] với chiều dài từ mã bằng 10, tỷ lệ 1/2, với H cho trước như ở ví dụ trên: 1 0 H = 0 1 0
1
0 1
1 1
0 0 1
0 1 1 1
0
0 1
1
0
0 1
1 0
0
0 0
0 0 1 1
0 0 1 1 0 0 1
0 1
0 1
0 0 1 0
0 1
(3.19)
Để đưa về dạng gần tam giác dưới ta hoán vị các hàng 2 và hàng 3, cột 6 và cột 10, và chọn gap bằng 2.
1 0 Ht = 0 1 0
1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1
(3.20)
Quá trình định dạng tam giác trên, phép khử Gauss – Jordan được ứng I m −g
dụng một lần tương đương với việc nhân ma trận −1 − ET
0 với ma trận I g
Ht I m −g H = − ET −1 ~
0 A ~ H = I g t C
B T ~ D 0
(3.21)
Ở đây ~
C = −ET −1 A + C (3.22) ~
(3.23)
D = − ET −1 B + D
Trong ví dụ ta xét T
−1
1 = 1 0
0 1 0
0 0 1
I m −g và − ET −1
1 0 0 0 I g = 1 1
0
0
0
1 0 1 0
0 1 1 1
0 0 1 0
0 0 0 0 1
(3.24)
Suy ra
1 0 H%= 0 0 1
1 0 1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0
(3.25)
~
~
Khi thực hiện phép khử Gauss – Jordan để xóa E thì chỉ có C , D bị ảnh hưởng còn các phần khác của ma trận kiểm tra chẵn lẻ vẫn giữ nguyên đặc tính thưa của nó. ~
Cuối cùng để mã hóa bản tin sử dụng ma trận H , từ mã c=[c1,c2,…,cn] được chia thành các phần như c=[u, p1, p2] với u=[u1,u2,…uk] là k bít thông
] g bít kiểm tra đầu và p2 = [ p1 2 , p22 ...m− pg 2 là] các bít tin, p1 = [ p1 1 , p2 1 ...g p1 là kiểm tra còn lại. Từ mã c=[u, p1, p2] phải thỏa mãn phương trình kiểm tra ~
chẵn lẻ H cT = 0 . Do đó: AuT+ Bp1T+Tp2T=0 ~
~
(3.26)
C u + D p1 + 0p T2 = 0 T
T
(3.27)
Vì E đã được khử thành toàn 0, các bít kiểm tra p1 chỉ còn phụ thuộc vào các bít thông tin có thể tính độc lập. Nếu D% là ma trận khả đảo ta tính được p1 theo công thức: ~ ~ −1
(3.28)
p = D CuT T 1
~
~
Nếu D không khả ngịch thì ta hoán vị các hàng của H đến khi có thể. Khi tìm được p1 ta tính p2 theo phương trình: p2T = −T −1 ( Au T + Bp1T )
(3.29)
Các ma trận A, B và T rất thưa do đó độ phức tạp của phương trình này rất thấp, khi T là ma trận dạng tam giác trên nên p2 có thể được tính bằng phép thay thế ngược lại. Trở lại ví dụ trên ta có từ mã c=[c1,c2,…c10]=[u,p1,p2] ở đây p1=[c6,c7] và p2=[c8,c9,c10]. Các bít kiểm tra p1=[c6,c7], p2=[c8,c9,c10] được tính như sau:
~
~
1
p1T = D −1 C u T = 1
00 1 1
1 0
1 0
0 1
1 1 0 1 0 = 0 0 0 1
p1=[1 0], theo công thức (3.11) ta có p2=[1 0 0] nên c=[1 1 0 0 1 1 0 1 0 0]. 3.5 Giải mã
(3.30)
3.5.1 Phương pháp tổng tích (SPA) : Sau khi Mackay và Neal chứng minh tính vượt trội của mã LDPC thì đã có nhiều phương pháp giải mã ra đời như Thuật toán truyền Belief BPA (Belief Propagation Algorithm), MPA – Thuật toán chuyển tin (Message Passing Algorithm) … và một số thuật toán khác. Tuy nhiên, mục này chúng ta chỉ nói đến thuật toán tổng-tích (Sum – Product Algorithm) [3] của Mackay và Neal.. Trước hết, chúng ta đưa ra một số định nghĩa : Vi = {tập hợp các nút v nối tới c j } Vj \i = {tập hợp các nút c nối tới nút f j}\ {v – nút ci} Ci = {tập hợp các c nối tới vi } Ci \j ={tập hợp các nút c nối tới nút ci}\ {v – nút cj}
Mv(~i)={thông tin từ mọi nút v trừ nút ci} Mc(~j)={ thông tin từ mọi nút c trừ nú fj} Pi=Pr(ci=1|yi) Si= sự kiện phương trình bao gồm ci đã thỏa mãn. qij(b)=Pr(ci=b| Si,yi,Mc(~j)), với b ∈ {0,1}. rij(b)=Pr (phương trình kiểm tra fj đã thỏa mãn ci=b,Mv(~i)),với b ∈ {0,1}. Bước 1: Tính xác suất qij
(xác suất bit code thứ i với điều kiện kiểm tra chẵn lẻ của nó phải thỏa mãn kỳ vọng của nút kiểm tra thứ j): qij(0) = Pr ( ci = 0 | yi , Si , M c ( ~ j ) )
(3.31)
= ( 1 − Pi ) Pr ( Si | ci = 0, yi , M c ( ~ j ) ) / Pr ( Si ) = Kij ( 1 − Pi ) qij ( 1) = Kij Pi
∏
rj ' i (0)
∏
rj ' i (1)
j '∈Ci \ j
j '∈Ci \ j
(3.32)
Trong đó, K được chọn sao cho qij ( 0 ) + qij ( 1) = 1.
Hình 3.3: Minh họa bản tin đi qua ½ vòng lặp để tính qij(b)
Bước 2: Tính xác suất rij
Từ kết quả của Gallager[1], ta có chuỗi M nhị phân độc lập ai thỏa mãn Pr(ai=1)= pi. Do đó, sẽ thu được xác suất của {ai}Mi bao gồm các số 1: 1 1 M + ∏ (1-2pi). 2 2 l =i
Trong kết quả trên thì pi tương ứng với qij(1) (hình 1.3), suy ra : rji ( 0 ) =
Và
1 1 M + ∏ ( 1 − 2qi ’ j ( 1) ) 2 2 i '∈Vj \ i
rji - ( 1) = 1 − rji ( 0 )
(3.33) (3.34)
Hình 3.4: minh họa bản tin đi qua nửa vòng lặp để tính rij(b) Suy ra: ta có xác suất hậu nghiệm là : Qi ( 0 ) = Ki ( 1 − pi ) ∏ rji ( 0 ) .
(3.35)
j∈Ci
Qi ( 1) = Ki pi ∏ rji ( 1) . j∈Ci
(3.36)
Tại Ki phải chọn thỏa mãn rằng Qi(0) + Qi(1) = 1.
(3.37)
Cuối cùng thu được từ mã như sau : Ci= 1 nếu Qi(1)>Qi(0)
(3.38)
Ngược lại thì Ci=0. Tuy nhiên, phương pháp giải mã này cho thời gian xử lý rất lâu. Như vậy, kéo theo vấn đề đòi hỏi cấu hình thiết bị cao hơn để đảm bảo thời gian thực. Do đó, trong mục thứ III chúng ta sẽ tiếp cận một phương pháp giải mã mới nhằm giảm thời gian xử lý của hệ thống. Điều này cũng đồng nghĩa giảm độ phức tạp của thuật toán. Sự đa dạng của các kỹ thuật giải mã LDPC cũng chính là ưu điểm của loại mã này. Trong đó một số phương pháp cho kết quả được xem là tốt nhất hiện nay về khả năng sửa lỗi. Chính vì điều này LDPC đang nổi lên và có khả năng sẽ thay thế mã turbo trong tương lai. Tuy nhiên, khuyết điểm này dần dần được khác phục bởi cách thuật toán giải mã độ phức tạp thấp hơn mà trong đó có thể nói MSA là một ví du điển hình. 3.5.2 Thuật toán MSA Hiện nay rất nhiều hướng được đạt ra nhằm giảm sự phức tạp thuật toán và Min-Sum (MSA) cũng là một trong số đó, MSA được hình thành trên cơ sở phát triển thuật toán SPA(Sum – Product Algorithm)- thuật toán mà
Mackay-Neal đã sử dụng để chứng minh LDPC code có thể tiệm cận giới hạn Shannon. Do đó, để tiện cho việc tìm hiểu MSA chúng ta khái quát lại thuật toán SPA [1, 2]. SPA có thể mô phỏng 5 bước như sau: Bước 1: For i = 0 to n − 1 do
set Pi = Pr(ci = 1| yi )
(3.39)
với yi là ký tự thứ i mà kênh nhận được. Sau đó set qij (0) = 1 − Pi
(3.40)
qij (1) = Pi
(3.41)
với ∀i, j thỏa. hij = 1 Bước 2: Cập nhật rij (b) : rji ( 0 )
1 1 M = + ∏ ( 1 − 2qi ’ j ( 1) ) 2 2 i '∈Vj \ i
rji ' ( 1) = 1 − rji ( 0 )
(3.42) (3.43)
Bước 3: Cập nhật qij (b) : qij (0) = K ij ( 1 − Pi ) qij (1) = Kij Pi
∏
j '∈Ci \ j
∏
rj ' i (0)
j '∈Ci \ j
rj ' i (1)
(3.44) (3.45)
Với Kij là hằng số. Bước 4: For i=0 to n-1 Qi (0) = Ki (1 − Pi )∏ rji (0)
(3.46)
Qi (1) = Ki Pi ∏ rji (1)
(3.47)
j∈Ci
j∈Ci
Bước 5: For i=0 to n n-1
If Qi (1) ≥ Qi (0) then ci = 1 else ci = 0 If ( c * H T = 0 )or (số vòng lặp = max) then
Stop Else go to step 2.
3.5.3 Thuật toán giải mã MSA Như trên đã nêu MSA hình thành từ thuật toán SPA, cụ thể để hình thành lập lên MSA ta thực hiện một số cải tiến cho các bước như sau [2]: Bước 1: Thay vì tính qij ta đi tính q (0) L(qij ) = log ij . q (1) ij Bước 2:
Vì rij ( 1) = 1 − rij ( 0 )
(3.48) ⇒ rij ( 0 ) = 1 − rij ( 1)
Thay vào phương trình (4) ta có : 1 − 2 rij(1)=
M
∏1−(
i '∈Vj \i
2 qi j ’ 1( .) )
(3.49)
Mặt khác trong thực tế: 1 p tanh + log 0 = p0 − p1 = 1 − 2 p1 . p1 2
(3.50)
Thay (12) vào (11) ta có: 1 1 tanh + L ( rij ) = ∏ tanh L ( qi' j ) , 2 i '∈Vj '\ i 2
(3.51)
suy ra: 1 1 tanh L ( qi ' j ) = ∏ αi ' j ∏ tanh βi ' j 2 i '∈Vj '\i 2 i '∈Vj '\ i
,
với:
(
)
L ( q ij ) = αij β i ' j ; α ij = sign L ( qij ) ; βi ' j = L ( qij ) .
Cuối cùng:
(3.52)
1 L ( rji ) = ∏ αi ' j .∏ tanh βi ' j 2 i' i'
∏α
=
i' j
i'
=
∏α
i' j
i'
=
∏α i'
1 .2 tanh −1 log − 1 log ∏ tanh β 2 i'
i' j
1 .2 tanh −1 log − 1 ∑log tanh β 2 i'
i' j
i' j
.φ ∑ φ ( βi ' j ) . i '∈Vj \i exp(x )+ 1
x
Với φ ( x) = − log tanh 2 = log exp( x) −1
Ví dụ: phương trình cho kênh BI-AWGN: L ( qij ) = L ( ci ) = 2 yi / δ 2
Mặt khác, chúng ta để ý tiếp đến phương trình (16) để tính L(rij ) . Ta có:
((
φ ∑ φ ( β i ' j ) ≈ φ φ min βi ' j i' i
( )
≈ min βi ' j , i '∈Vj \ i
(3.53)
Vì φ ( x) tương ứng với giá trị nhỏ nhất của βi ' j trong L ( rij ) =
∏α.
minβ '
i'j
i '∈V j \i
i'
)) ∑φ ( i
βi ' j ) , do đó:
(3.54)
i j
Bước 3 và 4: logarit hai vế ta thu được: L ( qij ) = L ( ci ) +
∑ L( r )
j '∈Cj \ j
j ’i
L ( Qi ) = L ( ci ) + ∑ L ( rji ) j∈Ci
Thuật toán MSA có thể tóm tắt bằng các bước sau: Bước 1: For i = 0 to n − 1 do Khởi tạo L ( qij ) = yi
(3.55) (3.56)
Bước2: Cập nhật L ( rij ) theo (19). Bước 3: cập nhật L ( qij ) theo (20). Bước 4: Cập nhật L ( Qi ) theo (21). Bước 5: For i = 0 to n − 1 do: If L ( Qi ) < 0 then ci = 0 Else ci = 1 If ( c * H T = 0 )or (số vòng lặp = max) then stop Else go to step 2 . Nhận xét đặc điểm thuật toán MSA: 1 . Từ (19) ta thấy, sự phức tạp của quá trình tính toán với MSA có khả năng giảm sự phụ thuộc vào kênh truyền đối, điều này tảê hiện ở chỗ không cần kể tới thông tin về δ 2 , đây chính là ưu điểm nổi trội của thuật toán này so 2 với SPA. Ví dụ đối với kênh BI-AWGN L ( qij ) = 2 yij / δ có thể thay bằng
L ( q ij ) = y i .
2. Mặt khác, thay vì với SPA, ta phải tính xác suất xuất hiện từ mã (Pxi) đối với xi với việc sử dụng các phép nhân, trong thuật toán nhaanta chi phải tính giá trị min (x) – giá trị từ mã nhỏ nhất băng các phép cộng và so sánh nên khối lượng tính toán giảm đi rất nhiều. Từ các nhận xét trên cho thấy: Khi sử dụng thuật toán MPA có thể giảm khối lượng tính toán rất nhiều so với thuật toán SPA. 3.6 Mô phỏng hệ thống thông tin số sử dụng mã LDPC 3.6.1. Mô hình kênh Trong mục này chúng ta sẽ chỉ tìm hiểu ảnh hưởng của tín hiệu qua kênh phadinh Rayleigh. Đây là kênh được coi là tồi nhất trong thông tin di động,
do đó nó cần được tìm hiểu một cách sâu sắc. Hàm pdf của nó được thể hiện trong công thức p (α ) =
α α2 *exp( − ), σ2 2σ 2
(α ≥ 0, σ ≥ 0)
trong đó σ là tham số của phân bố Rayleigh. Giá trị trung bình và phương sai của biến ngẫu nhiên có phân bố Rayleigh sẽ là: mx =
π 2 π 2 ×σ ; σ x = 2 − ×σ 2 2
Thông tin qua kênh Rayleigh fading được thể hiện trong qua hình 3. xk
yk ax
nx
Hình3.5: Mô hình kênh Fadinh
Thông tin thu được sẽ có dạng sau :
yk = xk ak + nk Trong đó
yk là tín hiệu thu
xk là tín hiệu đầu vào
ak là biến ngẫu nhiên theo phân bố Rayleigh biểu diễn tác động của kênh truyền fading lên tín hiệu.
nk là tạp âm gauss
View more...
Comments