2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論