循環(huán)碼編譯碼軟件設(shè)計_第1頁
循環(huán)碼編譯碼軟件設(shè)計_第2頁
循環(huán)碼編譯碼軟件設(shè)計_第3頁
循環(huán)碼編譯碼軟件設(shè)計_第4頁
循環(huán)碼編譯碼軟件設(shè)計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、*實踐教學(xué)*蘭州理工大學(xué)計算機與通信學(xué)院2012年春季學(xué)期 計算機通信 課程設(shè)計摘要循環(huán)碼是線性分組碼的一種,它具有線性分組碼的一般性質(zhì),當(dāng)然它還具有循環(huán)性。循環(huán)碼的編碼和解碼設(shè)備都不太復(fù)雜,且檢(糾)錯能力較強。本說明書介紹了(7,4)循環(huán)碼的編碼與譯碼原理,用C語言編程實現(xiàn)其編碼與譯碼功能。 通過C語言平臺運行所編寫的程序,輸入任意的數(shù)字信息序列,得出了編碼結(jié)果。另外還分別在無差錯和部分差錯的情況下進行了譯碼。關(guān)鍵詞:循環(huán)碼;編碼與譯碼;C語言26前言隨著時代的變遷,信息潮流的沖擊,通信越來越被人們重視。伴隨信息時代的到來,計算機通信技術(shù)也在不斷地發(fā)展。目前,計算機通信技術(shù)已廣泛應(yīng)用于辦公

2、自動化、企業(yè)管理與生產(chǎn)過程控制、金融與商業(yè)電子化、軍事、科研、教育信息服務(wù)、醫(yī)療衛(wèi)生等領(lǐng)域。Internet技術(shù)發(fā)展迅速,全球性信息高速公路建設(shè)的浪潮正在興起。人們已經(jīng)意識到:計算機網(wǎng)絡(luò)正在改變著人們的工作方式與生活方式,網(wǎng)絡(luò)與通信技術(shù)已成為影響一個國家與地區(qū)經(jīng)濟、科學(xué)與文化發(fā)展的重要因素之一。現(xiàn)代社會發(fā)展越來越快,這要求通信系統(tǒng)功能越來越強,可靠性越來越高,因此通信系統(tǒng)的構(gòu)成就越來越復(fù)雜。 在計算機通信信息碼中循環(huán)碼是線性分組碼的一個重要子集,它的循環(huán)碼的編碼和譯碼電路比較簡單,糾錯能力也較強,是目前研究得最成熟的一類碼。因此本文運用C語言對(7,4)循環(huán)碼的編碼與譯碼進行編程及運行仿真。C

3、語言是一種結(jié)構(gòu)化語言。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護。C語言的表現(xiàn)能力和處理能力極強。它不僅具有豐富的運算符和數(shù)據(jù)類型,便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。它還可以直接訪問內(nèi)存的物理地址,進行位(bit)一級的操作。由于C語言實現(xiàn)了對硬件的編程操作,因此C語言集高級語言和低級語言的功能于一體。既可用于系統(tǒng)軟件的開發(fā),也適合于應(yīng)用軟件的開發(fā)。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。目錄第一章 計算機通信技術(shù)的歷史和發(fā)展41.1 通信的概念及發(fā)展史41.2 計算機通信的介紹51.3 計算機通信網(wǎng)絡(luò)5第二章 糾錯碼與循

4、環(huán)碼的介紹62.1 糾錯碼62.2 糾錯碼的基本原理和性能參數(shù)62.3 循環(huán)碼的介紹7第三章 設(shè)計過程及運行結(jié)果103.1 C語言的介紹103.2 循環(huán)碼編碼的設(shè)計113.3循環(huán)碼譯碼的設(shè)計123.4 運行結(jié)果143.5 軟件的可行性分析17總結(jié)18參考文獻(xiàn)19附錄20第一章 計算機通信技術(shù)的歷史和發(fā)展1.1 通信的概念及發(fā)展史通信在不同的環(huán)境下有不同的解釋,在出現(xiàn)電波傳遞通信后通信(Communication)被單一解釋為信息的傳遞,是指由一地向另一地進行信息的傳輸與交換,其目的是傳輸消息。然而,通信是在人類實踐過程中隨著社會生產(chǎn)力的發(fā)展對傳遞消息的要求不斷提升使得人類文明不斷進步。在各種各

