版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 《現(xiàn)代通信技術(shù)課程設(shè)計(jì)》</p><p><b> 目錄</b></p><p> 1.5B6B編碼原理- 1 -</p><p> 2.程序流程圖- 3 -</p><p> 3.編碼程序部分- 4 -</p><p> 4.運(yùn)行結(jié)果- 13 -</
2、p><p> 5.總結(jié)- 15 -</p><p> 6.參考文獻(xiàn)- 15 -</p><p> 摘要:在光纖通信系統(tǒng)中,選取適當(dāng)?shù)拇a型,對(duì)提高系統(tǒng)的可靠性,實(shí)現(xiàn)線路的高速、低誤碼率、最大容量傳輸,具有重要意義。5B6B碼是mBnB線路碼型中的一種。5B6B碼是常用的線路碼型,具有最大相同碼元連碼數(shù)少、定時(shí)信息豐富、勻衡性好、誤碼監(jiān)視、同步性好等優(yōu)點(diǎn)。從電端機(jī)
3、輸入的信號(hào),輸出時(shí)必須要進(jìn)行碼型變換,才可適合線路傳輸。5B6B譯碼是將傳輸?shù)浇邮斩藱C(jī)的6B數(shù)據(jù)碼流,譯成5B數(shù)據(jù)碼流輸出;而編碼則是將自編數(shù)據(jù)按照一定的規(guī)律,編成6B碼組后輸出 ,二者互為逆過程。</p><p> 本文介紹了基于對(duì)5B6B碼編碼的仿真與實(shí)現(xiàn)。著重介紹了編碼的工作原理并用程序?qū)ζ溥M(jìn)行仿真,最終得出正確的結(jié)果,以實(shí)現(xiàn)5B6B碼編碼在理論上的功能實(shí)現(xiàn)。</p><p>
4、關(guān)鍵詞:5B6B 編碼仿真 MATLAB </p><p> 1.5B6B編碼原理</p><p> 最簡單的mBnB 碼是1B2B 碼,即曼徹斯特碼,這就是把原碼的“0”變換為“01”, 把“1”變換為“10”。因此最大的連“0”和連“1”的數(shù)目不會(huì)超過兩個(gè),例如1001 和0110。但是在相同時(shí)隙內(nèi),傳輸1比特變?yōu)閭鬏? 比特,碼速提高了1倍。</p><p&g
5、t; 以3B4B 碼為例,輸入的原始碼流3B 碼,共有(23)8 個(gè)碼字, 變換為4B 碼時(shí), 共有(24)16個(gè)碼字。為保證信息的完整傳輸,必須從4B 碼的16 個(gè)碼字中挑選8 個(gè)碼字來代替3B 碼。設(shè)計(jì)者應(yīng)根據(jù)最佳線路碼特性的原則來選擇碼表。例如:在3B 碼中有2 個(gè)“0”,變?yōu)?B 碼時(shí)補(bǔ)1 個(gè)“1”;在3B 碼中有2 個(gè)“1”, 變?yōu)?B 碼時(shí)補(bǔ)1 個(gè)“0”。而000 用0001 和1110 交替使用; 111 用0111 和
6、1000 交替使用。同時(shí),規(guī)定一些禁止使用的碼字, 稱為禁字,例如0000 和1111。</p><p> 作為普遍規(guī)則,引入“碼字?jǐn)?shù)字和”(WDS)來描述碼字的均勻性,并以WDS 的最佳選擇來保證線路碼的傳輸特性。所謂“碼字?jǐn)?shù)字和”,是在nB 碼的碼字中,用“-1”代表“0”碼, 用“+1”代表“1”碼,整個(gè)碼字的代數(shù)和即為WDS。如果整個(gè)碼字“1”碼的數(shù)目多于“0”碼,則WDS為正;如果“0”碼的數(shù)目多于“
7、1”碼, 則WDS 為負(fù);如果“0”碼和“1”碼的數(shù)目相等,則WDS為0。例如:對(duì)于0111,WDS=+2;對(duì)于0001, WDS=-2;對(duì)于0011,WDS=0。</p><p> mBnB 碼的特點(diǎn)是:</p><p> ?。?)碼流中“0”和“1”碼的概率相等,連“0”和連“1”的數(shù)目較少,定時(shí)信息豐富。</p><p> ?。?) 高低頻分量較少,信號(hào)頻譜
8、特性較好,基線漂移小。</p><p> ?。?) 在碼流中引入一定的冗余碼,以便在線誤碼檢測。</p><p> 5B6B 的編碼規(guī)則:5B 共有(2 的5 次方)32 個(gè)碼字,變換6B 碼時(shí)共有(2 的6 次方)64 個(gè)碼字,其中WDS=0 的碼字有20 個(gè),WDS=+2 的碼字有15 個(gè),WDS=-2 的碼字有15個(gè),因此共有50 個(gè)|WDS|最小的碼字供選擇。由于變換為6B 時(shí)只
9、需32 個(gè)碼字,為減少連“1”和連“0”的數(shù)目,刪去:000011、110000、001111 和111100,同時(shí)禁用|WDS|=4 和6的碼字。見表1</p><p> 編碼過程,隨機(jī)產(chǎn)生一64*5 矩陣代表原始的輸入5B 碼流,然后按順序?qū)⑦@些碼字轉(zhuǎn)換成十進(jìn)制即為對(duì)應(yīng)6B 的地址。若對(duì)應(yīng)的6B 碼WDS=0 則直接輸出模式1,若不是0 則交替輸出模式1 和模式2。</p><p>
10、<b> 表1 5B6B碼表</b></p><p><b> 2.程序流程圖</b></p><p><b> 圖1 程序流程圖</b></p><p><b> 3.編碼程序部分</b></p><p> #include<stdio.
11、h></p><p> #include <string.h></p><p> #define N 301</p><p> void main()</p><p><b> {</b></p><p> char b5[N];</p><p&g
12、t; char _b5[N];</p><p><b> int i=0;</b></p><p> int flag0=0;</p><p> int flag1=0;</p><p> int flag2=0;</p><p> int flag4=0;</p>&l
13、t;p> int flag8=0;</p><p> int flag15=0;</p><p> int flag16=0;</p><p> int flag23=0;</p><p> int flag27=0;</p><p> int flag29=0;</p><p
14、> int flag30=0;</p><p> int flag31=0;</p><p> char s0[6]="00000";</p><p> char s1[6]="00001";</p><p> char s2[6]="00010";</p>
15、;<p> char s3[6]="00011";</p><p> char s4[6]="00100";</p><p> char s5[6]="00101";</p><p> char s6[6]="00110";</p><p>
16、 char s7[6]="00111";</p><p> char s8[6]="01000";</p><p> char s9[6]="01001";</p><p> char s10[6]="01010";</p><p> char s11[
17、6]="01011";</p><p> char s12[6]="01100";</p><p> char s13[6]="01101";</p><p> char s14[6]="01110";</p><p> char s15[6]="
18、;01111";</p><p> char s16[6]="10000";</p><p> char s17[6]="10001";</p><p> char s18[6]="10010";</p><p> char s19[6]="10011&q
19、uot;;</p><p> char s20[6]="10100";</p><p> char s21[6]="10101";</p><p> char s22[6]="10110";</p><p> char s23[6]="10111";<
20、;/p><p> char s24[6]="11000";</p><p> char s25[6]="11001";</p><p> char s26[6]="11010";</p><p> char s27[6]="11011";</p>
21、<p> char s28[6]="11100";</p><p> char s29[6]="11101";</p><p> char s30[6]="11110";</p><p> char s31[6]="11111";</p><p&g
22、t; char k0_1[7]="010111";</p><p> char k0_2[7]="101000";</p><p> char k1_1[7]="100111";</p><p> char k1_2[7]="100100";</p><p&g
23、t; char k2_1[7]="011011";</p><p> char k2_2[7]="100100";</p><p> char k3[7]="000111";</p><p> char k4_1[7]="101011";</p><p>
24、 char k4_2[7]="010100";</p><p> char k5[7]="001011";</p><p> char k6[7]="001101";</p><p> char k7[7]="001110";</p><p> char
25、 k8_1[7]="110011";</p><p> char k8_2[7]="001100";</p><p> char k9[7]="010011";</p><p> char k10[7]="010101";</p><p> char k1
26、1[7]="010110";</p><p> char k12[7]="011001";</p><p> char k13[7]="011010";</p><p> char k14[7]="011100";</p><p> char k15_1[
27、7]="101101";</p><p> char k15_2[7]="010010";</p><p> char k16_1[7]="011101";</p><p> char k16_2[7]="100010";</p><p> char k1
28、7[7]="100011";</p><p> char k18[7]="100101";</p><p> char k19[7]="100110";</p><p> char k20[7]="101001";</p><p> char k21[7]
29、="101010";</p><p> char k22[7]="101100";</p><p> char k23_1[7]="110101";</p><p> char k23_2[7]="001010";</p><p> char k24[7]
30、="110001";</p><p> char k25[7]="110010";</p><p> char k26[7]="110100";</p><p> char k27_1[7]="111001";</p><p> char k27_2[7]
31、="000110";</p><p> char k28[7]="111000";</p><p> char k29_1[7]="101110";</p><p> char k29_2[7]="010001";</p><p> char k30_1[
32、7]="110110";</p><p> char k30_2[7]="001001";</p><p> char k31_1[7]="111010";</p><p> char k31_2[7]="000101";</p><p> printf(
33、"請輸入5B碼:");</p><p> gets(b5); /*讀取輸入碼流到數(shù)組b5中*/</p><p> if(strlen(b5)%5==0) /*判斷是否滿足碼的長度*/</p><p><b> {</b></p>
34、<p> printf("對(duì)應(yīng)的6B碼:");</p><p> while(b5[i]!='\0') /*判斷是否讀到碼流的結(jié)尾*/</p><p><b> {</b></p><p><b> int n;</b></p>
35、<p> for(n=0;n<5;n++)</p><p><b> {</b></p><p> _b5[n]=b5[i++];</p><p> _b5[5]='\0'; </p><p> } /*將碼流分組并以字符串形式存儲(chǔ)*/&l
36、t;/p><p> if(strcmp(_b5,s0)==0)</p><p><b> {</b></p><p> if(flag0++%2==0)</p><p> printf("%s",&k0_1);</p><p><b> else<
37、/b></p><p> printf("%s",&k0_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s1)==0)</p><p><b> {</b></p><p> if(fl
38、ag1++%2==0)</p><p> printf("%s",&k1_1);</p><p><b> else</b></p><p> printf("%s",&k1_2);</p><p><b> }</b></p&g
39、t;<p> if(strcmp(_b5,s2)==0)</p><p><b> {</b></p><p> if(flag2++%2==0)</p><p> printf("%s",&k2_1);</p><p><b> else</b>
40、</p><p> printf("%s",&k2_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s3)==0)</p><p><b> {</b></p><p> printf(&quo
41、t;%s",&k3);</p><p><b> }</b></p><p> if(strcmp(_b5,s4)==0)</p><p><b> {</b></p><p> if(flag4++%2==0)</p><p> printf(&
42、quot;%s",&k4_1);</p><p><b> else</b></p><p> printf("%s",&k4_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s5)==0)</p
43、><p><b> {</b></p><p> printf("%s",&k5);</p><p><b> }</b></p><p> if(strcmp(_b5,s6)==0)</p><p><b> {</b>
44、;</p><p> printf("%s",&k6);</p><p><b> }</b></p><p> if(strcmp(_b5,s7)==0)</p><p><b> {</b></p><p> printf("
45、;%s",&k7);</p><p><b> }</b></p><p> if(strcmp(_b5,s8)==0)</p><p><b> {</b></p><p> if(flag8++%2==0)</p><p> printf(&q
46、uot;%s",&k8_1);</p><p><b> else</b></p><p> printf("%s",&k8_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s9)==0)</p&
47、gt;<p><b> {</b></p><p> printf("%s",&k9);</p><p><b> }</b></p><p> if(strcmp(_b5,s10)==0)</p><p><b> {</b>
48、;</p><p> printf("%s",&k10);</p><p><b> }</b></p><p> if(strcmp(_b5,s11)==0)</p><p><b> {</b></p><p> printf(&qu
49、ot;%s",&k11);</p><p><b> }</b></p><p> if(strcmp(_b5,s12)==0)</p><p><b> {</b></p><p> printf("%s",&k12);</p>
50、<p><b> }</b></p><p> if(strcmp(_b5,s13)==0)</p><p><b> {</b></p><p> printf("%s",&k13);</p><p><b> }</b><
51、;/p><p> if(strcmp(_b5,s14)==0)</p><p><b> {</b></p><p> printf("%s",&k14);</p><p><b> }</b></p><p> if(strcmp(_b5,
52、s15)==0)</p><p><b> {</b></p><p> if(flag15++%2==0)</p><p> printf("%s",&k15_1);</p><p><b> else</b></p><p> pri
53、ntf("%s",&k15_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s16)==0)</p><p><b> {</b></p><p> if(flag16++%2==0)</p><p&
54、gt; printf("%s",&k16_1);</p><p><b> else</b></p><p> printf("%s",&k16_2);</p><p><b> }</b></p><p> if(strcmp(_b
55、5,s17)==0)</p><p><b> {</b></p><p> printf("%s",&k17);</p><p><b> }</b></p><p> if(strcmp(_b5,s18)==0)</p><p><
56、;b> {</b></p><p> printf("%s",&k18);</p><p><b> }</b></p><p> if(strcmp(_b5,s19)==0)</p><p><b> {</b></p><
57、;p> printf("%s",&k19);</p><p><b> }</b></p><p> if(strcmp(_b5,s20)==0)</p><p><b> {</b></p><p> printf("%s",&
58、;k20);</p><p><b> }</b></p><p> if(strcmp(_b5,s21)==0)</p><p><b> {</b></p><p> printf("%s",&k21);</p><p><b&g
59、t; }</b></p><p> if(strcmp(_b5,s22)==0)</p><p><b> {</b></p><p> printf("%s",&k22);</p><p><b> }</b></p><p&g
60、t; if(strcmp(_b5,s23)==0)</p><p><b> {</b></p><p> if(flag23++%2==0)</p><p> printf("%s",&k23_1);</p><p><b> else</b></p&g
61、t;<p> printf("%s",&k23_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s24)==0)</p><p><b> {</b></p><p> printf("%s&q
62、uot;,&k24);</p><p><b> }</b></p><p> if(strcmp(_b5,s25)==0)</p><p><b> {</b></p><p> printf("%s",&k25);</p><p&g
63、t;<b> }</b></p><p> if(strcmp(_b5,s26)==0)</p><p><b> {</b></p><p> printf("%s",&k26);</p><p><b> }</b></p>
64、<p> if(strcmp(_b5,s27)==0)</p><p><b> {</b></p><p> if(flag27++%2==0)</p><p> printf("%s",&k27_1);</p><p><b> else</b>
65、;</p><p> printf("%s",&k27_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s28)==0)</p><p><b> {</b></p><p> printf(&
66、quot;%s",&k28);</p><p><b> }</b></p><p> if(strcmp(_b5,s29)==0)</p><p><b> {</b></p><p> if(flag29++%2==0)</p><p> pr
67、intf("%s",&k29_1);</p><p><b> else</b></p><p> printf("%s",&k29_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s30)=
68、=0)</p><p><b> {</b></p><p> if(flag30++%2==0)</p><p> printf("%s",&k30_1);</p><p><b> else</b></p><p> printf(&
69、quot;%s",&k30_2);</p><p><b> }</b></p><p> if(strcmp(_b5,s31)==0)</p><p><b> {</b></p><p> if(flag31++%2==0)</p><p>
70、printf("%s",&k31_1);</p><p><b> else</b></p><p> printf("%s",&k31_2);</p><p><b> }</b></p><p> } /*
71、分組后的5B碼與碼表對(duì)比并輸出相應(yīng)的6B碼*/</p><p><b> }</b></p><p><b> else</b></p><p> printf("你輸入的碼不滿足5B碼長度,請正確輸入5B碼");</p><p><b> while(1);&
72、lt;/b></p><p><b> }</b></p><p><b> 4.運(yùn)行結(jié)果</b></p><p><b> 表2 輸入輸出表</b></p><p><b> 5.總結(jié)</b></p><p> 本
73、文介紹一種簡單的5B6B編碼方法,并利用matlab 語言實(shí)現(xiàn)了5B6B編碼的全數(shù)字設(shè)計(jì),具有了編碼的最基本的功能,今后的改進(jìn)就是在此基礎(chǔ)上改進(jìn)同步信號(hào)的提取以及誤碼的監(jiān)測,讓這個(gè)設(shè)計(jì)更加完善。</p><p> 本次的課程設(shè)計(jì)是第一次進(jìn)行一個(gè)大的系統(tǒng)進(jìn)行設(shè)計(jì),對(duì)于我們來說,還是頗有難度的。在最開始選擇是用matlab還是vhdl語言進(jìn)行設(shè)計(jì)時(shí),我們選擇使用matlab語言進(jìn)行這次課程設(shè)計(jì),在實(shí)驗(yàn)中也遇到了一些
74、小的問題,最終和同伴、老師探討,疑問得以解決,在此感謝熱心的同伴們和不厭其煩的老師對(duì)我們的幫助!</p><p> 通過此次5B6B編碼,我對(duì)mBnB這種常用的編碼方式有了一定的了解,尤其是對(duì)nB的模式交替選擇有了更深刻的理解,交替的目的是保證WDS之和最小以保證有足夠的定時(shí)信息和最少的直流分量。</p><p> 同時(shí)通過此次的編碼實(shí)驗(yàn)我對(duì)Matlab的使用更加熟練,尤其是程序設(shè)計(jì)方
75、面有了進(jìn)一步的提高。</p><p><b> 6.參考文獻(xiàn)</b></p><p> 【1】李勇權(quán), 劉永強(qiáng), 何云狀, 樊建明.一種基于FPGA的5B6B編譯碼的實(shí)現(xiàn)[J]. 微計(jì)算機(jī)信息 , 2007,(14)</p><p> 【2】張少鋒, 楊章順, 戴琦, 齊恒, 冉立新. 光纖數(shù)字通信系統(tǒng)5B6B編譯碼的FPGA實(shí)現(xiàn)[J].
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 5b6b碼的編碼仿真與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告
- 5b6b編解碼
- 2b1q編碼與譯碼的設(shè)計(jì)與仿真課程設(shè)計(jì)
- 預(yù)測編碼的分析與實(shí)現(xiàn)課程設(shè)計(jì)
- 鋼筋混凝土課程設(shè)計(jì)b5
- 通信課程設(shè)計(jì)-- crc校驗(yàn)編碼仿真
- 課程設(shè)計(jì)(旅游管理系統(tǒng)和b-樹的實(shí)現(xiàn))
- 通信原理pcm編碼課程設(shè)計(jì)--基于matlabsimulink的pcm編碼的研究與仿真
- oracle課程設(shè)計(jì)--b樹索引
- 溫度監(jiān)測系統(tǒng)設(shè)計(jì)仿真與實(shí)現(xiàn)課程設(shè)計(jì)
- 通信原理課程設(shè)計(jì)報(bào)告---a律pcm編碼系統(tǒng)設(shè)計(jì)與仿真
- 光纖通道8B-10B編碼的CPLD實(shí)現(xiàn)與驗(yàn)證.pdf
- 信息論與編碼課程設(shè)計(jì)(哈夫曼編碼的分析與實(shí)現(xiàn))
- 6b unit5b c
- 哈夫曼編碼的java實(shí)現(xiàn)課程設(shè)計(jì)
- 通信工程課程設(shè)計(jì)--脈沖編碼調(diào)制(pcm)系統(tǒng)設(shè)計(jì)與仿真
- 數(shù)字圖像課程設(shè)計(jì)--圖像預(yù)測編碼系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 哈夫曼編碼譯碼的實(shí)現(xiàn)課程設(shè)計(jì)
- 課程設(shè)計(jì)---哈夫曼編碼編程實(shí)現(xiàn)
- 基于matlab的pcm的pcm編碼系統(tǒng)設(shè)計(jì)與仿真-通訊原理課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論