循環(huán)碼梅吉特譯碼原理實驗_第1頁
循環(huán)碼梅吉特譯碼原理實驗_第2頁
循環(huán)碼梅吉特譯碼原理實驗_第3頁
循環(huán)碼梅吉特譯碼原理實驗_第4頁
循環(huán)碼梅吉特譯碼原理實驗_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、循環(huán)碼梅吉特譯碼原理實驗一、設(shè)計內(nèi)容本實驗根據(jù)梅吉特譯碼器的原理設(shè)計循環(huán)碼梅吉特譯碼器,該譯碼器具有糾一位錯碼的能力。在輸入窗口中輸入七位的二進制接收碼字,在輸出窗口中輸出譯碼后的碼字,并可根據(jù)選擇畫出波形圖。二、設(shè)計工具:MATLAB三、流程圖主程序流程圖梅吉特譯碼核心部分流程圖四、運行方法在“Input code”輸入文本框中輸入要譯碼的七位循環(huán)碼碼字,選擇“Draw”(選擇輸入和輸出的碼字的波形)或“Undraw”(不顯示輸入和輸出的波形),點擊“Decode”,會在“Output”輸出文本框里輸出譯碼后的碼字,并根據(jù)“Draw”或“Undraw”的選擇是否顯示碼字波形。點擊“Reset

2、”會清空所有的圖形和文本框,點擊“Help”會顯示操作幫助。五、運行結(jié)果截圖下圖為當(dāng)輸入“1101011”時的譯碼結(jié)果及波形顯示: 六、實驗心得:通過本次實驗,使我不僅掌握了梅吉特譯碼器的原理,而且也學(xué)會了如何用軟件去實現(xiàn)其邏輯功能,并且對MATLAB仿真工具的使用有了進一步的認(rèn)識。七、程序代碼部分%界面程序-decode的回調(diào)函數(shù)部分input1=get(handles.Input,'String');input1=size(input1);input2=input1(2);check=get(handles.Input,'String');check=str

3、2num(check);check2=checkout(check);if (input2=7)|(check=0) set(handles.Input,'String',''); set(handles.Output,'String',''); axes(handles.axes1); cla reset; axes(handles.axes2); cla reset; errordlg('Please input 7 bit binary number!','Error input !');el

4、se a=get(handles.Input,'String'); code=str2num(a); code1=converter(code); decoder=MJTdecoder(code); decoder2=num2str(decoder); set(handles.Output,'String',decoder2); a=get(handles.Draw,'Value'); if a=1 axes(handles.axes1); %plot wave stairs(0:7,code1,1); axis(0 7 -0.1 1.5); t

5、itle('Input code'); axes(handles.axes2); stairs(0:7,decoder,1); axis(0 7 -0.1 1.5); title('Output code'); else axes(handles.axes1); cla reset; axes(handles.axes2); cla reset; endend%回調(diào)函數(shù)部分結(jié)束%檢測輸入的數(shù)據(jù)是否合法的函數(shù)部分function dataout=checkout(R)%先將輸入的十進制數(shù)變成二進制數(shù) R1=floor(R/1000000); R2=floor(mo

6、d(R,1000000)/100000); R3=floor(mod(R,100000)/10000); R4=floor(mod(R,10000)/1000); R5=floor(mod(R,1000)/100); R6=floor(mod(R,100)/10); R7=mod(R,10);%判斷輸入的碼是否合法,該判斷只能判斷小于等于七位的二進制數(shù),如果輸入的是小于七位的二進制數(shù),也默認(rèn)合法,將小于七位的二進制的數(shù)的判定放在decode的回調(diào)函數(shù)里 if(R1=0&R1=1)|(R2=0&R2=1)|(R3=0&R3=1)|(R4=0&R4=1)|(R5=0

7、&R5=1)|(R6=0&R6=1)|(R7=0&R7=1) dataout=0; %如果是非法輸入就置dataout為0,否則為1 else dataout=1; end%模2加法器的實現(xiàn)部分function y=add2(x,y)if (x=0&y=0)|(x=1&y=1) y=0;elseif (x=0&y=1)|(x=1&y=0) y=1;end%模2加法器的實現(xiàn)部分結(jié)束if(R1=0&R1=1)|(R2=0&R2=1)|(R3=0&R3=1)|(R4=0&R4=1)|(R5=0&R5=1)

8、|(R6=0&R6=1)|(R7=0&R7=1) dataout=0; %如果是非法輸入就置dataout為0,否則為1 else dataout=1;end%檢測輸入的數(shù)據(jù)是否合法的函數(shù)部分%將輸入的數(shù)據(jù)轉(zhuǎn)換成二進制數(shù)據(jù)的函數(shù)部分function C=converter(R)R1=floor(R/1000000);R2=floor(mod(R,1000000)/100000); R3=floor(mod(R,100000)/10000);R4=floor(mod(R,10000)/1000);R5=floor(mod(R,1000)/100);R6=floor(mod(R,1

9、00)/10);R7=mod(R,10);C=R1,R2,R3,R4,R5,R6,R7;%將輸入的數(shù)據(jù)轉(zhuǎn)換成二進制數(shù)據(jù)的函數(shù)部分結(jié)束%梅吉特譯碼器的核心部分function dataout=Mjtdecoder(R) R1=floor(R/1000000); R2=floor(mod(R,1000000)/100000); R3=floor(mod(R,100000)/10000); R4=floor(mod(R,10000)/1000); R5=floor(mod(R,1000)/100); R6=floor(mod(R,100)/10); R7=mod(R,10); R_new=R1,R2

