Bộ chèn giả ngẫu nhiên

Một phần của tài liệu nghiên cứu mã turbo trong hệ thống cdma (Trang 30 - 87)

Hình 3.6: Bộ chèn giả ngẫu nhiên với độ dài chuỗi ngõ vào L= 8

Bộ chèn giả ngẫu nhiên sử dụng tính ngẫu nhiên cố định và sắp xếp chuỗi ngõ vào theo thứ tự hoán vị.Như hình trên bộ chèn viết vào [ 01101001] và đọc ra [ 01011001] x1 x6 x11 x2 x7 x12 x3 x8 x13 x4 x9 x14 x5 x10 x15 Đọc ra 0 1 … … 1 0 0 0 … … 1 0 … … 1 1 … … 0 0 0 0 … … 1 1 Viết vào 0 1 1 0 1 0 0 1 1 3 6 8 2 7 4 5 0 1 0 1 1 0 0 1 Viết vào

Hoán vị ngẫu nhiên cố định

22 3.4.3 Bộ chèn dịch vòng

Hình 3.7: Bộ chèn dich vòng với L=8, a=3, s=0 Phép hoán vị của bộ chèn dịch vòng là: p(i)= ( a*i+ s)mod L

Với a<L, s<L, a L , a:là kích cỡ của bước ;s: là phần bù; L : là độ dài chuỗi ngõ vào

3.4.4 Bộ chèn chẵn-lẻ(Odd-Even)

Bộ chèn chẵn lẻ là đặc trưng cho mã PCCC r = 1/2 .Một mã PCCC r = 1/2 đựơc lấy bằng cách kết hợp 2 chuỗi ngõ ra được mã hoá của mã PCCC r = 1/3 thành một chuỗi ngõ ra của mã PCCC r = 1/2. Nhưng khi kết hợp hai chuỗi ngõ ra được mã hoá này có thể một bit tin sẽ không có các bit mã hoá của nó cũng có thể một bit tin có một hay cả hai bit được mã hoá của nó .Vì vậy, nếu một lỗi xãy ra cho bit tin không được bảo vệ (là bit tin không có bất kỳ một bit nào được mã hoá ) thì chất lượng của bộ giải mã TC có thể bị giảm hay BER của nó có thể tăng .

Để khắc phục vấn đề trên thì ta có bộ chèn chẵn lẻ ,bộ chèn chẵn lẻ cho phép mỗi bit tin có một trong các bit được mã hoá của nó một cách chính xác. Do vậy khả năng sửa sai của mã được phân bố đồng nhất trên tất cả các bit tin .

Ví dụ :cho chuỗi tin x= c1 của L= 9 sau khi qua bộ mã hoá RSC1 thì cho ra chuỗi mã hoá c2 .Từ c2 chỉ có các bit mã hoá ở vị trí lẻ được lưu trữ trong bảng3.2

x1 x2 x3 x4 x5 x6 x7 x8 x9

c21 - c23 - c25 - c27 - c29

Bảng 3.2 Bảng các bit chẵn mã hoá của chuỗi c2

0 1 1 0 1 0 0 1 0 3 6 1 4 7 2 5 0 0 0 1 1 1 1 0 Viết vào Hoán vị dịch vòng Đọc ra 0 1 2 3 4 5 6 7 Chỉ số

Chương 3: Mã Turbo kết nối song song

23

Một bộ chèn khối 3x3 được dùng để hoán vị chuỗi tin tức x cho bộ mã hoá RSC2 như sau: x1 x4 x7 x2 x5 x8 x3 x6 x9 Bảng 3.3 Bộ chèn khối

Chuỗi tin tức x được viết theo cột đọc ra theo hàng .Chuỗi tin được hoán vị cho ra chuỗi mã hoá c3 .Từ chuỗi c3 chỉ có các bit mã hoá vị trí chẵn được lưu trữ như trong bảng 3.4

x1 x4 x7 x2 x5 x8 x3 x6 x9 - c34 - c32 - c38 - c26 -

Bảng 3.4 Các bit mã hoá lẻ của chuỗi c3

