RS255,223糾錯(cuò)編碼的MATLAB仿真課程設(shè)計(jì)報(bào)告書_第1頁
RS255,223糾錯(cuò)編碼的MATLAB仿真課程設(shè)計(jì)報(bào)告書_第2頁
RS255,223糾錯(cuò)編碼的MATLAB仿真課程設(shè)計(jì)報(bào)告書_第3頁
RS255,223糾錯(cuò)編碼的MATLAB仿真課程設(shè)計(jì)報(bào)告書_第4頁
RS255,223糾錯(cuò)編碼的MATLAB仿真課程設(shè)計(jì)報(bào)告書_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、. . . . 編號:課程設(shè)計(jì)說明書題 目: RS(255,223)糾錯(cuò)編碼的 MATLAB仿真 院 (系):專 業(yè):學(xué)生:學(xué) 號:指導(dǎo)教師:2013 年 12月10日目 錄1 引言21.1信道編碼理論與技術(shù)的發(fā)展歷程與應(yīng)用21.2糾錯(cuò)編碼簡介42Reed Solomon編碼概述53Reed Solomon編碼抽象代數(shù)基礎(chǔ)63.1 群63.2環(huán)和域73.3有限域73.4歐幾里得算法84BCH碼、RS碼與其編碼94.1BCH碼、RS碼簡介94.2RS碼的構(gòu)造方法105RS碼的譯碼115.1關(guān)鍵方程的引入125.2多項(xiàng)式的歐幾里得算法135.3BCH/RS碼的解碼步驟156MATLAB主要程序與其

2、仿真結(jié)果187總結(jié)19致20參考文獻(xiàn)21附 錄2222 / 25摘 要在糾錯(cuò)碼領(lǐng)域中Reed-Solomon碼是一類具有嚴(yán)格代數(shù)結(jié)構(gòu)的線性分組碼。由于它突出的糾錯(cuò)能力(特別是糾突發(fā)錯(cuò)誤的能力),常被應(yīng)用于數(shù)據(jù)存儲以與現(xiàn)代數(shù)字通信系統(tǒng)中。在衛(wèi)星通訊中,差錯(cuò)控制編碼技術(shù)對降低誤碼率、提高通信的可靠性具有非常重要的作用。RS(Reed-Solomon)碼是差錯(cuò)控制領(lǐng)域中一種性能優(yōu)異的線性分組循環(huán)碼,由于其具有很強(qiáng)的隨機(jī)錯(cuò)誤和突發(fā)錯(cuò)誤的糾錯(cuò)能力,所以被CCSDS、NASA、ESA 等空間組織接受,廣泛用于深空探測中。目前我國還沒有高碼速率的 RS 硬件譯碼器,雖然“雙星計(jì)劃”已經(jīng)采用 RS糾錯(cuò)編碼技術(shù)

3、,在衛(wèi)星上使用 RS(255,223)硬件編碼器進(jìn)行編碼,但是由于硬件譯碼器的復(fù)雜性,地面接收系統(tǒng)采用的是軟件譯碼,無法保證通信的實(shí)時(shí)性。為此,本文在詳細(xì)介紹RS(255,223)編碼譯碼的基礎(chǔ)上,利用MATLAB軟件對該理論進(jìn)行仿真。關(guān)鍵詞:Reed-Solomon編碼;抽象代數(shù);RS碼編碼;RS碼譯碼算法;RS(255,223)仿真;MATLAB1 引言1.1 信道編碼理論與技術(shù)的發(fā)展歷程與應(yīng)用Shannon 的信道編碼定理給出了有噪信道通信的最大速率,證明了好碼的存在性,但對該定理證明是非構(gòu)造性的,它沒有告訴我們怎么構(gòu)造好碼。如何通過不可靠信道進(jìn)行可靠的通信,是編碼理論所要研究的問題。半

4、個(gè)多世紀(jì)以來,眾多的學(xué)者為構(gòu)造逼近容量限的糾錯(cuò)碼做了大量的工作,但這一問題直到 45 年后才基本得到解決。但是,“過程比目標(biāo)更重要”,在應(yīng)對這一挑戰(zhàn)的過程中,編碼理論家和工程師們應(yīng)用組合數(shù)學(xué)、線性代數(shù)、概率論、有限域理論等數(shù)學(xué)工具,建立了糾錯(cuò)碼的性能參數(shù)限,發(fā)現(xiàn)了許多構(gòu)造糾錯(cuò)碼的方法,并設(shè)計(jì)了有效的編譯碼算法,為信息技術(shù)的蓬勃發(fā)展建立了不朽的功勛!在 Shannon 的論文發(fā)表之前,Richard Hamming 就已經(jīng)為早期的計(jì)算機(jī)設(shè)計(jì)了一種糾單個(gè)錯(cuò)誤的碼,邁出了信道編碼理論與技術(shù)研究的第一步。之后,信道編碼理論與與技術(shù)的大致經(jīng)歷了以下幾個(gè)發(fā)展階段:1. 50 年代至 60 年代初這是編碼理

5、論從無到有并得到迅速發(fā)展的年代,現(xiàn)代編碼理論的許多思想都起源于這一時(shí)期。1)發(fā)現(xiàn)了幾種線性分組碼,如 Golay 碼、Reed-Muller 碼(RM 碼)、Reed-Solomon 碼(RS 碼)、Bose-Chaudhuri-Hocquengham 碼(BCH 碼)、低密度校驗(yàn)碼(LDPC 碼)等,以與卷積碼;2)為這些碼設(shè)計(jì)了有效的譯碼算法,如用于 RS 碼和 BCH 碼譯碼的 PGZ 算法、用于卷積碼譯碼的 Fano 譯碼算法;3)證明了糾錯(cuò)碼的幾個(gè)最小碼距限,如 Hamming 限(H 限)、Singleton限、Plotkin 限(P 限)、Gilbert-Varshamove 限

6、(GV 限),其證明可以在編碼理論的基礎(chǔ)教材中找到;4)1957 年,Elias 提出了一種概念譯碼器表單譯碼器(List Decoder),以突破傳統(tǒng)的限定距離譯碼(BDD)的半最小碼距的糾錯(cuò)半徑;5)1961 年,W. W. Peterson 編寫了第一本關(guān)于糾錯(cuò)碼理論的專著,系統(tǒng)地闡述了糾錯(cuò)碼的基本理論。2. 60 年代至 70 年代初這是糾錯(cuò)碼發(fā)展最為活躍的時(shí)期之一。在此期間,以代數(shù)方法特別是以有限域理論為基礎(chǔ)的線性分組碼理論已趨成熟。1)提出了許多有效的編、譯碼方法。1965年,E. R. Berlekamp提出了一種實(shí)用分組碼的代數(shù)譯碼算法,1969年, J.L. Massey從序