10、,R3,R4,R5,R6,R7;C(7)=0;D0=0;D1=0;D2=0;D00=0;D11=0;D22=0;for i=1:14 D00=D0; D11=D1; D22=D2; if i<=7 D0=add2(D22,R_new(i); D1=add2(D00,D22); D2=D11; S=D0&D1&D2; else D0=add2(S,D22); D1=add2(D00,D22); D2=D11; C(i-7)=add2(S,R_new(i-7); S=D0&D1&D2; endenddataout=C;%梅吉特譯碼器的核心部分結(jié)束循環(huán)碼梅吉特譯

11、碼原理實驗(2)設(shè)計內(nèi)容本實驗根據(jù)梅吉特譯碼器的原理設(shè)計循環(huán)碼梅吉特譯碼器,該譯碼器具有糾一位錯碼的能力。在輸入窗口中輸入七位的二進制接收碼字,在輸出窗口中輸出譯碼后的碼字,并可根據(jù)選擇畫出波形圖。(3)設(shè)計工具:MATLAB(4)流程圖:(6)運行方法:在“Input code”輸入文本框中輸入要譯碼的七位循環(huán)碼碼字,選擇“Draw”(選擇輸入和輸出的碼字的波形)或“Undraw”(不顯示輸入和輸出的波形),點擊“Decode”,會在“Output”輸出文本框里輸出譯碼后的碼字,并根據(jù)“Draw”或“Undraw”的選擇是否顯示碼字波形。點擊“Reset”會清空所有的圖形和文本框,點擊“He

12、lp”會顯示操作幫助。(7)運行結(jié)果截圖:下圖為當(dāng)輸入“1101011”時的譯碼結(jié)果及波形顯示:(8)實驗心得:通過本次實驗,使我不僅掌握了梅吉特譯碼器的原理,而且也學(xué)會了如何用軟件去實現(xiàn)其邏輯功能,并且對MATLAB仿真工具的使用有了進一步的認(rèn)識。(5)程序代碼部分%界面程序-decode的回調(diào)函數(shù)部分input1=get(handles.Input,'String');input1=size(input1);input2=input1(2);check=get(handles.Input,'String');check=str2num(check);chec

13、k2=checkout(check);if (input2=7)|(check=0) set(handles.Input,'String',''); set(handles.Output,'String',''); axes(handles.axes1); cla reset; axes(handles.axes2); cla reset; errordlg('Please input 7 bit binary number!','Error input !');else a=get(handles

14、.Input,'String'); code=str2num(a); code1=converter(code); decoder=MJTdecoder(code); decoder2=num2str(decoder); set(handles.Output,'String',decoder2); a=get(handles.Draw,'Value'); if a=1 axes(handles.axes1); %plot wave stairs(0:7,code1,1); axis(0 7 -0.1 1.5); title('Input

15、code'); axes(handles.axes2); stairs(0:7,decoder,1); axis(0 7 -0.1 1.5); title('Output code'); else axes(handles.axes1); cla reset; axes(handles.axes2); cla reset; endend%回調(diào)函數(shù)部分結(jié)束%檢測輸入的數(shù)據(jù)是否合法的函數(shù)部分function dataout=checkout(R)%先將輸入的十進制數(shù)變成二進制數(shù) R1=floor(R/1000000); R2=floor(mod(R,1000000)/100

16、000); R3=floor(mod(R,100000)/10000); R4=floor(mod(R,10000)/1000); R5=floor(mod(R,1000)/100); R6=floor(mod(R,100)/10); R7=mod(R,10);%判斷輸入的碼是否合法,該判斷只能判斷小于等于七位的二進制數(shù),如果輸入的是小于七位的二進制數(shù),也默認(rèn)合法,將小于七位的二進制的數(shù)的判定放在decode的回調(diào)函數(shù)里 if(R1=0&R1=1)|(R2=0&R2=1)|(R3=0&R3=1)|(R4=0&R4=1)|(R5=0&R5=1)|(R6=0

17、&R6=1)|(R7=0&R7=1) dataout=0; %如果是非法輸入就置dataout為0,否則為1 else dataout=1; end%模2加法器的實現(xiàn)部分function y=add2(x,y)if (x=0&y=0)|(x=1&y=1) y=0;elseif (x=0&y=1)|(x=1&y=0) y=1;end%模2加法器的實現(xiàn)部分結(jié)束if(R1=0&R1=1)|(R2=0&R2=1)|(R3=0&R3=1)|(R4=0&R4=1)|(R5=0&R5=1)|(R6=0&R6=1)

18、|(R7=0&R7=1) dataout=0; %如果是非法輸入就置dataout為0,否則為1 else dataout=1;end%檢測輸入的數(shù)據(jù)是否合法的函數(shù)部分%將輸入的數(shù)據(jù)轉(zhuǎn)換成二進制數(shù)據(jù)的函數(shù)部分function C=converter(R)R1=floor(R/1000000);R2=floor(mod(R,1000000)/100000); R3=floor(mod(R,100000)/10000);R4=floor(mod(R,10000)/1000);R5=floor(mod(R,1000)/100);R6=floor(mod(R,100)/10);R7=mod(R,10);C=R1,R2,R3,R4,R5,R6,R7;%將輸入的數(shù)據(jù)轉(zhuǎn)換成二進制數(shù)據(jù)的函數(shù)部分結(jié)束%梅吉特譯碼器的核心部分function dataout=Mjtdecoder(R) R1=floor(R/1000000); R2=floor(mod(R,1000000)/100000); R3=floor(mod(R,100000)/10000); R4=floor(mod(R,10000)/1000); R5=floor(mod(R,1000)/100); R6=floor(mod(R,100)/10); R7=mod(R,10); R_new=

溫馨提示

  • 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

提交評論