5、樣的通信方式中,利用“電”來傳遞消息的通信方法稱為電信(Telecommunication),這種通信具有迅速、準(zhǔn)確、可靠等特點,且?guī)缀醪皇軙r間、地點、空間、距離的限制,因而得到了飛速發(fā)展和廣泛應(yīng)用;在現(xiàn)今因電波的快捷性使得從遠(yuǎn)古人類物質(zhì)交換過程中就結(jié)合文化交流與實體經(jīng)濟不斷積累進步的實物性通信(郵政通信)被人類理解為制約經(jīng)濟發(fā)展的阻礙。 afd5a4fK:JFD()本文來自移動通信網(wǎng),版權(quán)所有據(jù)信號方式的不同,通信可分為模擬通信和數(shù)字通信。什么是模擬通信呢?比如在電話通信中,用戶線上傳送的電信號是隨著用戶聲音大小的變化而變化的。這個變化的電信號無論在時間上或是在幅度上都是連續(xù)的,這種信號稱為

6、模擬信號。在用戶線上傳輸模擬信號的通信方式稱為“模擬通信”。數(shù)字信號與模擬信號不同,它是一種離散的、脈沖有無的組合形式,是負(fù)載數(shù)字信息的信號。電報信號就屬于數(shù)字信號。由于人們對各種通信業(yè)務(wù)的需求迅速增加,數(shù)字通信正向著小型化、智能化、高速大容量的方向迅速發(fā)展,最終必將取代模擬通信。ds不21fds3a2K:JFD()$#_*(本文來自移動通信網(wǎng),版權(quán)所有人類進行通信的歷史已很悠久。早在遠(yuǎn)古時期,人們就通過簡單的語言、壁畫等方式交換信息。千百年來,人們一直在用語言、圖符、鐘鼓、煙火、竹簡、紙書等傳遞信息。在現(xiàn)代社會中,交通警的指揮手語、航海中的旗語等不過是古老通信方式進一步發(fā)展的結(jié)果。這些信息傳

7、遞的基本方都是依靠人的視覺與聽覺。19世紀(jì)中葉以后,隨著電報、電話的發(fā)有,電磁波的發(fā)現(xiàn),人類通信領(lǐng)域產(chǎn)生了根本性的巨大變革,實現(xiàn)了利用金屬導(dǎo)線來傳遞信息,20世紀(jì)60年代以后集成電路、電子計算機的出現(xiàn),使得數(shù)字通信迅速發(fā)展。20世紀(jì)80年代末多媒體技術(shù)的興起,使計算機具備了綜合處理文字、聲音、圖像、影視等各種形式信息的能力,日益成為信息處理最重要和必不可少的工具,電子計算機和通信技術(shù)的緊密結(jié)合,標(biāo)志著數(shù)字化信息時代的到來。 1.2 計算機通信的介紹計算機通信是一種以數(shù)據(jù)通信形式出現(xiàn),在計算機與計算機之間或計算機與終端設(shè)備之間進行信息傳遞的方式。 計算機通信的基本原理是將電信號轉(zhuǎn)換為邏輯信號,其

8、轉(zhuǎn)換方式是將高低電平表示為二進制數(shù)中的1和0, 再通過不同的二進制序列來表示所有的信息。也就是將數(shù)據(jù)以二進制中的0和1的比特流的電的電壓做為表示,產(chǎn)生的脈沖通過媒介(通訊設(shè)備)來傳輸數(shù)據(jù),達(dá)到通信的功能,這個是osl的物理層,也就是通信的工作原理。1.3 計算機通信網(wǎng)絡(luò)計算機通信網(wǎng)絡(luò)是計算機技術(shù)和通信技術(shù)相結(jié)合而形成的一種新的通信方式,主要是滿足數(shù)據(jù)傳輸?shù)男枰?。它將不同地理位置、具有獨立功能的多臺計算機終端及附屬硬件設(shè)備(路由器、交換機)用通信鏈路連接起來,并配備相應(yīng)的網(wǎng)絡(luò)軟件,以實現(xiàn)通信過程中資源共享而形成的通信系統(tǒng)。它不僅可以滿足局部地區(qū)的一個企業(yè)、公司、學(xué)校和辦公機構(gòu)的數(shù)據(jù)、文件傳輸需要

