差分曼彻斯特编码课程设计及代码.docx

上传人:b****4 文档编号:6741444 上传时间:2023-05-10 格式:DOCX 页数:15 大小:163.21KB
下载 相关 举报
差分曼彻斯特编码课程设计及代码.docx_第1页
第1页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第2页
第2页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第3页
第3页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第4页
第4页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第5页
第5页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第6页
第6页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第7页
第7页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第8页
第8页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第9页
第9页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第10页
第10页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第11页
第11页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第12页
第12页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第13页
第13页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第14页
第14页 / 共15页
差分曼彻斯特编码课程设计及代码.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

差分曼彻斯特编码课程设计及代码.docx

《差分曼彻斯特编码课程设计及代码.docx》由会员分享,可在线阅读,更多相关《差分曼彻斯特编码课程设计及代码.docx(15页珍藏版)》请在冰点文库上搜索。

差分曼彻斯特编码课程设计及代码.docx

差分曼彻斯特编码课程设计及代码

课程设计报告

计算机网络

题目:

差分曼彻斯特模拟编码

姓名:

专业:

班级:

学号:

指导教师:

 

2013.12.21

1.课程设计目的………………………………………………………01

2.课程设计要求………………………………………………………01

3.实验要求……………………………………………………………01

4.差分曼彻斯特编码简介……………………………………………01

5.设计思路……………………………………………………………02

6.图像示意……………………………………………………………02

7.算法流程图…………………………………………………………02

8.实验模块分析………………………………………………………03

9.运行结果……………………………………………………………10

10.实验总结…………………………………………………………11

(1)结果分析…………………………………………………………11

(2)实验感想…………………………………………………………12

11.附录代码…………………………………………………………13

1、课程设计目的:

通过课程设计,巩固《计算机网络》课程学习的内容,强化上机动手能力,为后续各门计算机相关课程的学习打下坚实基础。

课程设计为学生提供了一个独立实践的机会,将课本上的理论知识和实际应用问题进行有机结合,锻炼综合分析、解决实际问题的能力。

2、课程设计要求:

1、对系统进行功能模块分析、控制模块分析正确;

2、系统设计要实用;

3、编程简练,可用,功能全面,具有较好的健壮性;

4、说明书、流程图要清楚。

3、实验要求:

通过编译语言实现一个输入十六进制数输出差分曼彻斯特编码模拟图像实验。

4、差分曼彻斯特编码简介:

差分曼彻斯特编码是对曼彻斯特编码的一种改进,保留了曼彻斯特编码作为“自含时钟编码”的优点,仍将每比特中间的跳变作为同步之用,但是每比特的取值则根据其开始处是否出现电平的跳变来决定。

其原理是:

每一位中间都有一个跳变,每位开始时有跳变表示“0”,无跳变表示“1”。

位中间跳变表示时钟,位前跳变表示数据。

其优点是:

时钟、数据分离,便于提取。

五、设计思路:

输入16进制数据,能够输出差分曼却斯特波形图,通过数组转变,将十六进制数据转化成二进制数据,转化过程中,必须将一位十六进制数据转化成四位二进制数据,并判断差分曼彻斯特编码,输出模拟图像。

6、图像示意:

七、

算法流程图:

8、实验模块分析:

将一个十六进制数转化为二进制数

voidtest()

{

charc[MAX];

inta[16]={0};

inti=0,j;

cout<<"请输入一个十六进制数:

"<

cin>>c;

while(c[i])

{

if(c[i]>'0'&&c[i]<'9')

c[i]=c[i++]-48;

else

if(c[i]>='A'&&c[i]<='Z')

c[i]=c[i++]-55;

elseif(c[i]>='a'&&c[i]<='z')

c[i]=c[i++]-87;

else

{

cout<<"输入错误,请从新输入"<

return;

}

}

i=0;

while(c[i])

{

for(j=3;j>=0;j--)

{

a[j]=c[i]%2;

c[i]/=2;

}

for(j=0;j<4;j++)

cout<

i++;

}

cout<

}

判断输入的数据是不是由01组成的序列。

若不是,则做出错处理。

boolcheck(char*ch)

{

//局部变量

boolflag=true;

intindex=1;

chartemp='n';

if(ch[0]=='\0')

{

cout<<"(----请输入上述转换的数据!

----)"<

flag=false;

}

//只有ch[0]!

='\0'时才会进入这个循环

while(ch[index]!

='\0'&&ch[0]!

='\0')

{

if(ch[index]=='')//如果输入的数据中有空格则忽略

{

index++;

continue;

}

if(ch[index]!

='0'&&ch[index]!

='1')

{

cout<<"源数据有误!

"<

//根据用户需要决定是否继续编码过程

cout<<"是否继续?

[y/n]:

";

cin>>temp;

if(temp!

='y')exit

(1);

flag=false;

break;

}

index++;

}

returnflag;

}

差分曼彻斯特编码。

第一个数据若是1,则用10代替;若是0,则用01代替。

其他数据,后一个数据若是1,则数据起始位置不跳变;若是0,则数据起始位置产生跳变。

并且,每个数据中间都会产生跳变。

voidDifferential_Manchester_Encody(char*ch)

