3.2.1 Mã xoắn hệ thống đệ quy RSC
Trong mã Turbo ta sẽ sử dụng một bộ mã xoắn hệ thống đệ quy (Recursive Systematic Convolutional -RSC) dựa trên bộ mã xoắn truyền thống. Sau đây ta sẽ đi tìm hiểu một số vấn đề:
Tính hệ thống có nghĩa là đầu vào của bộ mã hóa cũng là một phần của ngõ ra. Vì thế, một bit trong n bit ngõ ra của một vòng lặp mã hóa đơn là một bit trong thông điệp đi vào bộ mã hóa.
Tính đệ quy có nghĩa là có sự hồi tiếp từ ngõ ra bộ mã hóa về ngõ vào.
Mã xoắn hệ thống đệ quy được lấy từ bộ mã hóa xoắn thông thường bằng cách hồi tiếp một trong những ngõ ra mã hóa thành ngõ vào của nó.
Một bộ mã hóa xoắn thường được biểu diễn qua các chuỗi g0=[111] và g1=[101] và có thể được viết là G = [g0,g1]. Bộ mã hóa RSC tương ứng với bộ mã hóa xoắn thông thường đó được biểu diễn là G = [1,g1/g0] trong đó ngõ ra đầu tiên (biểu diễn bởi g0) được hồi tiếp về ngõ vào. Theo biểu diễn trên, g0 là ngõ ra hệ thống, g1 là ngõ ra feedforward, và g0 hồi tiếp về ngõ vào của bộ mã hóa RSC.
Chuỗi bit dữ liệu đầu vào được đưa ngay tới đầu ra gọi là chuỗi bit systematic (Systematic Output). Chuỗi bit parity là các bit kiểm tra chẳn lẻ.
g0
g1
Dữ liệu đầu vào
3.2.2 Các bộ mã hóa xoắn đệ quy và không đệ quy
Đề hiểu rõ hơn về các mã xoắn đệ quy ta sẽ đi tìm hiểu và phân tích lợi ích của bộ mã này.
Để kiểm tra xem một bộ mã hóa xoắn đệ quy hay không ta xét ví dụ sau.Hình 3.5 trình bày một bộ mã xoắn không đệ quy đơn giản có ma trận sinh g0 = [11] và g1 = [10]
Hình 3.4: Bộ mã hóa RSC lấy từ hình 3.1 với r = ½ và K=3
Hình 3.5: Bộ mã xoắn không đệ quy r=1/2 và K=3 với chuỗi ngõ vào và ngõ ra
Hình 3.6 là một bộ mã hóa xoắn đệ quy tương đương của hình trên G=[1, g1/g0]
Hình 3.6: Bộ mã hóa xoắn đệ quy tương đương của hình trên G=[1, g1/g0]
Từ 2 hình trên ta nhận thấy đối với cùng một chuỗi ngõ vào, bộ mã hóa không đệ quy cho từ mã ngõ ra có trọng số 3 và bộ mã hóa đệ quy cho ra từ mã có trong số 5. Vậy, bộ mã hóa xoắn đệ quy có khuynh hướng cho ra các từ mã có trọng số tăng so với bộ mã
không đệ quy. Nghĩa là bộ mã xoắn đệ quy cho ra ít từ mã có trọng số thấp và cũng dẫn đến việc thực hiện sửa sai tốt hơn.
Trình bày biểu đồ trạng thái của bộ mã xoắn đệ quy và không đệ quy:
Hình 3.7: Biểu đồ trạng thái của bộ mã hóa không đệ quy của hình 3.5
Hình 3.8: Trình bày biểu đồ trạng thái của bộ mã đệ quy của hình 3.6
Ta thấy biểu đồ trạng thái của chúng là tương tự nhau. Hàm truyền cho cả hai bộ mã hóa giống hệt nhau cùng là : 3 ( ) 1 D T D D 3 ( ) 1 D T D D (3.3)
Trong đó bỏ qua N và J. Hơn nữa chúng có cùng khoảng cách tự do tối thiểu và có thể được mô tả bằng cùng cấu trúc trellis. Vì vậy các mã có cùng xác suất lỗi sự kiện đầu tiên, tuy hai mã này có mức độ lỗi bit cao (BER) khác nhau. Điều này do BER phụ thuộc vào sự tương ứng ngõ vào - ngõ ra của bộ mã hóa. BER của mã xoắn hệ thống đệ quy thì thấp hơn BER của mã xoắn không đệ quy tương ứng với cùng tỉ số tín hiệu trên nhiễu.
3.2.3 Kết thúc Trellis
Hình 3.9: Cách thức kết thúc trellis ở bộ mã RSC
Đối với bộ mã xoắn thông thường, trellis được kết thúc ở trạng thái m = K-1 các bit zero thêm vào sau chuỗi ngõ vào. Các bit thêm vào này làm cho bộ mã xoắn thông thuờng đến trạng thái tất cả zero (trạng thái kết thúc trellis). Tuy nhiên cách này không thể áp dụng cho bộ mã hóa RSC do có quá trình hồi tiếp. Các bit thêm vào để kết thúc cho bộ mã hóa RSC phụ thuộc vào trạng thái của bộ mã hóa và rất khó dự đoán. Hơn nữa, ngay cả khi tìm được các bit kết thúc cho một trong các bộ mã hoá thành phần thì bộ mã hóa thành phần khác có thể không được lái đến trạng thái tất cả zero với cùng các bit kết thúc do có
sự hiện diện của bộ ghép xen giữa các bộ mã hóa thành phần. Hình 4.9 minh họa một cách đơn giản để giải quyết vấn đề này.
Để mã hóa chuỗi ngõ vào, khóa chuyển bật đến vị trí A, để kết thúc trellis thì chuyển bật đến vị trí B.
3.2.4 Bộ giải mã ngõ vào mềm-ngõ ra mềm SISO
Trong bộ nhận thông tin thông thường, bộ giải điều chế thường được thiết kế để tạo ra những quyết định mềm và rồi được truyền tới bộ giải mã. Việc cải thiện chất lượng xác suất lỗi sử dụng hệ thống như quyết định mềm so sánh với quyết định cứng được đánh giá gần 2 dB trong AWGN. Bộ giải mã SISO (Soft Input Soft Output) là do quá trình giải mã cuối cùng ở lối ra của bộ giải mã phải kết thúc trong các bit (các quyết định cứng). Với mã Turbo, do sử dụng 2 hay nhiều mã thành phần và việc giải mã bao hàm việc lấy lối ra từ một bộ giải mã là lối vào một bộ giải mã khác bằng cách lặp, bộ giải mã lối ra cứng sẽ không thích hợp. Đó là nguyên nhân các quyết định cứng trong bộ giải mã làm giảm bớt chất lượng hệ thống (so sánh với các quyết định mềm). Do đó, những gì cần thiết cho việc giải mã của các mã Turbo là bộ giải mã SISO.Bộ giải mã SISO là thành phần quan trọng nhất của bộ giải mã Turbo.
3.2.4a. Quyết định cứng và quyết định mềm
Chuỗi thông tin sau khi truyền qua kênh truyền được giải điều chế và đưa đến bộ giải mã. 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ã sẽ quyết định quá trình giải mã là “cứng” hay “mềm”.
Một tín hiệu đến bộ giải điều chế và được bộ giải điều chế ra quyết định từng bit là bit 0 hay 1 thì gọi là quyết định cứng. Ví dụ xét một hệ thống sử dụng tín hiệu đường dây là bipolar NRZ với biên độ 1V. Nếu giá trị nhận được là 0.8 V hoặc 0.03 V thì đều được quyết định là bit 1. Còn nếu giá trị nhận được là -0.7V hoặc -0.02V thì đều được quyết định là bit 0. Như vậy ta nhìn thấy sai sót của phương pháp quyến định cứng là dù 0.8V hay 0.03V thì bộ giải mã cũng nhận được bit 1 dù giá trị 0.8V có xác suất đúng là bit 1 cao hơn nhiều so với 0.03V. Do đó, bộ giải mã sẽ không có một thông tin nào về “độ chính xác” của quyết định từ bộ giải điều chế. Việc này làm cho chất lượng của việc giải mã không chỉ phụ thuộc vào bộ giải mã mà còn phụ thuộc vào bộ giải điều chế và chất lượng không cao. Tuy nhiên quyết định cứng dễ dàng hơn cho việc giải mã.
Nếu bộ giải điều chế không quyết định xem giá trị mẫu nhận được là bit 0 hay bit 1 mà đưa thẳng cho bộ giải mã để bộ giải mã có đầy đủ thông tin về bit sau khi đã qua kênh truyền thì với cấu trúc phù hợp bộ giải mã sẽ cho các quyết định chính xác hơn, tức là chất lượng cao hơn. Bộ giải mã sẽ tính toán các giá trị để xét độ tin cậy của từng giá trị và cuối cùng mới quyết định. Điều này làm giảm khả năng có thể xảy ra lỗi và độ lợi mã tổng cộng có thể tăng tới 2.5 dB so với giải mã cứng đối với môi trường SNR thấp. Tuy nhiên, để đạt được độ lợi mã này thì bộ giải mã mềm sẽ có độ phức tạp cao hơn rất nhiều
so với bộ giải mã cứng.
3.3 Bộ mã hóa Turbo
Bộ mã hóa Turbo gồm ít nhất hai bộ mã hóa xoắn hệ thống hồi quy RSC1 và RSC2 được kết nối song song kết hợp với một bộ ghép xen bên trong.
Tốc độ mã hóa của bộ mã hóa Turbo là:
k r
n
(3.4)
Mỗi bit thông tin ngõ vào sẽ trở thành một phần của từ mã ngõ ra ( tính hệ thống) và sẽ được kèm theo bằng 1/r-1 bit (gọi là bit parity ) để sửa lỗi.
Nếu r càng nhỏ tức là số bit parity đi kèm sẽ lớn và dẫn đến khả năng sửa lỗi cao hơn rất nhiều tuy nhiên tốc độ truyền giảm đi, số bit truyền nhiều hơn có nghĩa là băng thông lớn hơn và độ trễ tăng lên. Theo khuyến cáo của các tổ chức định chuẩn thì giá trị r chỉ nên tối thiểu là 1/6.
Hình 3.10: Sơ đồ khối bộ mã hóa Turbo
Bộ mã hóa RSC1 nhận dữ liệu một cách trực tiếp bk, trong khi bộ mã hóa RSC2 nhận dữ liệu bk , sau khi dữ liệu đã đi qua bộ ghép xen ∏ vì vậy bk
’
=∏ (bk). Bộ ghép xen có thể là kiểu giả ngẫu nhiên hay khối,vv.. và nó thực hiện việc ghép xen theo từng khối M bit. Vì cả hai bộ mã hóa đều nhận cùng một tập dữ liệu, chỉ có một ngõ ra chuỗi bit systematic x1 được phát đi cùng với hai ngõ ra parity từ hai bộ mã hóa RSC p1,p2. Tuy nhiên thông tin chuỗi dữ liệu của bk bị hoán vị bởi bộ ghép xen thành bk’ nên bit parity p1 và p2 sẽ khác nhau.
Khi hai bộ mã hóa RSC1 và RSC2 đều có tốc độ là ½ thì chuỗi systematic x1 và hai chuỗi bit parity p1, p2 được truyền đi là [x1.1,p1.1,p2.1,x1.2,p1.2,p2.2, ..., x1.N,p1.N,p2.N] nên tốc độ của bộ mã hóa Turbo là 1/3. Tuy nhiên, tốc độ của mã Turbo có thể đạt được cao hơn bằng các lập quy luật phát bit parity (kỹ thuật puncture). Chẳng hạn, khi chỉ phát các bit parity chẵn từ RSC1 và bit parity lẻ từ RSC2 cùng với các bit systematic [x1.1, p1.1, x1.2 , p2.2, x1.3, p1.3, x1.4, p2.4....] thì tốc độ mã Turbo là r= ½
Khi bộ giải mã nhận được chuỗi bit đến thì nó sẽ thêm vào chuỗi này các bit 0 tại những chỗ đã bị xóa bớt. Như vậy có thể làm sai lệch bit parity nên giảm chất lượng.
3.3.1 Bộ ghép xen
Bộ ghép xen (Iterleaver: ký hiệu là∏ ) là một quá trình thực hiện hoán vị trật tự sắp xếp của chuỗi gốc theo một quan hệ xác định một-một.
Đối với mã Turbo, có thể có một hay nhiều bộ chèn được sử dụng giữa các bộ mã hóa thành phần. Bộ ghép xen đóng vai trò rất lớn trong việc nâng cao khả năng sửa lỗi của mã, nó được sử dụng rộng rãi trong các sơ đồ mã kênh khi trên kênh truyền thường xảy ra lỗi cụm, ví dụ kênh pha đinh đa đường… Kỹ thuật ghép xen được thực hiện ngay giữa khối mã kênh và kênh truyền với mục đích làm thay đổi trật tự sắp xếp của chuỗi đầu vào để tạo ra một chuỗi mới có trật tự sắp xếp khác đi để truyền trên kênh Nó hoán vị tất cả các chuỗi ngõ vào “xấu” (các chuỗi này có các từ mã có trọng số thấp) thành chuỗi mà được mã hóa cho ra có các từ mã có trọng số cao và ngược lại để đảm bảo rằng với một chuỗi ngõ vào thì ngõ ra của một bộ mã hóa sẽ cho từ mã có trọng số cao còn bộ kia sẽ cho ra từ mã trọng số thấp. Đây là việc làm tăng khoảng cách tự do tối thiểu.
Bộ ghép xen không những được sử dụng tại bộ mã hóa mà nó cùng với các bộ giải ghép xen có trong bộ giải mã đóng vai trò rất quan trọng. Một bộ ghép xen tốt sẽ làm cho các ngõ vào của bộ giải mã SISO ít tương quan với nhau tức là mức độ hội tụ của thuật toán giải mã lặp tăng lên, đồng nghĩa với việc giải mã chính xác hơn.
Ví dụ bộ ghép xen sử dụng để tăng trọng số của các từ mã như hình sau:
Hình 3.11: Bộ ghép xen làm tăng trọng số của các từ mã
Từ hình trên, đối với bộ mã hóa RSC1 thì chuỗi ngõ vào bk cho ra chuỗi mã tích chập đệ quy có trọng số thấp p1. Để tránh bộ mã hóa RSC2 cho ra chuỗi ngõ ra đệ quy khác cũng có trọng số thấp, bộ chèn hoán vị chuỗi ngõ vào bk thành một chuỗi mới hi vọng cho ra chuỗi mã tích chập đệ quy có trọng số cao p2. Vì vậy, trọng số mã của mã Turbo là vừa phải, nó được kết hợp từ từ mã trọng số thấp của bộ mã hóa 1 và từ mã trọng số cao của bộ mã hóa 2.
Theo hình 3.12 chuỗi ngõ vào bk.1 cho ra các chuỗi ngõ ra x1.N và p1.N tương ứng. Các chuỗi ngõ vào bk.2 và bk.3 là các chuỗi hoán vị khác nhau của bk.1. Bảng 3.12 trình bày kết quả của các từ mã và trọng số của các từ mã.
Từ bảng 3.1 cho thấy trọng số của từ mã có thể tăng bằng cách sử dụng bộ chèn.
Bộ ghép xen ảnh hưởng đến việc thực hiện mã vì nó ảnh hưởng trực tiếp đến đặc tính khoảng cách của mã. Bằng cách tránh các từ mã có trọng số thấp, BER của mã Turbo
có cải thiện đáng kể. Vì vậy có nhiều bộ chèn khác nhau đã được nghiêm cứu thiết kế. Sau đây là một số bộ ghép xen điển hình như bảng 3.1.
Hình 3.12: Ví dụ minh họa khả năng làm tăng trọng số của bộ ghép xen
Chuỗi ngõ vào bk Chuỗi ngõ ra x1.N Chuỗi ngõ ra p1.N Trọng số của từ mã N N=0 1100 1100 1000 3 N=1 1010 1010 1100 4 N=2 1001 1001 1110 5
Bảng 3.1 Các chuỗi ngõ vào và chuỗi ngõ ra trong hình
3.3.1a. Bộ ghép xen ma trận (bộ ghép xen chèn khối)
Bộ ghép xen ma trận là bộ chèn thường được sử dụng nhất trong các hệ thống liên lạc. Nó viết vào theo cột từ trên xuống dưới, từ trái sang phải và đọc ra theo hàng từ trái sang phải và từ trên xuống dưới. Hoặc có thể viết ra theo hàng và dọc theo cột.
Hình sau trình bày một bộ ghép xen ma trận
x1 x8 x15 x2 x9 x16 x3 x10 x17 x4 x11 x18 x5 x12 x19 x6 x13 x20 x7 x14 x21
x1 x8 x15 x2 x9 x16 x3 x10 …. …. x7 x14 x21
3.3.1.b. Bộ ghép xen Helical
Tương tự bộ ghép xen ma trận (hàng – cột), bộ ghép xen Helical cũng ghi vào theo hàng (hoặc thep cột) nhưng lại đọc ra theo đường chéo.
Ví dụ trên thì các giá trị đọc ra lần lượt là:
x7 x13 x19 x4 x10 x16 x1 x14 x20 x5 … x3 x9 x15
Một điều kiện bắt buộc là ma trận bộ ghép xen Helical không được là ma trận vuông ( tức là số hàng phải khác số cột).
3.3.1c. Bộ ghép xen giả ngẫu nhiên
Bộ ghép xen giả ngẫu nhiên sử dụng tính ngẫu nhiên cố định tức là sắp xếp các chuỗi ngõ vào theo một thứ tự hoán vị. Giả thiết độ dài của chuỗi ngõ vào là L.
Hình 3.13: Bộ ghép xen ngẫu nhiên (giả ngẫu nhiên) với L=8
Phép hoán vị [1,2,3,4,5,6,7,8] chuyển thành [1,3,6,8,2,7,4,5] Bộ ghép xen được viết [01101001] và đọc ra [01011001]
3.4 Bộ giải mã Turbo
Tại máy thu, tín hiệu nhận được sau giải ghép xen và máy thu RAKE là [x1,p1,p2] được đưa vào bộ giải mã Turbo. Tại bộ giải mã, bộ tách kênh sẽ tách ra các bit hệ thống và kiểm tra tương ứng với các bộ giải mã lặp.Và các chuỗi bit này sẽ bị lỗi do kênh truyền.
Giả sử chuỗi bit đầu vào là bk thì bộ mã hóa sẽ cho ra bit systematic x và hai chuỗi bit parity là p1,p2. Chuỗi bit systematic và chuỗi bit parity thu được qua kênh truyền là
x,p1,p2.
Do đầu phát sử dụng bộ ghép xen, nên trong bộ giải mã có các bộ ghép xen giống hệt ở đầu phát và các bộ giải ghép xen tương ứng.
3.4.1 Tổng quan về các thuật toán giải mã
Ngoài sự kết nối các bộ mã tích chập cùng việc sử dụng một thành phần đặc biệt là các bộ chèn, còn một thành phần khác quyết định chất lượng của mã Turbo là qui trình giải mã mềm được thực hiện lặp đi lặp lại và độ phức tạp chỉ tăng tuyến tính theo kích