9、,而且可以在一個國家甚至全世界范圍進行信息交換、儲存和處理,同時可以提供語音、數(shù)據(jù)和圖像的綜合性服務(wù),是未來信息技術(shù)發(fā)展的必由之路。目前,計算機網(wǎng)絡(luò)和數(shù)據(jù)通信發(fā)展迅速,各國都通過建成的公用數(shù)據(jù)通信網(wǎng)享用各數(shù)據(jù)庫資源和網(wǎng)絡(luò)設(shè)備資源。為發(fā)展高新技術(shù)和國民經(jīng)濟服務(wù)。計算機通信技術(shù)、數(shù)據(jù)庫技術(shù)相基于兩者基礎(chǔ)上的聯(lián)機檢索技術(shù)已廣泛應(yīng)用于信息服務(wù)領(lǐng)域。從報刊、人工采集、會員單位組織的傳統(tǒng)信息服務(wù)方式正逐步被以數(shù)據(jù)庫形式組織的信息通信計算機網(wǎng)絡(luò)供用戶聯(lián)機檢索所代替。信息量和隨機性增大,信息更新加快,信息價值明顯提高,信息處理和利用更加方便。因此,計算機網(wǎng)絡(luò)通信系統(tǒng)是信息社會的顯著標(biāo)志,在信息處理和傳遞中占重

10、要位置。第二章 糾錯碼與循環(huán)碼的介紹2.1 糾錯碼糾錯編碼又稱信道編碼,它與信源編碼是信息傳輸?shù)膬蓚€方面。它們之間存在對偶的關(guān)系。應(yīng)用信道譯碼直接對一些自然信息進行處理,可以去掉剩余度,以達(dá)到壓縮數(shù)據(jù)的目的。糾錯碼(error correcting code),在傳輸過程中發(fā)生錯誤后能在收端自行發(fā)現(xiàn)或糾正的碼。僅用來發(fā)現(xiàn)錯誤的碼一般常稱為檢錯碼。為使一種碼具有檢錯或糾錯能力,須對原碼字增加多余的碼元,以擴大碼字之間的差別 ,即把原碼字按某種規(guī)則變成有一定剩余度(見信源編碼)的碼字,并使每個碼字的碼之間有一定的關(guān)系。關(guān)系的建立稱為編碼。碼字到達(dá)收端后,可以根據(jù)編碼規(guī)則是否滿足以判定有無錯誤。當(dāng)不

11、能滿足時,按一定規(guī)則確定錯誤所在位置并予以糾正。糾錯并恢復(fù)原碼字的過程稱為譯碼。檢錯碼與其他手段結(jié)合使用,可以糾錯。為了使一種碼具有檢錯或糾錯能力,必須對原碼字增加多余的碼元,以擴大碼字之間的差別,使一個碼字在一定數(shù)目內(nèi)的碼元上發(fā)生錯誤時,不致錯成另一個碼字。準(zhǔn)確地說,即把原碼字按某種規(guī)則變成有一定剩余度的碼字,并使每個碼字的碼元間有一定的關(guān)系。關(guān)系的建立稱為編碼。碼字到達(dá)收端后,用編碼時所用的規(guī)則去檢驗。如果沒有錯誤,則原規(guī)則一定滿足,否則就不滿足。由此可以根據(jù)編碼規(guī)則是否滿足以判定有無錯誤。當(dāng)不能滿足時,在可糾能力之內(nèi)按一定的規(guī)則確定錯誤所在的位置,并予以糾正。糾錯并恢復(fù)原碼字的過程稱為譯