{

intindex=1;

chartemp;//用temp来记录前一个数据后半部分是0还是1

cout<<"差分曼彻斯特编码图像为:

"<

if(ch[0]=='0')

{

cout<<"-_";

temp='1';

}

else

{

cout<<"_-";

temp='0';

}

while(ch[index]!

='\0')//编码未完成才继续

{

if(ch[index]=='')

{

index++;

continue;

}

if(ch[index]=='1')

{

if(temp=='1')

{

cout<<"_-";

temp='0';

}

else

{

cout<<"-_";

temp='1';

}

}

else

{

if(temp=='1')

{

cout<<"-_";

temp='1';

}

else

{

cout<<"_-";

temp='0';

}

}

index++;

}

cout<

}

主函数部分:

intmain()

{test();

//charbuffer[MAX];//存放输入数据的缓冲区

charc[MAX];

//buffer[MAX]=c[MAX];

chartemp='y';

while(temp=='y')

{

cout<<"非归零码为:

"<

gets(c);//利用gets而不用cin是为了当输入的数据中含有空格时能读取完整的码

if(check(c))//首先检查输入的数据是否符合要求,01串符合要求

{

Differential_Manchester_Encody(c);

//根据用户需要决定是否继续编码过程

cout<<"continueornot[y/n]:

";

cin>>temp;

getchar();//这个getchar()是必须存在的,否则gets函数会读取cin>>temp中的回车

}

}

return0;

}

9、运行结果:

10、实验总结:

1、结果分析:

(1)差分曼彻斯特码编码规则:

从上图可看出差分曼彻斯特码的编码规则,即:

i.每个单位周期内,以1/2周期的时刻处,分为高低两个等时长电平。

有两种:

上升(先高后低)或下降(先低后高)。

ii.数据流的二进制编码中,第一个数据位是1,则编码为下降。

0则相反。

 

iii.数据流的二进制编码中,其它数据位,则根据此位跟前一位的电平比较。

相同则编码为不跳变(跟上一位后半部分一样)。

不同则相反。

(2)差分曼彻斯特码特点:

在信号为开始时不改变信号极性,表示逻辑“1”;在信号为开始时改变信号极性,表示逻辑“0”。

当比特为1时,前T/2比特位的电平与上一个比特位的后T/2的比特位的电平相同;当比特为0时,前T/2比特位的电平与上一个比特位的后T/2比特位的电平相反。

2、实验感想:

首先,让我对差分曼彻斯特编码原理有了进一步的了解。

差分曼彻斯特码又叫数字双相码,每个时钟中间都有一次跳变这个跳变作同步之用。

其次,通过这次课程设计,我认识到了完成一项课程设计工作不但需要对知识的掌握和理解,还需要不懂就问,同学间共同努力来解决课程设计当中的种种困难,开拓创新能力的目的。

最后,通过这次课程设计,让我对说明书的模板有了更清晰的了解,加深了我思想中对文章模范化的概念,对我一年后的毕业论文也起了轮廓性作用。

这将会变成我们在大学生活中获得的又一笔巨大的财富。

 

附录代码:

#include

usingnamespacestd;

#defineMAX1024

boolcheck(char*ch)

{

boolflag=true;

intindex=1;

chartemp='n';

if(ch[0]=='\0')

{

cout<<"(----请输入上述转换的数据!

----)"<

flag=false;

}

while(ch[index]!

='\0'&&ch[0]!

='\0')

{

if(ch[index]=='')//如果输入的数据中有空格则忽略

{

index++;

continue;

}

if(ch[index]!

='0'&&ch[index]!

='1')

{

cout<<"源数据有误!

"<

cout<<"是否继续?

[y/n]:

";

cin>>temp;

if(temp!

='y')exit

(1);

flag=false;

break;

}

index++;

}

returnflag;

}

voidtest()

{

charc[MAX];

inta[16]={0};

inti=0,j;

cout<<"请输入一个十六进制数:

"<

cin>>c;

while(c[i])

{

if(c[i]>'0'&&c[i]<'9')

c[i]=c[i++]-48;

else

if(c[i]>='A'&&c[i]<='Z')

c[i]=c[i++]-55;

elseif(c[i]>='a'&&c[i]<='z')

c[i]=c[i++]-87;

else

{

cout<<"输入错误,请从新输入"<

return;

}

}

i=0;

while(c[i])

{

for(j=3;j>=0;j--)

{

a[j]=c[i]%2;

c[i]/=2;

}

for(j=0;j<4;j++)

cout<

i++;

}

cout<

}

voidDifferential_Manchester_Encody(char*ch)

{

intindex=1;

chartemp;

cout<<"差分曼彻斯特编码图像为:

"<

if(ch[0]=='0')

{

cout<<"-_";

temp='1';

}

else

{

cout<<"_-";

temp='0';

}

while(ch[index]!

='\0')

{

if(ch[index]=='')

{

index++;

continue;

}

if(ch[index]=='1')

{

if(temp=='1')

{

cout<<"_-";

temp='0';

}

else

{

cout<<"-_";

temp='1';

}

}

else

{

if(temp=='1')

{

cout<<"-_";

temp='1';

}

else

{

cout<<"_-";

temp='0';

}

}

index++;

}

cout<

}

intmain()

{

test();

charc[MAX];

chartemp='y';

while(temp=='y')

{

cout<<"非归零码为:

"<

gets(c);

if(check(c)){

Differential_Manchester_Encody(c);

cout<<"continueornot[y/n]:

";

cin>>temp;

getchar();

}

}

return0;

}

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

当前位置:首页 > 工程科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2