7、列綜合的角度重新推導(dǎo)了這一算法,后人稱之為Berlekamp-Massey算法(BM算法)。BM算法的提出,是分組碼走向?qū)嵱玫囊粋€(gè)重要里程碑。1966年,G. D. Forney第一次采用簡單的分量碼構(gòu)造級聯(lián)碼,以提高碼的性能。第一個(gè)成功的級聯(lián)碼是采用卷積碼作碼、RS碼作外碼的串行級聯(lián)碼,其典型應(yīng)用是在衛(wèi)星通信、深空探測等領(lǐng)域,如Voyager、Galileo、Cassini等任務(wù),這種編碼方式還被應(yīng)用于美國的數(shù)字電視(ATSC)、歐洲的數(shù)字視頻廣播(DVB)和數(shù)字音頻廣播(DAB)等系統(tǒng)中;另一種典型的級聯(lián)碼是C. Berrou于1993年發(fā)現(xiàn)的并行級聯(lián)卷積碼(PCCC),即我們通常所稱的T

8、urbo碼,這是一種逼近Shannon限的碼。1967年,A. J. Viterbi提出了卷積碼的最大似然譯碼算法,實(shí)現(xiàn)了數(shù)字通信道編碼技術(shù)的一次實(shí)質(zhì)性突破。Viterbi算法還在其它領(lǐng)域得到了廣泛應(yīng)用。1974年,Bahl等提出了一種最大后驗(yàn)概率(MAP)譯碼算法(也稱為BCJR算法),其誤比特率(BER)性能優(yōu)于Viterbi算法。但由于計(jì)算復(fù)雜度大大增加,MAP算法直到1993年Berrou發(fā)現(xiàn)Turbo碼之后才得到廣泛應(yīng)用。由于硬判決譯碼通常較軟判決譯碼損失23dB,對分組碼的軟判決譯碼算法的研究也逐漸成為一個(gè)重要的課題。對于卷積碼,硬判決譯碼和軟判決譯碼通過一樣的格圖進(jìn)行譯碼,其復(fù)雜

9、度大體一樣。而對于分組碼,基于格圖的譯碼與代數(shù)譯碼相比,復(fù)雜度會大大增加,因此次優(yōu)的譯碼算法成為首選。在這方面,著名的有廣義最小距離(GMD)譯碼算法、Chase算法等。2)研究了與碼的性能有關(guān)的各種問題,如碼的重量分布、譯碼錯(cuò)誤概率和不可檢錯(cuò)誤概率的計(jì)算、信道的模型化等,所有這些問題的研究為信道編碼技術(shù)的實(shí)用化打下了堅(jiān)實(shí)的基礎(chǔ)。3. 70 年代初至 80 年代這是信道編碼發(fā)展史中最具重要意義的時(shí)期,信道編碼在理論和實(shí)踐方面都取得了豐碩的成果。1)在理論上,以 Goppa 為首的一批學(xué)者在 70 年代初較系統(tǒng)地構(gòu)造了一類逼近 Shannon 限的有理多項(xiàng)式碼Goppa 碼,這在糾錯(cuò)碼的歷史上具

10、有劃時(shí)代的意義。80 年代初,Goppa 等將代數(shù)幾何的理論與方法系統(tǒng)地應(yīng)用于編碼理論中,由 Goppa 碼引出了代數(shù)幾何碼,使得 Goppa 碼日益引起了人們的極大興趣。1987 年,G. Ungerboeck 提出了著名的格圖編碼調(diào)制(TCM)技術(shù),展示了如何將編碼和調(diào)制結(jié)合起來,改善系統(tǒng)的整體性能,這是編碼理論的又一重要里程碑。之后,眾多研究者開始對 TCM 進(jìn)行了深入研究,并將這一概念推廣到分組編碼調(diào)制(BCM)。2)這期間微電子技術(shù)的迅速發(fā)展,為編碼技術(shù)的實(shí)用化打下了堅(jiān)實(shí)的物質(zhì)基礎(chǔ);各種實(shí)際應(yīng)用也帶動了信道編碼技術(shù)的發(fā)展,編碼技術(shù)的實(shí)用化得到了極大關(guān)注,并取得了巨大的進(jìn)展。例如,用于

11、 RS 碼譯碼的 BM 算法進(jìn)一步發(fā)展成熟,出現(xiàn)了無求逆的 BM(iBM)算法、Euclid 算法、Welch-Berlekamp 算法(WB 算法)等,其超大規(guī)模集成電路(VLSI)實(shí)現(xiàn)也得到了充分的發(fā)展。信道編碼技術(shù)最成功的應(yīng)用在于衛(wèi)星通信和深空探測領(lǐng)域,這使得宇宙飛船從遙遠(yuǎn)的太空傳回了許多極其寶貴的天文學(xué)資料。特別值得一提的是,在 1989年的 Galileo 任務(wù)中,由于主天線的故障,數(shù)據(jù)傳輸?shù)乃俾时仍O(shè)計(jì)指標(biāo)大大下降,噴氣式推進(jìn)實(shí)驗(yàn)室(JPL)的科學(xué)家們從地面發(fā)送指令,重新配置板上計(jì)算機(jī),在數(shù)據(jù)傳輸之前進(jìn)行了更多的編碼處理,使得由于硬件故障引起的數(shù)據(jù)傳輸速率下降得以部分恢復(fù),從而挽救

12、了整個(gè)探測計(jì)劃。若不應(yīng)用信道編碼技術(shù),這些成就的取得是不可企與的。此外,信道編碼技術(shù)還用于數(shù)據(jù)存儲系統(tǒng),提高數(shù)據(jù)存儲密度;用于數(shù)據(jù)傳輸系統(tǒng),提高數(shù)據(jù)傳輸速率;用于各種數(shù)字通信系統(tǒng),提高通信質(zhì)量;用于數(shù)字音頻/視頻傳輸系統(tǒng)以與視聽娛樂設(shè)備,為我們的生活帶來美妙的音樂和完美的視覺享受;而且糾錯(cuò)碼技術(shù)還應(yīng)用于超大規(guī)模集成電路設(shè)計(jì)中,以提高集成電路芯片的成品率,降低芯片的生產(chǎn)成本。4. 90 年代以后這一時(shí)期,編碼理論的重大發(fā)現(xiàn)當(dāng)首推1993年Berrou等發(fā)現(xiàn)的Turbo碼。Turbo碼是一種利用偽隨機(jī)交織器構(gòu)造的具有隨機(jī)碼行為的長碼,它采用并行級聯(lián)卷積碼的方式進(jìn)行編碼,用最大后驗(yàn)概率(MAP)譯碼

