Mã kề Mã chập
Giới thiệu
Để hiểu rõ về mã Turbo, trước tiên cần nghiên cứu các khái niệm cơ bản liên quan như mã chập và mã kề, vì chúng là nền tảng cho việc xây dựng cấu trúc bộ mã hóa và giải mã.
Mã khối chia thông tin thành các đoạn riêng biệt và mã hóa chúng độc lập, tạo thành một dãy với chiều dài từ mã cố định Ngược lại, mã chập sử dụng n bít để tạo ra mã tương ứng với k bít, trong đó thông tin phụ thuộc vào k bít dữ liệu và các khung dữ liệu trước đó, cho thấy đây là một bộ mã hóa có bộ nhớ.
Mã chập và mã khối có sự khác biệt rõ rệt về cấu trúc, công cụ phân tích và thiết kế Đặc tính đại số đóng vai trò quan trọng trong việc xây dựng một bộ mã khối hiệu quả, đồng thời nâng cao hiệu suất của bộ giải mã Ngược lại, các bộ mã chập chất lượng thường được xác định thông qua nghiên cứu tính toán toàn diện, với hiệu suất giải mã chủ yếu phụ thuộc vào bản chất trạng thái chuỗi của mã chứ không phải từ các đặc tính đại số.
Trong phần này, chúng ta sẽ khám phá cấu trúc của mã chập và cách biểu diễn mã chập thông qua các dạng giản đồ như hình cây, hình lưới và trạng thái.
Trong phần tiếp theo của chương ta sẽ đề cập tới mã kề ( concatenated codes),
Khái niệm đã được giới thiệu lần đầu tiên bởi Forney (1966) từ đó mà tìm ra nhiều phạm vi rộng rãi trong các ứng dụng.
Cấu trúc mã chập và giản đồ biểu diễn
Mã chập được tạo ra thông qua việc truyền chuỗi thông tin qua hệ thống các thanh ghi dịch tuyến tính với số trạng thái hữu hạn Với N thanh ghi dịch, mỗi thanh ghi có k ô nhớ, đầu ra của bộ mã chập sẽ có n hàm đại số tuyến tính Tốc độ mã được tính là R = k/n, tổng số ô nhớ của bộ ghi dịch là N×k, và tham số N được gọi là chiều dài ràng buộc (Constraint length) của mã chập.
Sv Hoàng Hữu Hiệp Trang 9
Khi sử dụng bộ mã chập với các chữ số nhị phân, mỗi lần dịch sẽ nhận k bit thông tin đầu vào vào thanh ghi dịch đầu tiên, đồng thời k bit thông tin trong thanh ghi dịch cuối cùng sẽ được đẩy ra ngoài mà không tham gia vào quá trình tạo chuỗi bit đầu ra Chuỗi đầu ra nhận được từ n bộ cộng môđun-2, cho thấy rằng giá trị của 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 vào (N-1)k bit trước đó, tạo thành bộ nhớ và được gọi là mã chập (n, k, N).
Hình 1.1 Sơ đồ tổng quát bộ mã chập
Để tạo ra véctơ mã hoá x từ véctơ đầu vào u, chúng ta cần hiểu sự kết nối giữa các thanh ghi đầu vào và đầu ra như hình 1.1 Cách tiếp cận này giúp chỉ ra sự tương đồng và khác biệt với mã khối, tuy nhiên có thể dẫn đến những ký hiệu phức tạp, làm giảm sự quan tâm đến việc giải mã Vì vậy, chúng ta chỉ phác hoạ sơ lược về cách tiếp cận này Mô tả mã hoá sẽ được tiếp cận từ những quan điểm khác, và để mô tả bộ mã hoá trong hình 1.1, chúng ta sử dụng N ma trận bổ sung.
Ma trận mô tả sự kết nối giữa các đoạn trong thanh ghi lối vào và thanh ghi lối ra, với k hàng và n cột Mỗi phần tử trong ma trận cho biết sự kết nối giữa đoạn thứ i của k ô nhớ trong thanh ghi lối vào với n ô của thanh ghi lối ra, trong đó “1” biểu thị có kết nối và “0” biểu thị không có kết nối Từ đó, chúng ta có thể định nghĩa ma trận sinh của mã chập.
Sv Hoàng Hữu Hiệp Trang 10
Và tất cả các các lối vào khác trong ma trận bằng 0 Do đó nếu lối vào là véctơ u,tương ứng véctơ mã hoá là : (1.2)
Bộ mã chập là một hệ thống trong đó mỗi đoạn của n chữ số được tạo ra, với k chữ số đầu tiên là mẫu tương ứng với các chữ số đầu vào Hệ thống này có thể xác định điều kiện tương đương thông qua các ma trận k x n.
Chúng ta xét một vài ví dụ minh hoạ :
Ví dụ 1: Xét mã chập (3,1,3) Hai giản đồ tương đương cho bộ mã hoá được chỉ ở hình 1.2:
Hình 1.2 : Hai giản đồ tương đương cho bộ mã chập (3,1,3)
Sv Hoàng Hữu Hiệp Trang 11
Bộ thứ nhất sử dụng thanh ghi với 3 ô nhớ, trong khi bộ thứ hai chỉ cần 2 ô nhớ, mỗi ô hoạt động như một bộ trễ đơn vị Thanh ghi có thể được thay thế bằng bộ tính toán cho phép đọc chuỗi lối ra từ 3 bộ cộng Bộ mã hoá được xác định bởi 3 ma trận bổ sung, thực chất là 3 véctơ hàng với k=1.
Do đó, ma trận sinh từ (1.1) là :
Dựa vào (1.2), chuỗi thông tin đầu vào u = (11011…) được mã hóa thành chuỗi x = (111100010110100…) Bộ mã hóa hoạt động như một hệ thống, trong đó chuỗi mã hóa được hình thành từ tổng modul-2 của các hàng tương ứng với “1” trong chuỗi thông tin.
Ví dụ 2 : Xét mã (3,2,2) Bộ mã hoá được chỉ trong hình 1.3.Bây giờ mã được định nghĩa thông qua 2 ma trận:
Chuỗi thông tin u = ( 11011011…) được mã hóa thành chuỗi mã x = (111010100110…)
Sv Hoàng Hữu Hiệp Trang 12
Ma trận sinh G ( , ,…, ) biểu diễn các hàm cần thiết để tạo ra véc tơ dài n, với mỗi phần tử có một bộ cộng môđun-2 Mỗi véc tơ chứa N×k tham số, cho biết sự kết nối từ các trạng thái của bộ ghi dịch đến bộ cộng môđun-2 Xét véc tơ thứ i (gi, n ≥ i ≥ 1), nếu tham số thứ j của (L×k ≥ j ≥ 1) có giá trị “1”, đầu ra thứ j trong bộ ghi dịch sẽ được kết nối tới bộ cộng môđun-2 thứ i; ngược lại, nếu giá trị là “0”, đầu ra thứ j sẽ không được kết nối.
Bộ mã chập có chiều dài ràng buộc N = 3 và số ô nhớ trong mỗi thanh ghi dịch k = 1, với chiều dài chuỗi đầu ra n = 3, tạo thành mã (3,1,3) Ma trận sinh của mã chập sẽ có dạng tương ứng như sau:
Có thể biểu diễn dưới dạng đa thức sinh là:
Do đó sơ đồ mã chập được biểu diễn như sau :
Sv Hoàng Hữu Hiệp Trang 13
Hình 1.4 : Sơ đồ bộ mã chập với N=3, k=1, n=3 và đa thức sinh (1.6)
Có ba phương pháp chính để biểu diễn mã chập: sơ đồ lưới, sơ đồ trạng thái và sơ đồ hình cây Để làm rõ các phương pháp này, chúng ta sẽ phân tích dựa trên ví dụ thứ ba.
Giả thiết rằng trạng thái ban đầu của các thanh ghi dịch trong bộ mã là “toàn 0”, nếu bit đầu vào đầu tiên là “0” (k = 1), đầu ra sẽ là chuỗi “000” (n = 3), còn nếu là “1” thì đầu ra là chuỗi “111” Khi bit đầu vào đầu tiên là “1” và bit tiếp theo là “0”, chuỗi đầu ra sẽ là “111” và “001” Với phương pháp mã hóa này, mã chập có thể được biểu diễn qua sơ đồ hình cây Dựa vào sơ đồ hình cây, quá trình mã hóa thực hiện theo các nhánh dựa trên các bit đầu vào, từ đó tạo ra dãy các chuỗi đầu ra.
Sv Hoàng Hữu Hiệp Trang 14
Hình 1.5 : Sơ đồ hình cây với N=3, k=1,n=3 (ví dụ 3)
Bộ mã chập có cấu trúc vòng lặp phụ thuộc vào chuỗi đầu vào hiện tại và các chuỗi đầu vào trước đó Ví dụ, chuỗi 3 bit đầu ra phụ thuộc vào 1 bit đầu vào, với 4 trạng thái của hai thanh ghi dịch: a = “00”, b = “01”, c = “10”, d = “11” Khi đặt tên cho các nút trong sơ đồ cây theo các trạng thái này, ta nhận thấy tại tầng thứ 3 có 2 nút cho mỗi nhãn a, b, c và d Từ đó, các nhánh có nhãn giống nhau tạo ra chuỗi đầu ra giống nhau, cho phép ta coi các nút có nhãn giống nhau là tương đương Nhờ tính chất này, mã chập có thể được biểu diễn bằng sơ đồ dạng lưới gọn hơn, với đường liền nét cho bit đầu vào là “0” và đường đứt nét cho bit đầu vào là “1” Từ tầng thứ hai trở đi, hoạt động của lưới ổn định với mỗi nút có hai đường vào và hai đường ra, trong đó một đường ứng với bit đầu vào “0” và đường còn lại ứng với bit đầu vào “1”.
Sv Hoàng Hữu Hiệp Trang 15
Hình 1.6: Sơ đồ hình lưới bộ mã chập ví dụ 3 Trạng thái ban đầu toàn bằng
Sơ đồ trạng thái được xây dựng dựa trên bốn trạng thái cơ bản của bộ mã, bao gồm các trạng thái 00 (a), 01 (b), 10 (c) và 11 (d) Các trạng thái chuyển tiếp được xác định từ sự chuyển đổi giữa các trạng thái này, tạo thành quá trình chuyển tiếp liên tục.
Ký hiệu là quá trình chuyển tiếp từ trạng thái α sang trạng thái β với bit đầu vào là bít “1”
Kết quả ta thu được sơ đồ trạng thái trong hình 1.7 như sau:
Hình 1.7: Sơ đồ trạng thái của bộ mã chập trong ví dụ 3
Sv Hoàng Hữu Hiệp Trang 16
Dựa vào sơ đồ trạng thái hình 1.7, các đường liền nét biểu thị cho bit đầu vào là "0", trong khi đó, các đường đứt nét đại diện cho các bit đầu vào khác.
So với sơ đồ hình lưới và sơ đồ hình cây thì sơ đồ trạng thái là sơ đồ đơn giản nhất
1.2.3 Phân bố trong mã chập
Phân bố trọng số của mã chập là một yếu tố quan trọng trong việc đánh giá chất lượng của nó Chúng ta định nghĩa Ai là số lượng chuỗi có trọng số i trong lưới, mà tại đó nó phân kỳ khỏi tuyến "toàn 0" tại một điểm nhất định và hồi quy lần đầu tiên tại điểm nút tiếp theo.
Tập hợp :{ , , , } được gọi là phân bố trọng số của mã chập
Mã kề
1.3.1 Cấu trúc và nguyên lý
Mã kề, được giới thiệu vào năm 1966, nhằm mục đích giảm xác suất lỗi theo hàm mũ với tốc độ nhỏ hơn dung lượng, đồng thời tăng độ phức tạp trong giải mã Sự phát triển này đã thu hút sự quan tâm của các nhà nghiên cứu lý thuyết và tạo ra tiêu chuẩn cho các ứng dụng yêu cầu độ tăng ích mã hóa cao và điều kiện phức tạp Khái niệm mã kề được thể hiện qua hình 1.9, trong đó nhiều bộ mã hóa được xếp thành các tầng, với lối ra của bộ mã hóa đầu tiên được đưa vào bộ mã hóa thứ hai, và quy trình này tiếp tục như vậy.
Hình 1.9: Nguyên lý của mã hoá kề
Giả sử bộ mã hoá thứ nhất là mã khối và bộ mã hoá thứ hai cũng là mã khối, với các tham số phải là bội của nhau Thông thường, n0 sẽ lớn hơn ki, do đó m là một số nguyên.
Từ mã của bộ mã hóa 1 là bội số nguyên của từ dữ liệu của bộ mã hóa 2 Ký hiệu tốc độ mã hóa của mã 1 và mã 2, do đó tốc độ toàn bộ của mã kề được xác định.
Như vậy tốc độ toàn bộ của mã kề bằng tích tốc độ của hai mã cấu thành
Mã hóa Mã hóa 2 Mã hóa n
Giải mã 1 Giải mã 2 Giải mã n
Dữ liệu ra Kênh truyền
Sv Hoàng Hữu Hiệp Trang 20
Mã kề mang lại lợi ích quan trọng bằng cách đơn giản hóa quá trình giải mã qua các giai đoạn khác nhau, giúp giảm bớt sự phức tạp của việc giải mã (mni, k0) trong hệ thống mã hóa Trong quy trình này, bộ mã hóa 2 được giải mã trước, sau đó là bộ mã hóa 1, với nhiều phương pháp giải mã tầng khác nhau tùy thuộc vào tính chất của bộ giải điều chế và hoạt động của bộ giải mã 1 Đầu ra của bộ giải điều chế có thể là quyết định cứng hoặc mềm, trong khi bộ mã hóa 2 có thể cung cấp đánh giá cứng hoặc mềm cho bộ mã hóa 1 Forney (1966) đã chỉ ra rằng để tối ưu hóa quá trình giải mã tầng, cần đánh giá xác suất hậu nghiệm của ký hiệu mã hóa 1 dựa trên chuỗi kênh nhận, yêu cầu hoạt động mềm của bộ giải điều chế và bộ giải mã 2 Nếu bộ giải mã 2 chỉ tạo ra quyết định ký hiệu cứng, bộ mã hóa 1 sẽ coi như tương đương với kênh truyền được thiết lập bởi các thành phần: bộ mã hóa 2, bộ điều chế, kênh truyền, giải điều chế và bộ giải mã cứng 2 Kênh truyền này được đặc trưng bởi xác suất lỗi ký hiệu ps, phụ thuộc vào tỷ số tín hiệu trên nhiễu qua kênh vật lý, sơ đồ điều chế và khả năng sửa lỗi của bộ mã hóa 2 Đối với bộ mã hóa RS (Reed-Solomon) sử dụng K-bit ký hiệu, xác suất lỗi bit tại đầu vào bộ giải mã RS có thể được đánh giá dựa trên các yếu tố trên.
Khái niệm này chỉ ra hai điểm bất lợi: đầu tiên, lối vào của các bộ giải mã là quyết định cứng, không cho phép thực hiện giải mã quyết định mềm, dẫn đến việc không thể đạt được hợp lệ tối đa trong giải mã Thứ hai, lỗi trong quá trình giải mã có xu hướng gia tăng, điều này mà bộ mã ngoài không thể khắc phục Để giải quyết ít nhất hai vấn đề này, một sơ đồ mã hóa và giải mã đã được đề xuất.
Sv Hoàng Hữu Hiệp Trang 21
Hình 1.10 Mã kề với bộ xáo trôn nối tiếp
Hìn 1.11 Sơ đồ mã kề song song Ở sơ đồ hình 1.10- mã kề nối tiếp thì bộ mã hoá 1 là mã RS ( Reed - Solonon) còn bộ mã hoá 2 là mã chập TacCũng có thể dùng các bộ mã khối để thay thế các bộ mã hoá trên Còn ở sơ đồ hình 1.11 - mã kề song song thì thông thường cả hai bộ mã hoá thường là bộ mã khối
Sv Hoàng Hữu Hiệp Trang 22
Khi thay thế hai bộ mã khối bằng mã chập hệ thống đệ quy (RSC) và áp dụng thuật toán giải mã lặp, cấu trúc này được gọi là mã Turbo, sẽ được trình bày chi tiết trong chương sau.
Bộ xáo trộn (ký hiệu π), còn được gọi là bộ ghép xen, là 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 Ngược lại, bộ giải xáo trộn có chức năng khôi phục chuỗi thu được về đúng trật tự sắp xếp ban đầu của chuỗi gốc.
Bộ xáo trộn đóng vai trò quan trọng trong việc cải thiện khả năng sửa lỗi của mã, đặc biệt trong các sơ đồ mã kênh Chúng thường được áp dụng trong các kênh truyền có thể xảy ra lỗi cụm, như kênh pha đinh đa đường và kênh ghi từ.
Kỹ thuật xáo trộn được thực hiện giữa khối mã kênh và kênh truyền nhằm thay đổi trật tự sắp xếp của chuỗi đầu vào, tạo ra chuỗi mới để truyền tải Tín hiệu đầu thu nhận được cùng với lỗi cụm trên kênh sẽ được bộ giải xáo trộn sắp xếp lại về trật tự ban đầu, giúp phân tán lỗi cụm thành các lỗi đơn lẻ, từ đó làm cho việc sửa lỗi trở nên đơn giản hơn Thêm vào đó, xáo trộn còn giảm độ tương quan của các chuỗi đầu vào của các bộ mã thành phần, nhờ đó, quá trình giải mã với nhiều trạng thái sẽ nâng cao chất lượng mã hóa so với việc giải mã chỉ với một trạng thái duy nhất.
Ta giả sử có chuỗi bit gốc : và vị trí các bít lỗi là liền kề nhau như sau: và chuỗi xáo trộn :
Sắp xếp trong bộ xáo trộn :
Sv Hoàng Hữu Hiệp Trang 23
Như thể giả sử bít bị lỗi khi đó sau khi qua bộ xáo trộn thì các bít lỗi phân bố ngẫu nhiên độc lập nhau (hình vẽ dưới )
Chương vừa qua đã nêu rõ vai trò của mã kênh trong hệ thống thông tin số, đồng thời giới thiệu giới hạn Shannon Bên cạnh đó, phân tích hai loại mã chất lượng cao trong hệ thống viễn thông là mã chập và mã kề đã tạo nền tảng cho việc nghiên cứu mã Turbo tiếp theo.
Sv Hoàng Hữu Hiệp Trang 24
Chương 2 Các kháI niệm về mã turbo
Giản đồ mã kề, được đề xuất lần đầu bởi Forney, là phương pháp nâng cao mã hóa bằng cách kết hợp nhiều khối mã đơn giản liên hệ với nhau, tạo ra mã có khả năng sửa lỗi vượt trội Những mã này không chỉ cải thiện khả năng sửa lỗi mà còn cho phép giải mã phức tạp trở nên dễ dàng hơn Chúng thường được áp dụng trong các hệ thống giới hạn công suất, như bộ phát trên các đầu dò không gian Các mã phổ biến trong giản đồ mã kề bao gồm mã Reed-Solomon (được sử dụng trong ứng dụng cuối) và mã chập (được áp dụng trong di chuyển lúc đầu) Mã Turbo được xem như sự kết hợp hoàn hảo của các cấu trúc mã kề, kết hợp với thuật toán lặp để tối ưu hóa quá trình giải mã.
Mã Turbo được giới thiệu lần đầu vào năm 1993 bởi Bernou, Glavieux, và Thitimajshima, với biểu đồ xác suất lỗi phụ thuộc vào Eb/N0 và số lần lặp Biểu đồ này cho thấy các thành tựu của mã Turbo với xác suất lỗi bít là 10-5, sử dụng tốc độ mã 1/2 qua kênh nhiễu trắng (AWGN) và điều chế BPSK Các mã này được tạo ra từ hai hoặc nhiều mã thành phần lặp lại cùng một chuỗi thông tin Trong khi mã chập tạo ra quyết định cứng từ bộ giải mã, mã Turbo cho phép thuật toán giải mã không bị giới hạn bởi quyết định cứng, mà thay vào đó, thông tin từ mỗi bộ giải mã ảnh hưởng lẫn nhau để tạo ra quyết định mềm Đối với hệ thống có hai mã thành phần, quá trình giải mã Turbo diễn ra qua việc sử dụng quyết định cứng từ bộ giải mã này làm đầu vào cho bộ giải mã khác, lặp lại cho đến khi đạt được những quyết định đáng tin cậy.
Các khái niệm mã Turbo
Để đi đến tìm hiểu cấu trúc của mã Turbo và bộ giải lặp chúng ta xem xét các khái niệm toán học liên quan
2.1 Các kháI niệm về mã turbo
2.1.1 Các hàm hợp lệ ( LIKELIHOOD FUNTIONS)
Định lý Bayes cung cấp các thiết lập toán học quan trọng để kiểm chứng giả thuyết, đặc biệt trong lĩnh vực kỹ nghệ thông tin liên lạc Các ứng dụng liên quan đến kênh AWGN (Additive White Gaussian Noise) đang thu hút sự quan tâm lớn Tác dụng nổi bật của định lý Bayes là mô tả xác suất hậu nghiệm (APP - a posteriori probability) của một quyết định, liên quan đến biến ngẫu nhiên liên tục x.
Trong bài viết này, chúng ta đề cập đến APP, với d=i thể hiện dữ liệu tín hiệu thứ i từ tập hợp M lớp Hàm mật độ xác suất (pdf) của tín hiệu nhiễu kết hợp với dữ liệu liên tục nhận được x, dựa trên lớp tín hiệu d=i, được gọi là xác suất tiền nghiệm (a priori probability) cho lớp tín hiệu thứ i Giá trị x là một quan sát ngẫu nhiên hoặc thống kê kiểm tra từ bộ giải điều chế hoặc bộ vi xử lý khác Do đó, p(x) là hàm mật độ xác suất pdf của tín hiệu nhận x, tạo ra thống kê kiểm tra trên toàn bộ không gian các lớp tín hiệu.
Phương trình (2.1) cho phép quan sát đặc biệt rằng p(x) là hệ số chia được sinh ra bằng cách lấy trung bình qua tất cả các lớp của không gian Ký hiệu p được dùng để chỉ hàm mật độ xác suất (pdf) của biến ngẫu nhiên liên tục, trong khi ký hiệu P biểu thị xác suất, bao gồm xác suất tiền nghiệm và APP Việc xác định APP của tín hiệu là một phần quan trọng trong phân tích này.
Kết quả từ phương trình (2.1) có thể được coi là kết quả của thí nghiệm Trước khi tiến hành thí nghiệm, thường có một xác suất tiền nghiệm P(d=i) có thể tồn tại hoặc được ước lượng Thí nghiệm sử dụng phương trình (2.1) để tính toán APP, được xem như là quá trình "lọc lựa tinh tế" thông tin trước đó về dữ liệu, diễn ra trong quá trình kiểm tra tín hiệu nhận x.
2.1.2 Tr-ờng hợp hai lớp tín hiệu Đối với các phần tử logic nhị phân 1 và 0 được biểu diễn bằng các mức điện thế điện tử tương ứng là +1 và -1 Biến d được sử dụng để biểu diễn bit dữ liệu được phát, mỗi khi xuất hiện, nó xem như là điện thế hoặc phần tử logic Đôi khi theo một cách định dạng là tiện lợi hơn định dạng khác ; chúng ta có thể nhận ra sự khác nhau trong từng hoàn cảnh Bít nhị phân 0 ( hay mức điện thế -1) là phần tử không trong phép cộng Đối với việc phát tín hiệu qua kênh AWGN, Hình (1.10) chỉ ra hàm pdf có điều kiện, ám chỉ như là hàm hợp lệ (likelihood funtions) Hàm bên phải chỉ rõ hàm pdf của biến ngẫu nhiên x với điều kiện d=+1 đang được phát Hàm bên trái giảI thích tương tự,là hàm pdf của biến ngẫu nhiên x với điều kiện đang được phát Hoành độ biểu diễn toàn bộ miền giá trị có thể của thống kê kiểm tra x được tạo tại bộ nhận Trên hình (1.10), với giá trị quy định được biết, ở đây chỉ số chỉ ra khoảng thời gian quan sát thứ k Một đường thẳng từ cắt hai hàm hợp lệ sinh ra 2 giá trị hợp lệ và
Quyết định cứng, hay còn gọi là hợp lệ tối đa, đóng vai trò quan trọng trong việc lựa chọn dữ liệu hoặc kết hợp giá trị lớn giữa hai giá trị bị chặn Đối với mỗi bít dữ liệu tại thời điểm k, việc giải mã sẽ diễn ra nếu bít đó nằm bên phải của đường quyết định, ngược lại sẽ là quá trình giải mã khác.
Sơ đồ hàm hợp lệ được biểu diễn như sau:
Sv Hoàng Hữu Hiệp Trang 27
Sv Hoàng Hữu Hiệp Trang 28
2.1.3 Tỷ số log- hợp lệ ( LOG-LIKELIHOOD RATIO)
Bằng cách áp dụng thuật toán tỷ số hợp lệ từ phương trình (2.3) đến phương trình (2.5), chúng ta phát triển một metric quan trọng gọi là tỷ số log-hợp lệ (Log-Likelihood Ratio - LLR) Tỷ số này là một số thực, phản ánh quyết định cứng của bộ tách sóng (detector), và được định nghĩa cụ thể trong nghiên cứu.
Trong phương trình (2.8), L(x | d) đại diện cho tỷ lệ log-likelihood (LLR) của thống kê kiểm tra x, được tạo ra từ phép đo của lối ra kênh x trong điều kiện có thể đã phát bít dữ liệu d Đồng thời, L(d) là LLR tiền nghiệm của bít dữ liệu d.
Ký hiệu trong đoạn này nhấn mạnh rằng toán hạng LLR là kết quả từ phép đo kênh truyền tại bộ nhận Các phương trình từ (2.1) đến (2.9) được phát triển với giả định chỉ có một bộ tách sóng dữ liệu Tiếp theo, việc giới thiệu bộ giải mã sẽ mang lại lợi ích cho quá trình ra quyết định Đối với mã hệ thống, đầu ra LLR (đầu ra mềm) của bộ giải mã được xác định như sau:
Sv Hoàng Hữu Hiệp Trang 29
LLR của bít dữ liệu tại lối ra của bộ giải điều chế, hay còn gọi là lối vào của bộ giải mã, được gọi là LLR ngoại lai, thể hiện thông tin bổ sung từ quá trình giải mã Chuỗi lối ra của bộ giải mã bao gồm các giá trị đại diện cho bít dữ liệu và các bít chẵn lẻ Theo phương trình (3.9) và (3.10), lối ra LLR của bộ giải mã có thể được diễn đạt như sau:
Phương trình (2.11) chỉ ra rằng đầu ra LLR của bộ giải mã hệ thống được cấu thành từ ba yếu tố: một phép đo kênh truyền, thông tin tiền nghiệm về dữ liệu, và LLR ngoại lai từ bộ giải mã Mỗi LLR riêng lẻ có thể được cộng vào phương trình (3.11) do ba số hạng này là độc lập thống kê Đầu ra của bộ giải mã mềm là một số thực, cung cấp quyết định cứng với giá trị dương tương ứng với d=+1 và giá trị âm cho quyết định ngược lại, thể hiện độ tin cậy của quyết định đó Thông thường, giá trị LLR trong quá trình giải mã có cùng ký hiệu và hoạt động để cải thiện độ tin cậy của quyết định.
3.1.4 Nguyên lý của giải mã lặp
Trong bộ nhận thông tin, bộ giải điều chế được thiết kế để tạo ra các quyết định mềm, sau đó truyền đến bộ giải mã Việc cải thiện hiệu suất lỗi khi sử dụng hệ thống với quyết định mềm so với quyết định cứng có thể đạt được mức tăng gần 2dB trong AWGN Bộ giải mã được gọi là bộ giải mã lối vào - mềm / lối ra - mềm, vì quá trình giải mã cuối cùng phải chuyển đổi thành các bit (các quyết định cứng) Đối với mã Turbo, việc sử dụng hai hoặc nhiều mã thành phần yêu cầu bộ giải mã lối vào - mềm / lối ra - mềm, vì bộ giải mã lối vào cho bộ cứng không phù hợp và có thể làm giảm chất lượng hệ thống Do đó, để tối ưu hóa việc giải mã các mã Turbo, việc sử dụng bộ giải mã lối vào - mềm / lối ra - mềm là cần thiết.
Trong bộ giải mã lối vào -mềm / lối ra- mềm, dữ liệu nhị phân được giả định có khả năng như nhau, dẫn đến giá trị LLR tiền nghiệm ban đầu L(d) = 0 Giá trị LLR kênh truyền được tính bằng logarit của tỷ số giá trị và cho quan sát riêng biệt x Lối ra của bộ giải mã tạo thành LLR từ bộ tách sóng và lối ra LLR ngoại lai, thể hiện thông tin vay mượn từ quá trình giải mã Việc giải mã lặp, hợp lệ ngoại lai, được phản hồi về lối vào của bộ giải mã thành phần khác, nhằm tạo ra sự lọc lựa tinh tế xác suất tiền nghiệm của dữ liệu cho bộ lặp tiếp theo.
Ta sẽ minh họa bộ SISO cho mã hệ thống :
Hình 2.2 Bộ giải mã lối vào – mềm / lối ra – mềm
Phản hồi cho việc lặp tiếp theo giá trị tiền nghiêm
Bộ giải mã Lối vào – mềm Lồi ra – mềm
Bộ tách sóng giá trị
LLR tiền nghiệm giá tri ngoại lai ra
Giá trị LLR ra giá trị Vào kênh giá trị ra tiền nghiệm
Sv Hoàng Hữu Hiệp Trang 31
Đại số Log-Hợp lệ
Để giải thích sự phản hồi lặp tốt nhất của lối ra bộ giải mã mềm, chúng ta sử dụng khái niệm Đại số Log-hợp lệ Đối với dữ liệu độc lập thống kê d, tổng của hai tỷ số log-hợp lệ (LLRs) được định nghĩa như sau:
Ta sẽ chứng minh công thức (2.12) Thật vậy, xuất phát từ định nghĩa về chúng ta có:
Mặt khác : Ở đây và là các bít dữ liệu độc lập thống kê biểu diễn các thế +1 và -
1 tương ứng với mức lôgíc 1 và 0 Theo cách này, thì ⊕ sinh ra -1 khi
Sv Hoàng Hữu Hiệp Trang 32 và có các giá trị như nhau (cùng là +1 hay -1) và sinh ra +1 khi và có giá trị khác nhau
Trong bài viết này, chúng ta sẽ khám phá ý nghĩa của các ký hiệu trong công thức, trong đó logarit tự nhiên được sử dụng và hàm sgn(.) biểu diễn "hàm dấu" Phương trình (2.12) bao gồm ba phép cộng, với dấu + dùng cho phép cộng thông thường, dấu ⊕ chỉ tổng modul-2 của dữ liệu nhị phân Dấu chỉ phép cộng log-hợp lệ tương đương với phép toán trong phương trình (2.12), trong đó tổng của hai LLRs được định nghĩa là LLR của tổng modul-2 của các bít dữ liệu độc lập thống kê cơ sở Cuối cùng, phương trình (2.13) gần đúng với phương trình (2.12) và sẽ rất hữu ích trong các ví dụ số mà chúng ta sẽ xem xét sau này.
Tổng cuả LLRs, như được mô tả ở phương trình (2.12) hay (2.13) sinh ra mốt số kết quả đáng quan tâm sau khi mà LLRs là rất lớn hay rất nhỏ:
2.Giải mã hàng ngang và sử dụng phương trình (2.11), tạo ra LLR ngoại lai ngang
3 Đặt cho việc giải mã dọc ở bước 4
4 Giải mã dọc, và sử dụng phương trình (2.11), chúng ta tạo ra LLR ngoại lai dọc
Sv Hoàng Hữu Hiệp Trang 33
5 Đặt cho việc giải mã dọc ở bước 2 Rồi lặp bước 2 tới bước 5
6 Sau khi lặp đủ ( Lặp từ bước 2 tới 5) để tạo ra quyết định đáng tin cậy, chuyển tới bước 7
Phần tiếp theo, ta sẽ lấy ví dụ để minh hoạ ứng dụng của thuật giải đối với mã nhân đơn giản
2.2.1 Mã chẵn lẻ - đơn hai chiều(Two–Dimensional Single – Parity Code)
Trong bộ mã hoá, mối liên hệ giữa các bít dữ liệu và bít chẵn lẻ được thể hiện qua các số nhị phân (1,0) trong từng hàng hoặc cột riêng biệt.
Dấu ⊕ đại diện cho phép cộng modul-2, trong đó các bít phát được biểu diễn dưới dạng chuỗi Tại bộ nhận, bít nhiễu được thể hiện bởi chuỗi, với mỗi bit dữ liệu nhận và mỗi bít chẵn lẻ, trong khi n biểu diễn phân phối nhiễu, độc lập với các biến khác Các chỉ số i và j xác định vị trí trong mảng lối ra bộ mã hoá, nhưng chúng ta cũng có thể biểu diễn chuỗi nhận dưới dạng với k là chỉ số thời gian Việc sử dụng i và j giúp tập trung vào mối liên hệ vị trí trong mã nhân, trong khi k tập trung vào khía cạnh tín hiệu liên quan đến thời gian Sử dụng các mối quan hệ từ phương trình 2.7 đến 2.9 và giả định kiểu nhiễu AWGN, LLR cho phép đo kênh truyền của tín hiệu nhận được tại thời điểm k được viết ra.
Sv Hoàng Hữu Hiệp Trang 34
Chúng ta đã khám phá lý thuyết về tỷ số log-hợp lệ (LLR), khái niệm cốt lõi cho việc phát triển sơ đồ cấu trúc giải mã Turbo Để minh họa hiệu quả của thuật toán, chúng ta sẽ xem xét ví dụ về mã nhân, được xây dựng dựa trên không gian hai chiều.
Mã hai chiều (mã nhân) được mô tả như một mảng dữ liệu với hàng và cột, trong đó mỗi hàng chứa các từ mã được tạo bởi bít dữ liệu và bít chẵn lẻ, tương tự như các cột Cấu trúc này có tỷ lệ khác nhau được ký hiệu là d cho dữ liệu, h cho chẵn lẻ theo hàng và c cho chẵn lẻ theo cột Kết quả là, khối bít dữ liệu được mã hóa bằng hai loại mã: mã ngang (horizontal code) và mã dọc (vertical code).
Trong hình 2.4, các khối được đặt tên chứa các giá trị LLR ngoại lai từ các bước giải mã ngang và dọc Các mã sửa lỗi thường cải thiện chất lượng, và LLRs ngoại lai phản ánh mức độ cải thiện này Mã nhân là một ví dụ đơn giản về mã kề, với cấu trúc bao gồm hai bước mã hóa riêng biệt – ngang và dọc Quyết định giải mã cuối cùng cho mỗi bít và điểm mấu chốt đáng tin cậy của nó được thể hiện qua giá trị LLR, như chỉ ra ở phương trình 2.11 Thuật toán này sinh ra LLRs ngoại lai (ngang và dọc) và có thể mô tả quy trình giải mã lặp, bắt đầu với LLR tiền nghiệm L(d) = 0, trừ khi xác suất tiền nghiệm của các bít dữ liệu là không đồng đều.
Sv Hoàng Hữu Hiệp Trang 35
Hình 2.4 Tích nhân hai chiều
Hình 2.5 Ví dụ tích nhân
(2.17b) cột cột hàng hàng Ngoại lai ngang d
Hình 2.5a Các chỉ số phân lối ra bộ mã hóa
Hình 2.5.b Tỷ số log-hợp lệ lối vào bộ giải mã
Sv Hoàng Hữu Hiệp Trang 36
(2.17c) Thông thường thì nhiễu có varian , do đó ta có
Ta xét chuỗi dữ liệu là các chữ số nhị phân 1 0 0 1
Bằng cách sử dụng Phương trình (2.15), và chuỗi chẵn lẻ lần lượt là nhận các giá trị nhị phân là 1 1 1 1
Do đó, chuỗi phát là :
Khi các bít dữ liệu được diễn đạt dưới giá trị là thế lưỡng cực +1 và -1 tương ứng với các mức logic 1 và 0, chuỗi phát sẽ là :
Giả sử rằng nhiễu phát thay đổi chưỗi dữ liệu chẵn lẻ thành chuỗi nhận được là :
(2.20) Ở đây các phần tử của ,{ } tương ứng vị trí bít dữ liệu và chẵn lẻ
{ },{ } được phát Do đó, trong thuật ngữ ký hiệu vị trí, chuỗi nhận có thể được ký hiệu như sau :
Các giá trị được chỉ rõ trong hình 3.5b là các phép đo đầu vào của bộ giải mã, cho thấy xác suất tiền nghiệm đối với dữ liệu phát Nếu quyết định cứng dựa trên các giá trị này, quá trình có thể dẫn đến lỗi, do việc sắp xếp không chính xác bít 1.
Chúng ta đã xác định giá trị của phép đo kênh truyền Lc(x) và mức độ nhiễu, và điều quan trọng cuối cùng là tính toán giá trị LLR ngoại lai theo cả hai phương ngang và dọc.
2.2.3 Hợp lệ ngoại lai (Extrinsic Likelihood) Đối với ví dụ mã nhân trong hình 2.5, chúng ta sử dụng Phương trình (2.11) để mô tả lối ra mềm đối với tín hiệu nhận tương ứng với dữ liệu :
Sv Hoàng Hữu Hiệp Trang 37
Số hạng LLR ngoại lai được phân phối bởi mã, kết hợp với việc thu thập dữ liệu và xác suất tiền nghiệm Kết quả tổng quát của lối ra mềm đối với tín hiệu nhận được tương ứng với dữ liệu là rất quan trọng trong việc xử lý tín hiệu.
(2.23) Ở đây , , là các phép đo LLR kênh truyền của việc thu tương ứng , , là LLRs của xác suất tiền nghiệm của và tương ứng
Và: là phân phối ngoại lại từ các mã Giả sử các tín hiệu có khả năng như nhau, lối ra mềm được mô tả bởi bộ tách sóng phép đo LLR, cho việc thu dữ liệu tương ứng và giá trị dư.
LLR ngoại lai được vay mượn từ dữ liệu và chẵn lẻ, cung cấp thông tin về dữ liệu theo các phương trình (2.15) và (2.16) Tiếp theo, chúng ta sẽ tiến hành tính toán các giá trị LLR ngoại lai.
2.2.4 Tính toán hợp lệ ngoại lai
Vẫn xét ví dụ trong hình 3.5, ta sẽ tính toán và :
Các giá trị LLR trong hình 2.5 được sử dụng trong các phương trình (2.24) đến (2.27) Giả sử các tín hiệu có khả năng như nhau, giá trị L(d) ban đầu được thiết lập là 0, từ đó tạo ra kết quả mong muốn.
Phép cộng log-hợp lệ đã được tính toán gần đúng trong phương trình (2.13) Tiếp theo, chúng ta thực hiện tính toán hàng dọc đầu tiên bằng cách sử dụng biểu thức từ phương trình (2.24) đến (2.27) Các giá trị của L(d) có thể được tính toán nhanh chóng bằng cách vay mượn các giá trị mới từ phép tính ngang đầu tiên, chỉ cần sử dụng phương trình (2.28) đến (2.31) Kết quả của phép lặp đầu tiên trong hai bước giải mã (ngang và dọc) được trình bày như sau.
Cấu trúc mã Turbo và bộ giải lặp Thuật toán giải mã Turbo
Giới thiệu
Mã Turbo, được giới thiệu lần đầu vào năm 1993, bao gồm hai mã chập hệ thống đệ qui (RSCC) kết nối song song, tích hợp bộ xáo trộn và thuật toán giải mã lặp Các thuật toán giải mã Turbo thường có đặc điểm chung, kết hợp giữa giải mã lặp và các kiểu giải mã thành phần với lối vào mềm, lối ra mềm (SISO) Hai kiểu giải mã thành phần phổ biến cho mã Turbo là giải mã ước lượng theo chuỗi (SOVA - Soft Output Viterbi Algorithm) và thuật toán ước lượng theo ký hiệu (MAP - Maximum a posteriori), cùng với những cải tiến của chúng.
Thuật toán giải mã VA và MAP có sự khác biệt rõ rệt về tiêu chí tối ưu Cụ thể, thuật toán giải mã VA tập trung vào việc tìm kiếm chuỗi trạng thái có xác suất cao nhất tương ứng với chuỗi tín hiệu thu được.
Thuật toán giải mã MAP và thuật toán VA có sự khác biệt quan trọng trong cách xác định trạng thái Trong khi thuật toán VA yêu cầu các trạng thái được ước lượng phải kết nối theo dạng tuyến qua lưới, thì thuật toán MAP không cần điều này, cho phép ước lượng các trạng thái một cách linh hoạt hơn mà không bị ràng buộc bởi cấu trúc tuyến tính.
Thuật toán VA trong các hệ thống truyền dẫn số giúp giảm thiểu xác suất lỗi khung (FER), trong khi thuật toán MAP tối ưu hóa xác suất lỗi bit (BER) Cấu trúc mã Turbo, với hai bộ mã chập thành phần kết nối song song, cho phép quá trình giải mã được chia thành hai giai đoạn khác nhau.
Sv Hoàng Hữu Hiệp đề cập đến việc ước lượng chuỗi Mardkov, trong đó mỗi quá trình tương ứng với một bộ mã thành phần Hai quá trình này được thực hiện trên cùng một chuỗi dữ liệu, cho phép chia sẻ thông tin lặp giữa chúng Đầu ra của bộ giải mã này có thể được sử dụng làm thông tin biết trước cho bộ giải mã kia Nếu đầu ra là quyết định cứng (sử dụng bộ lượng tử), hiệu quả chia sẻ thông tin sẽ không cao Ngược lại, nếu đầu ra là ước lượng mềm, chất lượng có thể được cải thiện đáng kể.
Ta có thể mô tả sơ qua về thuật toán MAP với quá trình giải mã SISO :
Theo công thức xác suất thành phần, xác suất hậu nghiệm được biểu diễn dưới dạng hàm pdf, trong khi f( ) đại diện cho xác suất tiền nghiệm Thông thường, chúng ta giả định rằng tại lối vào ban đầu, f( ) tương đương với một giá trị cụ thể.
Do đó xác định tương đương với xác định :
Thay giá trị của y vào hàm ta tính được từ đó
Và thấy rằng lúc này khi đó sẽ được đưa tới lối vào của bộ giải mã SISO khác và nó đóng vai trò là thông tin ngoại lai
Mã Turbo đạt chất lượng kiểm soát lỗi cao, chỉ cách giới hạn Shannon vài phần mười dB Sự cải thiện đột phá này dựa trên các kết quả của Golay từ năm 1950, dẫn đến việc nâng cao khoảng 2dB nhờ vào kỹ thuật điều khiển trong mã Turbo Thành tựu này được khuyến nghị áp dụng cho hệ thống thông tin vô tuyến, đáp ứng nhu cầu ngày càng tăng về băng thông cho dịch vụ truyền số liệu.
Sv Hoàng Hữu Hiệp Trang 43
Như vậy, Mã Turbo có hai phần quan trọng Đó là, mã xoắn kết nối song song và giải mã lặp.
Cấu trúc bộ mã hóa và giải mã
Mã Turbo có cấu trúc gồm ít nhất hai mã RSC được kết nối song song kết hợp với bộ xáo trộn và thuật toán giải mã SISO:
Hình 3.1 Sơ đồ má hóa mã Turbo
Chuỗi dữ liệu hệ thống đầu vào S được đưa vào bộ mã chập RSC1 để tạo ra các bit kiểm tra, sau đó được xáo trộn và tiếp tục tới RSC2 Các bit hệ thống và bit kiểm tra được xử lý qua bộ lược bỏ và ghép kênh nhằm giảm bớt số lượng bit kiểm tra, từ đó tăng tốc độ mã hóa Nếu loại bỏ xen kẽ, tốc độ mã tổng cộng đạt 1/2; nếu không loại bỏ, tốc độ chỉ còn 1/3 Tín hiệu đầu ra từ bộ mã hóa được điều chế và truyền qua kênh Hình 3.2 minh họa sơ đồ mã RSC, trong đó chuỗi đầu vào được đưa ngay tới đầu ra gọi là chuỗi bít hệ thống, và sơ đồ trạng thái cùng sơ đồ lưới được thể hiện trong hình 3.3.
Sv Hoàng Hữu Hiệp Trang 44
Hình 3.3 Sơ đồ trạng thái(a) và sơ đồ lưới của mã chập (b)
Trong bộ giải mã, bộ tách kênh có nhiệm vụ tách các bít hệ thống và kiểm tra tương ứng với các bộ giải mã SISO Bộ SISO là thiết bị giải mã với đầu vào và đầu ra mềm, trong đó đầu vào bao gồm độ tin cậy kênh và thông tin tiền nghiệm Đầu ra của bộ SISO gồm thông tin hậu nghiệm L(d) và thông tin hệ thống dư, hay còn gọi là thông tin ngoại lai (extrinsic information) Vấn đề này đã được thảo luận chi tiết trong chương 2.
Do đầu phát sử dụng bộ xáo trộn, bộ giải mã cũng tích hợp các bộ xáo trộn tương tự Bộ giải mã áp dụng thuật giải mã lặp, giúp tận dụng thông tin dư để làm thông tin tiền nghiệm cho quá trình giải mã.
Để nâng cao chất lượng giải mã, người ta tăng số lần lặp n, có thể quy định trước hoặc tự động dừng dựa trên nhiều biện pháp đánh giá.
Do vậy bộ giải mã lặp có cấu trúc như sau :
Hình 3.4 Sơ đồ giải mã lặp
Chuỗi mã từ bộ ghép kênh sẽ được truyền đến bộ phân kênh qua kênh truyền Tại lối ra của bộ phân kênh, sẽ có bit hệ thống và hai chuỗi bít kiểm tra (bít được mã hóa), tuy nhiên, các chuỗi bít này có thể bị lỗi do ảnh hưởng từ kênh truyền.
Chuỗi bít hệ thống thu được
Chuỗi bít kiểm tra của mã thứ 1 thu được
Bộ giải xáo trộn Đầu ra ngoài từ bộ giải mã thứ 1
Bộ xáo trộn Đầu ra ngoài từ bộ giải mã 2
Sv Hoàng Hữu Hiệp Trang 46 ảnh hường của kênh truyền Giả sử chuối bít hệ thống đầu vào là , hai chuỗi bit mã hóa là và
Chuỗi bit hệ thống và kiểm tra thu được qua kênh truyền tương ứng là
Theo hình 3.4, thí nghiệm đầu tiên cho chuỗi bít hệ thống qua bộ giải mã 1 cho ra chuỗi bít giả sử Cả hai chuỗi này được đưa qua bộ xáo trộn và sau đó kết hợp với chuỗi đưa vào bộ giải mã 2, dẫn đến đầu ra của bộ giải mã là chuỗi Để thu được chuỗi thông tin của hệ thống ban đầu, cần phải cho chuỗi qua bộ giải xáo trộn.
Trong sơ đồ trên, các bộ giải mã chính là bộ giải mã SISO, nơi thông tin ngoại lai được đưa vào để thực hiện quá trình lặp Quá trình lặp này tiếp tục cho đến khi xác suất lỗi bít của chuỗi hệ thống đạt mức cực tiểu, tương đương với việc khôi phục thành công chuỗi đầu vào.
Thuật toán giải mã mã Turbo
Phần này sẽ trình bày hai thuật toán giải mã Turbo đó là :
Thuật toán giải mã MAP Thuật toán giải mã SOVA
3.3.1 Tổng quan về các thuật toán giải mã
Chất lượng của mã Turbo không chỉ phụ thuộc vào việc kết nối các bộ mã tích chập và sử dụng các bộ chèn đặc biệt, mà còn vào quy trình giải mã mềm lặp đi lặp lại, với độ phức tạp tăng tuyến tính theo kích thước khung Mã PCCC có cấu trúc mã hóa kết nối song song, nhưng quá trình giải mã lại dựa vào sơ đồ kết nối nối tiếp, cho phép chia sẻ thông tin giữa các bộ giải mã Điều này giúp tăng cường chất lượng giải mã nhờ vào khả năng trao đổi và khai thác thông tin nhiều lần qua các vòng lặp.
Trong quá trình giải mã thông tin mềm giữa các bộ giải mã thành phần, Forney đã chứng minh rằng đầu ra mềm tối ưu cho bộ giải mã là xác suất a posteriori (APP), thể hiện xác suất của
Để giải mã hiệu quả các mã TC, cần tìm hiểu sâu về các thuật toán giải mã và phát triển phương pháp tối ưu nhằm đảm bảo chất lượng không bị giảm sút Sự phức tạp trong các mã này chủ yếu đến từ bộ giải mã lặp, do đó việc nắm vững kiến thức về giải mã là rất quan trọng.
Phát triển các thuật toán giải mã hiệu quả là ưu tiên hàng đầu trong việc cải tiến mã TC Hình 3.5 cung cấp cái nhìn tổng quan về các họ thuật toán giải mã dựa trên sơ đồ trellis.
Hình 3.5 : Tổng quan các thuật toán giải mã
Họ thuật toán MAP, hay còn gọi là thuật toán BCJR (Bahl-Cocke-Jelinek-Raviv), tập trung vào việc giải mã khả năng xảy ra lớn nhất (ML) để giảm tối đa xác suất lỗi bit Trong họ này, các thuật toán symbol-by-symbol MAP là phương pháp tối ưu để tính toán thông tin APP, mặc dù có độ phức tạp cao Ngoài ra, có hai loại thuật toán gần đúng là Log-MAP và Max-log-MAP, giúp giảm độ phức tạp trong khi vẫn duy trì chất lượng giải mã gần tương đương Một họ thuật toán giải mã khác dựa trên việc sửa đổi thuật toán Viterbi (VA) với việc sử dụng thêm metric bổ sung, vì VA truyền thống không tính đến thông tin APP.
Các thuật toán giải mã dựa trên Trellis
Thuật toán giải mã trong lĩnh vực thông tin bao gồm hai phương pháp chính: thuật toán Viterbi ngõ ra mềm (SOVA) và thuật toán Viterbi ngõ ra liệt kê nối tiếp (SLVA) Ngoài ra, còn tồn tại một số kỹ thuật giải mã lặp khác, giúp cải thiện hiệu quả giải mã dữ liệu.
Mặc dù cả hai thuật toán VA và MAP đều dựa trên sơ đồ trellis, nhưng chúng có mục tiêu khác nhau; VA tập trung vào việc giải mã trellis ML để giảm thiểu xác suất lỗi từ mã, trong khi MAP nhằm tối đa hóa khả năng giảm xác suất lỗi bit MAP là phương pháp tối ưu để ước đoán các trạng thái và ngõ ra của quá trình Markov trong điều kiện nhiễu trắng Tuy nhiên, ứng dụng thực tế của MAP gặp khó khăn do các vấ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 như các phép toán phức tạp trong quá trình tính toán.
Log-MAP là một biến thể của MAP với chất lượng tương đương, nhưng dễ ứng dụng hơn trong thực tế Phương pháp này hoạt động hoàn toàn trong miền logarit, giúp chuyển đổi phép nhân thành phép cộng, từ đó tạo ra một hàm dễ thực hiện hơn.
Thuật toán Max-Log-MAP và SOVA là những phương pháp gần tối ưu nhằm giảm bớt độ phức tạp tính toán, nhưng chất lượng của chúng trong kênh nhiễu Gauss không cao, đặc biệt là ở vùng SNR thấp Max-Log-MAP tương tự như Log-MAP, với điểm khác biệt duy nhất là sử dụng một hàm đơn giản hơn Nghiên cứu cho thấy Max-Log-MAP giảm chất lượng khoảng 0.5 dB so với các thuật toán MAP và Log-MAP trong kênh nhiễu Gauss.
Các thuật toán giải mã MAP/Log-MAP và Max-Log-MAP có sự khác biệt trong cách thực hiện, điều này ảnh hưởng đến chất lượng đầu ra Trong mỗi bước thứ k của trellis, MAP/Log-MAP phân chia các đường ra thành hai tập: một tập cho bit thông tin ngõ vào bằng 1 và một tập cho bit thông tin ngõ vào bằng 0, sau đó tính tỉ số xác suất log (LLR) cho hai tập này Ngược lại, Max-Log-MAP tìm kiếm trong tất cả các đường để chọn ra đường có khả năng cao nhất cho bit thông tin ngõ vào bằng 0, với ngõ ra mềm là LLR của hai đường này.
Sv Hoàng Hữu Hiệp Trang 49
SOVA bổ sung cho VA những giá trị thực và lưu giữ, sử dụng thuật toán tìm kiếm đường "tồn tại" và một đường cạnh tranh Thuật toán này áp dụng cùng một loại metric và có quyết định cứng như Max-log-MAP Mặc dù SOVA luôn tìm kiếm đường có khả năng lớn nhất, nhưng đường cạnh tranh tốt nhất có thể bị loại bỏ trước khi được kết hợp.
Kết quả cho thấy rằng ngõ ra mềm của bộ giải mã SOVA có thể không chính xác so với ngõ ra mềm của Max-Log-MAP, dẫn đến chất lượng giải mã của SOVA kém hơn so với Max-Log-MAP.
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
Bộ giải mã là sự kết hợp của nhiều bộ giải mã, thường là hai bộ, hoạt động theo phương pháp giải mã lặp Chúng chủ yếu dựa vào giải thuật Viterbi, cung cấp giá trị ra mềm để so sánh và quyết định bit ngõ ra Một giải thuật khác đáng chú ý là Maximum A Posteriori (MAP) theo từng ký hiệu của Balh.
Sv Hoàng Hữu Hiệp Trang 50
Hình 3.6: Bộ giải mã lặp 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
Trong vòng lặp đầu tiên, thông tin a priori của bộ giải mã 1 được khởi tạo bằng 0 Sau khi bộ giải mã 1 cung cấp thông tin extrinsic, thông tin này sẽ được chuyển đến bộ giải mã 2, đóng vai trò là thông tin a priori cho bộ giải mã này Khi bộ giải mã 2 hoàn thành việc cung cấp thông tin extrinsic, vòng lặp kết thúc Thông tin extrinsic từ bộ giải mã 2 sẽ được gửi lại cho 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
Sv Hoàng Hữu Hiệp Trang 51
3.3.3 Nguyên lý của bộ giải mã Viterbi ngõ ra mềm Đối với các mã tích chập thì thuật toán Viterbi cho ra chuỗi ngõ ra ML Còn đối với các mã Turbo, chúng ta gặp hai trở ngại khi sử dụng các bộ giải mã Viterbi thông thường Thứ nhất, bộ giải mã Viterbi bên trong cho ra một loạt lỗi bit làm giảm đi việc thực hiện của các bộ giải mã Viterbi bên ngoài Thứ hai, bộ giải mã Viterbi bên trong cho ra các ngõ ra quyết định cứng làm ngăn chặn bộ giải mã Viterbi bên ngoài nhận được các lợi điểm của các quyết định mềm Cả hai trở ngại này có thể được khắc phục và việc thực hiện giải mã có thể được cải tiến một cách đáng kể nếu các bộ giải mã Viterbi có thể cho ra các giá trị tin cậy Các giá trị tin cậy này đi qua các bộ giải mã Viterbi tiếp sau đó và được xem như là một thông tin ưu tiên nhằm để cải tiến việc thực hiện giải mã Bộ giải mã Viterbi bổ sung này được tham khảo như là bộ giải mã thuật toán Viterbi ngõ ra mềm (SOVA)
Hình 3.7 Bộ giải mã SOVA kết nối
Giới thiệu
Trong lĩnh vực viễn thông, truyền thông không dây và truyền thông đa phương tiện gặp nhiều thách thức do những đặc điểm riêng biệt của chúng Mã Turbo đã được phát triển để giải quyết những khó khăn này, nhờ vào các tính năng vượt trội của nó Chương này sẽ trình bày các ứng dụng chung của mã Turbo trong hệ thống truyền thông, đồng thời đi sâu vào ứng dụng cụ thể trong hệ thống thông tin di động CDMA.
Các ứng dụng truyền thông đa phương tiện
Ứng dụng truyền thông đa phương tiện đang trở thành một chủ đề nghiên cứu mới mẻ Bài viết này sẽ đề cập đến những vấn đề chính mà người dùng gặp phải cũng như đưa ra một số đề xuất khi áp dụng công nghệ trong lĩnh vực này.
4.2.1 Các hạn chế khi ứng dụng mã Turbo vào truyền thông đa ph-ơng tiện
Các ứng dụng MMC gặp phải các ràng buộc sau đây :
Một trong những hạn chế lớn nhất của các ứng dụng MMC là thời gian truyền tải dữ liệu Chẳng hạn, trong ứng dụng Video-On-Demand (VOD), máy chủ VOD gửi dữ liệu phim đến người dùng, và mỗi khung dữ liệu chứa thông tin về một khung hình của bộ phim Nếu dữ liệu phim đến chậm, người xem sẽ cảm thấy chất lượng phim kém và trải nghiệm không được mượt mà Điều này cho thấy dữ liệu multimedia có bản chất thời gian thực, và sự chậm trễ trong việc truyền tải sẽ làm giảm giá trị thông tin Do đó, vấn đề thời gian là một rào cản lớn đối với các ứng dụng MMC.
Sv Hoàng Hữu Hiệp Trang 59
Để nâng cao chất lượng, TC cần có cấu trúc giải mã lặp, tuy nhiên, tính thời gian thực đặt ra thách thức trong việc cân bằng giữa thời gian đáp ứng và tỷ lệ lỗi bit (BER) Đặc điểm này cho thấy rằng các mã Turbo ứng dụng trong MMC không thể có số vòng lặp lớn.
4.2.1.2 Khối lượng dữ liệu lớn:
Một đặc điểm nổi bật của các ứng dụng MMC là việc xử lý các khối dữ liệu lớn, với chỉ một hình ảnh trong bộ phim có thể tiêu tốn hàng Megabit Kết hợp với yêu cầu xử lý thời gian thực, điều này đòi hỏi một lượng lớn dữ liệu phải được xử lý trong khoảng thời gian rất ngắn; nếu không, hệ thống có thể gặp lỗi Do đó, yêu cầu đối với các bộ mã hóa và giải mã Turbo trở nên rất cao.
Băng thông là một yếu tố quan trọng trong các ứng dụng thực tiễn hiện nay, khi mà nhu cầu truyền tải thông tin của con người ngày càng tăng nhưng nguồn tài nguyên băng thông lại có hạn Các ứng dụng MMC, như VOD sử dụng ATM, đòi hỏi băng thông lớn, nhưng khối lượng dữ liệu cần truyền cũng rất cao, dẫn đến việc băng thông trở thành một giới hạn cho hiệu suất của các ứng dụng này Do đó, việc sử dụng các mã tốc độ thấp sẽ không mang lại hiệu quả tối ưu.
4.2.1.4 Tìm hiểu các đặc tính của kênh truyền:
Các kênh truyền trong MMC có đặc tính đơn giản và ổn định hơn so với môi trường không dây, cho phép chúng ta nghiên cứu và đưa ra giải pháp phù hợp cho từng hệ thống Một trong những phương pháp hiệu quả để hiểu rõ đặc tính của kênh truyền là sử dụng mạng Bayes.
* Dữ liệu được truyền qua kênh truyền và sử dụng nhiều loại mô hình
Mã Turbo với các thông số khác nhau
* Ghi lại các giá trị BER
Thành lập một mạng Bayes với các nút đại diện cho độ chính xác của mã kết quả và các yếu tố ảnh hưởng Mối liên hệ trực tiếp giữa các yếu tố và độ chính xác của mã kết quả sẽ được thể hiện qua các đường nối trong mạng.
* Sử dụng các giá trị BER ghi nhận để thử cho mạng này
Sv Hoàng Hữu Hiệp Trang 60
* Tìm ra một tập hợp các thông số để tối ưu hóa các sự điều chỉnh
4.2.2 Các đề xuất khi ứng dụng mã Turbo vào truyền thông đa ph-ơng tiện
Một đặc điểm quan trọng của ứng dụng MCC là khối dữ liệu lớn, điều này gợi ý việc sử dụng kích thước khung lớn cho mã Turbo Kích thước khung lớn không chỉ đồng nghĩa với kích thước bộ chèn lớn mà còn giúp nâng cao đáng kể chất lượng của mã Turbo.
Với băng thông lớn của MMC, lượng dữ liệu khổng lồ có thể được truyền đi với độ trễ tối ưu Kích thước khung lớn giúp tăng độ lợi mã của TC thông qua nhiều phương pháp khác nhau.
* Giảm BER của kênh truyền
* Tăng thời gian đáp ứng bằng cách giảm số lần lặp giải mã hay sử dụng một số cải tiến giải mã trình bày dưới đây
4.2.2.2.Cải tiến quá trình giải mã:
Phương pháp giải mã động gói gọn trong hai điểm sau :
* Đặt một ngưỡng vòng lặp, tức là số lần lặp tối đa cho một khung
Số vòng lặp cần thiết để giải mã một khung phụ thuộc vào kết quả giải mã và không vượt quá ngưỡng nhất định Quá trình giải mã dừng lại khi khung không còn lỗi, với giá trị ước lượng của vòng lặp trước được so sánh với vòng lặp tiếp theo Nếu hai kết quả giống nhau, quá trình sẽ tiếp tục với khung kế tiếp Một số khung chỉ cần 2-3 vòng lặp để loại bỏ lỗi, trong khi những khung khác có nhiều lỗi hơn cần nhiều vòng lặp hơn để đạt chất lượng tốt Việc thay đổi số vòng lặp sẽ ảnh hưởng trực tiếp đến độ trễ và chất lượng Ví dụ, một hệ thống với số lần lặp cố định là 10, khi áp dụng phương pháp giải mã động với tối đa 15 vòng lặp, số vòng lặp trung bình có thể giảm xuống chỉ còn 5-7 vòng, giúp tiết kiệm thời gian đáng kể.
Sv Hoàng Hữu Hiệp cho rằng việc tăng thời gian đáp ứng của hệ thống là cần thiết Đặc biệt, trong những trường hợp khung có nhiều lỗi sai, việc giải mã lặp lại đến 15 vòng có thể mang lại chất lượng cao hơn so với việc chỉ lặp 10 vòng cố định.
Khối dữ liệu được truyền ngoài đặc tính là có số lượng bit lớn còn có một số đặc tính khác như :
Dữ liệu nhận không cần phải chính xác hoàn toàn, đặc biệt trong VOD, nơi mà lỗi ở một số khung hình có thể làm giảm chất lượng hình ảnh của bộ phim Tuy nhiên, nếu mức độ suy giảm này nhỏ, mắt người thường khó nhận ra hoặc dễ dàng chấp nhận Điều này cho thấy MMC có thể chấp nhận một mức lỗi nhất định trong quá trình truyền tải dữ liệu.
Các dữ liệu truyền có tầm quan trọng khác nhau; ví dụ, lỗi xảy ra ở vùng trung tâm của hình ảnh dễ dàng bị khách hàng phát hiện, trong khi lỗi ở vùng biên khó gây sự chú ý hơn Điều này cho thấy rằng các dữ liệu có tầm quan trọng thấp có thể chấp nhận mức lỗi cao hơn.
Các đặc tính này gợi ý về việc giải mã theo mức ưu tiên, trong đó các ứng dụng MMC sẽ bổ sung thông tin độ ưu tiên vào khung tùy thuộc vào tầm quan trọng của nó Khi bộ giải mã nhận chuỗi tin từ kênh truyền, nó sẽ tìm kiếm các từ mã Sau vòng lặp đầu tiên, bộ giải mã có thể xác định mức độ ưu tiên của khung và từ đó quyết định số vòng lặp hoặc phương pháp lặp phù hợp.
Theo mô hình giải mã này, lượng thời gian tiết kiệm được từ các khung có độ ưu tiên thấp sẽ được dùng để :
* Giảm BER của các khung có độ ưu tiên cao
* Tăng tốc độ đáp ứng của hệ thống nhờ giảm được số vòng lặp cho các khung có độ ưu tiên thấp
Mô hình này không cải thiện chất lượng trung bình của hệ thống, nhưng tỉ số BER có thể cao hơn hoặc thấp hơn so với các phương pháp giải mã khác Tuy nhiên, hiệu quả thực tế của nó vượt trội hơn hẳn, ví dụ như trong trường hợp cụ thể, hình ảnh nhận được sẽ được khách hàng đánh giá cao hơn.
Sv Hoàng Hữu Hiệp Trang 62
Các ứng dụng truyền thông không dây
Truyền thông không dây ngày càng phổ biến nhờ vào nhiều dịch vụ, kích thước thiết bị nhỏ gọn và giá cả hợp lý Mặc dù có sự tiến bộ đáng kể trong công nghệ, các giao thức như GSM và CDMA vẫn sử dụng các mô hình đơn giản như mã tích chập Tuy nhiên, với sự phát triển nhanh chóng, các mã chất lượng cao hơn như mã Turbo đang dần thay thế, đặc biệt trong các hệ thống thông tin thế hệ thứ ba như CDMA 200 Ngoài ra, truyền thông vệ tinh và thám hiểm vũ trụ cũng đang gia tăng cả về số lượng lẫn chất lượng, nhờ vào sự tiến bộ của khoa học và công nghệ Các hệ thống tiêu biểu trong lĩnh vực này bao gồm hệ thống định vị toàn cầu (GPS), hệ thống thông tin địa lý (GIS) và truyền hình vệ tinh.
4.3.1 Các hạn chế khi ứng dụng mã Turbo trong truyền thông không dây
4.3.1.1.Kênh truyền: Đối với nhiều kênh truyền thì mô hình kênh AWGN với nhiễu tĩnh rất thích hợp Tuy nhiên, trong môi trường không dây thì thường không tĩnh do có fading của các tín hiệu truyền Fading là hậu quả bản chất vật lý của kênh truyền với độ tăng biên độ là một quá trình ngẫu nhiên biễu diễn bởi một hàm mật độ xác suất và một hàm tự tương quan
Trong kênh AWGN, các bit chỉ bị tác động bởi nhiễu :
Y k = ax k + n k với n k là nhiễu và a = 1 đối với kênh AWGN
Trong fading Rayleigh, các từ mã chịu ảnh hưởng từ cả nhiễu và fading biến đổi theo thời gian trong kênh vô tuyến di động Mô hình được biểu diễn bằng phương trình y k = ax k + n k, trong đó n k là nhiễu và a là một biến ngẫu nhiên theo phân bố fading Rayleigh.
Phân bố fading Rayleigh thường được áp dụng để mô tả sự biến đổi theo thời gian của đường bao tín hiệu fading phẳng, cũng như đường bao của các thành phần riêng lẻ trong hệ thống đa đường Phân bố Rayleigh được định nghĩa thông qua hàm mật độ xác suất.
Sv Hoàng Hữu Hiệp Trang 63
Trong truyền thông không dây, kênh truyền thường gặp phải mức nhiễu cao hơn so với môi trường truyền dây, đòi hỏi các mã kênh phải có khả năng đối phó hiệu quả với mức nhiễu lớn Đặc biệt trong nghiên cứu vũ trụ, mức nhiễu càng gia tăng Để giảm thiểu hiện tượng fading, có nhiều phương pháp như trải phổ Khi kết hợp việc triệt fading với mã Turbo, chất lượng tín hiệu thu được sẽ đạt mức cao nhất.
Môi trường truyền thông luôn biến đổi, ví dụ như khi một thuê bao điện thoại di động vừa đàm thoại vừa di chuyển, khiến cho các thông số môi trường xung quanh cũng thay đổi Sự bất ổn định của kênh truyền làm cho việc tìm kiếm một loại mã thích hợp trở nên khó khăn Đây chính là lĩnh vực ứng dụng chủ yếu của TC nhờ vào các đặc tính ưu việt của nó.
4.3.1.2 Hạn chế về thời gian:
Truyền thông không dây, giống như các ứng dụng thời gian thực khác, có những yêu cầu về thời gian rất nghiêm ngặt, đặc biệt là đối với thông tin thoại Để đảm bảo tính khả dụng, thông tin thoại cần được truyền tải nhanh chóng; nếu không, nó sẽ trở nên vô giá trị.
Trong truyền thông không dây thì kích thước khung truyền không được lớn vì:
Khi sử dụng kênh truyền không tin cậy, tỉ lệ lỗi trong các khung lớn sẽ tăng cao Nếu khung bị mất hoặc không thể khôi phục, dữ liệu tại đầu nhận sẽ bị mất.
* Do đặc tính thời gian thực nên không chấp nhận độ trễ lớn khi truyền một khung có kích thước lớn
Sv Hoàng Hữu Hiệp Trang 64
Như vậy, với kích thước khung nhỏ thì không tận dụng được các đặc tính ưu việt của TC
Truyền thông không dây sử dụng một khoảng phổ tần số đã được phân chia, với mỗi công ty điện thoại di động được cấp một khu vực nhất định để cung cấp dịch vụ Do băng thông hạn chế, mô hình mã hóa cần tối ưu hóa bằng cách giảm thiểu bit dư thừa, yêu cầu tốc độ mã hóa cao.
Mã hóa turbo trong CDMA 2000
Bộ mã hóa turbo thực hiện việc mã hóa dữ liệu, bao gồm chỉ thị chất lượng khung (CRC) và hai bit dự trữ cho mã Turbo, đồng thời cộng chuỗi đuôi mã hóa đầu ra Tổng số bit của dữ liệu, bit chất lượng khung và bit dự trữ sẽ được tính toán.
Nturbo là một bộ mã hóa tạo ra các ký hiệu số liệu Nturbo/R cùng với 6/R ký hiệu đuôi ở đầu ra, trong đó R có thể là 1/2, 1/3 hoặc 1/4 Bộ mã hóa turbo sử dụng hai bộ mã hóa tích chập hệ thống đệ quy mắc song song, kết hợp với bộ chèn, trong đó bộ chèn đứng trước bộ mã tích chập thứ hai Hai mã tích chập đệ quy này được gọi là các mã thành phần của mã Turbo Các đầu ra của các bộ mã hóa thành phần được trích bỏ và lặp lại để đạt được Nturbo.
4.4.1 Các bộ mã hóa turbo tỷ lệ 1/2, 1/3, 1/4 :
Một mã thành phần chung được sử dụng cho các mã Turbo tỷ lệ 1/2, 1/3, và 1/4 Hàm truyền đạt của mã này có dạng sau:
Trong đó: d(D) = 1 + D 2 + D 3 , n 0 (D) = 1+D + D 3 và n 1 (D) = 1 +D + D 2 + D 3 bộ tạo mã Turbo này sẽ tạo ra chuỗi ký hiệu đầu ra giống như chuỗi được tạo ra bởi bộ mã cho ở hình 4.1
Sv Hoàng Hữu Hiệp Trang 65
Bộ tạo mã thành phần 1 X
Bộ mã hõa thành phần 2 Điều khiển Điều khiển
Chuyển mạch vào vị trí trên và dịch từng bit của dữ liệu Nturbo; sau đó, chuyển mạch vào vị trí dưới và xử lý từng bit đuôi trong ba bit đuôi của bộ mã hóa thành phần.
1, sau đó không ngừng dịch cho ba bit đuôi của bộ lập, mã thành phần 2
Chuyển mạch vào vị trí trên và dịch từng bit của
Nturbo bit số liệu được chuyển đổi sang vị trí dưới, với từng bit đuôi trong ba bit đuôi của bộ mã hóa thành phần 1 Sau đó, quá trình này tiếp tục dịch cho ba bit đuôi của bộ lập mã thành phần 2.
Nturbo bit thôn g tin vào
Trích bỏ ký hiệu và lặp
Sv Hoàng Hữu Hiệp Trang 66
Các thanh ghi dịch trong bộ mã hóa thành phần bắt đầu với trạng thái "0" Sau đó, các bit được dịch vào theo vị trí của các chuyển mạch như trong hình vẽ, với mạch thay đổi chu kỳ cho từng bit số liệu và bit đuôi.
Các ký hiệu ra từ số liệu mã hóa được tạo ra bằng cách dịch các bộ mã hóa thành phần Nturbo khi các khóa ở vị trí trên, và các đầu ra được trích bỏ theo quy định ở bảng 4.1 Ký hiệu „0‟ trong mẫu trích bỏ có nghĩa là ký hiệu sẽ bị xóa, trong khi „1‟ có nghĩa là ký hiệu được giữ lại Đối với mỗi bit vào, đầu ra của các bộ lập mã thành phần sẽ được đặt vào chuỗi X, Y0, Y1, X‟, Y0‟, Y1‟ Trong quá trình tạo ra các ký hiệu từ số liệu vào, mã hóa sẽ không thực hiện lặp.
Bộ mã hóa turbo sản xuất 6/R các ký hiệu đuôi đầu ra, theo sau các ký hiệu của các bit số liệu đã được mã hóa Chuỗi ký hiệu đuôi đầu ra tương tự như chuỗi được tạo ra bởi bộ mã hóa trong hình 4.1 Những ký hiệu này được tạo ra sau khi
Nturbo bit được chuyển đổi thành các bộ mã hóa thành phần với các khóa ở vị trí trên Ký hiệu 3/R, đuôi ra đầu tiên, được tạo ra thông qua quá trình dịch chuyển bộ mã hóa thành phần.
Quá trình mã hóa bao gồm ba lần sử dụng khóa tương ứng ở vị trí dưới để trích bỏ và lặp lại các ký hiệu đầu ra của bộ mã hóa thành phần Các ký hiệu đuôi ra được tạo ra bằng cách dịch bộ mã hóa thành phần ba lần với khóa tương ứng, đồng thời kết hợp với việc trích bỏ và lặp lại các ký hiệu này Kết quả đầu ra từ các bộ mã hóa thành phần cho từng chu kỳ bit đuôi sẽ được sắp xếp vào chuỗi X, Y 0, Y 1, X‟, Y‟ 0, Y‟ 1, với X được đưa ra trước.
Mẫu trích bỏ và lặp ký hiệu ra của bộ mã hóa được quy định trong bảng 4.2, trong đó „0‟ biểu thị ký hiệu bị xóa và „1‟ biểu thị ký hiệu được giữ lại Đối với mã Turbo 1/2, các ký hiệu đầu ra cho ba chu kỳ bit đầu tiên là XY0, trong khi các ký hiệu cho ba chu kỳ bit còn lại là X‟Y‟0 Tương tự, mã Turbo 1/3 có các ký hiệu đầu ra cho ba chu kỳ bit đầu tiên là XXY0 và cho ba chu kỳ bit còn lại là X‟X‟Y‟0 Cuối cùng, mã Turbo 1/4 cũng có quy tắc tương tự cho các ký hiệu đầu ra.
3 chu bit đuôi đầu tiên sẽ là XXY 0 Y1 còn các ký hiệu đuôi đối với 3 chu kỳ bit còn lại sẽ là X‟X‟Y‟0Y,1
Sv Hoàng Hữu Hiệp Trang 67
Bộ chèn turbo là thành phần quan trọng trong bộ mã hóa turbo, có chức năng chèn khối dữ liệu, chỉ thị chất lượng khung (CRC) và các bit dự phòng vào đầu vào của bộ mã hóa Turbo.
Bộ chèn turbo hoạt động bằng cách ghi toàn bộ chuỗi bit đầu vào vào ma trận nhớ theo một trình tự địa chỉ nhất định Sau đó, chuỗi này được đọc ra từ bộ nhớ theo trình tự địa chỉ được xác định bởi một quy trình cụ thể.
Bảng 4.1 Mẫu trích bỏ cho các chu kỳ của bit số liệu
Lưu ý : Đối với từng tỷ lệ mã bảng trích bỏ sẽ được đọc từ trên xuống dưới sau đó từ trái sang phải Đầu ra
Bảng 4.2 Mẫu trích bỏ cho các chu kỳ bit đuôi
Sv Hoàng Hữu Hiệp Trang 68
Lưu ý rằng với mã Turbo 1/2, bảng trích bỏ được đọc từ trên xuống dưới và sau đó từ trái sang phải Đối với mã Turbo 1/3 và 1/4, bảng trích bỏ được đọc từ trên xuống dưới, kết hợp với lặp X và X', trước khi đọc từ trái sang phải Giả sử trình tự các địa chỉ vào là từ 0 đến N turbo -1, trong đó N turbo là số ký hiệu ở bộ chèn, được xác định theo thủ tục như mô tả trong hình 5.2.
Hình 4.2 Thủ tục tinh toán địa chỉ đầu ra bộ chèn xen turbo
1 Xác định thông số bộ chèn: n, trong đó n là số nguyên nhỏ nhất để
Nturbo 2 n+5 Bảng 5.3 cho các thông số này
2 Khởi đầu bộ đếm (n+5) bit vào “0”
3 Lấy ra n bit trọng số cao nhất (MSB) từ bộ đếm và cộng 1 để được giá trị mới Sau đó xóa tất cả trừ n bit trọng số thấp nhất (LSB) của giá trị này
4 Tra cứu bảng 3.4 theo địa chỉ đọc bằn năm bit trọng số thấp nhất (LSB) của bộ đếm lưu ý rằng bảng này phụ thuộc vào giá trị n
5 Nhân các giá trị nhận được ở bước 3 và 4 rồi xóa tất cả trừ n bit trọng số thấp nhất (LSB)
Cộng 1 và chọn n LSB Tra cứu bảng
LSB Địa chỉ tiếp theo của đầu ra bộ chèn (n+5) bit (i 0 …i 4 t n-
Sv Hoàng Hữu Hiệp Trang 69
6 Đảo vị trí cho năm bit trọng số thấp nhất (LSB) của bộ đếm
7 Tạo địa chỉ ra thử với các bít trọng số cao (MSBs) nhận được ở bước
6 và các bit trọng số thấp (LSB) nhận được ở bước 5
8 Tiếp nhận địa chỉ ra thử này nếu nó không lớn N turbo, ngược lại xóa bỏ
9 Tăng bộ đếm và lặp lại các bước từ 3 đến 8 cho đến khi nhận được tất cả Nturbo đỉa chỉ ra cho bộ chèn
Kích thước khối của bộ chèn Turbo
Thông số của bộ chèn Turbo n
Bảng 4.3 Thông số của bộ chèn turbo
Sv Hoàng Hữu Hiệp Trang 70
Bảng 4.4 Quy định bảng tra cứu cho bộ chèn Turbo
Sv Hoàng Hữu Hiệp Trang 71
4.4.4 Phối hợp tốc độ trong hệ thống CDMA 2000:
Phối hợp tốc độ là quá trình lặp hoặc trích bỏ các ký hiệu tại kênh truyền tải (TrCH) nhằm đạt được tốc độ ký hiệu đồng nhất cho các kênh có tốc độ bít khác nhau Lớp cao xác định thuộc tính phối hợp tốc độ cho từng TrCH, thuộc tính này là bán cố định và chỉ có thể thay đổi theo thông báo từ lớp cao Thuộc tính này được sử dụng để tính toán số bit cần thiết cho việc lặp hoặc trích bỏ.
Kết luận
Trong chương này, chúng ta khám phá ứng dụng của mã Turbo trong truyền thông đa phương tiện và truyền thông không dây, đặc biệt là trong CDMA 2000 Bài viết cũng nêu ra những thách thức trong việc khắc phục nhược điểm của công nghệ này để nâng cao tiện ích của CDMA trong cuộc sống Cuối cùng, bộ mã sử dụng trong CDMA 2000 sẽ được mô phỏng trong chương tiếp theo để giúp người đọc hiểu rõ hơn về công nghệ này.
Sv Hoàng Hữu Hiệp Trang 77
Ch-ơng trình mô phỏng mã turbo trong hệ thống thông tin di động cdma 2000
Giới thiệu chương
Chương này trình bày chương trình mô phỏng bộ mã turbo trong hệ thống thông tin di động thế hệ 3 theo chuẩn CDMA2000, được viết bằng ngôn ngữ Matlab Chương trình giúp kiểm tra lý thuyết và hiểu sâu về mã turbo cũng như khả năng ứng dụng của nó ở tốc độ bít cao Qua đó, chúng ta có thể đánh giá các đặc điểm như khả năng sửa lỗi mà các loại mã hóa kênh khác không có Trong mô phỏng, chúng ta nhập các bit số liệu khác nhau, số lần lặp giải mã và số bit khung để thu được kết quả giải mã và tỷ lệ lỗi bit (BER) khác nhau Bộ mã này có hàm truyền đặc trưng.
Sv Hoàng Hữu Hiệp Trang 78
5.2.1 L-u đồ thuật toán ch-ơng trình mã hóa theo bit nhập bít vào input, nhập ma trân trạng thái state
Sv Hoàng Hữu Hiệp Trang 79
5.2.2 L-u đồ thuật toán mã hóa chuỗi dữu liệu đầu vào
To encode the data string X using the generator matrix g = [1011; 1101; 1111], initialize the state as zeros with a size of 1x3 and set the index i to 1 Iterate through the length of X, extracting the current data bit d_k Calculate the new state using the equation d_k = rem(g(1,2:K) * state', 2) and compute the encoded bit a_k as a_k = rem(g(1,:) * [d_k state]', 2) Call the encoding function [output_bits, state] = encode_bit(a_k, state) to generate the output bits, assigning the first element of output_bits to d_k Store the encoded bits in the output array y, updating it for each iteration until the loop completes when i reaches 3 plus the length of X.
Sv Hoàng Hữu Hiệp Trang 80
5.2.3 Lưu đồ thuật toán tính các ma trận của trạng thái Trellis:
Next_out: đầu ra khi đầu vào là bit 0/1 ứng với thanh ghi ở trạng thái hiện tại i
Last_out:đầu ra trước khi thanh ghi chuyển đến trạng thái hiện tại i
Trạng thái tiếp theo (Next_state) là trạng thái của thanh ghi khi đầu vào là bit 0 hoặc 1, trong khi thanh ghi hiện tại đang ở trạng thái i Trạng thái trước đó (Last_state) là trạng thái của thanh ghi trước khi chuyển sang trạng thái hiện tại i, với điều kiện i nhỏ hơn 8.
Next_out Last_out Next_state Last_state End i = i+1 Đ
Sv Hoàng Hữu Hiệp Trang 81
5.2.4 L-u đồ thuật toán giải mã Turbo
-Dựa vào sơ đồ trellis tính các metric đi vào từng nút -So sánh các metric để tìm ra đường sống
-Lưu các đường sống theo mảng L_all
Nhập số lần lặp Chuỗi dữ liệu nhận được ở bên thu y j = 1 i = 1 i 0, fig = h0; end;
Sv Hoàng Hữu Hiệp Trang 94
'MenuBar','none','Name','NHAP THONG SO',
'Tag','Fig1','ToolBar','none'); h1 = uicontrol('Parent',h0,
'String','NHẬP THÔNG SỐ NGÕ VÀO',
'Style','text','Tag','StaticTextdau'); h1 = uicontrol('Parent',h0,'Units','points',
'String','Nhập chuỗi dữ liệu vào :',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
Sv Hoàng Hữu Hiệp Trang 95
'Style','edit','Tag','EditText1dlv',
'String','Tyỷ leọ tớn hieọu treõn nhieóu:',
'Style','text','Tag','StaticText2'); h1 = uicontrol('Parent',h0,
'Style','text','Tag','StaticText2'); hra = uicontrol('Parent',h0,
Sv Hoàng Hữu Hiệp Trang 96
'Style','edit','Tag','EditText13nangluong',
'callback','tyso_EbNo'); h1 = uicontrol('Parent',h0,
'String','Nhập số lần lặp:',
'Style','text','Tag','StaticText3'); h1 = uicontrol('Parent',h0,
'Style','edit','Tag','EditText3solan',
'callback','solan_lap'); h1 = uicontrol('Parent',h0,
'String','Chọn tỷ lệ mã:',
Sv Hoàng Hữu Hiệp Trang 97 h1 = uicontrol('Parent',h0,'Units','points',
'callback','tyle_ma'); h1 = uicontrol('Parent',h0,
'String','EXIT','Tag','Pushbutton1'); h1 = uicontrol('Parent',h0,'Units','points',
'String','ENCODE','Tag','Pushbutton2'); h1 = uicontrol('Parent',h0,
Sv Hoàng Hữu Hiệp Trang 98
'String','BACK','Tag','Pushbutton3'); if nargout > 0, fig = h0; end
'MenuBar','none','Name','NHAP THONG SO',
'Tag','Fig1','ToolBar','none'); axis([0 18 0 16]); axis off; hold on; grid; text(3,16.5,'MÃ HOÁ TURBO','fontname','vni-times','fontsize',24,'color','b');
% bo ma hoa 1 p1=line([13.4 14.6 14.6 13.4 13.4],[9.5 9.5 10.5 10.5 9.5],'color','b'); p2=line([10.9 12.1 12.1 10.9 10.9],[9.5 9.5 10.5 10.5 9.5],'color','b'); p3=line([8.4 9.6 9.6 8.4 8.4],[9.5 9.5 10.5 10.5 9.5],'color','b'); plot(6.5,10,'ob','markersize',12); plot(6.5,10,'+b'); plot(11.5,8.5,'ob','markersize',12); plot(11.5,8.5,'+b'); p4=line([6.9 8.4],[10 10],'color','b');
In this article, we explore the intricate plotting of data points using MATLAB, focusing on the creation of various lines and markers in a graph Key elements include drawing horizontal and vertical lines at specified coordinates, represented in blue, which serve to highlight important data trends Notable markers, such as blue circles and plus signs, are strategically placed at coordinates like (11.5, 11.5) and (11.5, 13.7) to emphasize significant points on the graph The lines connect various points, illustrating relationships between data sets, while maintaining clarity and coherence in the visual representation This comprehensive plotting technique is essential for effective data analysis and visualization in MATLAB.
The article discusses the graphical representation of data through various plotted lines and points, all marked in blue Key coordinates include lines connecting points such as (11.5, 12.5), (15.7, 12.7), and (5, 10), highlighting specific data trends The plot features multiple segments, including vertical lines at (4, 9.75) and (5.5, 15.3), as well as horizontal lines that illustrate consistent values at certain y-coordinates The overall visualization effectively conveys the relationships between the data points, emphasizing the importance of clear graphical representation in data analysis.
% bo ma hao 2 p1=line([13.4 14.6 14.6 13.4 13.4],[1.5 1.5 2.5 2.5 1.5],'color','b'); p2=line([10.9 12.1 12.1 10.9 10.9],[1.5 1.5 2.5 2.5 1.5],'color','b'); p3=line([8.4 9.6 9.6 8.4 8.4],[1.5 1.5 2.5 2.5 1.5],'color','b'); plot(6.5,2,'ob','markersize',12); plot(6.5,2,'+b'); plot(11.5,0.5,'ob','markersize',12); plot(11.5,0.5,'+b'); p4=line([6.9 8.4],[2 2],'color','b'); p5=line([8.1 8.4 8.1],[2.2 2 1.8],'color','b'); p6=line([9.6 10.9],[2 2],'color','b');
In this article, we explore the graphical representation of data using MATLAB, focusing on the creation of blue lines and markers to illustrate key points The coordinates for various lines are specified, such as line segments from (12.1, 2) to (13.4, 2) and vertical lines at x=10 and x=15.5, demonstrating the versatility of plotting functions Additionally, blue markers are placed at significant points, including (11.5, 3.5) and (11.5, 5.7), highlighting important data intersections The article emphasizes the importance of precise plotting techniques to convey complex information clearly and effectively, making it a valuable resource for data visualization in MATLAB.
The article outlines a series of graphical line plots created by Sv Hoàng Hữu Hiệp, showcasing various coordinates and color specifications The lines are plotted at specific points, such as from (13, 11.8) to (1, 0.7) and (5, 6.2) to (2, 2), using blue as the color Additional lines connect points like (4, 4) and (15.5, 0.5), while others illustrate vertical and horizontal relationships, such as (6, 6.2, 6) at different y-values The plot also includes intersections and various segments, emphasizing the complexity of the graphical representation This visualization technique is crucial for understanding data relationships and trends in the presented dataset.
The code snippet creates graphical elements using lines and text annotations in a plot It draws a blue rectangular shape defined by the coordinates (1.5, 5), (4.5, 5), (4.5, 7), and (1.5, 7), along with vertical lines at x=3 from y=10.25 to y=7 and from y=5 to y=2.25 The annotations include the label "interleaver" in red at coordinates (1.9, 6), and several other labels such as "X" and "Y" positioned at various coordinates, each in red with different font sizes, indicating binary values (0 and 1) in a structured format.
Sv Hoàng Hữu Hiệp Trang 103 text(14.5,4,'Y’','fontsize',12,'color','r'); text(14.9,3.9,'1','fontsize',8,'color','r'); uicontrol('Parent',h0,
'Callback','close all;ketqua_mh;',
'Style','edit','Tag','EditText'); uicontrol('Parent',h0,
Sv Hoàng Hữu Hiệp Trang 104
[kqchen,n_nh,dodai]=chen(vao); uicontrol( 'FontSize',13, 'HorizontalAlignment','center',
'Style','edit','Tag','EditText8sc');
'MenuBar','none','Name','KET QUA MA HOA',
'Tag','Fig1','ToolBar','none'); h1 = uicontrol('Parent',h0,
'String','Kết quả ra sau khi mã hoá',
[y,y1,y2]=mahoa_turbo(vao); y2=num2str(y2); y1=num2str(y1); y=num2str(y);
Sv Hoàng Hữu Hiệp Trang 105
[x,x1,x2]=mahoa_turbo(kqchen); x2=num2str(x2); x1=num2str(x1); x=num2str(x); h1 = uicontrol('Parent',h0,'Units','points',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText6'); h1 = uicontrol('Parent',h0,'Units','points',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
Sv Hoàng Hữu Hiệp Trang 106 h1 = uicontrol('Parent',h0,'Units','points',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText1'); h1 = uicontrol('Parent',h0,'Units','points',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText'); h1 = uicontrol('Parent',h0,'Units','points',
Sv Hoàng Hữu Hiệp Trang 107
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,'Units','points',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText1'); y=str2num(y); y1=str2num(y1); y2=str2num(y2); x=str2num(x); x1=str2num(x1); x2=str2num(x2); dodai=length(vao); out=chuoi_truyen(y,y1,y2,x,x1,x2,tyle,dodai)
Sv Hoàng Hữu Hiệp Trang 108 for i=1:length(out) tr(i)=num2str(out(i)); end h1 = uicontrol('Parent',h0,'Units','points',
'String','Chuoói tin truyeàn ủi :',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText1'); h1 = uicontrol('Parent',h0,'Units','points',
'String','chuỗi dữ liệu vào :',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText1'); h1 = uicontrol('Parent',h0,
Sv Hoàng Hữu Hiệp Trang 109
'String','EXIT', 'Tag','Pushbutton1'); h1 = uicontrol('Parent',h0,'Units','points',
'callback','close all;sdgm_turbo3',
'String','CONTINUE','Tag','Pushbutton2'); h1 = uicontrol('Parent',h0,'Units','points',
Sv Hoàng Hữu Hiệp Trang 110 h0 = figure('Color',[1 0.819607843137255 0.941176470588235],
'MenuBar','none', 'Name','SO DO GIAI MA TURBO',
'Tag','Fig1','ToolBar','none'); h1 = uicontrol('Parent',h0,
'String','SƠ ĐỒ GIẢI MÃ SOVA',
'Tag','StaticText1'); h2 = uicontrol('Parent',h0, 'Units','points',
'FontName','vni-times', 'FontSize',13, 'ListboxTop',0,
'Position',[18 65.25 114 21.75],'String','Chuoãi tin truyeàn x:',
'Style','text','Tag','StaticText4'); h1 = uicontrol('Parent',h0, 'Units','points',
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,'Units','points',
'FontName','vni-times','FontSize',13,'ListboxTop',0,
'Position',[18.75 36.75 112.5 19.5], 'String','Chuỗi tin nhận y:',
Sv Hoàng Hữu Hiệp Trang 111 h1 = uicontrol('Parent',h0,'Units','points',
'FontName','vni-times','FontSize',13,'ListboxTop',0,
'Position',[18.75 7.5 113.25 21],'String','Chuỗi tin giải mã u:',
'Style','text','Tag','StaticText6'); h1 = uicontrol('Parent',h0,'Units','points', 'BackgroundColor',[1 1 1],
'String',vao,'Style','edit','Tag','EditText5'); h1 = uicontrol('Parent',h0,'Units','points',
'Position',[505.5 272.25 76.5 18],'String','RESULT','Tag','Pushbutton2', 'callback','close ;ketqua_giaima'); h1 = uicontrol('Parent',h0,'Units','points',
'callback','close ;ketqua_mh'); h1 = uicontrol('Parent',h0,'Units','points',
'callback','close all'); h1 = axes('Parent',h0, 'Box','on','CameraUpVector',[0 1 0],
'NextPlot','add','Tag','Axes1','Visible','off','XColor',[0 0 0],
'XGrid','on','XLim',[-1 5+n],'XLimMode','manual',
Sv Hoàng Hữu Hiệp Trang 112
'YColor',[0 0 0],'YGrid','on','YLim',[0 13],'YLimMode','manual',
The plot features a grid with blue and red lines representing various data points and relationships It begins with a horizontal blue line at y=11 and a red line at y=10, followed by additional segments that alternate between colors The pattern continues with multiple segments plotted in pairs, showcasing a structured layout of data Text annotations indicate binary values from '000' to '111' along the y-axis, enhancing clarity Additionally, a blue line extends from (3, 2.5) to (4.5, 2.5), accompanied by a red line at y=2, with a label 'Bít vào 0' positioned nearby for emphasis This visual representation effectively communicates the underlying data relationships while adhering to SEO best practices.
Sv Hoàng Hữu Hiệp discusses the implementation of a user interface control in a programming context, utilizing a loop to display numerical values and text elements The code snippet includes functions for receiving input parameters and processing them to generate output, highlighting the importance of user interaction in the software development process The focus on design elements such as font size and color ensures clarity and readability, contributing to an effective user experience.
'MenuBar','none','Name','KET QUA GIAI MA',
'Tag','Fig1','ToolBar','none'); h1 = uicontrol('Parent',h0,
'String','KẾT QUẢ GIẢI MÃ TURBO',
Sv Hoàng Hữu Hiệp Trang 114
'Style','text','Tag','StaticText4'); h1 = uicontrol('Parent',h0,'Units','points',
'String','Chuỗi dữ liệu vào :',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,'Units','points',
'String','chuỗi dữ liệu truyền đi:',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,'Units','points',
Sv Hoàng Hữu Hiệp Trang 115
'String','chuỗi dữ liệu nhận được:',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText4'); h1 = uicontrol('Parent',h0,'Units','points',
'String','chuỗi giải mã được:',
'Style','text','Tag','StaticText1'); h1 = uicontrol('Parent',h0,'Units','points',
'String','Chiều dài chuỗi dữ liệu:',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
Sv Hoàng Hữu Hiệp Trang 116
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,'Units','points',
'String','Soá bít bò nhieãu:',
'Style','text','Tag','StaticText1'); loi=xor(nhan,out); s=0; for i=1:length(loi) s=s+loi(i); end s=num2str(s); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,'Units','points',
'String','số bít giải mã sai:',
'Style','text','Tag','StaticText1'); kq = gaima_turbo(vao,EbN0,lan); for i=1:dodai
Sv Hoàng Hữu Hiệp Trang 117 vao(i)=str2num(vao(i)); end s=0; v=xor(vao,kq(1:dodai)); for i=1:dodai ketqua(i)=num2str(kq(i)); s=s+v(i); end loi=num2str(s); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,'Units','points',
'String','số lần lặp giải mã:',
'Style','text','Tag','StaticText1'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,
Sv Hoàng Hữu Hiệp Trang 118
'Callback','close all ;sdgm_turbo3',
'String','BACK','Tag','Pushbutton3'); h1 = uicontrol('Parent',h0,
'String','EXIT','Tag','Pushbutton3'); hdl = uicontrol('Parent',h0,'Units','points',
'Style','edit','Tag','EditText3'); h1 = uicontrol('Parent',h0,
Sv Hoàng Hữu Hiệp Trang 119
'String','TINH LOI','Tag','Pushbutton3');
++++++++++++++++++++++++++++++++++++++++++++++++++++++++ function [ber,fer]= tinhloibit_loikhung(EbN0db,dec_alg,L_total,niter,ferrlim) EbN0db=str2num(EbN0db);
L_total=str2num(L_total); dec_alg=str2num(dec_alg); niter=str2num(niter); ferrlim=str2num(ferrlim); g = [ 1 1 1;1 0 1 ];
%puncture = 0, puncturing into rate 1/2; puncture = 0;
% Fading amplitude; a=1 in AWGN channel a = 1; en = 10^(EbN0db/10); % convert Eb/N0 from unit db to normal numbers
L_c = 4*a*en*rate; % reliability value of the channel sigma = 1/sqrt(2*rate*en); % standard deviation of AWGN noise
% Clear bit error counter and frame error counter errs = zeros(1,niter);
Sv Hoàng Hữu Hiệp Trang 120 nferr = zeros(1,niter); nframe = 0; % clear counter of transmitted frames while nferr(niter)