低密度奇偶校驗碼(Low Density Parity Check Code, LDPC)其實就是一種錯誤修正碼(Error Correcting Coding),也有人稱糾錯編碼。放眼當今世界,LDPC錯誤修正碼席捲通訊、廣播,及HDD硬碟等領域,可是...
低密度奇偶校驗碼(Low Density Parity Check Code, LDPC)其實就是一種錯誤修正碼(Error Correcting Coding),也有人稱糾錯編碼。放眼當今世界,LDPC錯誤修正碼席捲通訊、廣播,及HDD硬碟等領域,可是,早在40年前LDPC便已開發,今日卻瞬間成為業界注目的焦點,儼然是終極修正碼王者再臨,其與8b/10b編碼的發展,幾乎皆是麻雀變鳳凰。
廣為人知的「Shannon限界(Shannon Limit或Shannon Bound)」是由Shannon在1940年代證明頻道容量限制(Channel Capacity Limit),而開啟數位通訊大門,同時,其亦證明絕對存在一種區塊碼(Block Code),它可以達到任意小的錯誤機率,可惜當時並沒有持續研發。倒是其麻省理工學院的學生Robert G.Gallager於1962年提出一種特殊的區塊碼,稱為「LDPC碼」,相當接近Shannon限界,但由於那時超大型積體(VLSI)技術尚未成熟,而被束之高閣,也就逐漸被世人遺忘。
直到90年代末,3G的WCDMA及cdma2000採用渦輪碼(Turbo Code),於是LDPC碼重新被挖掘出來研究,並證實性能優異,一躍成為當前最熱門的前向錯誤修正碼。而LDPC碼的發現,比熱門的渦輪碼早30餘年。
以下依照年份順序,簡述這接近半世紀的一些事件發展里程碑:
‧1948年-Shannon理論,開始開發前置錯誤矯正(Forward Error Correction, FEC)。
‧1950年-Hamming Code。
‧1960年-里德所羅門碼(Reed Solomon Code)、BCH碼(Bose Chaudhuri Hocquengham Code)。
‧1962年-LDPC碼開發。
‧1976年-格子編碼調變(Trellis Coded Modulation, TCM)、魏特比碼(Viterbi Code)。
‧1993年-開發渦輪碼。
‧1996年-LDPC碼的再發現。
‧2001年-確實證明LDPC碼幾乎達到Shannon限界。
隨後LDPC碼的用途空間漸廣(圖1),而率先將LDPC碼運用至基頻大型積體電路(LSI)的廠商,是在2002年從事高速行動通訊無線IP產業的美商Flarion Technologies。2003年,英特爾提議在10GBASE-T標準中採用該方式,而制定該規格的IEEE802.3an工作小組於2004年8月通過採用LDPC碼。另外,2004年6月訂定的HDTV衛星電視廣播規格標準DVB-S2(Digital Video Broadcasting Satellite Version2),也採用LDPC碼;日本NTT Communication在2004年12月開始導入實施的影像配訊服務「OCN Theater」,也是決定採用LDPC碼;而中國大陸的數位地上波電視廣播,有極大可能採用LDPC碼。其他諸如超高速的無線網路、光通訊,甚至硬碟的訊號處理電路,也多在檢討應用LDPC碼的可行性。
為何LDPC碼霎時間集眾兵家的垂愛呢?簡單來說,無論是通訊的高速化、通訊距離的延長還是傳送品質的提升,都可以從LDPC碼來獲得效果。由於LDPC碼具有極優秀的錯誤修正機能,即編碼增益(Coding Gain),可以高速大容量化並改善惡劣的傳送品質,因此無線網路的高速化、高速行動通訊、數位衛星廣播等用途可獲得改善,而量子密碼的通訊在惡劣的傳送迴路下,也可實現毋須重送。
另一個LDPC碼顯性的特徵,由於計算量少且有缺損補償機能,可作為遺失封包的回復,諸如網際網路上或行動通訊的內容傳送,也就可以獲致效果。即使傳統觀念中以對絞線完成10Gbps乙太網路100米的傳送是不可能的任務,透過LDPS碼也有可能改觀。此外,一台衛星電視廣播轉發器(Transponder)的傳送容量在36MHz頻段中可達80Mbps,是過去的1.3倍。
綜合以上所說,若是採用LDPC碼不僅能夠高速化與延長傳送距離,對於惡劣傳輸途徑也可以將位元錯誤率降低到實用的水準階段,LDPC碼的錯誤修正能力理論上是可以接近Shannon限界。
於2001年2月,Flarion Technologies在IEEE Communications Letter Vol.5上證實LDPC碼接近Shannon限界的0.0045dB理論編碼增益界線。而NTT Docomo最近的研究也指出,在編碼長度n很大的場合下,LDPC碼是目前既存錯誤修正碼當中編碼增益最高的方式。
所謂編碼增益是可作為評估錯誤修正碼性能表現的基準指標之一,資料經過編碼後,較未編碼前可用較小的功率發送,而達到相同的位元錯誤率(BER),其間功率的差值(SNR),就是編碼增益,其中訊號與雜訊比也是代表訊號的功率強度,愈大表示訊號強度愈強,反之則是愈弱。
另外,編碼率(Code Rate)也是必知的術語,其涵意是指未經編碼前資料的長度與經過編碼後的長度比。當初,Shannon限界的提出就是以編碼率定義出傳輸通道的傳輸容量,任何小於容量的編碼率皆可經由這個通道來傳輸。
LDPC碼可以讓量子密碼的通訊在極端S/N比很差的惡劣傳輸環境下,也可以實踐錯誤修正能力,依據三菱電機的實驗結果顯示,當編碼長度n等於一萬個位元時,編碼率等於0.1的場合,位元錯誤率從尚未訂正前的0.12到修正後的10-10;若是當編碼長度n等於兩萬個位元時,編碼率等於0.1的場合,位元錯誤率可以從尚未訂正前的0.12到修正後不會檢測出錯誤。
回顧以往,在通訊領域裡主要用來提升傳送速率與大容量化的手段,總是離不開從調變技術的多值、多重化或是擴張頻率帶域來下手,然而,實體層會有雜訊以及插入損失的壁壘,讓困難重重。
尤其是網際網路或是行動通訊在映像通訊的場合裏,封包遺失難以避免,為規避這種情況並確保電視動畫的即時傳送機能,往往會採用緩衝措施,但是,這種手段有它的界限存在,因此,有一些較悲觀的網際網路接續業者就提出通訊介面引起的未來網際網路危機。然而,LDPC碼讓業者燃起雄心,勢必要完成與廣播同等高品質的映像載送之願望。美商Digital Fountain的技術長Michael Luby也是LDPC碼再發現者,其開發一種「Raptor碼」,特徵就在於擁有封包或位元缺損補償機能,即時封包遺失在5%的情況下,依然可以確保鮮明影像的即時傳輸。日本住友公司的機上盒(使用300MHz微處理器)或NTT Communication的影像配訊服務,就是選擇採用此方案。依據Digital Fountain的說法,里德所羅門碼也能夠實現缺損補償機能,但是,使用LDPC碼的計算量更少,卻能夠達成相同的任務,如3G的映像配訊服務,LDPC碼是極佳的候選之一。
不僅侷限於通訊範疇,硬碟HDD儲存裝置也能夠讓LDPC碼有所發揮,目前硬碟的紀錄密度的年增率大約是30%,早已揮別以往一年兩倍的增加速度。雖然,廠商也努力在導入垂直紀錄方式的新手法,是否能大幅度改善未被看好,但關於高水準的錯誤修正碼能夠提高紀錄密度這一點,就有待時間來證明。
被遺忘40餘年的LDPC之所以能夠重見天日,其實有其歷史催生因素存在。首先,於1962年,當時錯誤修正碼的主流用途幾乎都是聲音的傳送,其編碼長度n比較短,根本發掘不出LDPC碼的優點,況且還差於比他早兩年開發的里德所羅門碼。如今,時空逆轉,多數的應用環境,其編碼長度n從數百個到數萬個的數值,尤其是高速資料通訊。例如無線的資料通訊場合,編碼長度n約在200~5,000個位元之間;若是光纖的中樞網路,其編碼長度n就可以高達數萬個位元。過去被視為錯誤修正碼的標準里德所羅門碼,其典型的編碼長度n約是在255,但是,不可否認的,LDPC碼當編碼長度n越龐大時,符號的計算量也跟著大幅度增加,可能是以n的平方或是n的3次方遞增,超越里德所羅門碼。不過,打破此僵局的Flarion Technologies找到減少計算量的方法,讓計算量與n成比例,此問題便被克服。
第二個讓LDPC碼浴火重生的觸媒就是半導體製程的進步,誠如先前所提,LDPC碼能夠揮灑的空間是編碼長度n較大的場合,也就意味著處理電路的規模也會相對成比例增加,晶片面積也跟著變大,成本自然上揚,而解決此問題的絕佳良方就是90奈米的半導體製程。美商朗訊(Lucent)曾針對光通訊用途,採用0.16毫米製程試做一個1Gbps傳送速度的LSI,內部光是編碼電路的門閘數量就高達175萬個,LSI的大小為7.2毫米。另一家公司System LSI也針對HDD訊號處理電路用途,採用0.13微米製程,試做一個1Gbps傳送速度的LSI,內部電路的門閘數量也是接近100萬個,LSI的大小為3毫米。依據LSI設計廠商的估算,若是採用90奈米設計準則,LSI大小約可以降到2毫米,邁入實用化便來日不遠。
LDPC碼並非打遍天下無敵手,以編碼增益而風靡一時的渦輪碼已受到WCDMA、cdma2000的青睞,而研究發表渦輪碼應用在未來光碟或通訊錯誤修正用途的數量也不少,只是,現實層面上大家對於LDPC碼的評價情勢高漲。況且,當初DVB-S2在制定過程中,原本是要採用渦輪碼,只是後來卻轉向LDPC碼。
根據Flarion推出行動通訊的Flash-OFDM,之所以決定放棄渦輪碼而採用LDPC碼,除較低的計算量外,各種設計參數也比渦輪碼更容易設定,設計自由度較高,另外,渦輪碼有項缺點敗在LDPC手上,那就是渦輪碼的錯誤基數(Error Floor)比較大。所謂錯誤基數是指即使在S/N足夠大的理想通訊環境中,也會出現位元誤碼率居高不下的現象,這往往是由糾錯編碼方式的基本設計或參數選擇的不合理引起的,根據恩益禧(NEC)的說法,有時候位元錯誤率於10-4~10-5附近,渦輪碼就會發生錯誤基數現象。而LDPC碼就相對較小,若是在奇偶行列的構造方法或是選擇適當的參數,這種現象幾乎不會出現,這也就是LDPC碼另一個受人喜愛的地方,它容易採用並行化的處理方式。
談及至此,約略了解LDPC碼的合適用途,它並非萬能,當編碼長度n較短的場合,就選擇其他的錯誤控制碼,因此,IEEE802.16e規格將LDPC碼列為選項就是這個道理。
總而言之,錯誤控制碼(Error Control Coding)有別於一般的資料壓縮編碼(Source Coding),資料在傳輸過程中可能因為傳輸媒介的可靠度不佳,或外在因素干擾而遭破壞,錯誤控制碼的作用就是盡可能還原這些遭受破壞的資料。錯誤控制碼常應用於有線通訊、無線通訊與許多的儲存媒體系統中。LDPC是一種錯誤控制碼,藉由以LDPC編碼欲傳輸的資料,能以較低的功率發送訊號,且仍可以在遠端正確接收到。
LDPC提供優良的編碼增益,相較於渦輪碼亦有較低的計算複雜度,拜現今硬體製作技術的進步,高速平行解碼製作方式得以實現,使得LDPC已成為目前相當熱門的研究領域。