13、器進(jìn)行迭代譯碼,分量譯碼器之間通過傳遞所謂的外信息來減少信息損失,其性能非常接近Shannon限,這一驚人的性能打破了長期以來的猜想:利用二元卷積碼和序列譯碼是達(dá)到截止速率R (即所謂的“實(shí)際容量”)的一種可實(shí)現(xiàn)的方法。在迭代譯碼器中,所采用的分量碼MAP譯碼器可以用軟入輸出Viterbi算法(SOVA)代替,這會使Turbo碼譯碼性能略有下降,但大大降低了計(jì)算復(fù)雜度和存儲量要求。更為實(shí)用的分量碼譯碼器是Koch等提出的Max-Log-MAP譯碼算法和Robertson等提出的Log-MAP譯碼算法。后來,Hagenauer、Pyndiah又分別將Turbo碼迭代譯碼的思想用于級聯(lián)二元分組碼和

14、乘積碼?,F(xiàn)在,Turbo碼的迭代算法已經(jīng)成為“Turbo原理”,廣泛應(yīng)用于各種級聯(lián)系統(tǒng),如均衡、編碼調(diào)制、信源壓縮、信源信道聯(lián)合編碼以與信號檢測等。另一方面,在探究Turbo碼迭代算法的過程中,Mackay和Neal于1996年重新發(fā)現(xiàn)了Gallager于60年代提出的具有稀疏校驗(yàn)矩陣的線性分組碼LDPC碼,基于Tanner圖進(jìn)行迭代譯碼,其性能與Turbo碼差不多。最近,采用BCH碼作外碼、LDPC碼作碼的級聯(lián)碼已經(jīng)被DVB-S2采納。1998年,Tarokh、Seshadri和Calderbank提出的格圖空時(shí)碼,在時(shí)間和空間上都引入了編碼,集前向糾錯(cuò)(FEC)、發(fā)送分集和接收分集于一體,

15、能獲得較大的編碼增益和分集增益,實(shí)現(xiàn)數(shù)據(jù)的高速傳輸。幾個(gè)月后,Alamouti發(fā)明了低復(fù)雜度的分組空時(shí)碼??諘r(shí)碼的基本思想是采用多個(gè)發(fā)射天線和多個(gè)接收天線來提高系統(tǒng)容量,關(guān)于空時(shí)碼已有許多研究文獻(xiàn)。由于RS碼在眾多數(shù)字通信系統(tǒng)、數(shù)據(jù)存儲系統(tǒng)中的成功應(yīng)用,以與其軟判決譯碼性能的巨大潛力,RS碼的軟判決譯碼問題也得到了很大的關(guān)注。其中,Sudan于1997年提出了多項(xiàng)式復(fù)雜度的表單譯碼(List Decoding)算法,將RS譯碼問題轉(zhuǎn)化成有限域上的曲線擬合問題,給出并證明了幾個(gè)重要的定理,奠定了RS碼表單譯碼的基礎(chǔ)。但Sudan算法只適用于碼率不大于1/3的RS碼,而1999年提出的Gurusw

16、ami-Sudan算法則可適用于任意碼率的RS碼和代數(shù)幾何碼。另一方面,Koetter和Vardy基于Guruswami-Sudan算法,將接收符號的軟信息轉(zhuǎn)化為一系列的代數(shù)條件,用代數(shù)方法實(shí)現(xiàn)了RS碼的軟判決譯碼。1.2 糾錯(cuò)編碼簡介我們知道,在計(jì)算機(jī)和數(shù)據(jù)通信中,經(jīng)常需要將二進(jìn)制數(shù)字信號進(jìn)行傳遞,這種傳遞的距離近則數(shù)米!數(shù)毫米,遠(yuǎn)則超過數(shù)千公里。在傳遞信息過程中,由于存在著各種干擾,可能會使二進(jìn)制信號產(chǎn)生失真現(xiàn)象,即在傳遞過程中二進(jìn)制信號O可能會變成1,1可能會變成0。試想一個(gè)二進(jìn)制信號傳遞的簡單模型,它有一個(gè)發(fā)送端和一個(gè)接收端,二進(jìn)制信號串從發(fā)送端發(fā)出經(jīng)傳輸介質(zhì)而至接收端。由于存在著干擾

17、,因而接收端接收到的二進(jìn)制信號串可能與原來的二進(jìn)制信號串不相等,從而產(chǎn)生了二進(jìn)制信號的錯(cuò)誤傳遞。由于在計(jì)算機(jī)和數(shù)據(jù)通信系統(tǒng)中的信號傳遞是非常的頻繁與廣泛,因此,如何防止傳輸錯(cuò)誤就變得相當(dāng)重要了,當(dāng)然,要解決這個(gè)問題可以有不同的途徑。人們所想到的第一個(gè)途徑是提高設(shè)備的抗干擾能力和信號的抗干擾能力。但是,大家都知道,這種從物理角度去提高抗干擾能力并不能完全消除錯(cuò)誤的出現(xiàn)。第二個(gè)途徑就是我們所要談到的采用糾錯(cuò)碼(Errorcorrectingcode)的方法以提高抗干擾能力。這種糾錯(cuò)碼的方法是從編碼上下功夫,使得二進(jìn)制數(shù)碼在傳遞過程中一旦出錯(cuò),在接收端的糾錯(cuò)碼裝置就能立刻發(fā)現(xiàn)錯(cuò)誤,并將其糾正。由于這

18、種方法簡單易行,因此目前在計(jì)算機(jī)和數(shù)據(jù)通信系統(tǒng)中被廣泛采用"采用這種方法后,二進(jìn)制信號傳遞模型就可以變?yōu)榧m錯(cuò)碼模型了。由糾錯(cuò)碼模型可以想到,當(dāng)二進(jìn)制信號串從發(fā)送端發(fā)送時(shí),需按規(guī)定轉(zhuǎn)換成具有抗干擾能力的糾錯(cuò)碼,然后才發(fā)送出去。在接收端,當(dāng)接收到二進(jìn)制信號串后立即對接收到的糾錯(cuò)碼進(jìn)行檢查,查對在途中是否失真,如失真則負(fù)責(zé)糾正。該模型的一個(gè)典型實(shí)現(xiàn),就是在遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)中具有糾錯(cuò)能力的數(shù)據(jù)傳輸裝置,該裝置的糾錯(cuò)過程是二進(jìn)制信號發(fā)生器發(fā)出信號(二進(jìn)制信號發(fā)生器可以是計(jì)算機(jī),或者是由人控制的某些裝置如終端),經(jīng)差錯(cuò)控制器形成糾錯(cuò)碼,然后經(jīng)調(diào)制器使二進(jìn)制信號變成為適宜于信道傳播的電信號,這種信

19、號通過信道傳輸至接收端,首先通過解調(diào)器將其還原為原來的二進(jìn)制信號,再經(jīng)差錯(cuò)控制器檢驗(yàn)經(jīng)信道傳輸后是否產(chǎn)生失真,并采取措施進(jìn)行糾正。經(jīng)糾正后的二進(jìn)制信號送入二進(jìn)制信號接收器,從而完成整個(gè)傳輸過程"二進(jìn)制信號接收器可以是計(jì)算機(jī),或其他接收裝置如終端等。但是,為什么糾錯(cuò)碼具有發(fā)現(xiàn)錯(cuò)誤!糾正錯(cuò)誤的能力呢?糾錯(cuò)碼又是按什么樣的原理去編的呢?為了說明這些問題,我們首先介紹一些基本概念:由0和1組成的串稱為字(Word),一些字的集合稱為碼(Code)。碼中的字稱為碼字(CodeWord)。不在碼中的字稱為廢碼(InvalidCode)。碼中的每個(gè)二進(jìn)制信號0或1稱為碼元(Code Letter)