12、碼;碼元間的關(guān)系為線性時,稱為線性碼;否則稱為非線性碼。檢錯碼與其他手段結(jié)合使用,可以糾錯。檢錯反饋重發(fā)系統(tǒng)(ARQ系統(tǒng))就是一例。在構(gòu)造糾錯碼時,將輸入信息分成 k位一組以進行編碼。若編出的校驗位僅與本組的信息位有關(guān),則稱這樣的碼為分組碼。若不僅與本組的 k個信息位有關(guān),而且與前若干組的信息位有關(guān),則稱為格碼。這種碼之所以稱為格碼,是因為用圖形分析時它象籬笆或格架。線性格碼在運算時為卷積運算,所以叫卷積碼。2.2 糾錯碼的基本原理和性能參數(shù)糾錯碼能夠檢錯或糾錯,主要是靠碼字之間有較大的差別。這可用碼字之間的漢明距離 d(x,y)來衡量。它的定義為碼字x與y之間的對應(yīng)位取不同值的碼元個數(shù)。一種

13、糾錯碼的最小距離 d定義為該種碼中任兩個碼字之間的距離的最小值。一種碼要能發(fā)現(xiàn)e個錯誤,它的最小距離d應(yīng)不小于e+1。若要能糾正t個錯誤,則d應(yīng)不小于2t+1。一個碼字中非零碼元的個數(shù),稱為此碼字的漢明重量。一種碼中非零碼字的重量的最小值,稱為該碼的最小重量。對線性碼來說,一種碼的最小重量與其最小距離在數(shù)值上是相等的。在構(gòu)造線性碼時,數(shù)字上是從n維空間中選一k維子空間,且使此子空間內(nèi)各非零碼字的重量盡可能大。當(dāng)構(gòu)造循環(huán)碼時,可進一步將每一碼字看成一多項式,將整個碼看成是多項式環(huán)中的理想,這一理想是主理想,故可由生成多項式?jīng)Q定;而多項式完全可由它的根規(guī)定。這樣,就容易對碼進行構(gòu)造和分析。這是BC

14、H碼等循環(huán)碼構(gòu)造的出發(fā)點。一般地說,構(gòu)造一種碼時,均設(shè)法將它與某種代數(shù)結(jié)構(gòu)相聯(lián)系,以便對它進行描述,進而推導(dǎo)它的性質(zhì),估計它的性能和給出它的譯碼方法。若一種碼的碼長為n,碼字?jǐn)?shù)為M,或信息位為h,以及最小距離為d,則可把此碼記作【n,M,d】碼。若此碼為線性碼,常簡記作(n,k)或(n,k,d)碼。人們還常用R=log2M/n表示碼的信息率或簡稱碼率,單位為比特/碼元。R越大,則每個碼元所攜帶的信息量越大,編碼效率越高。 2.3 循環(huán)碼的介紹循環(huán)碼是線性分組碼的一種,所以它具有線性分組碼的一般特性,此外還具有循環(huán)性。循環(huán)碼的編碼和解碼設(shè)備都不太復(fù)雜,且檢(糾)錯能力強。它不但可以檢測隨機的錯誤