Đối với mã hoá PCCC r= 1/2, các chuỗi bit mã hoá sau đó phải được ghép với nhau như trong bảng3.5 sau đây:

x1 x4 x7 x2 x5 x8 x3 x6 x9

c21 c34 c27 c32 c25 c38 c23 c36 c29

Bảng 3.5 Chuỗi tin và chuỗi mã hoá được ghép Mỗi bit tin có bit mã hoá riêng của nó.

3.4.5 Bộ chèn Smile

Bộ chèn chẵn lẻ như trên cho duy nhất một bit kiểm tra đi kèm theo một bit mã hoá .Hạn chế của bộ chèn này là: sau khi mã hoá cả hai chuỗi bit thông tin ( chuỗi tin tức gốc và chuỗi sau khi qua bộ chèn ) trạng thái của cả hai bộ mã phải giống nhau .Ta vẫn có thể thêm vào sau chuỗi thông tin một số bit “ tail bits” hoặc kết thúc Treliss để làm cho hai bộ mã hoá đều kết thúc ở cùng một trạng thái zero bằng cách dùng một bộ chèn đặc biệt là Simile.

Ý tưởng của bộ chèn này xuất phát từ ý tưởng một khối thông tin K bit có thể được chia thành m+1 chuỗi với m là tham số ô nhớ của bộ mã hoá .Ví dụ m=2 ta có chuỗi:

24 Chuỗi 0 = { dk |k mod ( m+1) =0} Chuỗi 1 = { dk |k mod ( m+1) =1} Chuỗi 2 = { dk |k mod ( m+1) =2}

Hình 3.8: Mô tả bộ chèn Smile

Ví dụ như đối với bộ RSC như ở trên với một K cho trước , trạng thái cuối cùng của bộ mã hoá mô tả bằng trạng của hai D flip-flop sẽ là sự kết hợp của các chuỗi vừa nêu trên thể hiện trong bảng 3.6 sau :

K mod(m+1) S0K S1K

0 Chuỗi 1+chuỗi 2 Chuỗi 0+chuỗi 1

1 Chuỗi 2+chuỗi 0 Chuỗi 1+chuỗi 2

2 Chuỗi 0+chuỗi 1 Chuỗi 2+chuỗi 0

Bảng 3.6 Trạng thái cuối của bộ mã hoá

Thứ tự của các bit đơn lẻ trong mỗi chuỗi không còn quan trọng ,chỉ cần các bit đó ở trong cùng một chuỗi .Một bộ chèn Simile phải thực hiện việc hoán vị các bit trong mỗi chuỗi để đưa được bộ mã hoá về cùng trạng thái như khi không sử dụng bộ chèn .

3.4.6 Bộ chèn khung

Nếu bộ chèn Simile cần sử dụng thêm tail bit để lái cả hai bộ mã hoá đến

cùng một trạng thái thì bộ chèn khung lại không cần tail bit .Mỗi một bộ RSC do

tính hồi quy của nó có thể đặc trưng bằng một đa thức sinh chu kỳ L .Trong trường hợp này N bit thông tin sau khi được chèn sẽ được lưu hai lần trong bộ nhớ kích thước 2N tại những địa chỉ mà việc đọc chúng ra sau này bị ngăn cách bằng một khoảng thời gian bằng với số nguyên lần của L .Bằng cách này, nếu bộ mã hoá bắt

Chương 3: Mã Turbo kết nối song song

25

đầu bằng một trạng thái zero thì sẽ kết thúc tại một trạng thái zero mà không cần thêm bất kỳ một tail bit nào.

3.4.7 Bộ chèn tối ưu

Bộ chèn tối ưu là bộ chèn cho ra các chuỗi mã hoá ngõ ra có trọng số thấp ít nhất .Bộ chèn này thiết kế dài dòng và phức tạp , thuật toán mô tả như sau:

Bước 1 : phát ra chèn ngẫu nhiên .

Bước 2 : phát tất cả các chuỗi tin ngõ vào có thể.