20、。我們下面舉出幾個(gè)關(guān)于糾錯(cuò)碼的例子。設(shè)有長度為2的字,它們一共可有2x2=4個(gè),創(chuàng)門所組成的字集S,=00,01,10,11。當(dāng)選取編碼為52時(shí),這種編碼不具有抗干擾能力。因?yàn)楫?dāng)52中的一個(gè)字如10,在傳遞過程中其第一個(gè)碼元1變?yōu)?,因而整個(gè)字成為00時(shí),由于00也是52中的字,故我們不能發(fā)現(xiàn)傳遞中是否出錯(cuò)。但是,當(dāng)我們選取52的一個(gè)子集如C2二00,川作為編碼時(shí)就會發(fā)生另一種完全不同的情況。因?yàn)榇藭r(shí)01和10均為廢碼,而當(dāng)H在傳遞過程中第一個(gè)碼元由1變?yōu)镺,即整個(gè)字成為01時(shí),由于01是廢碼,因而我們發(fā)現(xiàn)傳遞過程中出現(xiàn)了錯(cuò)誤。對00也有同樣的情況。但是,這種編碼有一個(gè)缺點(diǎn),即它只能發(fā)現(xiàn)錯(cuò)誤而

21、不能糾正錯(cuò)誤,因此我們還需要選擇另一種能糾錯(cuò)的編碼"現(xiàn)在我們考慮長度為3的字,它們一共可有2!3=8個(gè),它們所組成的字集凡000,001,010,011,100,101,110,111中我們選取編碼q二001,110。利用此編碼我們不僅能發(fā)現(xiàn)錯(cuò)誤而且能糾正錯(cuò)誤。因?yàn)榇a字001出現(xiàn)錯(cuò)誤后將變?yōu)?000,011,101,而碼字110出現(xiàn)錯(cuò)誤后將變?yōu)?111,100,010。故如碼字001在傳遞過程中任何一個(gè)碼元出現(xiàn)了錯(cuò)誤,整個(gè)碼字只會變?yōu)?01!011或000,但是都可知其原碼為001。對于碼字110也有類似的情況"故對編碼q,我們不僅能發(fā)現(xiàn)錯(cuò)誤而且能糾正錯(cuò)誤"當(dāng)然,

22、上述編碼還有一個(gè)缺點(diǎn),就是它只能發(fā)現(xiàn)并糾正單個(gè)錯(cuò)誤。當(dāng)錯(cuò)誤超過兩個(gè)碼元時(shí),它就既不能發(fā)現(xiàn)錯(cuò)誤,更無法糾正了。2 Reed Solomon編碼概述Reed-Solomon 碼(RS 碼)是 Reed和 Solomon于 1960 年發(fā)現(xiàn)的一類多元最大距離可分(MDS)碼,其最小距離達(dá)到了 Singleton 限mind = n k+ 1,從這個(gè)意義上講,RS 碼是最佳的。之后幾十年里,RS 碼的硬判決譯碼得到了深入的研究,其理論和技術(shù)都已經(jīng)非常成熟。因而,RS碼在現(xiàn)代數(shù)字通信、數(shù)據(jù)存儲系統(tǒng)中得到了廣泛的應(yīng)用,見下表應(yīng)用領(lǐng)域編碼方案硬盤驅(qū)動器RS(32, 28, 5)碼CD交叉交織 RS 碼(CI

23、RC)DVDRS(208, 192, 17)碼、RS(182, 172, 11)碼乘積碼DAB、DVB碼為卷積碼、外碼為 RS(204, 188, 17)碼的級聯(lián)碼ATSC碼為卷積碼、外碼為 RS(207, 187, 21)碼的級聯(lián)碼深空通信碼為卷積碼、外碼為 RS(255, 223, 33)碼的級聯(lián)碼光纖通信RS(255, 239, 17)碼有限域算術(shù)是 RS 碼的基礎(chǔ),并行通用有限域乘法器的時(shí)延決定了 RS 碼譯碼器的工作頻率。如何用現(xiàn)場可編程門陣列(FPGA)實(shí)現(xiàn)通用有限域乘法器,降低其運(yùn)算時(shí)延,是軟件無線電中 RS 碼譯碼子系統(tǒng)設(shè)計(jì)過程中要考慮的一個(gè)關(guān)鍵的問題。在工程實(shí)踐常采用的“直接

24、二級邏輯設(shè)計(jì)”僅僅依靠綜合工具對所設(shè)計(jì)的電路進(jìn)行優(yōu)化,不能有效地利用 FPGA 所提供的資源,降低有限域乘法器的時(shí)延。就作者所知,目前還沒有一種系統(tǒng)的方法,可以用來設(shè)計(jì)高速并行有限域乘法器。RS 碼的硬判決譯碼器不能充分地利用接收信息,造成了一定的性能損失。眾所周知,從最小化不正確譯碼概率的意義上講,最大似然譯碼(MLD)是最好的方法。在 AWGN 信道條件下,RS 碼的最大似然譯碼與硬判決距離譯碼相比,會有 2.53.2dB 的軟判決譯碼增益;在衰落信道條件下,其軟判決譯碼增益會更大。2005 年,Guruswami 和 Vardy90在 IEEE 信息論會刊上撰文指出,RS 碼的最大似然譯

25、碼是 NP-Hard 問題。因此,低復(fù)雜度的次優(yōu)譯碼算法成為人們研究的熱點(diǎn)?,F(xiàn)有的 RS 碼軟判決譯碼算法主要有以下四類:l 基于代數(shù)譯碼器的軟判決譯碼:主要有糾錯(cuò)糾刪譯碼、廣義最小距離(GMD)譯碼算法、Chase 算法、Lacan 算法、有序統(tǒng)計(jì)量譯碼(OSD)算法等;l 基于格圖的譯碼:主要有 Vardy 和 Beery提出的比特級軟判決譯碼算法、Ponnampalam 和 Vucetic提出的簡化的比特級軟判決譯碼算法等;l 基于 Tanner 圖的譯碼:基于自適應(yīng)校驗(yàn)矩陣的軟判決譯碼算法、基于臨界抽取濾波器組表示的軟判決譯碼算法等;l 表單譯碼:主要有 Koetter-Vardy 算