15、,還可以檢錯突發(fā)的錯誤。(n,k)循環(huán)碼可以檢測長為n-k或更短的任何突發(fā)錯誤,包括首尾相接突發(fā)錯誤。循環(huán)碼是一種無權(quán)碼,循環(huán)碼編排的特點是相鄰兩個數(shù)碼之間符合卡諾圖中的鄰接條件,即相鄰兩個數(shù)碼之間只有一位碼元不同,碼元就是組成數(shù)碼的單元。符合這個特點的有多種方案,但循環(huán)碼只能是表中的那種。循環(huán)碼的優(yōu)點是沒有瞬時錯誤,因為在數(shù)碼變換過程中,在速度上會有快有慢,中間經(jīng)過其它一些數(shù)碼形式,稱它們?yōu)樗矔r錯誤。這在某些數(shù)字系統(tǒng)中是不允許的,為此希望相鄰兩個數(shù)碼之間僅有一位碼元不同,即滿足鄰接條件,這樣就不會產(chǎn)生瞬時錯誤。循環(huán)碼就是這樣一種編碼,它可以在卡諾圖中依次循環(huán)得到。循環(huán)碼又稱格雷碼( Grey

16、 Code )。循環(huán)碼最大的特點就是碼字的循環(huán)特性,所謂循環(huán)特性是指:循環(huán)碼中任一許用碼組經(jīng)過循環(huán)移位后,所得到的碼組仍然是許用碼組。2.1.1 循環(huán)碼的多項式表示設(shè)碼長為n的循環(huán)碼表示為 (,,, ,) (1)其中為二進制數(shù),通常把碼組中各碼元當(dāng)做二進制的系數(shù),即把上式中長為n的各個分量看做多項式: T(x) =+ (2)的各項系數(shù),則碼字與碼多項式一一對應(yīng),這種多項式中,x僅表示碼元位置的標(biāo)記,因此我們并不關(guān)心x的取值,這種多項式稱為碼多項式。2.1.2 (n,k)循環(huán)碼的生成多項式(n,k)循環(huán)碼的生成多項式寫為g(x),它是(n,k)循環(huán)碼碼集中唯一的,冪次為n-k的碼多項式,則g(x

17、)是一個冪次為n的碼多項式。按模(+1)運算,此時: = Q(x)+ (3) 即 g(x)R(x),且因 g(x)也是n階冪,故Q(x)=1.由于它是循環(huán)碼,故 g(x)按模(+1)運算后的“余式”也是循環(huán)碼的一個碼字,它必能被g(x)整除,即: =F(x) (4)由以上兩式可以得到: g(x)= Q(x)(+1)+R(x) =(+1)+f(x)g(x) (5)和 +1=+f(x)g(x)=h(x)g(x) (6)從上式中可以看出,生成多項式g(x)應(yīng)該是+1的一個因式,即循環(huán)碼多項式應(yīng)該是+1的一個n-k次因式。2.1.3 循環(huán)碼的生成矩陣和一致校驗矩陣對所有的i=0,1,2,k-1,用生成

18、多項式g(x)除,有: =(x)g(x)+(x) (7) 式中(x)是余式,表示為: (x)=+ (8)因此,+(x)是g(x)的倍式,即+(x)是碼多項式,由此得到系統(tǒng)形式的生成矩陣為:G= (9)它是一個kn階的矩陣。同樣,由G=0可以得到系統(tǒng)形式的一致校驗矩陣為: H= (10)如已知(7,4)循環(huán)碼的生成多項式和校驗多項式分別為:g(x) = x3 + x +1,h(x) = x4 + x2 + x +1。寫得其生成矩陣和校驗矩陣分別為:G= (11) H= (12) 第三章 設(shè)計過程及運行結(jié)果3.1 C語言的介紹C語言是一種計算機程序設(shè)計語言。它既具有高級語言的特點,又具有匯編語言的

19、特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出。1978后,C語言已先后被移植到大、中、小及微型機上。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動畫。 具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。1. C語言的發(fā)展總的來說,C語言發(fā)展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C語言基本上是傳統(tǒng)類型上的面向?qū)ο笳Z言,并且憑借著接近C語言的效率,在工業(yè)界使用的開發(fā)語言中占據(jù)了相

20、當(dāng)大份額;第二階段從1995年到2000年,這一階段由于標(biāo)準(zhǔn)模板庫(STL)和后來的Boost等程序庫的出現(xiàn),泛型程序設(shè)計在C中占據(jù)了越來越多的比重性。當(dāng)然,同時由于Java、C#等語言的出現(xiàn)和硬件價格的大規(guī)模下降,C受到了一定的沖擊;第三階段從2000年至今,由于以Loki、MPL等程序庫為代表的產(chǎn)生式編程和模板元編程的出現(xiàn),C出現(xiàn)了發(fā)展歷史上又一個新的高峰,這些新技術(shù)的出現(xiàn)以及和原有技術(shù)的融合,使C已經(jīng)成為當(dāng)今主流程序設(shè)計語言中最復(fù)雜的一員。 2. C語言特點C是中級語言,它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C 語言可以像匯編語言一樣對位、字節(jié)和地址進行操作, 而這三者

