國 立 交 通 大 學
電信工程研究所
碩士論文
基於疊代解碼效能的可變長度碼設計
A Variable‐Length Coder Design Based on the
Performance of It rative Decoding
e
研究生:戴玲玲
指導教授:張文輝 博士
中 華 民 國 九 十 九 年 六 月
基於疊代解碼效能的可變長度碼設計
A Variable-Length Coder Design Based on the Performance of Iterative Decoding 研究生:戴玲玲 Student:Ling‐Ling Dai 指導教授:張文輝 Advisor:Wen‐Whei Chang 國立交通大學 電信工程研究所 碩士論文 A Thesis
Submitted to Institute of Communication Engineering
College of Electrical Engineering and Computer Science
National Chiao Tung University
in partial Fulfillment of the Requirements
for the Degree of
Master in
Communication Engineering
June 2010
Hsinchu, Taiwan, Republic of China
基於疊代解碼效能的可變長度碼設計
學生:戴玲玲
指導教授:張文輝 博士
國立交通大學電信工程研究所碩士班
中文摘要
本論文主要探討可變長度碼在疊代訊源通道解碼機制上的設計 與應用。首先針對可變長度碼在位元層級上的籬柵結構,推導其軟性 訊源解碼演算法,並將其整合運用於疊代訊源通道解碼機制。主要是 針對具特定機率分佈的訊源,利用其可變長度編碼所得的殘餘冗息, 再基於渦輪碼原則在疊代解碼過程中相互交換訊源及通道解碼器輸 出的額外訊息。另外探討各種不同的可變長度編碼方式,並以額外資 訊轉換圖加以理論分析。最後提出基於額外資訊轉換特性的可變長度 碼設計,實驗証實能有效對抗通道雜訊干擾,進而提昇系統的強健性。A VariableLength Coder Design Based on the
Performance of Iterative Decoding
Student: Ling‐Ling Dai
Advisor: Dr. Wen‐Whei Chang
Insti
tute of Communication Engineer
ing
National Chiao Tung University
Abstract
This thesis focuses on the variable‐length code (VLC) design using the performance of iterative source‐channel decoder (ISCD). Our work starts with a soft‐bit source decoding algorithm based on the bit‐based trellis. According to the source distribution, VLC can exploit the residual redundancy between source‐encoder indexes to enhance the robustness of the ISCD system. Then we analyze the performance of different VLC schemes, in terms of the extrinsic information transfer chart (EXIT chart). To further improve the reliability of ISCD system, we propose a new approach to VLC based on the EXIT chart. Simulation results show that the proposed VLC scheme can improve the error robustness of ISCD system.
致謝
本篇論文得以順利完成,首先要由衷地感謝我的指導教授張文輝 老師,由於老師的細心教導與耐心指正,讓我瞭解到做研究時所應該 持有的態度與精神,使我受益良多。此外也特別感謝實驗室的學長、 同學以及學弟妹,無論是在研究或課業上都非常願意共同討論,並熱 心地協助我解決許多問題。同時也要感謝在準備進入研究所以及就學 期間一路支持並鼓勵我的朋友們。最後,僅將此論文獻給我的父母及 家人。目錄
中文摘要...ⅰ 英文摘要...ⅱ 致謝...ⅲ 目錄...ⅳ 圖目錄...ⅵ 表目錄...ⅷ 第一章 緒論 ...1 第二章 可變長度碼之軟性訊源解碼機制...6 2.1 訊源解碼架構...7 2.2 位元層級籬柵圖...8 2.3 位元後驗機率推導 ...11 2.3.1 前向機率遞迴計算...11 2.3.2 後向機率遞迴計算...13 2.4 索引錯誤率之計算 ...15 第三章 可變長度碼之疊代訊源通道解碼機制... 193.1 系統架構與流程...20 3.2 通道解碼演算法...23 3.3 解碼輸出之額外訊息...25 第四章 雙向性可變長度碼之最佳化設計... 28 4.1 雙向性可變長度碼 ...29 4.1.1 基於最小平均長度的設計...31 4.1.2 基於錯誤更正能力的設計...33 4.2 額外資訊轉換特性分析... 36 4.3 索引指定最佳化設計...45 第五章 實驗模擬與結果分析... 51 第六章 結論與未來展望... 71 附錄A S-random 交錯器 ... 73 參考文獻... 75
圖目錄
圖2.1 可變長度碼之傳輸模型...8 圖2.2 可變長度碼之樹狀圖與籬柵圖...9 圖2.3 碼串狀態轉移與籬柵關係的示意圖 ...10 圖2.4 已知( ,N K)的索引路徑圖 ...17 圖3.1 系統傳輸端架構圖 ...20 圖3.2 系統接收端架構圖 ...21 圖4.1 四位元碼字樹狀圖 ...29 圖4.2 軟性輸入軟性輸出解碼器 ...37 圖4.3 通道解碼器架構圖 ...41 圖4.4 通道解碼器之額外資訊轉換圖...42 圖4.5 訊源解碼器架構圖 ...43 圖4.6 訊源解碼器之額外資訊轉換圖...44 圖4.7 RVLC 的 EXIT Chart...47 圖4.8 可變長度碼之二位元置換演算法...48 圖5.1 不同可變長度碼之解碼效能比較...52圖5.2 Huffman Code 之 EXIT Chart...55
圖5.3 RVLC1之EXIT Chart...56
圖5.5 可變長度碼之 EXIT Chart 比較 (CSNR=3dB)...57
圖5.6 Huffman Code 之 BER ... 57
圖5.7 RVLC1之BER...58
圖5.8 RVLC2之BER...58
圖5.9 可變長度碼之 BER 比較...59
圖5.10 Huffman Code 之 SER...60
圖5.11 RVLC1之 SER...60 圖5.12 RVLC2之 SER...61 圖5.13 可變長度碼之 SER 比較 ...61 圖5.14 RVLC3之 EXIT Chart ...65 圖5.15 RVLC2與 RVLC3之 EXIT Chart 比較 ...66 圖5.16 RVLC3之 BER...66 圖5.17 RVLC3之 SER...67 圖5.18 RVLC2與 RVLC3之 BER 比較...67 圖5.19 RVLC2與 RVLC3之 SER 比較...68
表目錄
表4.1 第三層碼字之可用候選碼字表...31 表4.2 索引指定對照表...49 表5.1 不同可變長度碼之碼書... 70
第一章
緒論
近年來科技進步,行動多媒體通訊的相關運用與互動將成為關鍵 服務,例如無線上網、線上觀看影片…等等。由於多媒體資料包括音 樂、影像、影音…等資料量都相當龐大,故需要完善的壓縮機制使資 料量得以縮減,進而減少硬體空間以及網路頻寬的資源浪費,降低成 本並使傳輸更有效率。針對這樣的議題,現今的多媒體資料壓縮技 術,一般會將可變長度碼(variable-length code, VLC)作為編碼機制 的標準選項。因此可變長度碼之設計及其在無線網路強健性傳輸及解 碼機制,將是一個重要的研究議題。 所謂可變長度碼,是基於具特定機率分佈的訊源,針對不同發生 機率的資料使用不同長度的碼字加以編碼。機率較大的資料使用長度 較短的碼字,相對機率較小的資料則使用長度較長的碼字加以編碼。 針對不同的資料型態及傳輸目的而有不同的編碼演算法,其中較有名 的編碼方式包括霍夫曼碼(Huffman code)、LZ 編碼(Lempel-Ziv coding)和算術碼(Arithmetic code)…等。這此編碼方式確實可以有 效達到資料壓縮目的,卻也因為碼字長度非固定,而衍生出如何具體 實現其解碼同步的重要議題。除此之外,受到雜訊干擾造成的位元錯 誤,在索引解碼過程中將造成連續性的誤判及索引失序問題,使得系 統的解碼效益嚴重受損。因此理想的可變長度碼,不僅需要具有維持同步的編碼設計,也需要強健的解碼機制以減少位元錯誤,進一步使 系統達到更好的效能。 在傳統的通訊系統設計中,訊源編碼和通道編碼兩個系統區塊往 往是分開考量而獨立設計的。其中訊源編碼專注於資料壓縮,通道編 碼則致力於資料保護。這樣的設計概念源自於沈農(Shannon)的消息 理論。其相關理論是在個別的編碼架構規劃時,假設另一個編碼器已 完成最佳化設計,然而真實的通訊環境,會因為訊號的延遲及系統的 複雜度各種限制而造成其具體實現上的困難。根據前人實驗觀察,訊 號源經訊源編碼器處理後,位元序列之間存在著某種型式的非均勻機 率分佈或隱含相關性,而這些殘留的資訊稱為殘餘冗息(residual redundancy)。若能妥善運用,即可在不需要提升通道頻寬的情形 下,提供通道編碼一些事前資訊(a priori information) 以改善解碼 工作的正確性。而這些在接收端將訊源解碼器和通道環境之效應一併
納 入 架 構 設 計 考 量 的 研 究 稱 為 合 併 訊 源 通 道 解 碼 (joint
source-channel decoding, JSCD)。基於殘餘冗息的合併訊源通道解 碼可大致分為三個種類:錯誤隱藏(error concealment)、訊源控制 通道解碼機制(source-controlled channel decoding, SCCD),以及
疊 代 訊 源 通 道 解 碼 機 制(iterative source-channel decoding,
所無法消除的殘餘錯誤。這樣的解碼觀念在[3]被提出,並稱為軟性 訊源解碼機制(soft-bit source decoding, SBSD)。而在[4]所提出的 訊源控制通道解碼機制,則試圖將殘餘冗息運用在通道解碼機制中。 有別於傳統的通道解碼機制,訊源控制通道解碼機制的輸入端也包括 了事前機率。這樣的事前機率大多來自事先統計訊源分佈的資訊。而 疊代訊源通道解碼機制則合併了以上兩者,比起單獨使用其中一項進 一步達到更好的效果。 渦輪碼[5][6]是通道解碼機制在的重大突破。其傳送端是由兩個 迴旋編碼器串聯且配合中間串聯的交錯器所組成,而接收端則是將個 別解碼器輸出的額外訊息,相互交換作為另一個解碼器的事前訊息, 以期加強位元判斷的可靠度。這樣的疊代架構,使渦輪解碼機制經證 實能接近Shannon 理論且具實用價值的編碼技術。而疊代訊源解碼 機制運用了渦輪解碼器的疊代架構,將通道解碼器與訊源解碼器作連 結,前者利用迴旋碼的錯誤檢查能力得到冗息,而後者則利用訊源殘 餘冗息作為加強解碼能力的依據。相較於訊源編碼和通道編碼分開考 量的傳統的通訊系統設計,疊代訊源解碼機制因運用渦輪解碼原理而 在估測訊源符號的品質上有相當大的改進。 如前所述,可變長度碼是針對具特定機率分佈的來源資料使用 長度不同的碼字加以編碼,而這樣的訊號來源及編碼方式使殘餘冗息
能提供更有利的資訊。因此疊代訊源解碼機制不但被認定為強健的解 碼機制,也被運用為可變長度碼的傳輸系統。[7]與[8] 針對不相關的 訊 號 源 解 碼 做 實 驗 , 並 設 計 出 可 變 長 度 碼 在 索 引 層 級 的 籬 柵 圖 (trellis),使其得以運用 BCJR 演算法計算軟性後驗機率。這種將與訊 源符號相關的軟性輸出運用在疊代解碼上的方式,在[9]與[10]中延伸 使用在一階高斯-馬可夫訊號源,而訊源之間的強烈的相關性使殘餘 冗息更具有解碼效益,解碼器運用這樣的資訊達到更顯著的效果。 然而解碼效能除了解碼器的設計及演算法的強健度之外,可變長 度碼本身的設計也具有相當的影響力。可變長度碼因為每個碼字長度 不同,位元錯誤將引起同步失序問題並嚴重影響索引錯誤。早期提出 的前置碼(Prefix code)觀念,可以在無位元錯誤的情形下實現正確的 前向索引解碼。然而在受到雜訊干擾而發生少數位元誤判的情形下, 仍會造成索引嚴重的連續錯誤。由此可知,可變長度碼可經由設計更 具有同步的鑑別能力,盡可能的減少位元錯誤,即可進一步使同步失 序問題得以改善。可變長度碼因碼字長度具有彈性,因此基於目的不 同而有各種不同的設計方式。除了解碼器的解碼演算法之外,我們透 過可變長度碼的設計,讓整體疊代系統更能有效地利用殘餘冗息,不 但使系統效能得以改善,更能減少位元錯誤造成同步失序的索引連續 錯誤。
本文將首先在第二章介紹可變長度碼基於位元層級籬柵圖的解 碼架構及其相關推導,並提出一項索引解碼的方式。第三章則針對整 體的疊代訊源通道解碼機制做推導,並說明其解碼步驟。在第四章介 紹雙向性可變長度碼的特性及編碼方式,再說明分析疊代解碼機制效 能的額外資訊轉換圖,利用這樣的分析方式加以設計雙向性可變長度 碼,以期系統有更佳的效能。最後則提供實驗數據及分析結果。
第二章
可變長度碼之軟性訊源解碼機制
在訊源編碼的相關研究中,可變長度碼(variable-length code, VLC)與固定長度碼(fixed-length code)有其不同適用的應用領域。針 對具有特定機率分佈的訊號源,使用可變長度碼在資料壓縮層次有較 好的效果,然而在解碼過程中因通道雜訊所衍生的同步失序議題則尚 待解決。在早期的研究文獻中,指出此議題包含了位元同步及索引同 步兩類,前者隨著通訊系統的進步已有效克服,然而位元錯誤所引起 的索引錯誤以及索引同步失序的問題仍是複雜而有待解決的。在解碼 的過程中,若能運用訊號特性設計其狀態(state)轉移關係,再配合籬 柵(trellis)結構即可發展更為可靠的解碼演算法。本章節將依據此概 念,逐步探討可變長度碼與其解碼系統的設計。第一節說明系統的傳 輸結構,第二節則介紹可變長度碼及其樹狀圖(code tree)和籬柵圖 (code trellis),第三節將推導訊源解碼之軟性位元輸出,最後一節則 探討可變長度碼在索引錯誤率的估算模式。2.1 訊源編碼架構 系統的傳輸模型如圖 2.1 所示。傳輸以封包(packet)為單位,一 個 封 包 內 由 K 個 具 關 聯 性 的 符 號(symbol) 所 組 成 , 標 示 為 1 2 [ , ,..., K] U = U U U 。其中封包大小 K 在系統應用上可分為已知或未知 兩種情形,通常多媒體傳輸中 K 為已知,本論文將僅針對 K 為已知的 情況進行系統之設計。在傳送端第 時間的符號k Uk,經過M 位元的
量 化 (quantization) 後 得 到 索 引 (index) 值 Ik =λ∈I , 其 中
1} − {0,1,..., 2M = I 為量化的索引集合,且假設事先訓練可得其索引機率 分佈 ( )P
λ
。令 為一組可變長度的碼書(code book), 為針對該組碼書 由索引值對應至該索引碼字之函數, 而 為一函數計算出該碼字之長度。索引值 1 2M− { (0), (1),.C C .., (C } C ) = C ( ) c i ( ) l i Ik利用一前置碼(prefix code)C 執行可變長度編碼後,得到位元向量c( )λ
=C(Ik =λ),其碼字 長度為l c( ( ))λ
。針對一組具K個符號的封包而言,經過可變長度編碼 器 可 輸 出 總 長 度 為 N 的 二 位 元 字 串 1 2 c I( K)] [ ,b1 b2,..., [ b c ∈ ( ),I {0,1} ( c I = ),..., = bN] , 其 中 第 個 位 元 表 示 為。經過附加性白高斯雜訊(Additive White Gaussian Noise, AWGN)通道(channel)後,得到雜 訊干擾的實數串 n n b 1, 2 ˆ ˆ bˆ=[b b,...,bˆN], 再依據最大後驗機率(maximum a posteriori probability)原則進行
Quantizer I VLC Encoder b A W GN Channel ˆ b VLC Source Decoder ˆ U U 圖2.1 可變長度碼之傳輸模型 2.2 位元層級籬柵圖 可變長度碼的設計概念是讓較常出現的量化索引對應到長度較 短 的 碼 字 , 以 期 平 均 傳 輸 位 元 量 可 以 近 似 理 論 熵 值(entropy), 2 1 ( ) log ( ( )) H P P λ∈
λ
λ
=∑
⋅ I ,其中P( )λ
為索引值λ
的發生機率。眾人皆 知的霍夫曼編碼(Huffman coding)方式即為一範例,其設計需滿足 前置碼條件(prefix condition),才能在解碼時避免索引判定的混淆, 得以進行正確的索引同步解碼。針對任一組前置碼 ,都存在其對應 的碼字樹狀圖(code tree)。為了提供後續的解碼與分析使用,以下將 介紹可變長度碼的樹狀圖與籬柵圖(trellis diagram),並定義其籬柵 符號及狀態轉移方式。 C 可變長度的編碼模式可以表示為一個有限狀態機(finite-state machine),所有可能的輸出序列b=[ , ,...,b b1 2 bN]則可使用籬柵圖加以 描述。一種較為常用的狀態轉移定義是源自於編碼樹狀圖,由已知的 可變長度碼書利用碼字樹狀圖表示,並依序標示狀態代號s0,...,sNs−1, 其中N 為狀態總數。s s 為起始狀態,且必須標示在樹狀圖之根節點00 s 。由樹狀圖決定狀態轉移方式後,將所有的節點(node)排列並繪出 狀態轉移路徑即可得到籬柵圖。由於二位元字串b=[ , ,...,b b1 2 bN]所形 成序列中,每一個位元位置都有一組籬柵圖,經排列後可以發現樹狀 圖特性造成每一個葉節點都成為下一個碼字的根節點。定義 為第 時間位元 的前一刻狀態, 為後一刻狀態,則狀態 轉移至狀 態 的路徑將由 決定。 1 n S − (5) c n C n b 00], n S [01 c = 1 n S − 01], n S { {0,1} n b ∈ (1) [11], (= 以 下 列 舉 一 組 符 合 前 置 碼 條 件 之 可 變 長 度 碼 為 例 , 圖2.2 繪出該組碼字所對應之樹狀圖及籬柵圖。 (0) [ 2) 1], (3) [100], (4) [01 [1010]} c c c c = = = = = 圖2.2 可變長度碼之(a)樹狀圖與(b)籬柵圖 令樹狀圖所有的N 個狀態集合為s
{
0,...,}
s N S = s s −1 ,接下來定義兩 個集合P 及σ ,以表現可變長度碼樹狀圖與籬柵圖之間的特殊關 聯性。首先我們考慮時刻 時的狀態 1 2 σ σ, ,i P n Sn=σ σ
, ∈S會與某些碼字的特 0 s 0 s s 1 0 s 1 s 2 s 3 s 4 s 5 s 6 s 0 n b = 1 n b = 0 s 1 s 2 s 3 s 4 s 5 s 6 s 1 n S − Sn Sn+1 n n+1 0 s 2 s s s 4 6 0 s 0 s 0 s 0 s 3 s s5 1 1 1 1 0 0 0 1 1 0 0 0 (b)籬柵圖 (a)樹狀圖定 字 首 0 [ ,..., ]s c σ 有 關 , 而 此 字 首 0 [ ,..., ]s c σ 所 對 應 之 狀 態 序 列 為 ] 0,..., ] [s [Sv,...,Sn = σ ,其中依據籬柵圖可回溯此碼字根節點會落在時刻 處 , 即 v v n 0 [ ,..., ] 1 l c( s σ ) = − − the prefix of c 。 依 此 我 們 定 義 集 合 0 [ ,..., { |cs ]is σ = λ∈ σ ( )}λ P I ,即所有字首符合 0 [ ,..., ]s c σ 的索引形 成 的 集 合 。 針 對 Sn= =
σ
s0 而 有 0 [ ]s c 為 空 集 合 的 情 形 , 我 們 定 義 。另外定義因輸入 0 s = P I bn=i而使狀態自Sn−1=σ
1轉移至Sn =σ
2 )} 的集 合 為 1, 2,iσ σ ={λ∈ | c[s0,...,σ σ1, 2]=[c[s0,...,σ1],i is] the prefixof c(λ
P I 其 中 1, 2 S
σ σ
∈ ,bn = ∈i {0,1}。 舉圖 2.2 的可變長度碼為例,其依位元序列b而排列的籬柵圖如 圖2.3 所示。狀態總數Ns =7,故狀態集合S ={
s0,...,s6}
。符合狀態序 列由s0逐步到 的字首為s4 c[ ,..., ]s0 s4 =[10]、子集合Ps2 ={1,3, 5}、符合因輸 入位元bn =0而使狀態由s2轉移至 的子集合s4 Ps2,s4,0 ={3, 5}。 圖2.3 碼串狀態轉移與籬柵關係的示意圖 0 n b = 1 n b = 0 s 1 s 2 s 3 s 4 s 5 s 6 s 0 s 1 s 2 s 3 s 4 s 5 s 6 s 1 n S− Sn Sn+1 2 { 0 s = I = |λ λ∈{1, 3, 5}} P 2,4,0 ={ 0 =λ λ| {3, 5}} s s I ∈ P v n2.3 位元後驗機率推導
本節將推導軟性輸入及軟性輸出(soft-input soft-output, SISO) 的位元層級後驗機率P b( n =i b| ˆ) i 。利用可變長度碼的籬柵圖,此後驗 機率可表示成因輸入為bn = 而使狀態自Sn−1=
σ
1轉移至Sn =σ
2的邊 界機率,其計算公式為 1 2 1 1 2 ˆ ˆ ( n | ) ( n , n , | S S P b i b P S b i S b σ∈ σ ∈ −σ
σ
= =∑ ∑
= = n = ) (2.1) 根據BCJR 演算法[11],我們可以利用機率鏈鎖律(Chain rule)將(2.1) 式之狀態轉移機率分成三項:(
)
(
)
(
)
2 2 1 1 1 1 1 2 1 2 1 ( ) 1 2 1 1 1 ( , , ) 1 1 1 1 ( ) 1 ˆ ˆ ˆ ( , , | ) | , ˆ ( ) ˆ , , | ,ˆ ˆ , n n n N n n n n n n n n n n n i n n P S b i S b p b S b p b p b b i S S b p S b β σ γ σ σ α σ σ σ σ σ σ σ − − + − − − − = = = = ⋅ = ⋅ = = = ⋅ = (2.2) 其中bˆxy =[ ,b bˆ ˆx x+1,...,bˆy]為由位置 x 至 受到通道干擾的資料串。y α、β 項分別為前向(forward)及後向(backward)機率。 2.3.1 前向機率遞迴計算 根據前人研究[11],(2.2)式中的前向機率α
值可由遞迴計算而 得: 1 1 2 2 1 0 ( ) ( , , ) ( ) n n n S i i σ 1 1α σ
γ
σ σ α
− ∈ = =∑ ∑
σ
(2.3)2 1 ( , , ) n i
γ
σ σ
可利用機率的鏈鎖律推導如下: 其中 1 2 1 ˆ 2 1 1 ˆ1 ( , , ) ( | ) ( , | , n ) n i p b bn n i P bn i Sn Sn bγ
σ σ
σ
σ
− − = = ⋅ = = = (2.4) (2.4)式中等號右邊的第一項為通道資訊(Channel information)。第 二項說明了在已知 1 1 ˆn b − 且前一刻狀態為Sn−1=σ
1的情形下,狀態因輸 入bn =i而轉移至Sn =σ
2的機率。該轉移機率可利用子集合 1 σ P 和 所涵蓋的索引機率表示。這些子集合定義了共通起始於根節點 的字首 1, 2,i σ σ 0 S =s P v c[s0,...,σ],其中v= − −n 1 l(c[s0,...,σ1])即當前根節點的位置。 若目前考慮的索引值為I0,該項即可改寫成: 1 2 1 1 1 , , 2 1 1 ˆ1 0 0 0 ˆ1 ( n , n | n , n ) ( i| , , n P b =i S =σ S − =σ b − =P I ∈Pσ σ I ∈Pσ Sν =s b − ) (2.5) 在(2.5)式中,籬柵狀態由Sn−1=σ
1轉移至Sn =σ
2表示了一組上升 (ascending)型籬柵路徑,即 1 1, 2,i σ σ σ ⊂ P P 。利用此特性,我們可推導: 0 0 0 1 2 1 1 2 1 1 , , 0 1 1 , , 0 0 1 1 0 1 ˆ ( | , ˆ ( | , , ) ˆ ( | , n i n i n P I S s b P I I S s b P I S s b ν σ σ σ ν σ σ σ ν − − − ∈ = ∈ ∈ = = ∈ = P P P P ) ) (2.6) 在(2.6)式中的條件機率在 1 1 ˆn b − 已知的情形下,可利用起始自 的 碼字之邊界機率表示。我們發現該式分子與分母僅不同於 0 v S =s 0 I 所屬的子 集合,以下以P 表示其任一子集合: 0 0 1 1 0 ˆ1 0 ˆ ( | , n ) ( | , n ) P I Sν s b P I S s b λλ
− − ∈ ∈ = =∑
= ν = 1 P P (2.7) 其中的 0 1 0 ˆ ( | , n P I =λ
Sν =s b1− ) 可基於位元位置 再分解成: v0 1 1 1 0 0 1 1 [ ,..., ] 0 0 1 1 ˆ ˆ ˆ ( | , n ) ( vn | s ) ( | , P I S s b p b c P I S s b C ν σ ν λ − − λ + = = = ⋅ ⋅ = = v) (2.8) (2.8)式右邊的第一項即為基於字首 0 1 [s ,..., ] c σ 計算bˆvn+−11的通道機率,第二 項則為已知b 且ˆ1v 的情形下, 0 Sν =s c I( 0=
λ
)的條件機率。 將(2.6)至(2.8)式代入(2.5)式,將分子與分母共同的因式消除後,我們 得到(2.4)式的轉移機率項: , , 1 2 1 2 1 1 1 0 0 1 1 1 ˆ ˆ ( , | , ) ( | , ( ) i n v n n n P b i S S b P I S s b C λ σ σ ν σ σ λ σ − − ∈ = = = =∑
= = P ) (2.9) 其 中 C( 1) P I( 0 |S s0,ˆv) σ ν λσ
λ
∈ =∑
= = P1 1 b 為 正 規 化 常 數(normalization factor)。 2.3.2 後向機率遞迴計算 為了推導後項機率β 值,我們再一次使用(2.5)式的推導模式, 將籬柵狀態Sn =σ
2以子集合 2 σ P 所含括的擁有相同字首 0 2 [ ,...,s ] c σ 的索引 值代替,即可得到: 0 2 2 1 2 1 1 0 1 ˆ ˆ ( ) ( | , ) ˆ ˆ ( | , , N n n n n ) N n v n p b S b p b I σ S s bβ σ
+σ
+ = = = ∈P = (2.10) 其中 為此時刻n所往前回朔的根節點 位置。 利用鏈鎖律及邊界機率原理,假設現正考慮的索引為 0 2 [ ,..., ] 1 ( s v= − −n l c σ ) 0 0 v S =s I =μ
,(2.10)式可再被推導: 2 2 1 0 0 0 2 1 ˆ ˆ ( ) ( | , ) ( | , ( ) N n n p bn I Sv s P I S s b C μ σ β σ μ μ σ + ∈ = = = ⋅ = ′
∑
P 0 1 ) v = (2.11) 其中正規化常數 0 2 2 0 ˆ ( ) ( | v , n) C′σ
=P I ∈Pσ S =s b1 0 2 0 ˆ1 ( | , n P I S s b σ ν λ∈μ
=∑
= = ) P 注 意(2.11)式第一項條件為 I0 =μ
,Sv =s0 , 故 不 再 依 賴b 。 定 義ˆ1n ( ( )) v′= +v l cμ
表示目前考慮的索引I0=μ
其碼字 ( )cμ
結束的位元位 置、 2 0 [ ,..., ]s ( cσ μ)為碼字 ( )cμ
由狀態σ
2逐步轉移至s 之字尾。則針對0 2 σμ
∈P ,(2.11)式中的 p b(ˆnN+1|I0=μ
,Sv =s0)可寫成: 0 2 0 1 0 1 0 1 [ ,..., ] ˆ ˆ ( | , ) ( | , ) ˆ ( | ( )) N N v n v v n s 0 v p b I S s p b I S s p b cσμ
μ
μ
+ ′+ ′ + = = = = = ⋅ (2.12) 其中通道資訊 0 2 1 [ ,..., ] ˆ ( nv | s ( ) p b +′ cσμ
) 包含了字尾 0 2 [ ,..., ]s ( ) cσμ
在位元位置 到 通道輸出的資訊。基於通道無記憶特性,我們得到: 1 n+ v′ 0 [ 2,..., ] 2 0 ( ( )) 1 [ ,..., ] 1 ˆ ( | ( )) ( | ( ) s l c v n n s p b c p b c σ ˆ ) μ η η σ ημ
μ
′ + + = =∏
(2.13) 其中cη( )μ
代表字尾 2 [ ,...,0]( ) cσμ
的第η個位元,而p b(ˆn+η |cη(μ
))則為該 位元的通道資訊。將(2.11)至(2.13)式統合後得到 0 0 2 2 0 2 1 0 2 : ( | , ) 1 [ ,..., ] 0 1 1 ˆ ( ) ( | , ) ( ) ˆ ˆ ( | ( )) ( | , N n v v B v v v v v n s p b I S s C ) p b c P I S s b σ μ μ σβ σ
σ
μ
μ
μ
+ ′ ∈ = ′ ′ + = = ′′ ⋅ ⋅ =∑
P = = (2.14)其中 0 2 2 0 ˆ ( ) ( | v , v C′′
σ
=P I ∈Pσ S =s b ,可由計算1) ( 0 | 0,ˆ1 v v P I =λ S =s b ) 之邊 界機率而得。至於(2.14)式中的 (ˆ 1| 0 , 0 N v v ) p b′+ I =μ
S =s 項,是已知I0=μ
且Sv =s0條件下,ˆ 1 N v b′+ 的發生機率,可視為索引I0= 對應的碼字 ( )μ
cμ
結束時所在根節點的後向機率β
值。 2.4 索引錯誤率之計算 基於上述方式執行 BCJR 演算法,我們可以計算已知長度的封 包每個位元的後驗機率P b( n =i b| ˆ)。最後,將後驗機率作為軟性輸入 值(soft-input value) 輸 入 至 估 算 機 制 , 並 根 據 最 大 後 驗 機 率(Maximum a posteriori estimation, MAP)演算法估算封包的索引
值 ˆI 。所謂的最大後驗機率演算法是利用 arg max
{
N1 ( | )ˆ}
MAP n n
b P b b
b =
∏
= ,在位元層級企圖找到一組字串bMAP使其整體累積的後驗機率為最
大 。 為 了 找 出 bMAP , 傳 統 作 法 是 採 用 軟 性 輸 出 維 特 比 演 算 法
(soft-output Viterbi algorithm),找出一組後驗機率最大的合法碼 字串。其權值(metric)計算方式為
{
}
2 ˆ 2 ( ) max ( | ) ( , | ) ( ) n n n n n M σ = P b =i b ⋅P b =i S =σ S −1=σ1 ⋅Mn−1 σ1 1 (2.15) 若 籬 柵 圖 中 狀 態 Sn−1=σ 與 Sn =σ2 可 由 bn =i 連 結 起 來 , 則 2 1 1 n n n ( , | P b =i S =σ S − =σ )=1,反之則P b( n =i S, n =σ2| Sn−1 =σ1)=0。利用上述方式,我們可以得到最大後驗機率的合法碼字串。但 在實踐上卻遇到嚴重的同步問題,以下使用圖2.2 的一組可變長度碼 為例: 傳送端傳送的索引串 : I 0 0 0 1 0 1 1 0 0 接收端解碼得索引串 : ˆI 傳送端傳送的內容為三個索引值 I {0,4,3}= 、相符的二位元碼串為 {000101100} b= 。通過通道雜訊干擾後,接收端解碼時將第4 位置的 位元誤判為0,而估算出二位元碼串為bˆ {000001100}= ,依此解出的 合法索引值 ˆI {0,0,2,0}= 。 由上述例子可以明顯的發現,位元解碼若出現錯誤,即使很少, 亦可能造成嚴重的索引誤判。不但如此,例子中的 I 與 ˆI 的索引數目 不同,無法計算其索引錯誤率(symbol error rate, SER)。
為了解決上述問題,接收端需要知道一個傳送封包含有幾個索引 值。利用封包的索引值數目 K 以及封包位元長度 ,將符合此條件的 所有可能索引值組合列舉出來,再由這些組合中找出後驗機率最大的 一 個 組 合 作 為 索 引 解 , 即 N
{
1}
ˆ arg max∏
K ( | ) MAP I k k I = = P I b , 且 ˆ ˆ ( | ) ( | ) n n k b P I b P b b λ λ ∈ = =∏
。以下舉一個簡單的例子: 0 0 0 0 0 1 1 0 0 (0) c(4) c(3) c (0) c c(0) c(2) c(0)一組可變長度碼為 ,其對 應的碼長分別為 、 2 ={ (0) [0], (1) [10], (2) [01], (3) [111]}c = c = c = c = C ( (0)) 1 l c = l c( (1))=l c( (2))=2、l c( (3))=3。假設封包 的索引值數目K =5,封包位元長度N =10,即可將所有可能的索引 組合如圖2.4 繪出。 圖2.4 已知( ,N K)的索引路徑圖 圖 2.4 中橫軸 為索引數目,縱軸 為位元數目。利用此路徑圖 在索引層級執行軟性輸出維特比演算法,即能在封包之索引數及封包 位元長度的限制條件下,找出一組後驗機率最大的索引組合。有鑑於 此我們修改(2.15)式如下: k n n 10 5 0 1 2 3 4 5 k 1( )1 k M − δ 2 ( ) k M δ ˆ ( | ) n n b P b i b λ ∈ =
∏
3 S (3) c c(2 (1 c c ) ) (0)(
)
2 ˆ 2 ( ) max ( | ) ( , | ) ( ) n k n k k k b M P b i b P I M λ 1 1 k 1 1 δ λ δ − δ − δ ∈ ⎧ ⎫ ⎪ ⎪ = ⎨ = ⋅ = = = ⋅ ⎬ ⎪ ⎪ ⎩∏
S S ⎭ (2.16) 其中Sk 為包含第 k 個索引值後所有位元長度的可能性,δ2∈Sk 、 1 k 1 δ ∈S − 。例如圖 2.4 的S3={4,5,6,7,8},即所有符合封包索引值數目 5 K = ,封包位元長度 的可能性中,在包含第 3 個索引值後所 有可能的位元長度。圖中若狀態 10 = 1 k N 1 δ − = S 與Sk =δ2可由Ik =λ
連結起 來 , 則 (2.16) 式 中 P I( k =λ, k =δ2 | k−1 =δ1) 1= 2 1 1 k k k S S , 反 之 則 ( , | ) 0 P I =λ S =δ S − =δ = 。 利用上述方式,我們可以從圖 2.4 的路徑圖,計算出符合封包索 引值數目 K 、且封包位元長度為N之後驗機率最大的索引組合。第三章
可變長度碼之疊代訊源通道解碼機制
渦輪碼(turbo code)是 1993 年發明的一種高效能的前向錯誤更 正(forward error correction, FEC)碼,同時也是首次經證實能接近 Shannon 理論且具實用價值的編碼技術。渦輪解碼架構是由兩個相 同的通道解碼器配合中間串聯的交錯器(interleaver)所組成,藉由各 別解碼器輸出的額外訊息(extrinsic information)交互疊代來加強位
元 判 斷 的 可 靠 度 。 而 疊 代 訊 源 通 道 解 碼 機 制(Iterative source
channel decoding, ISCD)則是一種類似渦輪解碼的系統,其核心模 組是由通道與訊源兩種不同的解碼器所組成。在疊代解碼過程中,通 道解碼器與訊源解碼器互相交換額外訊息,其訊息分別源自於迴旋碼 (Convolutional code)的錯誤檢查能力與訊源殘餘冗息。 在本章我們要探討可變長度碼的疊代訊源通道解碼設計,主要是 因為可變長度碼是針對具有特定機率分佈的訊號源,故編碼碼字間所 存在的殘餘冗息將會是解碼過程中值得運用的重要資訊。此外,在上 一章中我們了解到位元錯誤與位元同步對可變長度訊源解碼的影響 是複雜且嚴重的。在通訊系統中,通道編碼技術雖可減少位元傳輸的 錯誤,然而發展整合的疊代解碼機制將可以有效控制位元錯誤對於訊 源解碼的影響程度。本章將先介紹疊代訊源通道編碼及解碼機制的整 體流程,然後再逐一說明其額外資訊推導。
3.1 系統架構與流程 考慮傳輸端架構如圖3.1 所示。傳輸資料封包由 K 個具關聯性的 符 號 所 組 成U =[U U1, 2,...,UK] 。 封 包 經 過 量 化 後 得 到 索 引 序 列 1 2 [ , ,..., K] I = I I I 。該封包索引值利用一前置碼C 執行可變長度編碼後 得到碼長為N的二位元字串b=[ ( ), ( ),..., (c I1 c I2 c IK)]=[ ,b1 b2,...,bN]。將 此字串使用交錯器(interleaver)重新排序後,以b′=[ , ,...,b b1′ ′2 bN′ 表] 示。b′將被視為訊息位元(information bit)串,並代入一編碼率 1/2 的通道編碼器(channel encoder),其輸出為 [ 1, 2,..., ] N w′= w′ ′w w′ N } 。其中 每一個 , 都是由一個訊息位元及一個檢查位元(parity check bit)組成,即 n w′ n∈{1,..., } { s, p n n n w′ = w′ w′ ,其中 s n w′ 為訊息位元, p n w′ 為檢查 位元。由於通道編碼器我們採用系統碼(systematic code),所以 s n w′ =bn′ 也就是w′n ={w′ns,wn′p} { ,= bn′ wn′p}。注意在封包經過通道編碼 後,w′ 的長度為 而非 ,這是因為此長度除了訊息位元長度之外, 還包括了終止位元(termination bit)的長度。所有的位元都經過二位 元鍵移調變(Binary Phase Shift Keying, BPSK modulation),再經由 附加性白色高斯雜訊(AWGN)通道傳送。 N N 圖 3.1 系統傳輸端架構圖 Max Quantizer I VLC Encoder b Channel Encoder
Φ
b′ AWGN Channel U w′ w′ˆ定義經過通道雜訊干擾的封包為wˆ′=[w wˆ1′ ′, ˆ2,...,wˆN′],其中第 位 置的 ,它提供通道相關的資訊以協助解碼處 理。假設通道為附加性白高斯(AWGN)的無記憶性通道,封包第 位 置 的 接 收 資 訊 可 以 視 為 訊 息 位 元 通 道 資 訊 n n ˆ ˆn {ˆns, ˆnp} { ,n ˆn } w′ = w′ w′ = b w′ ′ ˆ ( n| P w w′ ˆ ( ns| ns) ( n| n) p ) n ′ ˆ p w′ w′ = p b b′ ′ 及檢查位元通道資訊 p w(ˆ′np|wn′p)機率的乘積。在 通道訊雜比 0 b E N 已知的情形下且雜訊之變異數為
σ
noise =N0 / 2,我們可 以分別計算:(
)
2 0 1 ˆ ˆ ˆ ( | ) ( | ) exp 2 s s b s n n n n n n noise E p w w p b b w b Nπσ
⎡ ⎤ ⎢ ⎥ ⎢ ⎥ ⎣ ⎦ = = ⋅ − − ′ ′ ′ ′ ′ ′ (3.1)(
)
2 0 1 ˆ ( | ) exp 2 p p b p p n n n n noise E p w w w w Nπσ
ˆ ⎡ ⎤ ⎢ ⎥ ⎢ ⎥ ⎣ ⎦ = ⋅ − − ′ ′ ′ ′ (3.2) Channel Decoder 1 −Φ
Φ
Source Decoder 1 −Φ
( )t P I [ ] ( ) ext CD n P b′ [ ] ( ) ext SBSD n P b ˆ ( n | ) P b w Parameter Estimation Uˆ ( )n P b′ ˆ w′ ˆ w 圖3.2 系統接收端架構圖接收端架構及其解碼流程如圖3.2 所示。疊代解碼步驟如下所述: 1. 先設定疊代次數為iteration=0,而所有位元的訊源解碼額外訊息 初始機率值為 [ext] SBSD( ) 1n P b′ = 。 2. 在通道解碼模組部分,受通道干擾的封包 ˆ [ˆ1, ˆ2,..., ˆ ] N w′= w w′ ′ w′ 進入接 收端,它提供了通道訊息 p b b(ˆn′ ′| n)與 p w(ˆn′p|wn′p) ( )n P b 。針對每一個位 元,將事先統計所得的位元機率 ′ 及訊源解碼的額外訊息 視為通道解碼器之事前訊息。整合通道訊息與事前訊息之 後 , 通 道 解 碼 演 算 法 計 算 求 出 通 道 解 碼 額 外 訊 息 [ext]( ) n SBSD P b′ [ext]( ) n CD b
P
′ 。 [ext]( ) n CD bP
′ [ext]( ) n CD b 經 過 反 交 錯 器(de-interleaver) 後 , 得 到 重 整 順 序 的P
再提供給訊源解碼器使用。 3. 在訊源解碼模組部分,結合索引機率 與位元層級的通道解碼 額外訊息 ( )t P I [ext]( ) n CD bP
求得訊源解碼所需之事前訊息,再考慮反交錯處 理後封包wˆ =[w wˆ1, ˆ2,...,wˆN]提供的位元通道資訊,最後計算出每一 個位元的訊源解碼額外訊息 [ext]( 及其後驗機率 n SBSD P b ) P b( n′ =i b| ˆ) + 。 4. 將 回傳到通道解碼器再進行下一次的疊代計算,此時將 疊代次數 ,並將 經過交錯器成為 ,再進入步驟 2.繼續執行即可。若已完成預設的疊代次 數,即可利用位元後驗機率依最後後驗機率原則(MAP)估算解碼 值。 [ext]( ) n SBSD P b ite [ext]( ) n SBSD P b′ 13.2 通道解碼演算法 針對迴旋碼(convolutional code),使用 BCJR 演算法可實現軟 性輸入及軟性輸出的通道解碼模組。為了使訊息位元更具可靠性,它 觀察整體接收的封包wˆ′,並利用迴旋碼的籬柵結構與遞迴計算公式以 大幅降低其計算量及複雜度。在此,我們將先介紹如何運用BCJR 演 算法,計算接收封包經過通道解碼後的位元後驗機率,並於下個章節 中說明額外訊息之計算。首先,考慮第 個位元的後驗機率: n 1 2 1 2 1 1 2 1 1 2, ˆ ˆ ( | ) ( , , | ) ˆ ( , , n n n S S n n n S S C P b i w P S b i S w P S b i S w σ σ σ σ ) n
σ
σ
σ
σ
− ∈ ∈ − ∈ ∈ = ⋅ = = = = = ′ ′ ′ ′ = ′ = = ′∑ ∑
∑ ∑
(3.3) 其中 1 ˆ ( ) C p w = ′ 為與他項獨立之常數, 為籬柵圖中所有狀態之集合,S 1 1 n S − =σ
及Sn =σ
2分別為第 個位元的前一刻與後一刻的籬柵狀態。 假設通道無記憶性,且訊息位元 n n b′互相獨立,則(3.3)式中的結合機率 (joint probability)P S( n−1=σ
1,bn′ =i,Sn =σ
2,wˆ′ 可寫成: )(
)
(
)
(
)
2 2 1 1 1 1 1 2 1 2 ( ) 2 1 1 ( , , ) 1 1 1 1 ( ) ˆ ˆ ( , , , ) | ˆ , , | ˆ , n n n N n n n n n n n n n i n n P S b i S w p w S p w b i S S p S w β σ γ σ σ α σσ
σ
σ
σ
σ
σ
− − + − − − ⋅ = ′ = = ′ = ′ = ⋅ ′ ′ = = = = ′ (3.4) 其中前向遞迴α
及後向遞迴β
分別為: 1 1 2 2 1 0 ( ) ( , , ) ( ) n n n S i i σ 1 1α σ
γ
σ σ α
− ∈ = =∑ ∑
σ
(3.5)2 1 1 1 2 1 2 0 ( ) n( , , ) n( ) n S i i σ
β
−σ
γ
σ σ β
∈ = =∑ ∑
σ
(3.6) 迴旋碼起始自全零的籬柵狀態s0,且強制在解碼結束時回到全零狀 態,所以我們設定α
及β
的初始值: 0 0 0 0 0 0 1, ( ) 0, if S s S if S sα
⎧⎪⎨ ⎪⎩ = = ≠ (3.7) 0 0 1, ( ) 0, N N N N if S s S if S sβ
⎧⎪⎨ ⎪⎩ = = ≠ (3.8) 另外,利用機率之鏈鎖律及基於通道無記憶性及 s n n w′ =b′和 之 關係,(3.4)式的 ˆ ˆns n w′ =b′ 2 1 n( ,i , )γ
σ σ
項可推導為:(
)
2 1 2 1 1 2| 1 1 | 2, 1 ˆ ( , , ) , , | ˆ ( , ) ( , ˆ ( ) ( | ) n n n n n n n n n n n n n n n i p w b i S S P b i S S p w b i S S P b i p w wγ
σ σ
σ
σ
1)σ
σ
σ
− − − = ′ ′ = = = = ′ = = = ⋅ ′ ′ = = = = ′ = ⋅ ′ ′ ˆ ˆ ( ) ( | ) ( p| p) n n n n n i P b i p b b = p w w = ′ = ⋅ ′ ′ ⋅ ′ ′σ
) (3.9) 其中P b( n′ =i 為位元事前機率, p b b(ˆn′ ′| n =i)為訊息位元通道訊息, ˆ ( p | p) n n p w′ w′ 為檢查位元通道訊息。我們現在完成所有計算需要的元 素,將(3.5)、(3.6)及(3.9)式代回(3.4)式,即可得到(3.3)式的後驗機率。 接下來,我們將利用位元後驗機率,推導出位元額外訊息的資訊。3.3 解碼輸出之額外訊息 為了取得疊代解碼所需的軟性輸出,以下將推導出其額外訊息部 分,用以回傳給另一個解碼器使用。內容分為通道解碼器以及訊源解 碼器各別輸出的額外訊息。 (A)通道解碼額外訊息 3.2 節所計算的位元後驗機率,可據以推導出通道解碼額外資訊 [ext]( ) n CD b
P
′ i ,再回傳到訊源解碼器的事前訊息輸入端。首先考慮(3.9)式 的γ
n( ,σ σ
2, 1)項 ) n : 2 1 [ ] 2 1 ˆ ˆ ( , , ) ( ) ( | ) ( | ) ˆ ( ) ( | ) ( , , p p n n n n n ext n n n n i i i P b i p b b p w w P b i p b b iγ
σ σ
γ
σ σ
= = = ′ = ⋅ ′ ′ ⋅ ′ ′ = ⋅ ⋅ ′ ′ ′ (3.10) 在此,我們定義了 [ ] ( , , ) (ˆ | ) ext i p wp p 2 1 n n wnγ
σ σ
= ′ ′ 。將(3.5)、(3.6)及(3.10) 式代入(3.4)式,可得(3.3)式的後驗機率為 1 2 1 2 1 1 2 1 2 [ ] 1 1 2 1 2 ˆ ( | ) ( ) ( , , ) ( ) ˆ ( ) ( | ) ( ) ( , , ) ( n n n n S S ext n n n n n n S S i P b i w C i C P b i p b b i σ σ σ σ )α
σ γ
σ σ β σ
α
σ γ
σ σ β σ
− ∈ ∈ − ∈ ∈ = = = ⋅ ⋅ ⋅ ′ ′ = ⋅ ′ = ⋅ ′ ′ ⋅ ⋅ ⋅∑ ∑
∑ ∑
[ ] ˆ ( n ) ( n| n i) CDext ( n ) C P b i p b b = P b i = ⋅ ′ = ⋅ ′ ′ ⋅ ′ = (3.11) 其中通道解碼額外資訊為 1 2 [ ] [ ] 1 1 2 1 2 ( ) ( ) ( , , ) ( ) ext ext n n CD n S S P b i σ∈ σ ∈α
−σ γ
σ σ β σ
n = ⋅ ⋅ ′∑ ∑
(3.12) 在第一次疊代之後,一般作法是將P b( n′ =i)與來自訊源解碼器的額外 資訊 [ext]( )整合而成為事前機率。因此若依下式作替代: n SBSD P b′[ ] ( n ) SBSDext ( n ) ( ) P b′ = ←i ⎡⎣P b′ = ⋅i P bn′ =i ⎦⎤ (3.13) 則(3.11)式的後驗機率P b( n′ =i w )| ˆ′ 可改寫為: [ ] ˆ [ ] ˆ ( n | ) ( n ) SBSDext ( n ) ( n| n i) CDext ( P b′ =i w′ = ⋅C P b′ = ⋅i P b′ = ⋅i p b b′ ′ = ⋅P bn′ =i) ) n′ ) (3.14) 其中 ( ) [ext]( 為事前訊息, n SBSD P b′ = ⋅i P b =i p b b(ˆn′ ′| n=i 為通道訊息,而 則為通道解碼器輸出的額外資訊。 [ext] CD ( n ) P b′ =i (B)訊源解碼額外訊息 第二章所介紹的可變長度碼解碼演算法,將在此疊代解碼架構中 扮演軟性位元訊源解碼的角色。由圖3.2 可以知道,訊源解碼器輸出 的額外訊息可視為通道解碼器的事前訊息。回顧第二章中,可變長度 碼繪出籬柵圖,且利用籬柵狀態推導 BCJR 演算法計算後驗機率 ˆ ( n | P b =i b)。我們將利用該籬柵圖上的路徑轉移機率
γ
n( ,iσ σ
2, 1)及後 驗機率P b( n=i b| ˆ) 2 1 n ,進而推導出於疊代解碼中所需的訊源解碼額外訊 息。將(2.9)式代入(2.4)式得到γ
( ,iσ σ
, )為: , , 1 2 2 1 0 0 1 1 1 ˆ ˆ ( , , ) ( | ) ( | , ) ( ) i v n i p b bn n i P I S C λ σ σ νγ
σ σ
σ
λ
∈ = ⋅ = ⋅∑
= = P s b (3.15) 由(2.1)、(2.2)與(3.15)式可知位元後驗機率:, , 1 2 0 0 1 2 1 2 1 2 1 1 2 1 1 2 2 1 1 1 2 1 ˆ ( | , ˆ ˆ ( | ) ( , , | ) ( ) ( ) ( , , ) ˆ ( | ) 1 ( ) ( ) ( ) i v n n n n S S n n S S n n n n S S P I S s b P b i b P S b i S b C i C p b b i C λ σ σ ν σ σ σ σ σ σ λ
σ
σ
α
σ β σ γ σ σ
α
σ β σ
σ
∈ − ∈ ∈ − ∈ ∈ − ∈ ∈ ⋅ = = = = = = = = ⋅′ ⋅ ⋅ = ⋅′ = ⋅ ⋅ ⋅∑
∑ ∑
∑ ∑
∑ ∑
P 1 ) (ˆ | ) [ext]( ) n n SBSD n i C p b b′⋅ = ⋅i P b = (3.16) 其中 1 ˆ ( ) C p b ′ = 為一常數。並定義訊源解碼額外訊息為: , , 1 2 1 2 [ ] 1 1 2 0 0 1 1 1 ˆ ( ) ( ) ( ) ( | , ( ) i ext v n n SBSD n S S P b i P I S s b C σ σ ν σ σ λ α σ β σ λ σ − ∈ ∈ ∈ = =∑ ∑
⋅ ⋅ ⋅∑
= = P ) (3.17) 一般在進行疊代時,我們會將 p b b(ˆn| n=i)與來自通道解碼器的額外資 訊 [ ]( )整合成為事前機率,因此可得位元後驗機率如下: n ext CD P b [ ] [ ] ˆ ˆ ( n | ) CDext ( n ) ( n| n ) SBSDext ( P b =i b = ⋅C P′ b = ⋅i p b b = ⋅i P bn =i) ) (3.18) 其中 [ext]( 為事前訊息、 n CD P b =i p b b(ˆn| n = 為通道訊息,而i) 則為訊源解碼器輸出的額外資訊。 [ext]( ) n SBSD P b = i第四章
雙向性可變長度碼之最佳化設計
前面的章節討論了針對可變長度碼的軟性解碼演算法及其在疊 代解碼上的應用。了解到針對具有特定機率分佈的訊號源使用的可變 長度碼,其編碼碼字之間存在的殘餘冗息特性提昇了疊代解碼強健 性。然而可變長度碼的編碼方式眾多,以霍夫曼碼為例,它符合了前 置條件(Prefix condition),這使得前向解碼時可符合索引同步的要 求,且其平均傳輸位元量可以近似理論熵值。但對於位元錯誤相當敏 感,很可能因為極少數的位元誤判而造成嚴重的連續性錯誤,在錯誤 更正及疊代解碼上的效果非常有限。另一種被廣範使用的可變長度編碼方式為雙向性可變長度碼(Reversible variable length codes,
RVLCs),它不但符合前置條件,也符合後置條件(Suffix condition)。 因此支援前後二方向的解碼,其效果加強了解碼的錯誤更正能力,使 我們能盡可能的從收到的資料中解出與原始訊息位元相符的資訊,實 驗也證實雙向性可變長度碼在疊代解碼上有很好的效能。 因此本章首先將介紹雙向性可變長度碼及其編碼方式。接著說明 在軟性解碼架構中額外資訊轉換圖的分析方法,並用以探討疊代系統 之效能。最後,將運用額外資訊轉換分析結果針對雙向性可變長度碼 進行索引指定的調整。
4.1 雙向性可變長度碼 可變長度碼的每個碼字長度不同,基於不同的訴求,其編碼方式 也不一樣,如何設計最佳的可變長度碼至今仍是開放的議題。如前所 述,雙向性可變長度碼符合前置條件以及後置條件,也因此支援雙向 性的解碼。所謂的前置與後置條件定義如下: (1) 前置條件(Prefix Condition): 任何一碼字不可以是其他較長碼字之字首。 (2) 後置條件(Suffix Condition): 任何一碼字不可以是其他較長碼字之字尾。 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 A A2 A3 A4 A5 A6 A7 A8 Level 1 Level 2 Level 3 Level 4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 圖 4.1 四位元碼字樹狀圖 在可變長度編碼設計中,一般做法是利用位元樹狀圖來表示選取 碼字的分佈情形。四位元樹狀圖如圖4.1 所示,依位元長度分為第一 層至第四層。其中以A A1, 2,...,A8代表第三層(即位元長度為 3)中八個 可被選取的碼字,我們定義其為「候選碼字」,而一般碼字的選擇流
程都會是由上至下層依序進行選取。假設一個已知雙向性可變長度碼 的碼書內,有[0,0]這個第二層的碼字,為了符合前置條件,則候選碼 字中的A 及1 A 則不可能出現在此碼書中;相同的,為了符合後置條2 件,A 亦不可能出現在此碼書中。也就是說,若我們挑選了5 [0,0]作 為編碼碼書裡的碼字,定義為「目標碼字」,也就同時使A 、1 A 、2 A5 三個碼字無效。此時第三層剩下的有效碼字為五個。而這樣經過前置 與後置條件判斷後確定可以使用的碼字,我們定義為「可用候選碼 字」。反之,若挑選了[1,0]作為我們的目標碼字,為了符合前置條件, 則候選碼字中的A 及5 A 則不可能出現在此碼書中,且為了符合後置6 條件,A 及3 A 亦不可能出現。即7 A 、3 A 、5 A 、6 A 四個碼字將被排除7 出可用候選碼字的集合,則第三層剩下的可用候選碼字為A 、1 A 、2 4 A 、A 。由這兩個例子可以了解,在挑選較短的碼字時,將會受到8 前置條件與後置條件的影響,而使得下一層可用候選碼字數量不同。 如前述,基於不同的訴求,可變長度碼的編碼方式也不一樣。以 下我們將基於最短平均長度以及錯誤更正能力兩個方向,分別介紹兩 種不同的雙向性可變長度碼的編碼方式。
4.1.1 基於最小平均長度的設計 一個雙向性可變長度碼的設計為了使其平均長度最小,其編碼的 碼字長度將會參考平均傳輸位元量可以近似理論熵值的霍夫曼碼。然 而,為了同時符合前置與後置條件,雙向性可變長度碼勢必在碼字長 度要求上需要適度的放寬。一般編碼方式將由最短長度的碼字開始挑 選,而為了滿足平均長度最小,在編碼的演算法中,其關鍵是讓每一 層都有最多的可用候選碼字能被選擇。因此當我們挑選某層的碼字 時,將使該層候選碼字有其挑選的優先順序。首先將候選碼字中互相 為位元互補的兩個碼字成為一組。依前置與後置條件計算每一個候選 碼字的下一層可用候選碼字數量,並由大至小排列。若有相同的可用 候選碼字數量,則以十進制值較小的碼字為優先。表4.1 列出第三層 的所有碼字,顯示每一個碼字若被挑選後,第四、五、六層所剩的可 用候選碼字數量,並以該數量由大至小排列。 第三層碼字 各層可用候選碼字之數量 候選碼字 第四層 第五層 第六層 000 13 24 44 111 13 24 44 010 12 21 37 101 12 21 37 001 12 20 33 110 12 20 33 011 12 20 33 100 12 20 33 表4.1 第三層碼字之可用候選碼字表
在表4.1 中,若我們編碼時在第三層需要的目標碼字為 3 個時, 則前2 個碼字首先選「000」及「111
」
,因為它們擁有第四層最多
的可用候選碼字。在選擇「
000」及「111」之後,剩下的所有
第三層候選碼字擁有相同的第四層可用候選碼字數量。所以我們
再參考第五層的可用候選碼字,而發現「
010」在這些剩下的第
三層候選碼字中擁有最多的可用後選碼字,所以我們挑選「
010」
作為我們的第三個編碼碼字。利用這樣的挑選方式將碼字一一編
入
雙向性可變長度碼的碼書。以下介紹編碼演算法: 1. 首先定義 為一組作為參考的可變長度碼(例如霍夫曼碼)之第i 層的碼字數量。並定義 為目標雙向性可變長度碼之第 層的 碼字數量,且設定每一層的初始值 ( ) n i ( ) rev n i i ( ) ( ) rev n i =n i 。 2. 針對第i 層的每一個候選碼字,依前置與後置條件計算下一層可用 候選碼字的數量,定義為 。並依前頁所敘述的方式作排列。 此時會發生兩種可能: ( ) avail i (1)若nrev( )i ≤avail i( ),即可用候選碼字足夠提供目標碼字的數量, 則nrev( )i 不變。 (2)若 ,即可用候選碼字不足以提供目標碼字的數量 時,則將不足的 ( ( ( ) ( ) rev n i >avail i ) ( ) rev n i −avail i )數目碼字移至下一層挑選,即 ,並將本層的碼字數量更 ( 1) ( rev rev n i+ =n i+1) (+ nrev( )i −avail i( ))改為nrev( )i =avail i( )。 3. 依照排序將可用候選碼字編入目標碼書,接著再回到步驟 2 進行 下一層的編碼。 這樣的演算法因為盡可能使下一層的可用候選碼字越多越好,也 就是盡可能減少第二步驟中可用候選碼字不足以提供目標碼字的數 量,而使得目標碼字必需由下一層的候選碼字挑選的情形發生。所以 上述方式將能找到一組符合前置條件與後置條件且具最小平均長度 的雙向性可變長度碼。 4.1.2 基於錯誤更正能力的設計 除了傳輸位元量為最小,我們也期望能使雙向性可變長度碼具有 更好的錯誤更正能力。根據前人的研究[12],一組可變長度碼的錯誤 率與自由距離(free distance)有強烈的關聯性,即自由距離值越大, 錯誤更正能力也就越強。 首先定義自由距離df 1 2M−} 以及區塊距離db(block distance)。考慮 {0,1,..., = I 為量化的索引集合,並令 1 ) { (0), (1),..., (2M−)} ( = C I C C C 為 索 引 集 合 I 所 對 應 之 編 碼 碼 書 , 且 其 碼 長 分 佈 為 1 ), (1),..., (2M )} l l − ( ) { (0 l I = l 。假設一個索引序列I ={I1,I2,...}在可變長度 碼 C I( ) 編 碼 後 得 到 總 長 度 為 N 的 二 位 元 字 串
1 2 1 2 [ ( ), ( ),...] [ , ,..., N] b= c I c I = b b b ,並進行傳送。此外,定義集合B 為所 有可能由可變長度碼 作編碼後總長度為 的碼字組合。而 表 示為漢明距離(Hamming distance)。則自由距離 ) ( C I N dH f d 及區塊距離 之 定義為: b d
(
)
{
( ) ( ) ( ) ( ) ( ) (}
min H m , n | m , n ; m f d = d b b b b ∈B b ≠b n) (4.1)(
)
{
}
min H ( ), ( ) | ( ), ( ) ; ( ) ( b d = d C i C j C i C j ∈C l i =l j) ;i≠ j (4.2) 針對霍夫曼碼而言,可由觀察發現有兩個碼字只不同於最後一個位元 的情形,故其自由距離及區塊距離為df =db=1。(
2,)
min 根據[17]證明,雙向性可變長度碼具有 f ≥ b 2 ≥ d d 特性。其 中對於不同長度的碼字,基於前置與後置條件而使df 成立。然 而針對相同長度的碼字,經證明得到 的 恆 f d 的b 2的 d 結論。故只要能使區塊 距離db 少為 2,則該雙向性可變長度碼就具有df 特性。我們 將介紹以下的演算法,使目標雙向性可變長度碼書具有 的條 件,讓錯誤更正能力提升: ≥ ≥ ) i 2 ≥ i 至 f d 1. 首先定義 為一組作為參考的可變長度碼(例如霍夫曼碼)之第i 層的碼字數量。並定義 為目標雙向性可變長度碼之第 層的 碼字數量,且設定每一層的初始值 ( ) n i ( ) rev n i ( ) ( rev n i =n 。 2. 針對第i 層的每一個候選碼字,依前置與後置條件計算下一層可用 候選碼字的數量,定義為avail i( ),並依 4.1.1 節所介紹的方式作排列。接下來依照順序將候選碼字一個個與已挑選完成並列入碼 書的所有相同長度之碼字計算漢明距離 ,若 則該候選碼 字可被選為目標碼字而列入碼書。若 H d 2 2 H d ≥ H d < 則不被列入,再取下一 個候選碼字計算漢明距離 。而如此經過比對後,候選碼字中可 被列入碼書的碼字數目定義為 。 H d ( ) s i di avail 3. 此時會發生兩種可能:
(1)若nrev( )i ≤availdis( )i ,即候選碼字中,符合漢明距離 的數
量足以提供目標碼字作選擇,則 不變。 2 H d ≥ ( )i rev n
(2)若nrev( )i <availdis( )i ,即符合漢明距離 的數量不足提供目
標碼字作選擇,則將不足的碼字數量移至下一層挑選時,則將 不 足 的 ( ( 數 量 碼 字 移 至 下 一 層 挑 選 , 即 ,並將本層的碼字數量更 改為 。 2 ≥ H d ( ))i ) rev n i −a ( 1) ( 1) rev rev n i+ =n i+ ( ) rev dis n i =avail ( s l i ( rev n i H d )) ) ava− 2 ≥ di vai ( + ( )i dis il 4. 依照排序將符合漢明距離 的可用候選碼字列入目標碼書, 接著再回到步驟2 進行下一層的編碼。 利用上述的編碼方式,可以找出一組符合前置與後置條件,且自 由距離 的雙向性可變長度碼,其錯誤更正能力將有顯著的功 效。將其運用在疊代解碼系統中,預期亦可使疊代能發揮良好的解碼 效能。 2 f d ≥
4.2 額外資訊轉換特性分析
在第三章所述的疊代解碼演算法,其原理是運用通道解碼器與訊 源解碼器之間互相交換額外訊息來提升錯誤更正的能力。為了能藉由 理論分析而事前了解系統疊代的效能,我們使用前人基於消息理論所 推導的額外資訊轉換圖(extrinsic information transfer chart, EXIT chart)來進行疊代效益的分析。額外資訊轉換的模擬,是在計算單一 解碼器的輸入事前訊息及輸出額外訊息兩者間消息量的變化關係。而 透過額外資訊轉換圖,我們將不需要執行大量的系統模擬,即可分析 此解碼器在疊代解碼時所提供的效能。而基於額外資訊轉換的分析, 將提供我們在系統設計上效能的觀察,進一步促使我們發展系統關鍵 元件的最佳化設計。在本節將針對額外資訊轉換圖做推導及介紹。 在先前章節所介紹的解碼演算法中,所有資訊皆以機率值表示。 然而在此為了計算訊號消息量,所有的資訊將改以對數相似比率 (Log-Likelihood Ratio)表示。首先考慮一個軟性輸入軟性輸出 (soft-input/soft-output, SISO)解碼器,如圖 4.2 所示。令 為經二 位元相位鍵移(BPSK)調變後所傳送的訊息, 為 通過高斯雜訊通道 在接收端收到的實數值,且訊號 的事前機率為 ,則位元事前訊 息的對數相似比率表示為 y ˆy y P y y ( ) ( 1) ) ( 1 ( ) P y P y L y ln = + = − 。而L y y 表示為通道訊( | )ˆ 息的對數相似比率, [ ] ( ) ext in L y 為由另一個解碼器傳回的額外訊息,而