26、法等。這些譯碼算法各有千秋,就實(shí)用性而言,GMD算法、Chase-II算法和Koetter-Vardy算法略勝一籌。3 Reed Solomon編碼抽象代數(shù)基礎(chǔ)3.1 群定義 設(shè)G是一個(gè)非空集合,稱映射為G上的一個(gè)二元運(yùn)算,即對于G中仍以兩個(gè)元a和b,唯一確定(a,b).記為,為了方便起見,可寫成c=ab.定義 設(shè)G是一個(gè)非空集合,是G上的一個(gè)二元運(yùn)算,如果G滿足下列條件:a) (結(jié)合律)對于任意,有b) (單位元)G中存在單位元,對于任意,滿足c) (逆元)對于任意,存在的逆元,滿足則稱G為群,記為.如果群滿足交換律,即對于任意,滿足則稱群 為交換群或阿貝爾群.3.2 環(huán)和域定義 設(shè)R是一個(gè)

27、非空集合,R上有兩個(gè)二元運(yùn)算和,分別成為加法和乘法,如果R滿足下列條件a) 為加法阿貝爾群b) (結(jié)合律)對于任意,有c) (分配律)對于任意,有稱R為環(huán),記為,如果他對乘法滿足交換律,即對任何稱環(huán)為交換環(huán)定義 設(shè)為交換環(huán),表示R中所有非零元的集合,如果在乘法運(yùn)算下構(gòu)成交換群,則稱為域。3.3 有限域定義 設(shè)F為一個(gè)域,如果F只含有有限個(gè)元素,稱F為有限域,含有q個(gè)元素的有限域記為,有限域也成為伽羅華域(Galois field),用GF(q)或表示q階有限域。最簡單的有限域是二元域GF(2)=0,1。定義 對于GF(q)上的每個(gè)非零元素,存在最小整數(shù)k,使成立,則稱為k階元素。定義 對于GF

28、(q)上的每個(gè)非零元素,如果其階數(shù)是q-1,則稱為本原元素。定義上的一個(gè)m次多項(xiàng)式,如果他的所有根都是中的本原元素,則稱是m次本原多項(xiàng)式。例如,對于m = 8時(shí)上的m次本原多項(xiàng)式為對于m = 7時(shí)上的m次本原多項(xiàng)式為定義 設(shè)為中的元素,多項(xiàng)式是上使的最低次多項(xiàng)式,則稱為最小多項(xiàng)式。具有一樣最小多項(xiàng)式的元素,構(gòu)成同一共軛系。3.4 歐幾里得算法歐幾里得算法給定兩個(gè)正整數(shù)a,b,可以用歐幾里得除法得到其最大公約數(shù)(a,b),并求得A,B,滿足(a,b)=Aa+Bb。用歐幾里得除法求(a,b)的步驟如下:第一步:不失一般性,假設(shè)a>b,且令第二步:用除以得到其商數(shù)和余數(shù),亦即第三步:如果,停止

29、運(yùn)算,并記;否則,轉(zhuǎn)第二步。歐幾里得算法又被稱為輾轉(zhuǎn)相除法,這里是單調(diào)下降序列。用歐幾里得算法可以求得A、B,沿用上述除法得到的和n,其方法如下:第一步:令第二步:計(jì)算第三步:如果,停止運(yùn)算,此時(shí),否則轉(zhuǎn)第二步事實(shí)上,只是其中的一個(gè)特例。4 BCH碼、RS碼與其編碼4.1 BCH碼、RS碼簡介如前所述,BCH碼是糾錯(cuò)能力可能的循環(huán)碼,由Bose、Chandhari和Hocquenghem在19501960年間分別獨(dú)立地提出。最初的BCH碼定義在二元域上,成為二元BCH碼,后來推廣到多源于上。對于設(shè)計(jì)糾錯(cuò)能力為t的循環(huán)碼,器生成多項(xiàng)式含有2t個(gè)連續(xù)冪次的根,這樣的循環(huán)碼稱為BCH碼。如果BCH碼

30、的根是本原元,成為本原BCH碼。如果BCH碼的根是非本原元,稱為非本原BCH碼。如果定義在上的本原元以與共2t個(gè)連續(xù)冪次都是定義在上的生成多項(xiàng)式的根,那么該BCH碼成為設(shè)計(jì)糾錯(cuò)能力為t的二元本原BCH碼。對于任意的證書m和糾錯(cuò)數(shù)t,都可以構(gòu)造出最小距離為d的二元本原BCH碼,n, k, d,滿足。另外,實(shí)際的糾錯(cuò)能力t,可能會大于設(shè)計(jì)糾錯(cuò)能力的t.同理,如果定義在上的非本原元以與共2t個(gè)連續(xù)冪次都是定義在上的生成多項(xiàng)式的根,那么該BCH碼成為設(shè)計(jì)糾錯(cuò)能力為t的二元非本原BCH碼。進(jìn)一步假設(shè)非本原元和本原元滿足關(guān)系,其中,如果成立,那么,也就是說是n階非本原元。如果成立,那么可以構(gòu)造出最小距離為

31、d的二元非本原BCH碼,n, k, d,滿足。另外,實(shí)際的糾錯(cuò)能力t,可能會大于設(shè)計(jì)糾錯(cuò)能力的t.BCH碼的編碼是在二元域完成的,對比特進(jìn)行編碼,與普通的二進(jìn)制循環(huán)碼并無不同。而RS的編碼是在多元域上完成的(p是質(zhì)數(shù)),對符號進(jìn)行編碼,因?yàn)镽S碼又被視為多元域上的本原BCH碼。如果定義在上的生成多項(xiàng)式,其中是定義在上的本原元,那么該BCH碼被稱為糾錯(cuò)能力為t的RS碼。4.2 RS碼的構(gòu)造方法第一步,由關(guān)系式算出m,查本原多項(xiàng)式表得到一個(gè)m次的本原多項(xiàng)式,從而產(chǎn)生一個(gè)的擴(kuò)域,使域元素(符號)與m重向量建立起一一對應(yīng)的關(guān)系本原多項(xiàng)式表mM本原多項(xiàng)式2345678第二步:根據(jù)設(shè)計(jì)糾錯(cuò)能力t,直接計(jì)算

32、定義在上的生成多項(xiàng)式。利用和等運(yùn)算規(guī)則,可以將展開并化簡為。第三步:已知生成多項(xiàng)式,根據(jù)關(guān)系式,對信息位多項(xiàng)式編碼得到碼字多項(xiàng)式,這就完成了RS碼的編碼過程。這里的、和都是上的多項(xiàng)式。而對于長度為mk的二進(jìn)制的輸入序列,以m個(gè)比特位一組劃分可以得到k個(gè)m重向量,再將每個(gè)m重向量映射為上的元素,從而得到長度為k的多元序列。得到長度為n的多元序列后,對于每一個(gè)上的元素,再映射為m重向量,從而得到長度為nm的二進(jìn)制編碼序列。例如,對于信息輸入比特序列100,101,010,首先根據(jù)表格的各次冪將序列映射為上的序列,則其信息位多項(xiàng)式。那么可以求得上的碼字多項(xiàng)式。從而得到上的編碼序列。再根據(jù)表格的各次冪