Bước 3: đối với tất cả các chuỗi tin ngõ vào có thể mã hoá thành từ mã và xác định kết quả trọng số của từ mã để tìm được phân bố trọng số của từ mã .

Bước 4: xác định trọng số từ mã nhỏ nhất và số các từ mã với trọng số đó. 3.4.8 Bộ chèn đồng dạng

Một bộ chèn đồng dạng theo định nghĩa là một bộ chèn trung bình của tất cả

các bộ chèn có thể sử dụng. Ta xét một chuỗi k bit gồm w bit 1 và kw bit còn lại

đương nhiên là bit 0. Một bộ chèn đồng dạng chiều dài k là một thiết bị xác suất sẽ ánh xạ chuỗi này thành tất cả các hoán vị 

     w k

riêng biệt với xác suất như nhau là

      w k 1 .

Kỹ thuật này cho phép khảo sát một bộ mã PCCC bất kỳ như một bộ mã PCCC chỉ gồm 2 bộ mã thành phần dựa trên phân bố đồng dạng tạo bởi bộ chèn. 3.4.9 Bộ chèn S

Bộ chèn loại S (S = 1,2,3,...) là bộ chèn “bán ngẫu nhiên” được xây dựng như

sau : Chọn số nguyên ngẫu nhiên đem so sánh với các số nguyên ngẫu nhiên chọn trước đó S. Nếu việc chọn hiện tại và chọn trước đó S khác nhau nhỏ hơn S thì số nguyên ngẫu nhiên bị loại bỏ. Quá trình này được lặp lại cho đến khi N số nguyên phân biệt được chọn. Thiết kế bộ chèn này đảm bảo tránh được các sự kiện chu kỳ ngắn. Một sự kiện chu kỳ ngắn xảy ra khi 2 bit gần nhau trong cả trước và sau khi chèn.

Thuật toán hoán vị cho bộ chèn bán ngẫu nhiên được mô tả như sau:

26

 Bước 2: Chọn số nguyên dương

2

L

S  .

Bước 3: So sánh i với các số nguyên trước đó. Đối với mỗi số nguyên S,

so sánh i nếu nó nằm trong khoảng S thì giữ i, nếu nó không nằm trong khoảng S thì trở lại bước 1.

 Bước 4: Trở lại bước 1 cho đến khi tất cả các vị trí L được lấp đầy.

Hình 3.9 trình bày bộ chèn bán ngẫu nhiên với L = 16 và S = 2.

Hình 3.9: Bộ chèn bán ngẫu nhiên với L = 16 và S = 2

Từ Hình 3.9, bộ chèn viết vào [0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1] và đọc ra [0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 0]. Bộ chèn bán ngẫu nhiên cố gắng đưa ra vài tính ngẫu nhiên để khắc phục tính qui tắc của việc hoán vị. Tuy nhiên, thuật toán không bảo đảm kết thúc một cách thành công.

3.5 BỘ GIẢI MÃ

3.5.1 Khái niệm về các thuật toán giải mã

Chất lượng mã TC 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 thước khung .

Mã PCCC có cấu trúc mã hoá kết nối song song nhưnng quá trình giải mã lại dựa trên sơ đồ giải mã kết nối nối tiếp.Vì sơ đồ kết nối nối tiếp thực hiện tốt hơn sơ đồ kết nối song song do sơ đồ kết nối nối tiếp có khả năng chia sẻ thông tin giữa các bộ giải mã kết nối còn các bộ giải mã có sơ đồ kết nối song song chủ yếu giải mã độc lập nhau.

Trong khi thực hiện một vòng lặp giải mã các thông tin mềm được trao đổi giữa các bộ giải mã thành phần .Foney đã chứng minh được rằng ngõ ra mềm tối ưu

Viết vào Hoán vị bán ngẫu nhiên Đọc ra 0 1 1 0 1 0 0 1 0 3 6 9 15 12 8 5 0 0 0 1 1 1 0 0 0 1 2 3 4 5 6 7 Chỉ số 0 1 1 0 1 0 0 1 2 10 13 1 4 7 11 14 1 1 0 1 1 1 0 0 8 9 10 11 12 13 14 15

