版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p><b> 計(jì)算機(jī)網(wǎng)絡(luò)</b></p><p> 題 目: 差分曼徹斯特模擬編碼</p><p><b> 姓 名: </b></p><p><b> 專 業(yè): </b
2、></p><p><b> 班 級(jí): </b></p><p><b> 學(xué) 號(hào): </b></p><p><b> 指導(dǎo)教師: </b></p><p> 2013.12.21</p><p><b> 目
3、 錄</b></p><p> 課程設(shè)計(jì)目的………………………………………………………01</p><p> 課程設(shè)計(jì)要求………………………………………………………01</p><p> 實(shí)驗(yàn)要求……………………………………………………………01</p><p> 差分曼徹斯特編碼簡(jiǎn)介……………………………………………0
4、1</p><p> 設(shè)計(jì)思路……………………………………………………………02</p><p> 圖像示意……………………………………………………………02</p><p> 算法流程圖…………………………………………………………02</p><p> 實(shí)驗(yàn)?zāi)K分析………………………………………………………03</p>
5、<p> 運(yùn)行結(jié)果……………………………………………………………10</p><p> 實(shí)驗(yàn)總結(jié) …………………………………………………………11</p><p> (1)結(jié)果分析 …………………………………………………………11</p><p> (2)實(shí)驗(yàn)感想 …………………………………………………………12</p><
6、;p> 11.附錄代碼 …………………………………………………………13</p><p><b> 課程設(shè)計(jì)目的:</b></p><p> 通過(guò)課程設(shè)計(jì),鞏固《計(jì)算機(jī)網(wǎng)絡(luò)》課程學(xué)習(xí)的內(nèi)容,強(qiáng)化上機(jī)動(dòng)手能力,為后續(xù)各門計(jì)算機(jī)相關(guān)課程的學(xué)習(xí)打下堅(jiān)實(shí)基礎(chǔ)。課程設(shè)計(jì)為學(xué)生提供了一個(gè)獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際應(yīng)用問(wèn)題進(jìn)行有機(jī)結(jié)合,鍛煉綜合分析、解決實(shí)
7、際問(wèn)題的能力。</p><p><b> 課程設(shè)計(jì)要求:</b></p><p> 對(duì)系統(tǒng)進(jìn)行功能模塊分析、控制模塊分析正確;</p><p><b> 系統(tǒng)設(shè)計(jì)要實(shí)用;</b></p><p> 編程簡(jiǎn)練,可用,功能全面,具有較好的健壯性;</p><p> 說(shuō)明
8、書、流程圖要清楚。</p><p><b> 實(shí)驗(yàn)要求:</b></p><p> 通過(guò)編譯語(yǔ)言實(shí)現(xiàn)一個(gè)輸入十六進(jìn)制數(shù)輸出差分曼徹斯特編碼模擬圖像實(shí)驗(yàn)。</p><p> 差分曼徹斯特編碼簡(jiǎn)介:</p><p> 差分曼徹斯特編碼是對(duì)曼徹斯特編碼的一種改進(jìn),保留了曼徹斯特編碼作為“自含時(shí)鐘編碼”的優(yōu)點(diǎn),仍將每比特
9、中間的跳變作為同步之用,但是每比特的取值則根據(jù)其開始處是否出現(xiàn)電平的跳變來(lái)決定。其原理是:每一位中間都有一個(gè)跳變,每位開始時(shí)有跳變表示“0”,無(wú)跳變表示“1”。位中間跳變表示時(shí)鐘,位前跳變表示數(shù)據(jù)。其優(yōu)點(diǎn)是:時(shí)鐘、數(shù)據(jù)分離,便于提取。</p><p><b> 五、設(shè)計(jì)思路:</b></p><p> 輸入16進(jìn)制數(shù)據(jù),能夠輸出差分曼卻斯特波形圖,通過(guò)數(shù)組轉(zhuǎn)變,將
10、十六進(jìn)制數(shù)據(jù)轉(zhuǎn)化成二進(jìn)制數(shù)據(jù),轉(zhuǎn)化過(guò)程中,必須將一位十六進(jìn)制數(shù)據(jù)轉(zhuǎn)化成四位二進(jìn)制數(shù)據(jù),并判斷差分曼徹斯特編碼,輸出模擬圖像。</p><p><b> 圖像示意:</b></p><p><b> 七、算法流程圖:</b></p><p><b> 實(shí)驗(yàn)?zāi)K分析:</b></p>
11、<p> 將一個(gè)十六進(jìn)制數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)</p><p> void test() </p><p><b> { </b></p><p> char c[MAX];</p><p> int a[16]={0};</p><p> int i=0,j;</p>
12、;<p> cout<<"請(qǐng)輸入一個(gè)十六進(jìn)制數(shù):"<<endl;</p><p><b> cin>>c; </b></p><p> while(c[i])</p><p><b> {</b></p><p> if
13、(c[i]>'0'&&c[i]<'9') </p><p> c[i]=c[i++]-48; </p><p><b> else </b></p><p> if(c[i]>='A'&&c[i]<='Z') </
14、p><p> c[i]=c[i++]-55; </p><p> else if(c[i]>='a'&&c[i]<='z')</p><p> c[i]=c[i++]-87; </p><p><b> else</b></p><p&g
15、t;<b> { </b></p><p> cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入"<<endl;</p><p><b> return;</b></p><p><b> } </b></p><p><b>
16、} </b></p><p><b> i=0;</b></p><p> while(c[i]) </p><p><b> { </b></p><p> for(j=3;j>=0;j--) </p><p><b> { </
17、b></p><p> a[j]=c[i]%2;</p><p><b> c[i]/=2; </b></p><p><b> } </b></p><p> for(j=0;j<4;j++) </p><p> cout<<a[j]<
18、;<endl; </p><p><b> i++; </b></p><p><b> } </b></p><p> cout<<endl;</p><p><b> } </b></p><p> 判斷輸入的數(shù)據(jù)是不是
19、由01組成的序列。若不是,則做出錯(cuò)處理。</p><p> bool check(char *ch)</p><p><b> {</b></p><p><b> //局部變量</b></p><p> bool flag=true;</p><p> int i
20、ndex=1;</p><p> char temp='n';</p><p> if(ch[0]=='\0')</p><p><b> {</b></p><p> cout<<"(----請(qǐng)輸入上述轉(zhuǎn)換的數(shù)據(jù)!----)"<<end
21、l;</p><p> flag=false;</p><p><b> }</b></p><p> //只有ch[0]!='\0'時(shí)才會(huì)進(jìn)入這個(gè)循環(huán)</p><p> while(ch[index]!='\0' && ch[0]!='\0') &
22、lt;/p><p><b> {</b></p><p> if(ch[index]==' ') //如果輸入的數(shù)據(jù)中有空格則忽略</p><p><b> {</b></p><p><b> index++;</b></p><
23、;p><b> continue;</b></p><p><b> }</b></p><p> if(ch[index]!='0' && ch[index]!='1')</p><p><b> {</b></p><
24、;p> cout<<"源數(shù)據(jù)有誤!"<<endl<<endl;</p><p> //根據(jù)用戶需要決定是否繼續(xù)編碼過(guò)程</p><p> cout<<"是否繼續(xù)?[y/n]:";</p><p> cin>>temp;</p><p&
25、gt; if(temp!='y') exit(1);</p><p> flag=false;</p><p><b> break;</b></p><p><b> }</b></p><p><b> index++;</b></p>
26、<p><b> }</b></p><p> return flag;</p><p><b> }</b></p><p> 差分曼徹斯特編碼。第一個(gè)數(shù)據(jù)若是1,則用10代替;若是0,則用01代替。其他數(shù)據(jù),后一個(gè)數(shù)據(jù)若是1,則數(shù)據(jù)起始位置不跳變;若是0,則數(shù)據(jù)起始位置產(chǎn)生跳變。并且,每個(gè)數(shù)據(jù)中間
27、都會(huì)產(chǎn)生跳變。</p><p> void Differential_Manchester_Encody(char *ch)</p><p><b> {</b></p><p> int index=1;</p><p> char temp; //用temp來(lái)記錄前一個(gè)數(shù)據(jù)后半部分是0還是1</p
28、><p> cout<<"差分曼徹斯特編碼圖像為: "<<endl;</p><p> if(ch[0]=='0')</p><p><b> {</b></p><p> cout<<"-_ ";</p>&l
29、t;p><b> temp='1';</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"_-
30、 ";</p><p><b> temp='0';</b></p><p><b> }</b></p><p> while(ch[index]!='\0') //編碼未完成才繼續(xù)</p><p><b>
31、{</b></p><p> if(ch[index]==' ')</p><p><b> {</b></p><p><b> index++;</b></p><p><b> continue;</b></p><
32、p><b> }</b></p><p> if(ch[index]=='1')</p><p><b> {</b></p><p> if(temp=='1')</p><p><b> {</b></p>&l
33、t;p> cout<<"_- ";</p><p><b> temp='0';</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {&l
34、t;/b></p><p> cout<<"-_ ";</p><p><b> temp='1';</b></p><p><b> }</b></p><p><b> }</b></p><
35、p><b> else</b></p><p><b> {</b></p><p> if(temp=='1')</p><p><b> {</b></p><p> cout<<"-_ ";</p>
36、;<p><b> temp='1';</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<&qu
37、ot;_- ";</p><p><b> temp='0';</b></p><p><b> }</b></p><p><b> }</b></p><p><b> index++;</b></p>
38、<p><b> }</b></p><p> cout<<endl<<endl;</p><p><b> }</b></p><p><b> 主函數(shù)部分:</b></p><p> int main()</p>&
39、lt;p> { test();</p><p> //char buffer[MAX];//存放輸入數(shù)據(jù)的緩沖區(qū)</p><p> char c[MAX];</p><p> //buffer[MAX]=c[MAX];</p><p> char temp='y';</p><p>
40、; while(temp=='y')</p><p><b> {</b></p><p> cout<<"非歸零碼為: "<<endl;</p><p> gets(c); //利用gets而不用cin是為了當(dāng)輸入的數(shù)據(jù)中含有空格時(shí)能讀取完整的碼</p>
41、<p> if(check(c)) //首先檢查輸入的數(shù)據(jù)是否符合要求,01串符合要求</p><p><b> {</b></p><p> Differential_Manchester_Encody(c);</p><p> //根據(jù)用戶需要決定是否繼續(xù)編碼過(guò)程</p><p> cout
42、<<"continue or not[y/n]:";</p><p> cin>>temp;</p><p> getchar(); //這個(gè)getchar()是必須存在的,否則gets函數(shù)會(huì)讀取cin>>temp中的回車</p><p><b> }</b></p>
43、<p><b> }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p><b> 運(yùn)行結(jié)果:</b></p><p><b> 實(shí)驗(yàn)總結(jié):</b>
44、</p><p><b> 1、結(jié)果分析:</b></p><p> (1)差分曼徹斯特碼編碼規(guī)則:</p><p> 從上圖可看出差分曼徹斯特碼的編碼規(guī)則,即:</p><p> i.每個(gè)單位周期內(nèi),以1/2周期的時(shí)刻處,分為高低兩個(gè)等時(shí)長(zhǎng)電平。有兩種:上升(先高后低)或下降(先低后高)。</p>
45、<p> ii.數(shù)據(jù)流的二進(jìn)制編碼中,第一個(gè)數(shù)據(jù)位是1,則編碼為下降。0則相反。 </p><p> iii.數(shù)據(jù)流的二進(jìn)制編碼中,其它數(shù)據(jù)位,則根據(jù)此位跟前一位的電平比較。相同則編碼為不跳變(跟上一位后半部分一樣)。不同則相反。</p><p> (2)差分曼徹斯特碼特點(diǎn):在信號(hào)為開始時(shí)不改變信號(hào)極性,表示邏輯“1”;在信號(hào)為開始時(shí)改變信號(hào)極性,表示邏輯“0”
46、。當(dāng)比特為1時(shí),前T/2比特位的電平與上一個(gè)比特位的后T/2的比特位的電平相同;當(dāng)比特為0時(shí),前T/2比特位的電平與上一個(gè)比特位的后T/2比特位的電平相反。</p><p><b> 實(shí)驗(yàn)感想:</b></p><p> 首先,讓我對(duì)差分曼徹斯特編碼原理有了進(jìn)一步的了解。差分曼徹斯特碼又叫數(shù)字雙相碼,每個(gè)時(shí)鐘中間都有一次跳變這個(gè)跳變作同步之用。其次,通過(guò)這次課程設(shè)
47、計(jì),我認(rèn)識(shí)到了完成一項(xiàng)課程設(shè)計(jì)工作不但需要對(duì)知識(shí)的掌握和理解,還需要不懂就問(wèn),同學(xué)間共同努力來(lái)解決課程設(shè)計(jì)當(dāng)中的種種困難,開拓創(chuàng)新能力的目的。最后,通過(guò)這次課程設(shè)計(jì),讓我對(duì)說(shuō)明書的模板有了更清晰的了解,加深了我思想中對(duì)文章模范化的概念,對(duì)我一年后的畢業(yè)論文也起了輪廓性作用。這將會(huì)變成我們?cè)诖髮W(xué)生活中獲得的又一筆巨大的財(cái)富。</p><p><b> 附錄代碼:</b></p>
48、<p> #include<iostream></p><p> using namespace std;</p><p> #define MAX 1024</p><p> bool check(char *ch)</p><p><b> {</b></p><
49、p> bool flag=true;</p><p> int index=1;</p><p> char temp='n';</p><p> if(ch[0]=='\0')</p><p><b> {</b></p><p> cout&l
50、t;<"(----請(qǐng)輸入上述轉(zhuǎn)換的數(shù)據(jù)!----)"<<endl;</p><p> flag=false;</p><p><b> }</b></p><p> while(ch[index]!='\0' && ch[0]!='\0') </p
51、><p><b> {</b></p><p> if(ch[index]==' ') //如果輸入的數(shù)據(jù)中有空格則忽略</p><p><b> {</b></p><p><b> index++;</b></p><p><
52、;b> continue;</b></p><p><b> }</b></p><p> if(ch[index]!='0' && ch[index]!='1')</p><p><b> {</b></p><p> c
53、out<<"源數(shù)據(jù)有誤!"<<endl<<endl;</p><p> cout<<"是否繼續(xù)?[y/n]:";</p><p> cin>>temp;</p><p> if(temp!='y') exit(1);</p><
54、;p> flag=false;</p><p><b> break;</b></p><p><b> }</b></p><p><b> index++;</b></p><p><b> }</b></p><p
55、> return flag;</p><p><b> }</b></p><p> void test() </p><p><b> { </b></p><p> char c[MAX];</p><p> int a[16]={0};</p&
56、gt;<p> int i=0,j;</p><p> cout<<"請(qǐng)輸入一個(gè)十六進(jìn)制數(shù):"<<endl;</p><p><b> cin>>c; </b></p><p> while(c[i])</p><p><b> {
57、</b></p><p> if(c[i]>'0'&&c[i]<'9') </p><p> c[i]=c[i++]-48; </p><p><b> else </b></p><p> if(c[i]>='A'&a
58、mp;&c[i]<='Z') </p><p> c[i]=c[i++]-55; </p><p> else if(c[i]>='a'&&c[i]<='z')</p><p> c[i]=c[i++]-87; </p><p><b>
59、 else</b></p><p><b> { </b></p><p> cout<<"輸入錯(cuò)誤,請(qǐng)從新輸入"<<endl;</p><p><b> return;</b></p><p><b> } </b&
60、gt;</p><p><b> } </b></p><p><b> i=0;</b></p><p> while(c[i]) </p><p><b> { </b></p><p> for(j=3;j>=0;j--) <
61、/p><p><b> { </b></p><p> a[j]=c[i]%2;</p><p><b> c[i]/=2; </b></p><p><b> } </b></p><p> for(j=0;j<4;j++) </p&
62、gt;<p> cout<<a[j]<<endl; </p><p><b> i++; </b></p><p><b> } </b></p><p> cout<<endl;</p><p><b> } </b&g
63、t;</p><p> void Differential_Manchester_Encody(char *ch)</p><p><b> {</b></p><p> int index=1;</p><p> char temp; </p><p> cout<<&qu
64、ot;差分曼徹斯特編碼圖像為: "<<endl;</p><p> if(ch[0]=='0')</p><p><b> {</b></p><p> cout<<"-_ ";</p><p><b> temp='1
65、9;;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"_- ";</p><p><
66、;b> temp='0';</b></p><p><b> }</b></p><p> while(ch[index]!='\0') </p><p><b> {</b></p><p> if(ch[index]=='
67、39;)</p><p><b> {</b></p><p><b> index++;</b></p><p><b> continue;</b></p><p><b> }</b></p><p> if(ch[
68、index]=='1')</p><p><b> {</b></p><p> if(temp=='1')</p><p><b> {</b></p><p> cout<<"_- ";</p><p&g
69、t;<b> temp='0';</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"-_ &quo
70、t;;</p><p><b> temp='1';</b></p><p><b> }</b></p><p><b> }</b></p><p><b> else</b></p><p><b
71、> {</b></p><p> if(temp=='1')</p><p><b> {</b></p><p> cout<<"-_ ";</p><p><b> temp='1';</b></p
72、><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"_- ";</p><p><b> temp='0
73、';</b></p><p><b> }</b></p><p><b> }</b></p><p><b> index++;</b></p><p><b> }</b></p><p> co
74、ut<<endl<<endl;</p><p><b> }</b></p><p> int main()</p><p><b> { </b></p><p><b> test();</b></p><p>
75、char c[MAX];</p><p> char temp='y';</p><p> while(temp=='y')</p><p><b> {</b></p><p> cout<<"非歸零碼為: "<<endl;</p
76、><p> gets(c); </p><p> if(check(c)) {</p><p> Differential_Manchester_Encody(c);</p><p> cout<<"continue or not[y/n]:";</p><p> cin&g
77、t;>temp;</p><p> getchar(); </p><p><b> }</b></p><p><b> }</b></p><p><b> return 0;</b></p><p><b> }<
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 編碼解碼 課程設(shè)計(jì)
- huffman編碼課程設(shè)計(jì)
- 測(cè)量平差課程設(shè)計(jì)
- 平差課程設(shè)計(jì)報(bào)告
- 測(cè)量平差課程設(shè)計(jì)報(bào)告
- 無(wú)線遙控的曼徹斯特編碼的接收
- 基于fpga的曼徹斯特編碼器設(shè)計(jì)[開題報(bào)告]
- 課程設(shè)計(jì)-哈夫曼編碼
- 《哈夫曼編碼》課程設(shè)計(jì)
- 課程設(shè)計(jì)哈夫曼編碼
- 哈夫曼編碼課程設(shè)計(jì)
- 課程設(shè)計(jì)哈夫曼編碼
- 基帶編碼軟件課程設(shè)計(jì)設(shè)計(jì)報(bào)告
- 測(cè)量平差課程設(shè)計(jì)實(shí)習(xí)報(bào)告
- 畢業(yè)設(shè)計(jì)---基于fpga的曼徹斯特編碼器的設(shè)計(jì)
- 通信原理課程設(shè)計(jì)--差分碼fsk信號(hào)的相干解調(diào)系統(tǒng)仿真
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----huffman編碼
- 基于fpga的曼徹斯特編碼器設(shè)計(jì)【畢業(yè)論文】
- 基于cpld的曼徹斯特編碼器設(shè)計(jì)[任務(wù)書]
- 基于fpga的曼徹斯特編碼器設(shè)計(jì)原理[文獻(xiàn)綜述]
評(píng)論
0/150
提交評(píng)論