33、將其映射為二進(jìn)制編碼序列即可得到RS碼。表格 的各次冪即約多項(xiàng)式3重向量00001001010100011110111101RS碼是糾正短突發(fā)差錯(cuò)的首選糾錯(cuò)碼,廣泛應(yīng)用于無線通信的存儲系統(tǒng)中。例如,美國宇航局(NASA)在探險(xiǎn)者號(Voyager)上用了256進(jìn)制的255,223,33RS碼,其生成擴(kuò)域的本原多項(xiàng)式是,生成多項(xiàng)式是。是本原多項(xiàng)式的根,因?yàn)楹?2個(gè)連續(xù)冪次的根,因而改碼的糾錯(cuò)能力為符號個(gè)符號(256進(jìn)制)或者等效長度是的二進(jìn)制特發(fā)差錯(cuò)。5 RS碼的譯碼由于BCH碼和R-S碼都是循環(huán)碼,所以可以采用一般的梅杰特解碼器,但是BCH碼和R-S碼的設(shè)計(jì)糾錯(cuò)能力都比較髙,從而使得梅杰特解

34、碼器的實(shí)現(xiàn)復(fù)雜度BCH碼和RS碼的解碼原理是一樣的,其髙效解碼算法的基礎(chǔ)在于一個(gè)關(guān)鍵方程的引入和基于多項(xiàng)式的歐幾里德算法。在BCH/RS碼的解碼算法的發(fā)展歷史上,彼得森(Peterson)于1960年提出了第一個(gè)BCH的解碼算法。之后,錢(Chien)、福尼(Formey)、梅西(Massey)和巴勒坎普(Berlekamp)相繼提出了更高效的BCH解碼算法。到了 1975 年,Sugiyama、Kasahara、Hirasawa和Namekawa發(fā)現(xiàn)也可以采用歐幾里德(Euclid)算法對BCH/RS碼解碼,并發(fā)現(xiàn)巴勒坎普(Berlekamp) 解碼算法與歐幾里德(Euclid)算法相比僅差

35、一個(gè)很小的常數(shù)因子。而歐幾里德(Euclid)算法更容易理解些,所以得到了更廣泛的應(yīng)用。具體解碼又可以分為時(shí)域解碼和頻域解碼。5.1 關(guān)鍵方程的引入令F是一個(gè)含有n階單元本原元的域,那么根據(jù)定義有,再令V是F上的一個(gè)n維向量,稱為時(shí)域向量。又令,是V的離散傅里葉變換(DFT),成為頻域向量;DFT(離散傅里葉變換):那么,可以證明,從頻域到時(shí)域的IDFT(逆離散傅里葉變換)也成立;IDFT(逆離散傅里葉變換):設(shè)F是,p是質(zhì)數(shù),那么特征是p。IDFT中的是以特征p為模的同余類。易知,所以,根據(jù)歐幾里得算法有。對于,在定義V和的生成多項(xiàng)式:和。那么,可以將上述的離散傅里葉變換寫為:對于V,定義他

36、的支持集,亦即I是V中非零元素的索引集。在定義V的位置多項(xiàng)式。對于,再定義i階穿孔位置多項(xiàng)式。最后,定義V的數(shù)值多項(xiàng)式。那么,可以證明。定理 關(guān)鍵方程:對于固定的向量V,多項(xiàng)式,和滿足一下關(guān)鍵方程有了上述的數(shù)學(xué)基礎(chǔ),就可以引入BCH/RS碼的關(guān)鍵方程了。設(shè)編碼向量為,信道錯(cuò)誤圖案為向量,那么接收向量,解碼的第一步是計(jì)算伴隨式向量 ,的定義如下那么,令時(shí)域向量,那么易知,伴隨式向量S與頻域向量滿足關(guān)系,亦即,伴隨式向量S是的錢2t個(gè)分量,這是可以直接觀測到的,而的后(n-2t)個(gè)分量不能直接觀測到。記伴隨式多項(xiàng)式解碼算法的目的是已知伴隨式向量S求錯(cuò)誤圖案向量E,從而得到解碼向量,由于只是知道頻域

37、向量的前2t個(gè)分量,需要用對關(guān)鍵方程降次。所以得到BCH/RS的關(guān)鍵方程由于V的支持集是發(fā)生誤碼的標(biāo)號集合,所以又被成為錯(cuò)誤位置多項(xiàng)式,而又被成為錯(cuò)誤數(shù)值多項(xiàng)式,其中,t是最高次的數(shù)字。t是BCH/RS碼的設(shè)計(jì)糾錯(cuò)能力。5.2 多項(xiàng)式的歐幾里得算法BCH解碼的目標(biāo)是已知,通過求解關(guān)鍵方程,得到和,進(jìn)而求出。求解的關(guān)鍵算法是歐幾里得算法。在抽象代數(shù)基礎(chǔ)已經(jīng)介紹了歐幾里得算法,這里將其推廣到多項(xiàng)式上。多項(xiàng)式上的歐幾里得算法給定兩個(gè)有限域F上的兩個(gè)多項(xiàng)式可以用歐幾里得除法得到其最大公約數(shù),并求得,滿足歐幾里得除法求的步驟如下:第一步:不失一般性,假設(shè)且令第二步:用除以,得到其商數(shù)和余數(shù),亦即第三步:

38、如果,停止運(yùn)算,并記;否則,轉(zhuǎn)第二步。歐幾里得處理又被成為輾轉(zhuǎn)相除法,這里是單調(diào)下降序列。用歐幾里得算法可以求得。沿用上述除法得到和,其方法如下:第一步:第二步:計(jì)算第三步:如果,停止運(yùn)算,此時(shí),;否則,轉(zhuǎn)第二步。這里,是單調(diào)遞增函數(shù),而也是單調(diào)遞增函數(shù)。容易得到以下兩條性質(zhì):從而推出以下性質(zhì):進(jìn)一步有如下定理:定理 設(shè)和是非零多項(xiàng)式,是非零負(fù)整數(shù),滿足:進(jìn)一步假設(shè)和是對應(yīng)用歐幾里得算法得到的多項(xiàng)式序列。那么存在且唯一存在標(biāo)號使得用一個(gè)歐幾里得抽象函數(shù)表示上述結(jié)果。進(jìn)而存在一個(gè)常數(shù)多項(xiàng)式,使得:這個(gè)定理表明完全可以用歐幾里得算法解決BCH/RS碼的關(guān)鍵方程。5.3 BCH/RS碼的解碼步驟有了