21、是計算機最基本的工作單元。 C是結(jié)構(gòu)式語言,結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、維護以及調(diào)試。C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。 C語言功能齊全,具有各種各樣的數(shù)據(jù)類型,并引入了指針概念,可使程序效率更高。另外C語言也具有強大的圖形功能,支持多種顯示器和驅(qū)動器。而且計算功能、邏輯判斷功能也比較強大,可以實現(xiàn)決策目的的游戲。 C語言適用范圍大,適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機型。

22、C語言對編寫需要硬件進行操作的場合,明顯優(yōu)于其它解釋型高級語言,有一些大型應(yīng)用軟件也是用C語言編寫的。 3.2 循環(huán)碼編碼的設(shè)計由信息碼構(gòu)成信息多項式m(x)= +其中高冪次為k-1;用乘以信息多項式m(x),得到的 m(x)最高冪次為n-1,該過程相當(dāng)于把信息碼(,)移位到了碼字的前k個信息位,其后是r個全為零的監(jiān)督位。用g(x)除 m(x)得到余式r(x),其次數(shù)必小于g(x)的次數(shù),即小于(n-k),將此r(x)加于信息位后做監(jiān)督位,即將r(x)與 m(x)相加,得到的多項式必為一碼多項式。根據(jù)上面的討論,可得到在(7,4)循環(huán)碼編碼的程序流程圖如圖1 所示: 初始化 確定余式r(x)

23、確定c(x) 儲存c(x) 圖1 編碼程序框圖3.3循環(huán)碼譯碼的設(shè)計糾錯碼的譯碼是該編碼能否得到實際應(yīng)用的關(guān)鍵所在。譯碼器往往比編碼較難實現(xiàn),對于糾錯能力強的糾錯碼更復(fù)雜。根據(jù)不同的糾錯或檢錯目的,循環(huán)碼譯碼器可分為用于糾錯目的和用于檢錯目的的循環(huán)碼譯碼器。 通常,將接收到的循環(huán)碼組進行除法運算,如果除盡,則說明正確傳輸;如果未除盡,則在寄存器中的內(nèi)容就是錯誤圖樣,根據(jù)錯誤圖樣可以確定一種邏輯,來確定差錯的位置,從而達(dá)到糾錯的目的。用于糾錯目的的循環(huán)碼的譯碼算法比較復(fù)雜,感興趣的話可以參考一些參考書。而用于檢錯目的循環(huán)碼,一般使用ARQ通信方式。檢測過程也是將接受到的碼組進行除法運算,如果除盡

24、,則說明傳輸無誤;如果未除盡,則表明傳輸出現(xiàn)差錯,要求發(fā)送端重發(fā)。用于這種目的的循環(huán)碼經(jīng)常被成為循環(huán)冗余校驗碼,即CRC校驗碼。CRC校驗碼由于編碼電路、檢錯電路簡單且易于實現(xiàn),因此得到廣泛的應(yīng)用。在通過MODEM傳輸文件的協(xié)議如ZMODEM、XMODEM協(xié)議中均用到了CRC校驗技術(shù)。在磁盤、光盤介質(zhì)存儲技術(shù)中也使用該方法。 當(dāng)碼字c通過噪聲信道傳送時,會受到干擾而產(chǎn)生錯誤。如果信道產(chǎn)生的錯誤圖樣是e,譯碼器收到的n,重接受矢量是y,則表示為: y=c+e (13)上式也可以寫成多項式形式:y(x)=c(x)+e(x) (14)譯碼器的任務(wù)就是從y(x)中得到,然后求的估值碼字 = y(x)+

