Mã hóa nguồn phân tán sử dụng syndrome có thể được thực hiện bằng vài cách phụ thuộc vào kỹ thuật mã hóa kênh mà ta lựa chọn. Kỹ thuật chung hay dùng nhất sử dụng mã khối tuyến tính, mã cuộn và mã móc. Nghiên cứu về mã hóa kênh dẫn đến hai kỹ thuật, là mã LDPC và mã Tubor. Mã Tubor là một mã móc được ghép bởi một interleaving và một mã cuộn. Mã Tubor được sử dụng trong mã hóa nguồn phân tán không được trình bày trong bài luận này. Trong bài luận này chúng
26 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54
ta chọn theo sơ đồ mã khối tuyến tính trong số các dạng nâng cao nhất của mã LDPC. Ta chọn như thế bởi vì nó cải thiện hiệu năng so với mã Tubor và cũng bởi vì nó cũng có thể mang theo sơ đồ phân tán.
CHƯƠNG 3. MÃ NGUỒN PHÂN TÁN SỬ DỤNG SYNDROME 3.1. Mã nguồn phân tán sử dụng các syndrome
Trong quá trình thiết lập nén phân tán, cũng như không phân tán, các ví dụ tiếp nối nhau cần được lượng tử để có được một entropy hữu hạn.
Như đề cập trước đó, sự tương quan giữa các nguồn trong một mạng cảm biến có thể được mô hình hóa như một kênh “ tương quan”. Ý tưởng ở đây là sau khi sử dụng một mã kênh kèm theo để nén nguồn dữ liệu sau đó. Từ mã được lượng tử U chắc chắn tương quan với X. Nếu X cũng tương quan với thông tin bên Y, U cũng sẽ tương quan với Y. Vì vậy “ kênh tương quan ” có thể được mô tả bằng sự phân bố trạng thái P(Y|U). Thông tin bên chứa thông tin I(U;Y) về U được khai thác ở phía bộ giải mã để ước tính X. Hiện nay, sự phân bố tương quan có thể phân biệt tương đối cho từng trường hợp cụ thể, nhưng nó thường được mô phỏng trong báo cáo như một Kênh Đối Xứng Nhị Phân (BSC) hay một kênh với Nhiễu Gaussian Trắng Phụ (Additive White Gaussian Noise).
Vì vậy, làm thế nào chúng ta có thể giảm bớt tổng số bit đại diện cho X mà không cần biết chính xác những mẫu tương ứng của Y? Ta sẽ mô tả với một ví dụ. Cả X và Y đều là các từ 3-bit có thể xảy ra với sự tương quan được đưa vào bằng khoảng cách Hamming không nhiều hơn một. Nếu Y được hiểu tại cả khối mã hóa và giải mã, thì sẽ không có điểm nào đại diện cho X với nhiều hơn 2 bit. (Cho Y, X Y nằm trong tập {000, 001, 010, 100} với là phép Xor ). Với Y được hiểu chỉ ở bộ giải mã, điều này có thể xảy ra? Không có điểm nào gửi cả X = 000 và X = 111 vì khoảng cách Hamming giữa chúng bằng 3. Với khả năng Y, một trong số những từ mã trong việc thiết lập được lựa chọn. Ngày nay, tất cả những đại diện từ mã có thể của X được rút gọn thành các thiết lập đơn giản mang đến những thiết lập
27 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54
thêm của X : {001, 110}, {010, 101}. Do vậy, X chỉ cần truyền với 2 bit thay vì 3 bit. 000 111 111 110 101 011 000 001 010 100 Coset - 1 Đầu ra của Y
Hình 3.1. Đầu ra có thể của Y nếu X thuộc coset {000, 111}
Đây là ví dụ đầu tiên nhưng nó đã mô tả ý tưởng của kịch bản mã nguồn phân tán. Mục tiêu là để phát hiện một mã kênh tốt có thể thực hiện gần với giới hạn Wyner – Ziv từ phần 5. Theo dõi bước đầu về hai từ mã của X là một mã khối tuyến tính ( 3,1,3), cũng được biết như là mã lặp 3 bit. Các thiết lập khác cũng bị biến thể hoặc tập hợp lại của mã lặp. Vì vậy, thay vì mô tả X bởi 3 bit giá trị, chúng ta mã hóa tập hợp X kèm theo, với một giá trị 2 bit, như trường hợp khi Y được hiểu cả ở bộ mã hóa và giải mã. Bây giờ việc lấy lại khối tuyến tính có thể được đưa ra bởi ma trận kiểm tra chẵn lẻ H. Mọi tập hợp của một mã tuyến tính được tổng hợp với hàm đối xứng duy nhất s = HTc, với c là từ mã hợp lệ bất kì nào đó.
Các công nghệ mã hóa kênh triển vọng được đề cập như là những sự luân phiên bao gồm mã turbo và mã LDPC. Cả hai đều được mô tả và kiểm tra bởi những nhà nghiên cứu khác nhau. Chúng tôi đã chọn ra kịch bản LDPC trong thuyết này bởi vì nó được chứng minh sự chuyển tiếp tốt nhất để nén phân tán. Công nghệ
28 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54
mã hóa này được thảo luận thường xuyên trong chương 3.2 và đặc biệt cho Mã nguồn phân tán ở chương 3.3.
3.2. Thiết kế đối xứng
Trường hợp bất đối xứng của mã nguồn phân tán không linh hoạt về tỷ lệ phân bố. Nếu ta muốn thay đổi tốc độ của các nguồn khác trong trường hợp bất đối xứng thì chúng ta cần sử dụng sơ đồ chia sẻ thời gian mở đầu cho vấn đề đồng bộ; các sensor này phải liên lạc với nhau để đồng bộ hóa. Đây là điều mà chúng ta cố gắng tránh khỏi. Có hai giải pháp để giải quyết vấn đề này. Người ta đưa ra một phương pháp dựa trên nguyên tắc như là sơ đồ DISCUS, nhưng lại phải cải tiến thêm cho mã hóa và giải mã. Cách khác là dùng phương pháp chia nguồn.
Không giống như trường hợp bất đối xứng là một nguồn gửi thông tin tổn thất của nó và nguồn khác gửi thông dữ liệu đã nén thì trong trường hợp này, cả hai nguồn sẽ có thể chỉ gửi thông tin cục bộ mà không thỏa hiệp với chất lượng tín hiệu thiết lập lại ở bộ giải mã. Một sơ đồ mã hóa đồng bộ sẽ có thể mã hóa với tốc độ trong vùng tốc độ ở hình 2.4b.
Xét việc mã hóa hai nguồn tương quan tổn quát X và Y. ta sẽ mã hóa theo cách đối xứng, vd chúng ta muốn nén mỗi nguồn với bất kì tỷ lệ nào trong khoảng từ H(X) đến H(X|Y) đối với X , và khoảng từ H(Y) đến H(Y|X) đối với Y. Giả sử H(X) ≤ H(Y). Theo chiến lược mã hóa kênh, ta tạo hai ma trận Gx và Gy chứa n(1- H(X|Y)) và n(1-H(Y)) hàng để đạt được điểm góc (H(X|Y), H(Y)) (xem hình 4). Để gán các tỷ lệ khác nhau chúng ta chuyển một vài hàng từ Gx qua Gy di chuyển dọc theo đường H(X,Y) cho đến khi đạt được điểm góc khác (H(X), H(Y|X)).
29 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54 Gc Ga Gs Gc Ga Gsx Gc Gsy G = Gx = Gy =
Hình 3.2. Cấu trúc bộ tạo ma trận trong trường hợp đối xứng
Xét 1 bộ tạo ma trận Gc kích thước n(1-H(Y)) × n với các hàng là độc lập tuyến tính, trong đó n là chiều dài khối sử dụng trong mã hóa. Bộ tạo ma trận này có thể được dùng để chia không gian của chuỗi Y chiều dài n. như vậy Gy = Gc, và bộ mã hóa của Y gửi syndrome liên kết với ma trận Gx. Xét một ma trận Ga kích thước n(H(Y)-H(Y)) × n , các hàng là đọc lập tuyến tính. Một ma trận được tạo ra bởi việc xếp Gc và Ga có thể được sử dụng để chia không gian chuỗi chiều dài n với nH(X) coset. Để giảm tỷ lệ gây ra bởi ma trận sau khi xếp từ H(X) bít/mẫu xuống H(X|Y) bít/mẫu chúng ta xây dựng một ma trận Gs với n(H(X)-H(X|Y)) hàng độc lập tuyến tính. Gx bây giờ được tạo ra bởi Gc, Ga và Gs. Bộ giả mã của X gửi syndrome của chuỗi chiều dài n của X về Gx đến bộ giải mã. Bộ giải mã lấy lại được chuỗi Y chiều dài n dựa trên thông tin này và biết về thống kê của Y. để mã hóa X chúng ta cần có bộ tạo ma trận Gx. Bộ giải mã nhận lại được chuỗi chiều dài n có thể dùng một thuật toán giải mã chuẩn để khôi phịc chuỗi X sử dụng phân bố chung p(x,y) của X và Y.
Để trao đổi tỷ lệ giữa hai bộ mã hóa của X và Y, bất kỳ hàng nào của Gs có thể được chuyển từ Gx đến Gy. Cuối cùng khi Gx chỉ còn lại Gc và Ga, hai bộ mã hóa của X và Y ssẽ truyền với tốc độ lần lượt là H(X) và H(Y|X) bít/mẫu. Quá trình phân bổ này có thể được xem như là việc chia bộ tạo ma trận G thành hai (Gx và Gy) được minh họa ở hình 3.2.
30 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54 3.2.1. Cấu trúc bộ giải mã
Hãy nhớ rằng trong trường hợp đối xứng này để giải mã nguồn cần phải tìm được coset nơi mà nguồn sau nén X tồn tại và tìm được từ mã về coset này mà gần với thôg tin biên Y nhất. bây giờ trong trường hợp đối xứng, cả hai nguồn gửi thông tin cục bộ nên chiến lược giải mã không thể áp dụng. Chúng ta sẽ quay lại cái này trong trường hợp đặc biệt của giải mã LDPC
3.2.2. Đa nguồn
Một mạng cảm biến với hai sensor mà chúng ta đã xem xét cho đến nay thì không phải là nhiều. người ta mong muốn và hoàn toàn cần thiết để có thể trình bày một lý thuyết về trương hợp nhiều hơn hai nguồn. Cái hay của ý tưởng được trình bày đến nay trong bài luận này là không có có một thách thức nào. Ví dụ về hai nguồn trong mã nguồn phân tán đối xứng dễ dàng mở rộng thành đa nguồn.
G1 G2 GL GL-1 G1 G2 GL-1 G1 G2 G1 Gx1 Gx2 G x(L-1) Gx(L)
Hình 3.2.2. Định nghĩa ma trận trong trườn hợp đa nguồn
Với L nguồn, ta tạo ra 1 thứ tự của một số nguồn bất kỳ {X1,…XL} như là H(X1|X2, …, XL) ≤ …≤ H(Xi|Xi+1, …, XL) ≤ …≤ H(XL). Không khác với nguyên tắc chung, chunga ta có thể sắp xếp các nguồn theo kiểu cách này. Ta có thể đạt được điểm góc H(X1|X2, …, XL) , …, H(Xi|Xi+1, …, XL) , …, H(XL) bằng việc đệ quy định nghĩa bộ tạo nhiều ma trận từ bộ tạo 1 ma trận đơn cho mỗi mã, như hình 3.2.2.
31 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54
Quá trình bắt đầu với việc định nghĩa bộ tạo ma trận GL với n(1-H(XL)) hàng độc lập tuyến tính. Các ma trận khác có thể có được bằng việc định nghĩa lặp lại Gi-1 như là xếp Gi và một ma trận Ai-1 với n(H(Xi|Xi+1, …, H(XL)) – H(Xi-1|Xi, …,XL)) hàng độc lập tuyến tính. Rõ ràng thì như trong trương hợp hai nguồn, các điểm không phải là điểm góc có thể đạt được bởi việc trao đổi các hàng đặc biệt của các bộ tạo ma trận giữa chúng.
3.3. Mã hóa LDPC
3.3.1. Giới thiệu một số loại mã
3.3.1.1. Mã Turbo
Trong lí thuyết thông tin, mã turbo là một tập hợp các chuyển tiếp sửa lỗi hiệu suất cao. Tên mã xuất phát từ các vòng lặp thông tin phản hồi được sử dụng để đáp ứng cho các động cơ tăng áp.
Bộ mã hóa :
Hình 3.3.1.1a Cấu trúc bộ mã hóa Turbo
- Bộ mã hóa bao gồm 3 khối bit nhỏ : Khối đầu tiên là khối m – bit dữ liệu tải trọng; Khối thứ 2 gồm n/3 bit chẵn lẻ để tính toán, sử dụng một hệ thống đệ quy (mã RSC); Khối thứ 3 là n/2 bit chẵn lẻ cho biết hoán vị của các dữ liệu tải trọng, cũng sử dụng mã RSC.
- Trên hình, M là một bộ nhớ Register. Trễ và lưu lượng đầu vào dk xuất hiện với trình tự khác nhau. Tại phiên đầu tiên, trình tự dk xuất hiện ở cả 2 đầu ra
32 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54
của bộ mã hóa. Nếu các bộ mã hóa C1 và C2 được sử dụng tương ứng trong n1 và n2 thì mức giá trị của chúng lần lượt bằng :
R1 = (n1 + n2) / (2n1 + n2) R2 = (n1 + n2) / (n1 + 2n2)
Bộ giải mã :
Hình 3.3.1.1b Cấu trúc bộ giải mã Turbo
- Hai bộ giải mã nhỏ được để nối tiếp với nhau. Các bộ giải mã DEC1 hoạt động ở tốc độ thấp hơn (vd, R1), do đó nó giành cho các mã hóa C1, và DEC2 là cho C2 tương ứng. DEC1 gây ra trễ L1 , DEC2 gây ra trễ L2 .
Nhược điểm : Mã turbo chỉ sử dụng 2 mã cấu hình song song để mã hóa toàn bộ khối đầu vào K của các bit dữ liệu. Các bộ mã hóa thành phần sử dụng mã chập đệ quy ( RSC) với khả năng giới hạn ( 8 -16 trạng thái ). Chính vì vậy, khả năng quản lý chưa thực sự chính xác, cũng như mức độ dự phòng cho mỗi bit đầu vào chưa được linh hoạt.
3.3.1.2. Mã Hamming
Trong viễn thông (telecommunication), mã Hamming là một mã sửa lỗi tuyến tính (linear error-correcting code), được đặt tên theo tên của người phát minh ra nó, Richard Hamming. Mã Hamming có thể phát hiện một bit hoặc hai bit bị lỗi
33 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54
(single and double-bit errors). Mã Hamming còn có thể sửa các lỗi do một bit bị sai gây ra. Ngược lại với mã của ông, mã chẵn lẻ (parity code) đơn giản vừa không có khả năng phát hiện các lỗi khi 2 bit cùng một lúc bị hoán vị (0 thành 1 và ngược lại), vừa không thể giúp để sửa được các lỗi mà nó phát hiện thấy.
a. Các mã trước thời kỳ của Hamming
Mã chẵn lẻ
Mã chẵn lẻ thêm một bit vào trong dữ liệu, và bit cho thêm này cho biết số lượng bit có giá trị 1 của đoạn dữ liệu nằm trước là một số chẵn hay một số lẻ. Nếu một bit bị thay đổi trong quá trình truyền dữ liệu, giá trị chẵn lẻ trong thông điệp sẽ thay đổi và do đó có thể phát hiện được lỗi (Chú ý rằng bit bị thay đổi có thể lại chính là bit kiểm tra). Theo quy ước chung, bit kiểm tra có giá trị bằng 1 nếu số lượng bit có giá trị 1 trong dữ liệu là một số lẻ, và giá trị của bit kiểm tra bằng 0 nếu số lượng bit có giá trị 1 trong dữ liệu là một số chẵn. Nói cách khác, nếu đoạn dữ liệu và bit kiểm tra được gộp lại cùng với nhau, số lượng bit có giá trị bằng 1 luôn luôn là một số chẵn.
Việc kiểm tra dùng mã chẵn lẻ là một việc không được chắc chắn cho lắm, vì nếu số bit bị thay đổi là một số chẵn (2, 4, 6 - cả hai, bốn hoặc sáu bit đều bị hoán vị) thì mã này không phát hiện được lỗi. Hơn nữa, mã chẵn lẻ không biết được bit nào là bit bị lỗi, kể cả khi nó phát hiện là có lỗi xảy ra. Toàn bộ dữ liệu đã nhận được phải bỏ đi, và phải truyền lại từ đầu. Trên một kênh truyền bị nhiễu, việc truyền nhận thành công có thể mất rất nhiều thời gian, nhiều khi còn không truyền được nữa. Mặc dù việc kiểm tra bằng mã chẵn lẻ không được tốt cho lắm, song vì nó chỉ dùng 1 bit để kiểm tra cho nên nó có số tổng phí (overhead) thấp nhất, đồng thời, nó cho phép phục hồi bit bị thất lạc nếu người ta biết được vị trí của bit bị thất lạc nằm ở đâu.
Mã hai-trong-năm
Trong những năm của thập niên kỷ 1940, Bell có sử dụng một mã hiệu phức tạp hơn một chút, gọi là mã hai-trong-năm (two-out-of-five code). Mã này đảm bảo mỗi một khối 5 bit (còn được gọi là khối-5) có chính xác hai bit có giá trị bằng 1.
34 | Sinh viên thực hiện : Hoàng Thanh Tùng– Điện Tử 1-K54
Máy tính có thể nhận ra là dữ liệu nhập vào có lỗi nếu trong một khối 5 bit không 2 bit có giá trị bằng 1. Tuy thế, mã hai-trong-năm cũng chỉ có thể phát hiện được một đơn vị bit mà thôi; nếu trong cùng một khối, một bit bị lộn ngược thành giá trị 1, và một bit khác bị lộn ngược thành giá trị 0, quy luật hai-trong-năm vẫn cho một giá trị đúng (remained true), và do đó nó không phát hiện là có lỗi xảy ra.
Tái diễn dữ liệu
Một mã nữa được dùng trong thời gian này là mã hoạt động bằng cách nhắc đi nhắc lại bit dữ liệu vài lần (tái diễn bit được truyền) để đảm bảo bit dữ liệu được truyền, truyền đến nơi nhận trọn vẹn. Chẳng hạn, nếu bit dữ liệu cần được truyền có