Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
0,98 MB
Nội dung
Thuật giải mã Viterbi MỤC LỤC Lời nói đầu Trong lĩnh vực truyền thông, các quá trình mã hóa và giải mã được sử dụng nhiều với các chức năng khác nhau nhằm đảm bảo tính bảo mật, độ tin cậy cao khi truyền tin. Do đó, việc xây dựng các phương pháp mã hóa, giải mã, việc chọn lựa các tham số cho bộ tạo mã (encoder) và các bộ giải mã (decoder) là rất quan trọng trong truyền tin an toàn. Cho đến nay, thông thường các phương pháp mã hóa và giải mã chỉ được phân tích trên cơ sở phương pháp xử lý tín hiệu truyền thống, biểu diễn theo thời gian, tần số hay không gian. Tuy vậy, dù được phân tích trên cơ sở nào, thì việc thiết lập các bộ tạo mã hay giải mã đều được thực hiện dựa vào các mô hình khối ở bước ban đầu. Hay nói cách khác, việc thiết lập các bộ tạo mã hay giải mã chính là việc xây dựng một mô hình hệ thống với đầu vào là tin tức, đầu ra là các từ mã và các biến trạng thái có trong hệ thống. Vì vậy, việc nhìn nhận mã hóa và giải mã trên quan điểm lý thuyết hệ thống là có cơ sở thực hiện. Đặc biệt, việc nghiên cứu mã sửa sai trên quan điểm lý thuyết hệ thống có tầm quan trọng đối với việc tìm các mã có khả năng sửa sai tốt, cần ít bit dư thừa, hay tìm ra các mã mạnh kết hợp với khả năng quan sát, điều khiển đồng thời để tối ưu hóa quá trình mã hóa và giải mã. Trong khuôn khổ của môn học, mã chập được sử dụng để phân tích và làm rõ thêm về việc biểu diễn mã trong không gian trạng thái. Ngoài ra, project còn biểu diễn một bộ tạo mã và giải mã chập sử dụng phần mềm Matlab2010 nhằm có cái nhìn rõ hơn về quá trình tạo mã và giải mã. Do hạn chế về thời gian tìm hiểu nên để tài còn nhiều thiếu sót và kính mong cô chỉ bảo để đề tại được bổ sung trong thời gian tới. ĐIỆN TỬ - VIỄN THÔNG 1 Thuật giải mã Viterbi CHƯƠNG I: THUẬT GIẢI MÃ VITERBI 1.1 Khái niệm mã chập Mã chập là một kỹ thuật mã hóa sửa sai. Mã chập thuộc họ mã lưới (mã hóa theo Trellis) và được xây dựng dựa trên một đa thức sinh hoặc một sơ đồ chuyển trạng thái (trellis mã) đặc trưng. Quá trình giải mã của mã chập phải dựa vào trellis mã thông qua các giải thuật khác nhau, trong đó nổi tiếng nhất là giải thuật Viterbi. Tại sao gọi là mã chập vì cấu trúc mã hóa có thể biểu diễn dưới dạng phép tính chập giữa đa thức sinh mã và chuỗi tín hiệu được mã hóa. Mã hóa chập và thuật toán giải mã Viterbi được sử dụng trong khoảng hơn một tỉ điện thoại, có thể là lớn nhất trong các loại thuật toán được ứng dụng. Tuy nhiên, hiện tại thì thuật toán xử lý viterbi được ứng dụng nhiều nhất trong các thiết bị âm thanh và hình ảnh kỹ thuật số. Ngày nay, chúng còn được sử dụng trong các thiết bị bluetooth. Mục đích của mã hóa kênh truyền là nhằm tăng dung lượng kênh truyền, bằng cách cộng thêm vào tín hiệu những dữ liệu dư thừa được thiết kế một cách cẩn thận trước khi truyền lên kênh truyền. Mã hóa chập và mã hóa khối là 2 dạng chính của mã hóa kênh truyền. Mã hóa chập thì dựa trên dữ liệu nối tiếp, 2 hoặc một vài bit được truyền một lúc, còn mã hóa khối thì dựa trên một khối dữ liệu lớn tương quan (đặc trưng là khoảng vài trăm bytes). Ví dụ, mã Redsolomon là một mã hóa khối. Sự khác nhau cơ bản giữa mã hóa khối và mã hóa chập là mã hóa khối là mã hóa không nhớ. Cho một chuỗi dữ liệu K bit, thì ngõ ra của bộ mã hóa khối là một khối dữ liệu n bit duy nhất. Mã hóa chập không kết nối các khối bit riêng vào trong ĐIỆN TỬ - VIỄN THÔNG 2 Thuật giải mã Viterbi một khối từ mã, thay vào đó nó sẽ chấp nhận một chuỗi bit liên tục và taọ thành một chuỗi ngõ ra. Hiệu quả hay tốc độ dữ liệu của mã hóa chập được đánh giá bằng tỉ lệ của số bit ngõ vào k, và số bit ngõ ra n. Trong mã hóa chập là có một vài bộ nhớ dùng để ghi nhớ dòng bit vào. Thông tin này được sử dụng để mã hóa các bit tiếp theo. 1.2 Phân tích mã hóa dùng mã chập Mã chập là mã tuyến tính có ma trận sinh có cấu trúc sao cho phép mã hóa có thể xem như một phép lọc (hoặc lấy tổng chập). Mã chập được sử dụng rộng rãi trong thực tế. Bởi mã hóa được xem như một tập hợp các bộ lọc số tuyến tính với dãy mã là các đầu ra của bộ lọc được ghép xen kẽ. Các mã chập là các mã đầu tiên được xây dựng các thuật toán giải mã quyết định mềm hiệu quả. Mã khối từ các khối k dấu (hay ký hiệu) tạo ra các khối n dấu. Với các mã chập (thường được xem là các mã dòng), bộ mã hóa hoạt động trên dòng liên tục các bit vào không được phân thành các khối tin rời rạc. Tuy nhiên tốc độ mã ∈ F X ] n k được hiểu là cứ có k ngõ vào ở mỗi bước thời gian sẽ tạo ra n ngõ ra. [ n Các phép tính số học sử dụng trong hình thức mã hóa này có thể được thực hiện trên một trường tùy ý nhưng thông thường vẫn là trên GF(2). Ta biểu thị các dãy và các hàm truyền đạt như các chuỗi lũy thừa của biến x (đôi khi còn dùng ký hiệu D thay cho x). Dãy {…,m -2 , m -1 , m 0 , m 1 , m 2 , …} (với các phần tử m i thuộc trường F) được xem như một chuỗi Laurent: ∞ m( X ) = ∑ m e x e e=−∞ Tập tất cả các chuỗi Laurent trên F là một trường, ta ký hiệu trường này là F X . Như vậy m( X ) ∈ F X [ ] [ ] Đối với dòng nhiều bit vào ta dùng ký hiệu m (1) (x) biểu thị dòng đầu vào đầu tiên, m (2) (x) biểu thị dòng đầu vào thứ hai. Tập các dòng vào xem như một vectơ: m(x) = [m (1) (x) m (2) (x)] ∈ F X ] [ Bộ mã hóa cho mã chập thường được coi là một tập các bộ lọc số. Hình 2.1 chỉ ra một ví dụ về một bộ mã hóa ĐIỆN TỬ - VIỄN THÔNG 3 Thuật giải mã Viterbi Hình 1.1: Bộ mã hóa cho mã chập tốc độ R = 1/2 (các ô D biểu thị các ô nhớ một bít – các trigger D) Dòng vào m k đi qua hai bộ lọc dùng chung các phần tử nhớ tạo ra hai dòng ra. C (1) k = m k + m k-1 + m k-2 và C (2) k = m k + m k-2 . Hai dòng ra này được đưa ra xen kẽ để tạo ra dòng được mã hóa C k . Như vậy cứ mỗi bít vào lại có hai bít mã hóa được đưa ra, kết quả là ta có một mã có tố độ R = 1/2. Thông thường ta coi trạng thái ban đầu của các phần tử nhớ là 0. Như vậy, với dòng vào m = {1, 1, 0, 0, 1, 0, 1} các đầu ra sẽ là: C (1) = {1, 0, 0, 1, 1, 1, 0, 1, 1} và C (2) = {1, 1, 1, 1, 1, 0, 0, 0, 1} Dòng ra: C = {11, 01, 01, 11, 11, 10, 00, 10, 11} Ở đây dấu phẩy phân cách các cặp bít ra ứng với mỗi bít vào. Ta có thể biểu thị hàm truyền từ đầu vào m(x) từ đầu ra C (1) (x) như sau: g 1 (x) = 1 + x +x 2 . Tương tự ta có g 2 (x)= 1 + x 2 . Dòng vào m = {1, 1, 0, 0, 1, 0, 1} có thể biểu thị như sau: m (x) = 1+ x+ x 4 + x 6 Các đầu ra sẽ là: C (1)( x) = m(x)g (x) = (1+ x +x 4 + x 6 )(1+ x + x 2 ) = 1 +x 1 C (2)( x) = m(x)g (x) = (1+ x +x 4 + x 6 )(1+ x 2 ) = 1+x + x 2 Với mỗi mã chập tốc độ được gọi là ma trận truyền). Với mã tốc độ G a (x) = [1+ x+ x 2 ĐIỆN TỬ - VIỄN THÔNG 4 Thuật giải mã Viterbi Ma trận truyền này không chỉ có dạng các đa thức, ta có thể thấy thông qua ví dụ sau: Ví dụ 1: Xét ma trận truyền của mã chập sau: Vì có “1” ở cột đầu tiên nên dòng vào sẽ xuất hiện trực tiếp ở đầu ra đan xen, bởi vậy đây là một mã chập hệ thống. Bộ mã hóa cho mã này được mô tả ở hình 2.2: Hình 1.2: Bộ mã hóa hệ thống với R = 1/2 Với dòng vào: m (x) = 1+ x + x 2 + x 3 + x 4 + x 8 các đầu ra C (1) dạng: C (1) k = m(x) =1 + x +x 2 + x 3 + x 4 + x 8 C (2) (x) = (1 + x + x 2 + x 3 + x 4 + x 8 )(1+ + x 2 k 1 Một bộ mã hóa chỉ có các hàng đa thức trong ma trận truyền được gọi là bộ mã hóa có đáp ứng xung hữu hạn. Một bộ mã hóa có các hàm hữu tỷ trong ma trận truyền gọi là bộ mã hóa có đáp ứng xung vô hạn. Với mã có tốc độ k/n với k > 1 dãy tin tức đầu vào (ta coi như được tách ra từ một dãy tin tức thành k dòng), ta có: m(x) = [m (1) ( x), m (2) (x),…,m (k) (x)] và Dãy ra được biểu thị như sau: ĐIỆN TỬ - VIỄN THÔNG 5 Thuật giải mã Viterbi C(X) = [C (1) (x), C (2) (x),…,C (n) (x)] = m(x)G(x) Ma trận truyền G(x) được gọi là hệ thống nếu có thể xác định được một ma trận đơn vị trong các phần tử của G(x) (chẳng hạn nếu bằng các phép hoán vị hàng và/hoặc cột của G(x) có thể thu được một ma trận đơn vị). Ví dụ 2: Cho mã hệ thống tốc độ R = 2 có ma trận truyền sau: 3 Sơ đồ thể hiện của mã này cho trên hình 2.3: ĐIỆN TỬ - VIỄN THÔNG 6 Hình 1.3: Bộ mã hóa hệ thống Một sơ đồ mã hóa khác có hiệu quả hơn được mô tả ở hình 2.4: Hình 1.4: Sơ đồ bộ mã hóa hệ thống R = 2 3 có phần cứng đơn giản Giả sử: m(x) = [1+ x 2 + x 4 + x 5 + x 7 +…,x 2 + x 5 + x 6 + x 7 + …] Khi đó đầu ra C(x) có dạng: C(x) = [1+ x 2 + x 4 + x 5 + x 7 + …, x 2 + x 5 + x 6 + x 7 + …, x+ x 3 + x 5 + …] Khi đưa ra xen kẽ dòng ra sẽ là: {100, 001, 110, 001, 100, 111, 010, 110} Từ các ví dụ trên ta có định nghĩa sau cho mã chập Định nghĩa: Mã chập tốc độ R = k/n trên trường các chuỗi Laurent hữu tỷ F X trường F là ảnh của một ánh xạ tuyến tính đơn ánh của các [ ] chuỗi Laurent k chiều m (x) ∈ F X k vào các chuỗi Laurent C(x)∈ F X n [ ] [ ] 1.3 Cấu trúc mã chập Mã chập được tạo ra bằng cách cho chuỗi thông tin truyền qua hệ thống các thanh ghi dịch tuyến tính có số trạng thái hữu hạn. Cho số lượng thanh ghi dịch là m (cũng ký hiệu là N), bộ mã có k bit ngõ vào và đầu ra bộ mã chập có n bit ngõ ra (n hàm đại số tuyến tính hoặc n ngõ ra cộng modulo). Các thông số k,n có phạm vi giới hạn trong khoảng giá trị từ 1 đến 8, thông số m trong khoảng từ 2 đến 10, và tốc độ mã R từ 1/8 đến 7/8 ngoại trừ các bộ mã hóa được sử dụng trong viễn thông vũ trụ có thể có tốc độ 1/100 hoặc thậm chí cao hơn. Trong một số tài liệu, khi nói đến mã chập, người ta còn đặc trưng cho bộ mã hóa chập bằng chiều dài ràng buộc K và tốc độ mã R. Tốc độ mã, R=k/n, được hiểu là tỉ số giữa số bit ngõ vào và số ký hiệu ngõ ra của bộ mã hóa. Thông số chiều dài ràng buộc, K, cho biết “chiều dài” của bộ mã hóa mã chập, ví dụ, có bao nhiêu trạng thái k-bit có thể đưa đến mạch logic tổ hợp để tạo ra ký hiệu ngõ ra. Trong nội dung đề tài này, chúng tôi sử dụng bộ mã với bộ dữ liệu bao gồm chiều dài ràng buộc K và tốc độ bộ mã R như đã đề cập ở trên. Khi thực hiện với mã chập trong các ứng dụng thông thường, người ta thường chỉ chọn số thanh ghi giới hạn, mỗi thanh ghi chỉ có 1 ô nhớ để đơn giản cho việc thiết kế mà vẫn đảm bảo tính năng mã hóa tốt. Tương ứng với mỗi tốc độ mã hóa (các bộ mã đơn giản), người ta cũng đã thử nghiệm và chọn ra chỉ một số đa thức sinh cho hiệu quả mã hóa cao để sử dụng. Giả thiết, bộ mã chập làm việc với các chữ số nhị phân, thì tại mỗi lần dịch sẽ có k bit thông tin đầu vào được dịch vào thanh ghi dịch thứ nhất và tương ứng có k bit thông tin trong thanh ghi dịch cuối cùng được đẩy ra ngoài mà không tham gia vào quá trình tạo chuỗi bit đầu ra. Đầu ra nhận được chuỗi n bit mã từ n bộ cộng môđun-2 (xem hình 1.5). Như vậy, giá trị chuỗi đầu ra kênh không chỉ phụ thuộc vào k bit thông tin đầu vào hiện tại mà còn phụ thuộc vào (m-1)k bit trước đó, và được gọi là mã chập (n,k,m). Hình 1.5: Sơ đồ tổng quát bộ mã chập. Giả sử u là véctơ đầu vào, x là véctơ tương ứng được mã hoá, bây giờ chúng ta mô tả cách tạo ra x từ u. Để mô tả bộ mã hoá chúng ta phải biết sự kết nối giữa thanh ghi đầu vào vào đầu ra hình 1.5. Cách tiếp cận này có thể giúp chúng ta chỉ ra sự tương tự và khác nhau cũng như là với mã khối. Điều này có thể dẫn tới những ký hiệu phức tạp và nhằm nhấn mạnh cấu trúc đại số của mã chập. Điều đó làm giảm đi tính quan tâm cho mục đích giải mã của chúng ta. Do vậy, chúng ta chỉ phác hoạ tiếp cận này một cách sơ lược. Sau đó, mô tả mã hoá sẽ được đưa ra với những quan điểm khác. Để mô tả bộ mã hoá hình 1.5 chúng ta sử dụng N ma trận bổ sung G 1 ,G 2 …,G N bao gồm k hàng và n cột. Ma trận G i mô tả sự kết nối giữa đoạn thứ i của k ô nhớ trong thanh ghi ngõ vào với n ô của thanh ghi ngõ ra. N ngõ vào của hàng đầu tiên của G i mô tả kết nối của ô đầu tiên của đoạn thanh ghi đầu vào thứ i với n ô của thanh ghi ngõ ra. Kết quả là “1” trong G i nghĩa là có kết nối, là “0” nghĩa là không kết nối. Do đó chúng ta có thể định nghĩa ma trận sinh của mã chập: Và tất cả các các ngõ vào khác trong ma trận bằng 0. Do đó nếu ngõ vào làvéctơ u, tương ứng véctơ mã hoá là: Bộ mã chập là hệ thống nếu trong mỗi đoạn của n chữ số đuợc tạo, k số đầu là mẫu của các chữ số đầu vào tương ứng. Nó có thể xác định rằng điều kiện này tương đương có các ma trận k×n theo sau và i = 2,3,….,N Chúng ta xét một vài ví dụ minh hoạ sau đây: Ví dụ 3: Xét mã (3,2,2). Bộ mã hoá được chỉ trong hình 1.6. Bây giờ mã được định nghĩa thông qua 2 ma trận: Bộ mã hoá là hệ thống, ma trận sinh được tạo ra: Chuỗi thông tin u = ( 11011011…) được mã hóa thành chuỗi mã x = (111010100110…) x = u.G ∞ Hình 1.6: Bộ mã chập (3,2,2). Một cách tương tự ta cũng có thể biểu diễn ma trận sinh G = (G 1 ,G 2 ,…,G N ), Như vậy ý nghĩa của ma trận sinh là nó chỉ ra phải sử dụng các hàm tương ứng nào để tạo ra véc tơ dài n mỗi phần tử có một bộ cộng môđun-2, trên mỗi véc tơ có N×k tham số biểu diễn có hay không các kết nối từ các trạng thái của bộ ghi dịch tới bộ cộng môđun-2 đó. Xét véc tơ thứ i (g i , n ≥ i ≥ 1), nếu tham số thứ j của g i (L×k ≥ j ≥1) có giá trị “1” thì đầu ra thứ j tương ứng trong bộ ghi dịch được kết nối tới bộ cộng môđun-2 thứ i và nếu có giá trị “0” thì đầu ra thứ j tương ứng trong bộ ghi dịch không được kết nối tới bộ cộng môđun-2 thứ i. Ví dụ 4: Cho bộ mã chập có số thanh ghi N = 3, số ô nhớ trong mỗi thanh ghi dịch k = 1, chiều dài chuỗi đầu ra n = 3 tức là mã (3,1,3) và ma trận sinh của mã chập có dạng sau: g 1 100 g 2 G = = G(4,5, 7) ⇔ G 101 M 111 g n Có thể biểu diễn dưới dạng đa thức sinh là: G(D) = [1 1+D 2 1+D+D 2 ] Do đó sơ đồ mã chập được biểu diễn như sau: Hình 1.7: Sơ đồ bộ mã chập với N=3, k=1, n=3 1.4 Biểu diễn mã chập Có ba phương pháp để biểu diễn mã chập đó là: sơ đồ lưới, sơ đồ trạng thái, và sơ đồ hình cây. Để làm rõ phương pháp này ta tập trung phân tích dựa trên ví dụ hình 2.1 với bộ mã (2,1,3), đa thức sinh (7,5). [...]... kỹ thuật nhận dạng giọng nói, nhận dạng từ mã, ngôn ngữ học máy tính Thuật toán giải mã Viterbi là một trong hai loại thuật toán giải mã được sử dụng với bộ mã hóa mã chập- một loại khác đó là giải mã tuần tự Ưu điểm của giải mã tuần tự so với Viterbi là nó có thể hoạt động tốt với các mã chập có chiều dài ràng buộc lớn, nhưng nó lại có thời gian giải mã biến đổi Còn ưu điểm của thuật toán giải mã Viterbi. .. được mã hóa Đối với giải mã quyết định cứng, xác suất lỗi bit và xác suất lỗi sự kiện đầu tiên được định nghĩa như sau: Đối với giải mã quyết định mềm, xác suất lỗi sự kiện đầu tiên và xác suất lỗi bit được định nghĩa như sau: 1.9 Ưu nhược điểm của thuật toán giải mã Viterbi 1.9.1 Ưu điểm Thuật toán Viterbi là thuật giải mã có nhớ nên việc giải mã có độ chính xác cao Tốc độ xử lí của mộ giải mã Viterbi. .. Việc thực hiện mã hóa dùng mã chập tương đối đơn giản hơn các loại mã sửa sai khác mà chất lượng mã hóa lại tốt Việc thực hiện mã hóa dùng mã chập có thể được thực hiện bằng phần cứng và phần mềm Dựa trên hình thức mã hóa mã chập cùng thuật giải Viterbi cho nó, các bộ mã hóa sau này đều kế thừa những đặc tính ưu việt của nó 1.5.2 Nhược điểm Việc mã hóa và giải mã liên quan đến mã chập chỉ giải quyết được... mã chuỗi bit được mã hóa bởi bộ mã hóa tích chập Chi tiết của một bộ giải mã riêng phụ thuộc vào một bộ mã hóa tích chập tương ứng Thuật toán Viterbi không phải là một thuật toán đơn lẻ có thể dùng để giải mã những chuỗi bit mà được mã hóa bởi bất cứ một bộ mã hóa chập nào Thuật toán Viterbi được khởi xướng bởi Andrew Viterbi năm 1967 như là một thuật toán giải mã cho mã chập qua các tuyến thông tin... so với bộ giải mã tuần tự vì ở cùng một thời điểm, bộ giải mã Viterbi giải quyết hết tất cả các nhánh còn bộ giải mã tuần tự chỉ chọn ngẫu nhiên một nhánh nên nó sẽ mất thời gian nếu sự lựa chọn trước đó là không đúng 1.9.2 Nhược điểm Thuật toán giải mã Viterbi dựa trên thuật giải mã giống nhau lớn nhất (MLMaximum likelihood), thuật toán này lại phải dựa trên các nguyên lý sau để việc giải mã được... quả của việc giải mã sẽ không như mong muốn Một nhược điểm nữa là thuật toán giải mã Viterbi sử dụng bộ nhớ để ghi lại các trạng thái và thông số metric nên cần có bộ nhớ cho giải mã, bộ giải mã càng phức tạp thì dung lượng bộ nhớ càng lớn Không thích hợp với các mã có chiều dài ràng buộc dài và tỉ số S/N lớn (chỉ thích hợp với bộ giải mã tuần tự) CHƯƠNG II: MÔ PHỎNG THUẬT GIẢI MÃ VITERBI BẰNG MATLAB... mã hóa mã chập Bit mã hóa Bit nhận được Khối giải mã Viterbi Ngõ ra bit Hình 3.1: Sơ đồ khối hệ thống Tín hiệu sau khi được số hóa thành các bit, các bit này được đưa đến bộ mã hóa mã chập Sau khi được mã hóa, tín hiệu (các bit) được truyền trên kênh truyền có nhiễu, ở đây tác giả chỉ xét nhiễu Gauss trắng Tín hiệu đã bị thay đổi bởi nhiễu được thu và giải mã nhờ bộ giải mã Viterbi Nhờ thuật toán Viterbi, ... sự trì hoãn trong giải mã Nghiên cứu cho thấy là độ sâu truy hồi của Kx5 chỉ đủ cho việc giải mã viterbi với loại bộ mã mà chúng ta đang thảo luận Bất cứ một sự truy hồi sâu hơn sẽ làm tăng thời gian delay giải mã và bộ nhớ yêu cầu cho việc giãi mã và cũng ko làm tăng hiệu quả việc giải mã, ngoại trừ bộ mã hóa thủng (punctured code) mà chúng ta sẽ nói sau Để thực thi một bộ giải mã Viterbi bằng phần... close(handles.figure1); run Viterbi_ decoding_gui Kết luận Như vậy, quá trình mô phỏng việc mã hóa và giải mã mã chập đã được thực hiện.Việc thiết lập mã và giải mã đều dựa vào biểu đồ mắt cáo và thuật toán giải mã Virterbi.Sự tiện lợi của công cụ Simulink trong phần mềm Matlab cho phép chúng ta có thể xây dựng được bất kì bộ tạo mã chập chỉ bằng cách thay đổi các tham số trong sơ đồ khối của bộ tạo mã Tuy nhiên,... thì thuật toán mã hóa và giải mã này sẽ không còn hoàn hảo nữa Kênh truyền ở đây phải là kênh truyền ít nhiễu, vì nếu kênh truyền nhiễu quá lớn, mã hóa chập sẽ không còn tốt nữa Khi đó ta phải cần tới trải phổ tín hiệu để đưa tín hiệu xuống dưới mức nhiễu để giảm thiểu ảnh hưởng 1.6 Định nghĩa thuật toán Viterbi Thuật toán Viterbi là một giải pháp được sử dụng phổ biến để giải mã chuỗi bit được mã hóa . (trellis mã) đặc trưng. Quá trình giải mã của mã chập phải dựa vào trellis mã thông qua các giải thuật khác nhau, trong đó nổi tiếng nhất là giải thuật Viterbi. Tại sao gọi là mã chập vì cấu trúc mã. hình thức mã hóa mã chập cùng thuật giải Viterbi cho nó, các bộ mã hóa sau này đều kế thừa những đặc tính ưu việt của nó. 1.5.2 Nhược điểm Việc mã hóa và giải mã liên quan đến mã chập chỉ giải quyết. thuật toán Viterbi Thuật toán Viterbi là một giải pháp được sử dụng phổ biến để giải mã chuỗi bit được mã hóa bởi bộ mã hóa tích chập. Chi tiết của một bộ giải mã riêng phụ thuộc vào một bộ mã