TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG BÀI TẬP LỚN Đề tài Thiết kế và giải mã reed solomon trong hệ thống thông tin di động Gv hướng dẫn Nguyễn Văn Đức Sinh viên thực hiện Họ và tên M.
LÝ THUYẾT THUẬT TOÁN REED-SOLOMON
Vị trí và vai trò của mã hóa kênh
Hình 2.1 Trình bày sơ đồ khối tổng quát của một hệ thống thông tin số.
Hình 2 1 : Sơ đồ khối tổng quát của một hệ thống thông tin số.
Hình 2.1 minh họa rõ vị trí của mã hóa kênh trong hệ thống truyền thông số, cho thấy sự quan trọng của mã hóa kênh trong việc đảm bảo dữ liệu được truyền đạt chính xác, chống nhiễu và giảm lỗi Trong hệ thống thông tin số, mã hóa có nhiều loại như mã hóa nguồn để nén dữ liệu, mã hóa bảo mật để bảo vệ thông tin, và đặc biệt, mã hóa kênh giúp nâng cao độ tin cậy của dữ liệu truyền qua các môi trường bị nhiễu Do đó, mã hóa kênh giữ vai trò trung tâm trong việc đảm bảo chất lượng truyền dẫn của hệ thống thông tin số.
Mã hóa nguồn (source coding) nhằm giảm thiểu độ dư thừa của tin, giúp loại bỏ các thông tin không cần thiết để truyền dữ liệu nhanh hơn và đảm bảo phía nhận dễ dàng nhận biết thông tin chính xác.
Mã hóa bảo mật (encrypt) có mục đích chính nhằm chống lại việc ăn cắp, làm nhiễu hoặc làm sai lệch thông tin của các yếu tố bên ngoài Việc mã hóa giúp bảo vệ dữ liệu khỏi bị truy cập trái phép, đảm bảo tính toàn vẹn và bảo mật của thông tin trong các hệ thống truyền thông và lưu trữ dữ liệu Do đó, mã hóa là một yếu tố không thể thiếu trong chiến lược bảo vệ dữ liệu hiện nay.
Mã hóa kênh: mục đích là làm giảm thiểu xác suất sai thông tin khi truyền qua kênh truyền.
Giảm thiểu xác suất sai bằng cách phát hiện và sửa lỗi giúp giảm tỷ lệ tín hiệu trên nhiễu (SNR) cần thiết, từ đó tiết kiệm năng lượng và nâng cao hiệu quả truyền tải Sửa lỗi hiệu quả với SNR thấp không chỉ giúp giảm công suất tiêu thụ mà còn thúc đẩy bảo mật, trải phổ và tăng độ chính xác của thông tin nhận được, đóng vai trò quan trọng trong nâng cao hiệu suất truyền thông số.
Mã Reed-Solomon
2.2.1 Giới thiệu về trường Galois:
Mã Reed-Solomon dựa trên lĩnh vực đặc biệt của toán học gọi là trường hữu hạn, nơi các phép tính cộng, trừ, nhân, chia giữa các phần tử luôn cho ra kết quả nằm trong cùng một trường Bộ mã hóa và giải mã Reed-Solomon thực hiện các phép tính số học phức tạp, đòi hỏi phần cứng hoặc phần mềm chức năng cao để xử lý hiệu quả Điều này đảm bảo mã Reed-Solomon có khả năng sửa lỗi mạnh mẽ và độ tin cậy cao trong các hệ thống truyền thông và lưu trữ dữ liệu.
Trong trường Galois tương ứng với mỗi độ rộng của trường thì có một đa thức đặc trưng mặc định.
Hình 2 2 : Đa thức đặc trưng trong trường Galois.
Các phép tính trong trường Galois dựa trên các đa thức đặc trưng, ví dụ như với m=3, đa thức đặc trưng là f(x) = 1 + x + x³ Từ đa thức này trong trường GF(2³), ta có x³ = 1 + x, giúp xác định các phần tử khác trong trường GF(2³) và biểu diễn chúng theo nhiều dạng khác nhau.
Trường Galois Số nhị phân Số thập phân
Từ đó chúng ta sẽ có 8 phần tử cơ bản của trường GF( 2 3 ) là :
2.2.2 Những tính chất cơ bản của mã Reed-Solomon
Mã Reed-Solomon có nhiều định nghĩa khác nhau, trong đó định nghĩa ban đầu tập trung vào việc tính toán đa thức trên trường hữu hạn Tuy nhiên, một phương pháp khảo sát mã Reed-Solomon hiệu quả hơn là sử dụng phép biến đổi Fourier trên trường Galois Ngoài ra, mã Reed-Solomon còn có thể xem như là một dạng mở rộng của mã BCH, mang lại nhiều ứng dụng quan trọng trong lĩnh vực truyền thông và lưu trữ dữ liệu.
Reed-Solomon RS(n, k) codes encode k message symbols within a finite field GF(q), where q is a prime power These codes generate codewords of length n, with n less than or equal to q, ensuring reliable data transmission By operating in GF(q), Reed-Solomon codes effectively detect and correct multiple symbol errors, making them ideal for use in digital communications and data storage systems.
Mã hóa này là một quá trình ánh xạ tích chập của đa thức tin f(x), trong đó f(x) = f₀ + f₁x + f₂x² + ⋯ + f_{k-1}x^{k-1}, với mỗi f_i là phần tử của tin nhắn Khi kết hợp đa thức tin f(x) với n phần tử riêng {α₁, α₂, , αₙ} của trường GF(q), mã của mã Reed-Solomon (RS) được xây dựng bằng cách tính giá trị của đa thức tại các điểm này: C = (f(α₁), f(α₂), , f(αₙ)).
Thông thường, n = q-1 và các phần tử tích chập là q-1 phần tử khác 0 thuộc GF(q).
Ví dụ 2.2 trình bày về mã RS(15,7) trên trường GF(2^4), trong đó tin nhắn được biểu diễn bằng đa thức f(x) = α + x + α^3 x^2 + α^4 x^3 + α^5 x^4 + α^6 x^5 + α^7 x^6 Các phần tử thiết lập của mã là (1, α, , α^14), từ đó tạo thành từ mã C = (f(1), f(α), , f(α^14)) Mã RS này sử dụng đa thức mã hóa để đảm bảo tính toàn vẹn và khả năng khôi phục dữ liệu trong quá trình truyền thông.
GIẢI MÃ REED-SOLOMON
Giải mã quyết định cứng và quyết định mềm
Các phương pháp truyền thống trong truyền thông gồm phương pháp giải mã cứng (Hard decision) và phương pháp giải mã mềm (Soft decision), trong đó giải mã mềm sử dụng thông tin trợ giúp để nâng cao hiệu quả giải mã Chuỗi tin sau khi qua kênh truyền và được giải điều chế (demodulate) sẽ đến bộ giải mã để xử lý, với tín hiệu tại ngõ ra của bộ giải điều chế và ngõ vào của bộ giải mã quyết định phương pháp giải mã là “cứng” hay “mềm” Theo cấu trúc hệ thống giải mã Reed-Solomon được mô tả trong tài liệu [4], hệ thống này có thiết kế phù hợp để xử lý các lỗi trong quá trình truyền dữ liệu.
Trong hệ thống truyền thông, quá trình ra quyết định dựa trên tín hiệu nhận được được gọi là quyết định cứng, khi bộ giải điều chế xác định chính xác từng bit là 0 hay 1 Ví dụ, với hệ thống sử dụng tín hiệu đường dây bipolar NRZ có biên độ ± 1V, giá trị nhận được gần 0.8V sẽ được xem là bit 1, còn giá trị thấp hơn ngưỡng sẽ được xác định là bit 0 Điều này giúp đảm bảo tính chính xác trong quá trình truyền và giải điều chế dữ liệu số.
0.03 V thì đều được quyết định là bit 1 Còn nếu giá trị nhận được là -0.7 V hoặc -0.02
Trong phương pháp quyết định cứng, tất cả các giá trị đều được xác định là bit 0, bất kể giá trị điện áp thực tế là 0.8V hay 0.03V Điều này dẫn đến nhược điểm khi bộ giải mã không thể phân biệt chính xác giữa các giá trị này, gây ra tình trạng bộ giải mã vẫn nhận được bit 1 ngay cả khi tín hiệu có xác suất đúng là bit 1 cao hơn nhiều so với các giá trị thấp hơn Do đó, bộ giải mã không có thông tin về độ chính xác của quyết định từ bộ giải điều chế, làm giảm hiệu quả và độ tin cậy của quá trình giải mã tín hiệu.
Hình 3 1 : Cấu trúc hệ thống dùng thuật toán giải mã cứng và mềm.
Bộ giải mã mềm không tự quyết định xem giá trị lấy mẫu nhận được là bit 0 hay bit 1 mà đưa thẳng cho bộ giải mã để có đầy đủ thông tin sau kênh truyền, giúp nâng cao chất lượng giải mã Bộ giải mã mềm tính toán độ tin cậy của từng giá trị trước khi quyết định cuối cùng, làm giảm khả năng lỗi và tăng lợi ích mã tổng so với giải mã cứng trong môi trường có SNR thấp Tuy nhiên, điều này đi kèm với độ phức tạp cao hơn nhiều so với bộ giải mã cứng.
Với khả năng tính toán vượt trội của các chip vi xử lý và chip DSP cùng với dung lượng bộ nhớ lớn hiện nay, sự phức tạp của giải mã mềm không còn là vấn đề đáng lo ngại Xu hướng toàn cầu hiện nay là sử dụng bộ giải mã mềm để nâng cao hiệu quả và linh hoạt trong quá trình mã hóa và giải mã Thậm chí, còn có ý kiến đề xuất áp dụng giải mã mềm cho các loại mã khối và mã tích chập truyền thống, mang lại khả năng tùy biến và tối ưu hóa hệ thống truyền dữ liệu.
Giải mã Reed-Solomon quyết định cứng sử dụng các thuật toán như Berlekamp-Massey và Euclid, giới hạn khả năng sửa lỗi đến t = [d_min / 2], trong đó d_min = n - k + 1 là khoảng cách Hamming tối thiểu của mã Gần đây, đã xuất hiện thuật toán giải mã Reed-Solomon quyết định mềm, điển hình là thuật toán Koetter-Vardy, mở ra nhiều triển vọng mới trong lĩnh vực sửa lỗi mã nguồn mở.
Thuật toán giải mã Reed-Solomon quyết định mềm
Năm 1996, Sudan giới thiệu thuật toán mới cho giải mã Reed-Solomon quyết định cứng, vượt qua giới hạn của các thuật toán dựa trên phân tích tổ hợp đặc trưng (syndrome) Thuật toán này cung cấp danh sách các giải mã ngoài bán kính sửa lỗi của (n-k)/2 cho các tỷ lệ mã RS thấp Vài năm sau, Sudan và Guruswami mở rộng thuật toán để nâng cao khả năng sửa lỗi với các tỷ lệ mã khác nhau Koetter và Vardy đã tổng quát hóa thuật toán này để khai thác lợi thế của thông tin mềm từ kênh truyền, tạo thành thuật toán đại số giải mã Reed-Solomon quyết định mềm Thuật toán gồm hai phần chính là quá trình nội suy và phân tích nhân tử của đa thức hai chiều trên trường hữu hạn, nâng cao hiệu suất sửa lỗi và độ chính xác của mô hình RF.
Thuật toán giải mã quyết định mềm Koetter-Vardy được phát triển dựa trên thuật toán Guruswami-Sudan quyết định cứng, mang lại khả năng xác định lỗi chính xác hơn trong quá trình truyền dữ liệu Theo các nguồn tham khảo [1],[4], thuật toán này gồm các bước chính là gán thông số cho ma trận hệ số nhân, thực hiện quá trình nội suy, phân tích nhân tử và chọn từ mã ngõ ra Việc áp dụng thuật toán giải mã mềm Koetter-Vardy giúp nâng cao hiệu quả và độ chính xác trong ứng dụng mã hóa dữ liệu, phù hợp với các yêu cầu của hệ thống truyền thông hiện đại.
Hình 3-2: Cấu trúc thuật toán giã mã RS quyết định mềm.
Bước gán ma trận hệ số nhân là quá trình sử dụng để tính toán dựa trên thông tin tin cậy từ kênh truyền Các thông tin đáng tin cậy được thể hiện qua ma trận có kích thước 2 q x n, trong đó mỗi phần tử i, j đại diện cho xác suất truyền ký tự là i và xác suất nhận ký tự là j Quá trình này giúp xác định chính xác hơn các xác suất liên quan đến truyền dữ liệu qua kênh, nâng cao độ tin cậy của quá trình truyền thông.
Tập hợp {σ₀, σ₁, , σ₂^q−1} gồm tất cả các khả năng có thể của các ký tự trong GF(2^q), thể hiện các kết hợp giữa nhiễu và đa thức tin f(x) tại các điểm x_j Mỗi phần tử π_{i,j} trong ma trận độ tin cậy có thể được liên kết với một phần tử nội suy (x_j, σ_j), giúp tối ưu hóa quá trình suy luận Tuy nhiên, thuật toán này có độ trễ dài do hệ số trong ma trận độ tin cậy có thể nhân duy trì với một số dương λ để giảm thiểu thời gian xử lý Từ đó, ma trận M được tính dựa trên các yếu tố này, đảm bảo hiệu quả cao trong các phép tính liên quan đến mã nguồn trong GF(2^q).
Bước nội suy: Tính đa thức nội suy 2 biến Q(x,y) theo thông số m i, j từ ma trận
M, tại điểm nội suy (x j ,y j ) với hệ số nhân m i, j thức Q(x,y) nằm trong khoảng (1, k-1)
0 thì đa thức Q(x,y) = 0 Bậc của đa
Bước phân tích nhân tử: Xác định tất cả các nhân tử của đa thức Q(x,y) ở dạng
(y- f(x)) với bậc của f(x) < k Mỗi đa thức f(x) tương ứng với một đa thức tin trong danh sách.
Thuật toán phân tích nhân tử:
Tìm số tự nhiên không âm v, sao cho x v được chia bởi Q(x,y) F1: Q (x,y) = Q(x,y)/ x v
F2: Tìm tất cả phần tử gốc Q(0,y) trong GF (2 q ).
Với mỗi phần tử của Q (0,y) do
Gọi là tái cấu trúc ( Q ^ (x, y), i + 1) }
Trong thuật toán trên, mỗi bit ngõ ra của vector = ([0], [1], , [k – 1]) xác định bậc của đa thức k – 1, giúp xác định bậc tối đa y của Q(x,y) Thuật toán này sẽ tính bậc tối đa t cùng với các vector tương ứng, trong đó mỗi vector đại diện cho đa thức chứa tất cả các đa thức tin trong một tập hợp Các vector này phản ánh các đặc tính của tập hợp đa thức, giúp tối ưu hóa quá trình xử lý và phân loại các đa thức trong hệ thống.
Trong quá trình chọn từ mã ngõ ra, người dùng có thể sử dụng thông tin \(m_{i,j}\) từ ma hệ số nhân hoặc dựa trên khoảng cách Hamming của mã từ thuật toán quyết định cứng để xác định chính xác Việc này giúp tối ưu hoá quá trình lựa chọn mã ngõ ra, nâng cao hiệu quả và độ chính xác của hệ thống Chọn đúng từ mã ngõ ra góp phần cải thiện khả năng phát hiện và sửa lỗi trong truyền dữ liệu, đảm bảo dữ liệu được truyền đi một cách tin cậy hơn.
Thuật toán giải mã Reed Solomon quyết định mềm được xây dựng dựa trên thuật toán Guruswami-Sudan, một trong những phương pháp tối ưu để cải thiện khả năng sửa lỗi của mã Reed Solomon Để hiểu rõ hơn về thuật toán này, chúng ta cần nắm bắt các khái niệm cơ bản liên quan đến phương pháp Guruswami-Sudan và cách nó ứng dụng trong quá trình giải mã lỗi Thuật toán Guruswami-Sudan mở rộng khả năng sửa lỗi của mã Reed Solomon bằng cách tìm các đa thức phù hợp với nhiều điểm dữ liệu hơn, từ đó nâng cao độ chính xác trong quá trình giải mã quyết định mềm.
Thuật toán Guruswami-Sudan
Trước đây, các phương pháp giải mã dựa trên phân tích syndrome đã là tiêu chuẩn trong lĩnh vực này Tuy nhiên, cách tiếp cận mới của Sudan dựa trên giải thích hình học đã mở ra một hướng đi đột phá trong việc giải mã mã Reed-Solomon Phương pháp này không chỉ cung cấp cái nhìn mới về cách xử lý các vấn đề liên quan đến mã hóa, mà còn giới thiệu một phương pháp giải mã mạnh mẽ gọi là danh sách giải mã (list-decoding), giúp nâng cao hiệu quả và khả năng xử lý lỗi trong các hệ thống truyền thông.
Thuật toán danh sách giải mã (list-decoding) cung cấp danh sách tất cả các từ mã cách xa khoảng cách t m của các từ thu được Trong khi đó, các thuật toán như giải mã khoảng cách giới hạn (Bounded Distance - BD) và giải mã khả năng giải mã lớn nhất (Maximum Likelihood - ML) có thể sửa lỗi tối đa với t = (n – k + 1)/2 Thuật toán Guruswami-Sudan (GS) vượt trội khi có thể sửa lỗi mức tối đa t GS = n – lỗi, cho thấy khả năng sửa lỗi tốt hơn so với các thuật toán truyền thống trên các tỷ lệ mã khác nhau.
Hình 3 2 :So sánh các loại giải mã DB, ML, List-decoding.
Thuật toán Guruswami-Sudan gồm hai bước chính để thực hiện giải mã từ mã thu được từ mã hóa RS, trong đó mã truyền qua kênh là (β₁, β₂, , βₙ) và các từ mã thiết lập là (α₁, α₂, , αₙ) Theo nghiên cứu, thuật toán này giúp xác định chính xác các lỗi trong dữ liệu truyền tải thông qua quá trình phân tích và sửa lỗi hiệu quả Áp dụng phương pháp này, hệ thống có khả năng khôi phục dữ liệu ban đầu một cách chính xác, nâng cao độ tin cậy của quá trình truyền thông qua kênh truyền có nhiễu.
- Bước nội suy: Dùng để tạo thành một đa thức giải mã nội suy 2 biến Q(x,y) trong trường F[x,y]:
Q(x,y) bằng 0 ở các hệ số nhân m tại ( i , i ) với i = 1, 2,…n với bậc trọng số nằm trong giới hạn (1, k-1).
- Bước phân tích nhân tử: là tìm tất cả các nhân tử của Q(x,y) có dạng (y - f k (x)) và đưa vào danh sách từ mã ngõ ra. £ = {f 1 (x), f 2 (x), …, f L (x)}
Thuật toán Koetter-Vardy được sử dụng để nâng cao quá trình nội suy trong thuật toán GS, giúp cải thiện khả năng xử lý lỗi và tăng độ chính xác của mã sửa lỗi Trong khi đó, thuật toán Roth-Ruckenstein đóng vai trò quan trọng trong việc phân tích nhân tử của thuật toán GS, hỗ trợ xác định các yếu tố chính của mã một cách hiệu quả Sự kết hợp giữa hai thuật toán này tối ưu hóa quá trình mã hóa và giải mã, nâng cao hiệu suất và độ tin cậy của hệ thống truyền thông dựa trên mã sửa lỗi Reed-Solomon.
Thuật toán Koetter-Vardy
Thuật toán quyết giải mã RS định mềm Koetter-Vardy là thuật toán mở rộng của thuật toán Guruswami Sudan cho mã Reed Solomon.
Theo [4], phía thu nhận sẽ nhận được thông tin mềm từ kênh truyền của ma trận độ tin cậy có kích thước q x n Mỗi phần tử (x_i, y_j) trong ma trận sẽ phản ánh xác suất phần tử y_j truyền thành công trong khoảng thời gian đáp ứng của phần tử x_i Điều này giúp xác định độ tin cậy và hiệu quả của quá trình truyền thông tin trong hệ thống.
Do đó ma trận sẽ hiển thị xác suất của tất cả các điểm Các bước của thuật toán Koetter-Vardy như sau:
1 Bước quyết định mềm cuối cùng (soft decision front end): Sử dụng thông tin độ tin cậy mềm để xác định được số nguyên dương cho mỗi điểm Như vậy, các trọng số nguyên dương là tỉ lệ với xác suất tại mỗi điểm Từ đó tạo thành ma trận hệ số nhân M = [ ].
2 Bước nội suy: Tìm đa thức nội suy 2 biến Q(x,y) nhỏ nhất mà nó thỏa tất cả các điểm trong ma trận hệ số nhân Với bậc của các biến x, y nằm trong khoảng (1, k-1).
3 Bước phân tích nhân tử: Phân tích đa thức nội suy Q(x,y) thành các nhân tử có dạng (y - f k (x)), với bậc của f k (x) < k Ngõ ra của thuật toán là danh sách các từ mã f(x) là nhân tử của Sau đó dùng thông tin mềm từ ma trận M sẽ chọn lựa từ
Hình 3 3:Sơ đồ thuật toán Koetter-Vardy
Trong các thành phần chính của thuật toán, bước nội suy đa thức 2 biến Q(x,y) đóng vai trò quan trọng và tiêu tốn nhiều công sức tính toán nhất Phần này sẽ được ứng dụng trong đề tài nghiên cứu Theo nguồn [5, tr 324], bước phân tích thành nhân tử cho thấy thuật toán Roth-Ruckenstein hoạt động hiệu quả hơn so với thuật toán Koetter-Vardy trong quá trình xử lý.
3.4.1 Bước nội suy đa thức Q(x,y) của thuật toán Koetter-Vardy:
Theo [3], thuật toán thực hiện như sau:
- Tính Cost của ma trận M là: C M = 1 m
- Tính số đa thức nội suy Q i (x,y), i = 0, L,
- Tạo giá trị ban đầu cho các đa thức Q l (x,y), Với 0 l L
Theo [2], cho c = 0, tại những điểm m i, j 0 có tọa độ ( i , j ) của ma trận M, ta tính nội suy và cập nhật cho đa thức Q l (x,y) Các hệ số cập nhật cho đa thức
Q i (x,y) tại bước thứ (c+1) tính như sau:
Trong bài viết, công thức tính đạo hàm của Hasse được thể hiện qua D_u,v Đặt J_1 là tập hợp các phần tử l khác 0, và tất cả các phần tử l không thuộc J_1 thì đa thức cập nhật sẽ không có sự thay đổi Điều này giúp tối ưu hóa quá trình tính toán đạo hàm của Hasse hiệu quả hơn.
Q c1,l (x,y) = Q c,l (x,y) Cho l J 1 chúng ta tính đa thức có bậc nhỏ nhất: l min = arg min { Q c,l (x,y): l J 1 }
Q min (x,y) = Q c,l (x,y) Nếu l l min thì đa thức cập nhật được tính như sau:
Q c1,l (x,y) = minQ c,l (x,y) + c, l Q min (x,y) Nếu l = l min thì đa thức cập nhật được tính như sau:
Kết thúc quá trình nội suy tại những điểm m i, j nhất.
0, sẽ chọn đa thức có bậc nhỏ
VD 3.1: Theo VD 7.20 của [5,p346] về thuật toán Koetter-Vardy như sau:
Cho các cặp điểm (1, 3 ), ( 1 , 4 ), ( 2 , 5 ), ( 3 , 7 ) và ( 4 , 8 ) hoạt động trên trường GF(2 4 ) với 1 + 1 +
Trong bài viết này, chúng tôi giới thiệu cách sử dụng thuật toán Koetter-Vardy để tìm đa thức nội suy Q(x,y) với hệ số nhân m=1 và số đa thức nội suy L=4 Quá trình bắt đầu bằng việc khởi tạo giá trị ban đầu cho các đa thức nội suy, đảm bảo quá trình nội suy diễn ra chính xác và hiệu quả Thuật toán Koetter-Vardy là một phương pháp mạnh mẽ trong lĩnh vực mã hóa để tối ưu hóa quá trình nội suy đa thức trong các hệ thống truyền thông Việc thiết lập các đa thức nội suy ban đầu đóng vai trò quan trọng trong việc nâng cao hiệu quả xử lý dữ liệu và giảm thiểu lỗi trong quá trình truyền tải thông tin.
Các hệ số cập nhật cho đa thức: Δ = g0(1, 3 ) = 1, Δ
Các hệ số cập nhật cho đa thức: Δ = 4 , Δ
Các hệ số cập nhật cho đa thức: Δ = 13 , Δ
Các hệ số cập nhật cho đa thức:
Các hệ số cập nhật cho đa thức:
Cuối cùng ta có đa thức nội suy ngõ ra 2 biến là:
Thuật toán Roth-Ruckenstein
Thuật toán Roth-Ruckenstein là một phương pháp nhanh để phân tích nhân tử từ đa thức nội suy Q(x,y) với bậc của f(x) < k Thuật toán sẽ trình bày dựa theo [7].
Chúng ta bắt đầu với đa thức f(x): f(x) = f 0 + f 1 x + f 2 x 2 +…
Chúng ta gọi f(x) là y-root của Q(x,y) nếu thỏa điều kiện Q(x,f(x)) = 0.
Thay x bằng 0 ta có: f(0) = f 0 và Q(0, f 0 ) = 0 Có nghĩa f 0 là y-root của Q(x,y) Gọi là đa thức chuẩn hóa của Q(x,y) thì ta có:
Với m là số tự nhiên sao cho x m là nhân tử của Q(x,y), ký hiệu là x m |Q(x,y).
Hệ số đầu tiên f 0 cũng là y-root của :
(y - f ) | Q(0,y) (y - f ) | x m (y - f ) | Để tìm f 1 thì chúng ta thực hiện tiếp như sau Ta có :
Thay y bằng xy + f 0 thì ta sẽ được:
Trong bài viết này, tác giả giới thiệu phương pháp tìm đa thức \(f(x)\) thông qua quá trình lặp lại xác định hệ số \(f_i\), bắt đầu từ \(f_0\) Để xác định \(f_1\), ta thực hiện tương tự như quá trình tìm \(f_0\) bằng cách xem \(f_1\) là nghiệm của phương trình \(Q’(0,y)\) Quá trình này lặp đi lặp lại nhằm tìm được đa thức \(f(x)\) phù hợp với yêu cầu đề bài, đảm bảo tính chính xác và hiệu quả trong việc giải quyết bài toán.
Quá trình tìm kiếm theo hình cây, nên kết quả tìm kiếm sẽ có nhiều hàm f(x).
Các đa thức f(x) sẽ được đưa vào danh sách từ mã ngõ ra trong quá trình giải mã Reed Solomon Chọn đa thức f(x) đi qua nhiều điểm m_i của ma trận M nhất sẽ là mã ngõ ra cuối cùng, giúp xác định chính xác dữ liệu mất hoặc sai Thuật toán giải mã Reed Solomon dựa trên việc tìm đa thức phù hợp nhất, đảm bảo độ chính xác cao trong truyền nhận dữ liệu.
VD 3.2: Theo VD 7.24 của [5,p354] về thuật toán phân tích nhân tử của Roth-
Trên trường GF(5) với độ sâu tìm kiếm là D = 2.
Có gốc là: {1,4}, là nghiệm của đa thức Q(0,y)
Chọn gốc là 1, thì đa thức tại nút 2 là:
Chọn gốc là 2, thì đa thức tại nút 3 là:
Do đó danh sách từ mã là gốc của nút 1 và 2 là {1,2}, đa thức ngõ ra p(x) = 1 + 2x.
Trở lại nút 2, gốc được lựa chọn là 3 thì đa thức nút 4 là:
Có gốc là {1}, nên đa thức tại nút 5 là:
- Tại nút 5, đa thức Q(x,0) 0, mà bậc của cây tìm kiếm là 3 lớn hơn D=2 Do đó ngõ ra nhánh này không có đa thức p(x).
Trở lại nút 1, gốc lựa chọn là 4 và nút 6 có đa thức là:
Có gốc là {3}, do đó nút 7 có đa thức là :
Có gốc là {2}, và nút 8 có đa thức là:
Do đó danh sách gốc được chọn tại nút này là {4,3,2}, tạo thành đa thức ngõ ra p(x)
Danh sách đa thức tạo thành của quá trình phân tích nhân tử là:
QUÁ TRÌNH THIẾT KẾ VÀ HIỆN THỰC
Khái quát quá trình thiết kế
Hệ thống truyền dữ liệu sử dụng khối mã hóa Reed-Solomon để đảm bảo độ chính xác cao trong điều kiện kênh có nhiễu Dữ liệu được mã hóa bằng bộ mã Reed-Solomon trước khi truyền qua kênh nhiễu, giúp sửa lỗi hiệu quả trong quá trình giải mã Khối trạm giải mã Reed-Solomon decoder sẽ xử lý dữ liệu thu được, sửa lỗi và phục hồi dữ liệu ban đầu gần như chính xác nhất Quá trình này đảm bảo rằng dữ liệu sau khi giải mã sẽ gần như không có lỗi so với tín hiệu gốc ban đầu, nâng cao độ tin cậy của hệ thống truyền thông.
Trong đề tài này, sẽ giới thiệu quá trình thiết kế mạch giải mã RS(7,5) trên trường GF(2^3) Quá trình bắt đầu từ tin nhắn ngõ vào f = (1,7,0,7,6), tương ứng với hàm số f(x) = α₀ + α₅x + α₇x² + α₅x³ + α₄x⁴ Hàm số f(x) sau đó được mã hóa RS thành từ mã C = (α₅, α₂, α₀, α₄, α₃, α₂, α₁), đảm bảo tính toàn vẹn và khả năng phát hiện lỗi của hệ thống.
Sau khi mã được truyền qua kênh truyền có nhiễu, sẽ tạo thành ma trận độ tin cậy có kích thước q x n, phản ánh mức độ tin cậy của dữ liệu Ma trận này sau đó được chuyển đổi thành ma trận hệ số nhân M để phục vụ cho các phép xử lý tiếp theo trong hệ thống truyền thông.
Hình 4 1 : Sơ đồ khối quá trình mã hóa và giải mã Reed-Solomon
Trong quá trình nội suy, ta chọn hệ số nhân là λ = 2.99, dẫn đến giá trị lớn nhất của các m_{i,j} bằng 2 Sau đó, sử dụng thuật toán Koetter Vardy để nội suy hàm số hai biến Q(x,y) dựa trên ma trận M Tiếp theo, thuật toán Roth-Ruckenstein được áp dụng để phân tích hàm Q(x,y) thành nhân tử dạng y – f(x) Cuối cùng, từ nhân tử này, ta có thể xác định hàm số f(x) ban đầu, qua đó hoàn tất quá trình phân tích và khôi phục hàm số cần tìm.
Hình 4 2 : Sơ đồ khối quá trình mã hóa và giải mã RS(7,5)
Khối mã hóa Reed-Solomon
Quá trình mã hóa RS(7,5) trên trường GF( 2 3 ) như sau: giả sử tín hiệu vào là m
= (1, 7, 0, 7, 6) thì sẽ tạo thành đa thức tin f(x) = 0 + 5 x + 7 x 2 + 5 x 3 + 4 x 4 kết hợp với tập hợp thiết lập cho trước là {1, , 2 , 3 , 4 , 5 , 6 } thì từ mã C sẽ tạo thành như sau: f( 1) = 0 + 5 + 5 + 4 = 0 + 4 = 5 f( ) = 0 + 5 + 5 3 + 4 4 = 0 + 6 = 1 + 2 + 1 = 2 (vì 7
+1) = 0 f( 3 ) = 0 + 5 3 + 5 9 + 4 12 = 0 + + 0 + 2 = 4 f( 4 ) = 0 + 5 4 + 5 12 + 4 16 = 0 + 2 + 3 + 6 = 3 f( 5 ) = 0 + 5 5 + 5 15 + 4 20 = 0 + 3 + 6 + 3 = 2 f( 6 ) = 0 + 5 6 + 5 18 + 4 24 = 0 + 4 + 2 + 0 Như vậy từ mã C là: C = ( 5 , 2 , 0 , 4 , 3 , 2 , ).
Dạng số tự nhiên là: C = (7, 4, 1, 6, 3, 4, 2).
Kết quả mô phỏng bằng C++ như sau:
Giải mã Reed-Solomon quyết định mềm
4.3.1 Sơ đồ khối bộ giải mã Reed Solomon quyết định mềm.
Các tín hiệu ngõ vào và ngõ ra:
Hình 4 3 :Sơ đồ tổng quát khối giải mã Reed Solomon quyết định mềm
Hình 4 4 : Sơ đồ chân khối giải mã Reed
The core operates with a clock input (i_clk) and a reset signal (i_rst_n) to ensure proper initialization It includes an enable input (i_ce) that activates its functionality, along with a load signal (i_load) for synchronizing data input Data is received through the i_data input, while an error signal (i_error) indicates any discrepancies The core outputs valid data via o_data_en (data valid signal) and provides the output data through o_data.
4.3.2 Bước gán ma trận hệ số nhân
Phía thu nhận dữ liệu từ mã C = {f(x₁), f(x₂), , f(xₙ)} và sai số trên kênh truyền e(r), sau đó gán vào ma trận M dựa trên xác suất thu nhận tại các vị trí khác nhau Trong đó, các vị trí có sai số được gán với xác suất 1, còn các vị trí khác là 2, giúp xác định chính xác hơn quá trình xử lý dữ liệu Ví dụ, mã C = {α₅, α₂, α₀, α₄, α₃, α₂, α₁} và sai số e(r) = {α₃, 0, 0, 0, 0, α₄, 0} được chuyển đổi sang dạng số tự nhiên là C = (7, 4, 1, 6, 3, 4, 2) và e(r) = (3, 0, 0, 0, 0, 6, 0), góp phần chuẩn hóa quá trình xử lý dữ liệu và nâng cao độ chính xác trong truyền thông.
Từ C và e(r) tạo thành ma trận M (p x q) như hình dưới, với giá trị:
Cột thứ 1: m(0,4) = 1 là vị trí thứ 0 của e(r) là 3 , m(0,6) = 1 do gán vị trí thứ 1 của
Cột thứ 2: m(1,3) = 2 do gán vị trí thứ 1 của C là
2 Cột thứ 3: m(2,1) = 2 do gán vị trí thứ 2 của C là
0 Cột thứ 4: m(3,5) = 2 do gán vị trí thứ 3 của C là 4 Cột thứ 5: m(4,4) = 2 do gán vị trí thứ 4 của
Cột thứ 6: m(5,3) = 1 do gán vị trí thứ 5 của C là của e(r) là 4
2 , m(5,3) = 1 do gán vị trí thứ 5
Cột thứ 7: m(6,2) = 2 do gán vị trí thứ 6 của C là 1
Kết quả là ma trận M như sau:
4.3.2.1 Hiện thực bằng ngôn ngữ VHDL
Lưu đồ máy trạng thái quá trình gán ma trận hệ số nhân:
Hình 4 5 : Lưu đồ máy trạng thái quá trình gán ma trận hệ số nhân.
Bước gán ma trận hệ số nhân gồm có 2 trạng thái, là trạng thái:
RS_idle_st : Trạng thái chờ.
RS_assign_M_st : Trạng thái gán thông số cho ma trận M.
Lúc đầu mạch giải mã RS ở trạng thái chờ RS_idle_st, nếu tín hiệu i_rst_n =
Khi ‘1’ và i_ce bằng ‘1’, lõi bắt đầu ghi dữ liệu tại ngõ vào i_data và ghi sai số i_error vào thanh ghi dữ liệu reg_c cùng thanh ghi sai số reg_e theo tín hiệu đồng bộ i_load Sau khi quá trình ghi dữ liệu vào các thanh ghi hoàn tất, tín hiệu RS_assign_en sẽ trở về ‘1’, kích hoạt máy trạng thái chuyển từ trạng thái chờ RS_idle_st sang trạng thái RS_assign_M_st để gán dữ liệu từ reg_c và reg_e vào ma trận M Trong trường hợp tín hiệu i_rst_n bằng ‘0’, bất kể trạng thái của lõi, hệ thống sẽ chuyển về trạng thái chờ để đảm bảo an toàn và đúng quy trình hoạt động.
Kết quả mô phỏng ngôn ngữ VHDL bằng Modelsim như sau:
Hình 4 6 : Kết quả mô phỏng quá trình gán ma trận hệ số nhân bằng ngôn ngữ VHDL.
Hình 4-6 trình bày kết quả mô phỏng đồng bộ của ma trận ma trận_m dựa trên dữ liệu đầu vào i_data = [7,4,1,6,3,4,2] và sai số i_error = [3,0,0,0,6,0] Kết quả cho thấy ma trận này dạng sóng phù hợp hoàn toàn với ma trận M đã được tính toán trước đó, xác nhận độ chính xác của phương pháp mô phỏng.
4.3.2 Bước nội suy dùng thuật toán Koetter Vardy
The interpolation process from matrix M is performed using the Koetter-Vardy algorithm, a significant advancement in decoding Reed-Solomon codes This algorithm enables the transition from hard decision to soft decision decoding, greatly enhancing error correction capabilities and overall decoding performance.
Koetter-Vardy cho quá trình nội suy RS(7,5) thực hiện bằng ngôn ngữ C++:
4.3.2.1 Hiện thực thuật toán nội suy bằng ngôn ngữ C++
Trước tiên chúng ta tính số đa thức ngõ ra của quá trình nội suy:
Tính giá trị Cost của ma trận M
L = [ Ω /(k-1)] = [11/4] = 2 Thuật toán bắt đầu với L+1 đa thức 2 biến Q(x,y) như sau:
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
Hình 4 7 : Bắt đầu quá trình nội suy RS(7,5) bằng ngôn ngữ C++
Hình 4-7 mô tả các bước quá trình nội suy tại các điểm khác 0 của ma trận M bằng ngôn ngữ C++.
Thực hiện tại điểm M(2,0) = 2 (Tính theo số mũ của ), với u = 0, v = 0.
Thực hiện tại điểm M(2,0) = 2 (Tính theo số mũ của ), với u = 0, v = 1.
0 y 2 Kết quả cuối cùng là đa thức nội suy:
Hình 4 8: Kết quả quá trình nội suy RS(7,5) bằng ngôn ngữ C++
Hình 4-8 cho thấy đa thức Q(x,y) có bậc nhỏ nhất ở ngõ ra của quá trình nội suy.
Biểu diễn hệ số trong trường Galois GF(2 3 ) qua số tự nhiên ta có đa thức nội suy như sau:
4.3.2.2 Hiện thực bằng ngôn ngữ VHDL
Lưu đồ máy trạng thái quá trình nội suy như sau:
Hình 4 9: Máy trạng thái quá trình nội suy dùng thuật toán Koetter-Vardy.
Từ Hình 4-9 cho ta thấy các trạng thái và điều kiện chuyển trạng thái trong quá trình nội suy dùng thuật toán Koetter-Vardy.
Quá trình nội suy gồm có những trạng thái như sau:
Trạng thái Mô tả trạng thái
RS_omega_st Trạng thái này dùng để tính omega, từ đó tính được số L các đa thức nội suy.
RS_init_st Tạo giá trị khởi đầu cho các đa thức nội suy
RS_detecting_st Trạng thái này nhận biết những giá trị khác 0 trong ma trận M , để từ đó tính nội suy tại những điểm này.
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
Trạng thái RS_QlowestL_st liên quan đến việc cập nhật đa thức nội suy có bậc nhỏ nhất, giúp tối ưu hóa quá trình nội suy Trong khi đó, trạng thái RS_selectQ_st tập trung vào việc lựa chọn đa thức nội suy phù hợp cho đầu ra, đảm bảo chính xác và hiệu quả trong quá trình xử lý dữ liệu.
Kết quả mô phỏng ngôn ngữ VHDL bằng Modelsim như sau:
Hình 4 10 : Kết quả mô phỏng ngôn ngữ VHDL bằng Modelsim như sau:
Hình 4-11 trình bày kết quả ngõ ra của quá trình nội suy, trong đó ma trận qm chứa các hệ số của đa thức nội suy xuất ra Q(x,y) Ma trận này thể hiện rõ mối quan hệ giữa các điểm dữ liệu, với hàng ngang tương ứng với bậc của biến x và hàng dọc thể hiện bậc của biến y trong đa thức nội suy Qua quá trình mô phỏng bằng C++, ta xác định được đa thức nội suy Q(x,y) phù hợp với tập dữ liệu đã cho.
Hệ số trong ma trận QM trùng khớp với đa thức Q(x,y), thể hiện sự nhất quán trong quá trình nội suy Quá trình nội suy được thực hiện bằng ngôn ngữ lập trình C++ và VHDL giống nhau, như đã minh họa qua ví dụ giải mã RS(7,5) ở phần trước Tiếp theo, quá trình phân tích đa thức nội suy Q(x,y) thành nhân tử giúp tối ưu hóa và dễ dàng xử lý trong các ứng dụng mã hóa và giải mã.