25、 (15) 并從中得到信息組。 循環(huán)碼譯碼可按以下三個步驟進行:(1)由接收到的y(x)計算伴隨式s(x);(2)根據(jù)伴隨式s(x)找出對應(yīng)的估值錯誤圖樣;(3)計算= y(x)+ ,得到估計碼字。若=c(x),則譯碼正確,否則,若c(x),則譯碼錯誤。由于g(x) 的次數(shù)為n - k 次,g(x) 除E(x) 后得余式(即伴隨式)的最高次數(shù)為n-k-1次,故S(x) 共有2n-k 個可能的表達(dá)式,每一個表達(dá)式對應(yīng)一個錯誤格式。可以知道(7,4)循環(huán)碼的S(x) 共有2(7-4) = 8個可能的表達(dá)式,可根據(jù)錯誤圖樣表來糾正(7,4)循環(huán)碼中的一位錯誤,其伴隨式如表1所示。BCH(7,4)循環(huán)

26、碼錯誤圖樣表:表1錯誤圖樣錯誤圖樣碼字伴隨式S(x)伴隨式E6(x)=x61000000x2100E5(x)=x50100000x2+x110E4(x)=x40010000x2+x+1111E3(x)=x30001000x+1011E2(x)=x20000100x2+1101E1(x)=x10000010x010E0(x)=x000000011001E(x)=000000000000上式指出了系統(tǒng)循環(huán)碼的譯碼方法:將收到的碼字R(x) 用g(x) 去除,如果除盡則無錯;否則有錯。如果有錯,可由余式S(x) 一一找出對應(yīng)圖樣,然后將錯誤圖樣E(x)與R(x)模2和,即為所求碼字C(x) ,從而實

27、現(xiàn)糾錯目的。根據(jù)前面的討論,可得(7,4)循環(huán)碼譯碼的程序流程圖如圖2 所示 初始化由R(x)確定S(x):S(x)=0,無誤碼誤碼 是否 由S(x)確定錯誤圖樣E(x) 否糾錯C(x)=E(x)+R(x)存儲C(x)圖 2 譯碼程序框圖3.4 運行結(jié)果1初始化界面圖3 初始化界面2正確編碼界面圖4 正確編碼界面3正確譯碼界面圖5 正確譯碼界面4信息位有一位錯誤時的譯碼界面圖6 信息位有一位錯誤時的譯碼界面5信息位有二位錯誤時的譯碼界面圖7 信息位有二位錯誤時的譯碼界面6信息位有三位錯誤時的譯碼界面圖8 信息位有三位錯誤時的譯碼界面3.5 軟件的可行性分析由上述結(jié)果可知,該軟件的操作方法為程序

28、通過編譯運行后,在C環(huán)境下,當(dāng)輸入c后按回車鍵,然后就會提示輸入信息,當(dāng)輸入4位的信息位再按回車鍵,系統(tǒng)就會輸出7位的循環(huán)編碼。當(dāng)輸入d后按回車鍵,系統(tǒng)會進行譯碼的操作,當(dāng)輸入的譯碼信息和編碼結(jié)果一樣時,系統(tǒng)就會正確將信息位從該碼組譯出來。當(dāng)輸入的譯碼信息與編碼的結(jié)果錯一位碼時,系統(tǒng)就會檢測出該錯誤并將其糾正過來,從而譯出真確的信息位。當(dāng)輸入e后按回車,就會退出系統(tǒng)。由此可知,該系統(tǒng)能夠?qū)崿F(xiàn)(7,4)循環(huán)碼的編碼與在無差錯和部分差錯情況下的譯碼,因此該軟件具有可行性??偨Y(jié)通過本次課設(shè),我對循環(huán)碼的編碼和譯碼的基本原理有了較深的理解,學(xué)到了很多的知識。循環(huán)碼是線性分組碼的一個重要子集,是目前研究