Chương 3: Mã Turbo kết nối song song

27

cho bộ giải mã phải là xác suất a posteriori (APP) là xác suất của một bit nào đó

đựơc truyền dựa trên tín nhận được .

3.5.2 Tổng quan về các thuật toán giải mã

Hình 3.10, Trình bày các họ thuật toán giải mã dựa trên sơ đồ Trellis

Hình 3.10: Các thuật toán giải mã dựa trên Trellis

Họ thứ nhất là họ các thuật toán MAP còn gọi là thuật toán BCJR (Bahl- Cocke-Jelinek-Raviv, tên bốn người đã tìm ra thuật toán này). Thuật toán này liên quan đến các thuật toán giải mã khả năng xảy ra lớn nhất (ML) nhằm làm giảm tối đa xác suất lỗi bit.Họ này bao gồm các thuật toán symbol-by-symbol MAP, là

phương pháp tối ưu để tính các thông tin APP(a posteriori), đây là thuật toán dạng

tích, độ phức tạp rất cao. Trong họ này còn có hai loại thuật toán làm gần đúng thuật toán MAP để trở thành thuật toán dạng tổng độ phức tạp ít hơn mà chất lượng giải mã gần như tương đương là Log-MAP và phiên bản gần đúng của Log-MAP là Max-log-MAP.Họ thuật toán giải mã khác là một họ thuật toán dựa trên việc sửa đổi thuật toán Viterbi (VA) có sử dụng thêm metric bổ sung vì VA truyền thống không tính các thông tin APP, metric bổ sung làm điều đó. Họ thuật toán giải mã này bao gồm thuật toán nổi tiếng là thuật toán Viterbi ngõ ra mềm (SOVA) và thuật toán ít được biết đến hơn là thuật toán Viterbi ngõ ra liệt kê nối tiếp .

Tuy cùng là các thuật toán ngõ ra mềm dựa trên sơ đồ trellis nhưng khác với VA là một thuật toán giải mã trellis ML và giảm thiểu xác suất lỗi từ mã, thuật toán

Các thuật toán giải mã dựa trên Trellis

Viterbi

Max-Log-MAP

SOVA cải tiến SOVA

Log-MAP MAP

28

MAP lại nhắm tới giảm tối đa xác suất lỗi bit. MAP là một phương pháp tối ưu để ước đoán các trạng thái và ngõ ra của các quá trình Markov trong điều kiện nhiễu trắng. Tuy nhiên MAP ít khả năng được ứng dụng thực tế bởi các khó khăn về số học liên quan đến việc biểu diễn xác suất, các hàm phi tuyến cùng một số các phép nhân và cộng khi tính toán các giá trị này.Log-MAP là một biến thể của MAP, chất lượng gần như tương đương mà không gặp trở ngại trong việc ứng dụng trong thực tế. Log-MAP được thực hiện hoàn toàn trong miền logarit, nhờ đó phép nhân chuyển thành phép cộng và ta có được một hàm tương đối dễ thực hiện hơn.

Max-Log-MAP và SOVA là thuật toán gần tối ưu dùng để giảm bớt độ phức tạp tính toán nhưng trong kênh nhiễu Gauss thì chất lượng hai loại này cũng không cao, đặc biệc trong vùng SNR thấp. Max -Log-MAP hầu như giống với Log-MAP chỉ có duy nhất một điểm khác là sử dụng một hàm đơn giản hơn rất nhiều. Các nghiên cứu cho thấy Max-Log-MAP làm giảm chất lượng khoảng 0.5 dB so với MAP/Log- MAP trong kênh nhiễu Gauss.

Mặc dù thuật toán MAP tốt hơn thuật toán SOVA nhưng nó có cấu trúc phần cứng và quá trình tính toán giải mã lại phức tạp hơn nhiều.Do giới hạn của đồ án và để phục vụ cho chương trình mô phỏng nên ta chỉ tập trung tìm hiểu về :Log-MAP và SOVA.