39、關(guān)鍵方程和歐幾里得抽象函數(shù),討論BCH/RS解碼的步驟就水到渠成了。假設(shè)已經(jīng)求得了錯(cuò)誤位置多項(xiàng)式和錯(cuò)誤數(shù)值多項(xiàng)式,為了求差錯(cuò)圖案多項(xiàng)式,有時(shí)域和頻域處理兩種方法。求出后,解碼碼字向量時(shí)域算法的本質(zhì)就是對錯(cuò)誤位置多項(xiàng)式進(jìn)行驗(yàn)根。由于,那么;反之,如果,那么含有因子。所以,如果,說明第個(gè)位置上的接收向量,存在誤碼,否則第個(gè)位置上的接收向量是正確的。對于二元域BCH碼,比較簡單,如果,那么,否則。而對于多元域上的RS碼,是多元域元素,還需要進(jìn)一步求出。對于RS碼,如果,那么,亦即,否則。首先用C語言偽代碼說明BCH碼的時(shí)域解碼算法,如下所示:/*二元域BCH碼的屬于解碼算法*/*碼長n,設(shè)計(jì)糾錯(cuò)能力

40、t,接收向量R,錯(cuò)誤圖案向量E,解碼碼字向量*/for(j = 1 to 2t);/;if()printf("接收碼字正確,無誤碼");else/用歐幾里得算法解關(guān)鍵方程;if()printf("誤碼超出了糾錯(cuò)能力t,不可解碼");else;for(i = 0 to n-1)if()elsefor(i = 0 to n-1)printf("接收到的碼字為:");解碼中需要?dú)w一化。因?yàn)?,所以,從而歸一化是必須的。如果,那么無法歸一化,這通常是因?yàn)檎`碼超過了糾錯(cuò)能力t,從而不可解碼。由于BCH碼的簡單性,無需用到。下面說明RS碼的解碼算法

41、,如下所示:/*RS解碼算法*/*碼長n,設(shè)計(jì)糾錯(cuò)能力t,接收向量R,錯(cuò)誤圖案向量E,解碼碼字向量*/for(j = 1 to 2t);/;if()printf("接收碼字正確,無誤碼");else/用歐幾里得算法解關(guān)鍵方程;if()printf("誤碼超出了糾錯(cuò)能力t,不可解碼");elsefor(i = 0 to n-1)if()elsefor(i = 0 to n-1)printf("接收到的碼字為:");至此,RS編碼解碼的代數(shù)基礎(chǔ)、編碼理論與方法,解碼理論與方法均已介紹完畢,下面利用MATLAB進(jìn)行仿真。6 MATLAB主要

42、程序與其仿真結(jié)果利用MATLAB編寫仿真程序如下所示:% 信源編碼clc; clear;m = 8; % GF(2m) = GF(28)伽羅瓦域n = 2m-1; k = 223; %定義編碼長度RS(n, k) = RS(2m - 1, k) = RS(255, 223)data = ceil(255*rand(1, 223); % 構(gòu)建1個(gè)隨機(jī)生成的數(shù)據(jù)包數(shù)據(jù)圍0255,共223個(gè)數(shù)據(jù)msg = gf(data,m); % 生成伽羅華域,限定msg信息的運(yùn)算圍,所有關(guān)于msg的運(yùn)算都將進(jìn)行mod(2m)運(yùn)算、Code = rsenc(msg,n,k); % 在伽羅瓦域?qū)sg進(jìn)行編碼。使用

43、RS(255, 223)編碼 %code = GF(28) array. 特征多項(xiàng)式Primitive polynomial = D8+D4+D3+D2+1 % 構(gòu)建018個(gè)隨機(jī)生成的隨機(jī)信道誤碼,RS(255,223)可以糾正(n-k)/2=16個(gè)隨機(jī)位置錯(cuò)誤Err_cut_t = round(18 * rand(1);%隨機(jī)構(gòu)建018個(gè)隨機(jī)生成的錯(cuò)誤,RS(255,223)可以糾正(n-k)/2=16個(gè)隨機(jī)位置錯(cuò)誤Err_pos = randperm(223,Err_cut_t); %隨機(jī)生成Err_cut_t個(gè)不重復(fù)位置錯(cuò)誤Errs = ceil(255*rand(1, Err_cut_

44、t);%隨機(jī)構(gòu)建Err_cut_t個(gè)數(shù)據(jù)突發(fā)錯(cuò)誤,Error = zeros(1,255);%全零信道誤碼,即無信道誤碼。for j = 1 : Err_cut_t Error(Err_pos(j) = Errs(j);%給出現(xiàn)突發(fā)數(shù)據(jù)錯(cuò)誤的位置賦予突發(fā)數(shù)據(jù)錯(cuò)誤endErrors = gf(Error,m);%信道噪聲加入完畢,下面進(jìn)行解碼% Recv為接收到的信號。rsdec函數(shù)進(jìn)行解碼Recv = Code + Errors; % 二進(jìn)制模2m加,在伽羅華域中運(yùn)算,所有大于255的數(shù)都將進(jìn)行模運(yùn)算 R = E + Cdec,cnumerr = rsdec(Recv,n,k); % 解碼us

45、e RS decoder umerr是一個(gè)列向量,記載了每一行糾正的錯(cuò)誤數(shù),-1表示糾錯(cuò)失敗 % 驗(yàn)證正確性。%畫信源圖程序代碼運(yùn)行結(jié)果如下:由MATLAB仿真結(jié)果可以看到,只要信道噪聲小于16個(gè)隨機(jī)突發(fā)錯(cuò)誤,利用RS(255,223)編碼后的信號通過隨機(jī)信道噪聲加成后再利用解碼算法可以完美的還原信源。7 總結(jié)我國的航天事業(yè)正處于蓬勃發(fā)展的階段,月球探測等今后的重大項(xiàng)目都對數(shù)據(jù)的傳輸提出了越來越高的要求,高速的數(shù)據(jù)傳輸系統(tǒng)必將得到更多的推廣。本課題中 RS(255,223)譯碼器仿真對以后的航天項(xiàng)目中的地面高速接收系統(tǒng)的設(shè)計(jì)和星上數(shù)據(jù)接收系統(tǒng)的設(shè)計(jì)均有著很大的意義。本文詳細(xì)介紹了糾錯(cuò)碼的相關(guān)理

46、論,包括編碼定理、有限域運(yùn)算法則、BCH 碼、RS 碼的基礎(chǔ)知識,還介紹了RS碼的譯碼,為后續(xù)MATLAB仿真奠定了本論文的理論基礎(chǔ)。RS碼一直是國際通信領(lǐng)域研究的熱點(diǎn),由于其良好的對隨機(jī)錯(cuò)誤和突發(fā)錯(cuò)誤的糾錯(cuò)能力,尤其是對突發(fā)錯(cuò)誤的糾錯(cuò),已經(jīng)廣泛被應(yīng)用于各種數(shù)字通信系統(tǒng)中,本論文采用的是時(shí)域譯碼算法,另外頻域算法也是比較常用的一種算法。隨著對 RS 碼研究的深入,新算法也層出不窮,設(shè)計(jì)高效的算法必將大幅度提升系統(tǒng)的性能、提高處理速度和減少對軟硬件資源的占用。,因此如何設(shè)計(jì)高效的算法將是以后的努力方向。還有從功能實(shí)現(xiàn)和性能的角度來看,本設(shè)計(jì)還有較大的改進(jìn)空間。通過采用高效的算法與優(yōu)秀的代碼將會大

47、幅度提高性能。可以預(yù)見,隨著科學(xué)技術(shù)的進(jìn)步和研究的深入,糾錯(cuò)碼理論將進(jìn)一步地發(fā)展,必將得到更廣泛的應(yīng)用。致 在本次課設(shè)中,自己復(fù)習(xí)了有關(guān)MATLAB程序和信息論相關(guān)理論知識,在之前信號與系統(tǒng)與數(shù)字信號處理的實(shí)驗(yàn)課程中初步學(xué)習(xí)了有關(guān)MATLAB軟件對于信號仿真與分析中的應(yīng)用,RS碼作為現(xiàn)代通信領(lǐng)域的熱點(diǎn),首先自己有一定的興趣去學(xué)習(xí),在所翻閱的資料中,有了關(guān)于RS碼的較為詳盡的介紹與應(yīng)用舉例,在此對這些論著與文獻(xiàn)的作者表示感,接著感在此次課設(shè)中給予我?guī)椭耐瑢W(xué)們,對于MATLAB軟件操作自己開始有一些的生疏給予了指導(dǎo),最后感此次的指導(dǎo)老師熬珺老師在自己學(xué)習(xí)過程中所遇困惑給予的解答與幫助,作為通信專

48、業(yè)的畢業(yè)生,在大四的課設(shè)中接觸到一些應(yīng)用性較強(qiáng)的前沿知識,自己得到了鍛煉,對于以后走向工作崗位有很大的幫助,老師嚴(yán)謹(jǐn)?shù)膶W(xué)術(shù)態(tài)度與本著對學(xué)生負(fù)責(zé)的想法令人敬佩,本次課設(shè)自己以認(rèn)真的態(tài)度和花費(fèi)較多的時(shí)間與精力完成,如有不足之處,望老師給予指教與包涵,!參考文獻(xiàn)1 美 Robert J.McEliece,斗 等譯信息論與編碼理論第二版2 世鎰、魯生信息論與編碼理論3 美Ranjan Bose 武傳坤譯信息論、編碼與密碼學(xué)4 美Robert H.Morelos-Zaragoza著 立軍譯糾錯(cuò)編碼的藝術(shù)5 吳湛擊 著 王文博 審現(xiàn)代糾錯(cuò)編碼與調(diào)制理論與應(yīng)用6 宋文俊 華東師大學(xué)碩士學(xué)位論文RS碼的譯碼研

49、究7 石俊峰 中國科學(xué)院研究生院碩士學(xué)位論文RS(255,223)譯碼器的FPGA實(shí)現(xiàn)與其性能測試8 徐朝軍 電子科技大學(xué)博士學(xué)位論文RS碼譯碼算法與其實(shí)現(xiàn)的研究附 錄MATLAB仿真程序:% 信源編碼clc; clear;m = 8; % GF(2m) = GF(28)伽羅瓦域n = 2m-1; k = 223; %定義編碼長度RS(n, k) = RS(2m - 1, k) = RS(255, 223)data = ceil(255*rand(1, 223); % 構(gòu)建1個(gè)隨機(jī)生成的數(shù)據(jù)包數(shù)據(jù)圍0255,共223個(gè)數(shù)據(jù)msg = gf(data,m); % 生成伽羅華域,限定msg信息的運(yùn)

50、算圍,所有關(guān)于msg的運(yùn)算都將進(jìn)行mod(2m)運(yùn)算、Code = rsenc(msg,n,k); % 在伽羅瓦域?qū)sg進(jìn)行編碼。使用RS(255, 223)編碼 %code = GF(28) array. 特征多項(xiàng)式Primitive polynomial = D8+D4+D3+D2+1 x = input('手動輸入隨機(jī)信道誤碼則請輸入非零數(shù),隨機(jī)輸入隨機(jī)信道誤碼則請輸入0:');if(x = 0) % 構(gòu)建018個(gè)隨機(jī)生成的隨機(jī)信道誤碼,RS(255,223)可以糾正(n-k)/2=16個(gè)隨機(jī)位置錯(cuò)誤 Err_cut_t = round(16 * rand(1);%隨機(jī)

51、構(gòu)建018個(gè)隨機(jī)生成的錯(cuò)誤,RS(255,223)可以糾正(n-k)/2=16個(gè)隨機(jī)位置錯(cuò)誤 Err_pos = randperm(223,Err_cut_t); %隨機(jī)生成Err_cut_t個(gè)不重復(fù)位置錯(cuò)誤 Errs = ceil(255*rand(1, Err_cut_t);%隨機(jī)構(gòu)建Err_cut_t個(gè)數(shù)據(jù)突發(fā)錯(cuò)誤, Error = zeros(1,255);%全零信道誤碼,即無信道誤碼。 for j = 1 : Err_cut_t Error(Err_pos(j) = Errs(j);%給出現(xiàn)突發(fā)數(shù)據(jù)錯(cuò)誤的位置賦予突發(fā)數(shù)據(jù)錯(cuò)誤 end Errors = gf(Error,m);else

52、 % 數(shù)據(jù)輸入 Err_cut_t = input('請輸入Err_cut_t個(gè)突發(fā)隨機(jī)錯(cuò)誤個(gè)數(shù),RS(255,223)只能糾錯(cuò)16個(gè)以的編碼!:'); if(Err_cut_t > 16 | Err_cut_t < 0) display('不能正確糾錯(cuò)' num2str(Err_cut_t) '個(gè)錯(cuò)誤,請重新運(yùn)行程序'); return; else display(num2str(Err_cut_t) '個(gè)突發(fā)錯(cuò)誤') end Err_pos = input('請輸入' num2str(Err_cut

53、_t) '個(gè)不重復(fù)隨機(jī)位置錯(cuò)誤向量 Err_pos = :'); while(1) if(length(Err_pos) = Err_cut_t)%如果長度不相等 Err_pos = input('輸入數(shù)據(jù)長度不匹配,請重新輸入'); else if(sum(Err_pos > 255, 2) + sum(Err_pos < 0, 2)%如果超出圍 display('超出數(shù)據(jù)圍,請重新輸入,請重新運(yùn)行程序') return; else break; end end end Errs = input('請?jiān)趯?yīng)錯(cuò)位位置輸入錯(cuò)誤Err_cut_t個(gè)的數(shù)據(jù)Errs = :'); Error = zeros(1,255);%全零信道誤碼,即無信道誤碼。 while(1) if(length(Errs) = Err_cut_t)%如果長度不相等 Errs = input('輸入數(shù)據(jù)長度不匹配,請重新輸入'); else if(sum(Errs > 255, 2) + sum(Errs < 0, 2)%如果超出圍 display('超出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論