29、得最成熟的一類碼。它有許多特殊的代數(shù)性質(zhì),這些性質(zhì)有助于按所要求的糾錯能力系統(tǒng)地構(gòu)造這類碼,且易于實現(xiàn);同時循環(huán)碼的性能也較好,具有較強的檢錯和糾錯能力。我的題目是循環(huán)碼編譯碼的軟件設(shè)計,在這一周中遇到了好多問題,由于以前學(xué)習(xí)C語言沒有用心,編程的過程中出現(xiàn)了很多問題。例如,由于輸入法的問題導(dǎo)致程序出現(xiàn)了錯誤。后來,通過同學(xué)的幫助,發(fā)現(xiàn)并改正了這個錯誤。最終實現(xiàn)了循環(huán)碼編譯碼的軟件設(shè)計。這次課設(shè)讓我受益匪淺,讓我理解了糾錯碼的原理和循環(huán)冗余碼CRC的原理。真正地做到了輸入任意的數(shù)字信息序列,得出編碼結(jié)果。還學(xué)會了在無差錯和部分差錯的情況下進行譯碼。 最后感謝老師對我們的精心指導(dǎo)和幫助,感謝同學(xué)

30、們對我的幫助。參考文獻(xiàn)1顧尚杰,薛質(zhì)編著. 計算機通信基礎(chǔ).北京:電子工業(yè)出版社.20002樊昌信 著.通信原理.國防工業(yè)出版社.1999.103宋祖順 著.現(xiàn)代通信原理.電子工業(yè)出版社.2001.24譚浩強 著.C程序設(shè)計第二版.清華大學(xué)出版社.2002.65潘新民主編.計算機通信技術(shù). (第2版).北京.電子工業(yè)出版社.20066 美Jean Walrand. 通信網(wǎng)絡(luò)基礎(chǔ).北京:機械工業(yè)出版社.19997盧士文著.計算機通信網(wǎng)絡(luò)基礎(chǔ)教程.北京:科學(xué)出版社.20008吳伶達(dá) 李國輝 楊冰等著.計算機通信原理與技術(shù).國防科技大學(xué)出版社.2003.39滿文慶著. 計算機網(wǎng)絡(luò)技術(shù)與設(shè)備. 北京:

31、清華大學(xué)出版社. 2004附錄/*(7,4)循環(huán)碼的編譯及糾檢錯實現(xiàn)*/#include<stdio.h>#include<math.h>#include<stdlib.h>/*函數(shù)聲明*/void Begin();void Code();void Decoding();/*主函數(shù)*/main() printf("nThis software main function is carries on the code and the decoding to (7,4) cyclic code.n "); Begin(); /*進行編碼*/v

32、oid Code() int Input4; int Output7; int reg3=0,0,0; int temp,i,j; printf("Please input the information code :"); for(i=0;i<4;i+) scanf(" %d",&Inputi); /*輸入4位信息碼*/ for(i=0;i<4;i+) /*進行除法操作*/ temp=reg2+Inputi; /*生成多項式為g(x)=x3+x2+1*/ if(temp=2) temp=0; reg2=reg1+temp; if(r

33、eg2=2)reg2=0; reg1=reg0; reg0=temp; for(i=0;i<4;i+) Outputi=Inputi; /*進行編碼操作*/ for(i=4;i<7;i+) temp=reg2; for(j=2;j>0;j-) regj=regj-1; reg0=0; Outputi=temp; printf("_"); printf("n"); printf(" The information code output is: n"); for(i=0;i<7;i+) printf( "

34、; %d ",Outputi); /*輸出編碼結(jié)果*/ printf("n"); printf("_"); printf("n"); Begin(); /*譯碼并進行糾檢錯*/void Decoding() int Input7,Output7; int reg3=0,0,0; int temp,i,d,x,p; printf("ninput the information code of bit7:"); for(i=0;i<7;i+) scanf(" %d",&Inp

35、uti); /*輸入接受碼組*/ for(i=0;i<7;i+) /*進入除法電路*/ temp=reg2; /*計算伴隨式S(x)*/ reg2=reg1+temp; if(reg2=2)reg2=0; reg1=reg0; reg0=temp+Inputi; if(reg0=2)reg0=0; p=reg2+2*reg1+3*reg0; if(p!=1&&p!=2&&p!=3&&p!=7&&p!=8&&p!=13&&p!=14&&p!=0) /*輸入錯誤位數(shù)大于2位*/ printf(" "The error >=2" n"); getchar(); exit(0); printf("_n"); printf("s(x)="); for(i=

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論