Chương 3: Mã Turbo kết nối song song

29 3.5.3 Thuật toán Log-MAP

Hình 3.11: Bộ giải mã lặp Log-MAP Giải thuật giải mã được thực hiện như sau:

1. Tách tín hiệu nhận ra thành 2 chuỗi tương ứng cho bộ giải mã 1 và bộ giả mã 2 .

2. Ở vòng lặp đầu tiên ,thông tin a priori của bộ giải mã 1 được đưa về 0.Sau khi bộ giải mã 1 đưa ra được thông tin extrinsic thì sẽ được chèn và đưa tới bộ giải mã 2 đóng vai trò là thông tin a priori của bộ giải mã này.Bộ giải mã 2 sau khi đưa ra thông tin extrinsic thì vòng lặp kết thúc.Thông tin

extrinsic của bộ giải mã thứ 2 sẽ được giải chèn và đưa về bộ giải mã 1 như

là thông tin a priori .

3. Quá trình giải mã giải mã cứ lặp lại như vậy cho đến khi thực hiện đủ số lần lặp đã qui định .

4. Sau vòng lặp cuối cùng ,giá trị ước đoán có được tính bằng cách giải chèn thông tin ở bộ giải mã thứ 2 và đưa ra quyết định cứng.

    Hard decision Deinter. Deinter. Inter. Inter. DEC1 DEC2 c( 1);I  c( 2);I  c( 1);I  c( 2);I  ) O ; u ( A k 1  1e(uk) 2e(uk) A(u;O) k 2  ) ( 1a uk  2e(uk)  

30 3.5.4 Thuật toán SOVA

3.5.4.1 Độ tin cậy của bộ giải mã SOVA tổng quát

Độ tin cậy trong giải mã SOVA được tính toán từ biểu đồ trellis như hình :

Hình 3.12: Các đường survivor và đường cạnh tranh để ước đoán độ tin cậy Trong Hình 3.12 trình bày biểu đồ trellis 4 trạng thái. Đường liền nét chỉ ra đường survivor (giả thiết ở đây là một phần của đường ML) và đường đứt nét chỉ ra đường cạnh tranh (xảy ra đồng thời) tại thời điểm t đối với trạng thái 1. Để đơn giản thì các đường survivor và cạnh tranh cho các nút khác không được vẽ ra. Nhãn S1,t

biểu diễn trạng thái 1 tại thời điểm t. Cũng vậy, các {0,1} được viết trên mỗi đường chỉ ra quyết định nhị phân được ước đoán cho các đường. Một metric tích lũy Vs(S1,t) gán cho đường survivor đối với mỗi nút và metric tích lũy Vc(S1,t) gán cho đường cạnh tranh đối với mỗi nút. Thông tin cơ bản cho việc gán giá trị tin cậy L(t) đến đường survivor của nút S1,t là giá trị tuyệt đối của 2 metric tích lũy.

L(t) = |Vs(S1,t)  Vc(S1,t)| (3.1) Giá trị này càng lớn thì đường survivor càng đáng tin cậy. Để tính toán độ tin cậy này, giả thiết metric tích lũy của survivor thì luôn luôn lớn hơn metric tích lũy của cạnh tranh.Để giảm độ phức tạp, các giá trị tin cậy chỉ cần được tính cho đường

Chương 3: Mã Turbo kết nối song song

31

survivor ML và không cần thiết tính cho các đường survivor khác bởi vì chúng sẽ được bỏ qua sau này.

Để minh họa khái niệm độ tin cậy, 2 ví dụ được đưa ra bên dưới. Trong các ví dụ này, thuật toán Viterbi chọn đường survivor như là đường có metric tích lũy nhỏ nhất. Trong ví dụ đầu tiên, giả thiết tại nút S1,t có metric survivor tích lũy là Vs(S1,t)

= 50 và metric cạnh tranh tích lũy là Vc(S1,t) = 100. Giá trị tin cậy liên kết đến việc

Một phần của tài liệu nghiên cứu mã turbo trong hệ thống cdma (Trang 30 - 87)