循环码梅吉特译码原理实验.docx

上传人:b****5 文档编号:7271727 上传时间:2023-01-22 格式:DOCX 页数:12 大小:67KB
下载 相关 举报
循环码梅吉特译码原理实验.docx_第1页
第1页 / 共12页
循环码梅吉特译码原理实验.docx_第2页
第2页 / 共12页
循环码梅吉特译码原理实验.docx_第3页
第3页 / 共12页
循环码梅吉特译码原理实验.docx_第4页
第4页 / 共12页
循环码梅吉特译码原理实验.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

循环码梅吉特译码原理实验.docx

《循环码梅吉特译码原理实验.docx》由会员分享,可在线阅读,更多相关《循环码梅吉特译码原理实验.docx(12页珍藏版)》请在冰豆网上搜索。

循环码梅吉特译码原理实验.docx

循环码梅吉特译码原理实验

循环码梅吉特译码原理实验

一、设计内容

本实验根据梅吉特译码器的原理设计循环码梅吉特译码器,该译码器具有纠一位错码的能力。

在输入窗口中输入七位的二进制接收码字,在输出窗口中输出译码后的码字,并可根据选择画出波形图。

二、设计工具:

MATLAB

三、流程图

主程序流程图

梅吉特译码核心部分流程图

四、运行方法

在“Inputcode”输入文本框中输入要译码的七位循环码码字,选择“Draw”(选择输入和输出的码字的波形)或“Undraw”(不显示输入和输出的波形),点击“Decode”,会在“Output”输出文本框里输出译码后的码字,并根据“Draw”或“Undraw”的选择是否显示码字波形。

点击“Reset”会清空所有的图形和文本框,点击“Help”会显示操作帮助。

五、运行结果截图

下图为当输入“1101011”时的译码结果及波形显示:

六、实验心得:

通过本次实验,使我不仅掌握了梅吉特译码器的原理,而且也学会了如何用软件去实现其逻辑功能,并且对MATLAB仿真工具的使用有了进一步的认识。

七、程序代码部分

%界面程序-decode的回调函数部分

input1=get(handles.Input,'String');

input1=size(input1);

input2=input1

(2);

check=get(handles.Input,'String');

check=str2num(check);

check2=checkout(check);

if(input2~=7)|(check==0)

set(handles.Input,'String','');

set(handles.Output,'String','');

axes(handles.axes1);

clareset;

axes(handles.axes2);

clareset;

errordlg('Pleaseinput7bitbinarynumber!

','Errorinput!

');

else

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');

ifa==1

axes(handles.axes1);

%plotwave

stairs([0:

7],[code1,1]);

axis([07-0.11.5]);

title('Inputcode');

axes(handles.axes2);

stairs([0:

7],[decoder,1]);

axis([07-0.11.5]);

title('Outputcode');

else

axes(handles.axes1);

clareset;

axes(handles.axes2);

clareset;

end

end

%回调函数部分结束

%检测输入的数据是否合法的函数部分

functiondataout=checkout(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);

%判断输入的码是否合法,该判断只能判断小于等于七位的二进制数,如果输入的是小于七位的二进制数,也默认合法,将小于七位的二进制的数的判定放在decode的回调函数里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)|(R7~=0&R7~=1))

dataout=0;

%如果是非法输入就置dataout为0,否则为1

else

dataout=1;

end

%模2加法器的实现部分

functiony=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加法器的实现部分结束

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)|(R7~=0&R7~=1))

dataout=0;

%如果是非法输入就置dataout为0,否则为1

else

dataout=1;

end

%检测输入的数据是否合法的函数部分

%将输入的数据转换成二进制数据的函数部分

functionC=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];

%将输入的数据转换成二进制数据的函数部分结束

%梅吉特译码器的核心部分

functiondataout=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,R3,R4,R5,R6,R7];

C(7)=0;

D0=0;D1=0;D2=0;D00=0;D11=0;D22=0;

fori=1:

14

D00=D0;

D11=D1;

D22=D2;

ifi<=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;

end

end

dataout=C;

%梅吉特译码器的核心部分结束

 

循环码梅吉特译码原理实验

(2)设计内容

本实验根据梅吉特译码器的原理设计循环码梅吉特译码器,该译码器具有纠一位错码的能力。

在输入窗口中输入七位的二进制接收码字,在输出窗口中输出译码后的码字,并可根据选择画出波形图。

(3)设计工具:

MATLAB

(4)流程图:

(6)运行方法:

在“Inputcode”输入文本框中输入要译码的七位循环码码字,选择“Draw”(选择输入和输出的码字的波形)或“Undraw”(不显示输入和输出的波形),点击“Decode”,会在“Output”输出文本框里输出译码后的码字,并根据“Draw”或“Undraw”的选择是否显示码字波形。

点击“Reset”会清空所有的图形和文本框,点击“Help”会显示操作帮助。

(7)运行结果截图:

下图为当输入“1101011”时的译码结果及波形显示:

(8)实验心得:

通过本次实验,使我不仅掌握了梅吉特译码器的原理,而且也学会了如何用软件去实现其逻辑功能,并且对MATLAB仿真工具的使用有了进一步的认识。

(5)程序代码部分

%界面程序-decode的回调函数部分

input1=get(handles.Input,'String');

input1=size(input1);

input2=input1

(2);

check=get(handles.Input,'String');

check=str2num(check);

check2=checkout(check);

if(input2~=7)|(check==0)

set(handles.Input,'String','');

set(handles.Output,'String','');

axes(handles.axes1);

clareset;

axes(handles.axes2);

clareset;

errordlg('Pleaseinput7bitbinarynumber!

','Errorinput!

');

else

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');

ifa==1

axes(handles.axes1);

%plotwave

stairs([0:

7],[code1,1]);

axis([07-0.11.5]);

title('Inputcode');

axes(handles.axes2);

stairs([0:

7],[decoder,1]);

axis([07-0.11.5]);

title('Outputcode');

else

axes(handles.axes1);

clareset;

axes(handles.axes2);

clareset;

end

end

%回调函数部分结束

%检测输入的数据是否合法的函数部分

functiondataout=checkout(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);

%判断输入的码是否合法,该判断只能判断小于等于七位的二进制数,如果输入的是小于七位的二进制数,也默认合法,将小于七位的二进制的数的判定放在decode的回调函数里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)|(R7~=0&R7~=1))

dataout=0;

%如果是非法输入就置dataout为0,否则为1

else

dataout=1;

end

%模2加法器的实现部分

functiony=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加法器的实现部分结束

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)|(R7~=0&R7~=1))

dataout=0;

%如果是非法输入就置dataout为0,否则为1

else

dataout=1;

end

%检测输入的数据是否合法的函数部分

%将输入的数据转换成二进制数据的函数部分

functionC=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];

%将输入的数据转换成二进制数据的函数部分结束

%梅吉特译码器的核心部分

functiondataout=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,R3,R4,R5,R6,R7];

C(7)=0;

D0=0;D1=0;D2=0;D00=0;D11=0;D22=0;

fori=1:

14

D00=D0;

D11=D1;

D22=D2;

ifi<=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;

end

end

dataout=C;

%梅吉特译码器的核心部分结束

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 管理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1