差分曼彻斯特编码课程设计_第1页
差分曼彻斯特编码课程设计_第2页
差分曼彻斯特编码课程设计_第3页
差分曼彻斯特编码课程设计_第4页
差分曼彻斯特编码课程设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告计算机网络 题 目: 差分曼彻斯特模拟编码姓 名: 专 业: 班 级: 学 号: 指导教师: 2013.12.210目 录1. 课程设计目的012. 课程设计要求013. 实验要求014. 差分曼彻斯特编码简介015. 设计思路026. 图像示意027. 算法流程图028. 实验模块分析039. 运行结果1010. 实验总结 11(1)结果分析 11 (2)实验感想 1211.附录代码 131、 课程设计目的: 通过课程设计,巩固计算机网络课程学习的内容,强化上机动手能力,为后续各门计算机相关课程的学习打下坚实基础。课程设计为学生提供了一个独立实践的机会,将课本上的理论知识和实际应

2、用问题进行有机结合,锻炼综合分析、解决实际问题的能力。2、 课程设计要求:1、 对系统进行功能模块分析、控制模块分析正确;2、 系统设计要实用;3、 编程简练,可用,功能全面,具有较好的健壮性;4、 说明书、流程图要清楚。3、 实验要求: 通过编译语言实现一个输入十六进制数输出差分曼彻斯特编码模拟图像实验。4、 差分曼彻斯特编码简介: 差分曼彻斯特编码是对曼彻斯特编码的一种改进,保留了曼彻斯特编码作为“自含时钟编码”的优点,仍将每比特中间的跳变作为同步之用,但是每比特的取值则根据其开始处是否出现电平的跳变来决定。其原理是:每一位中间都有一个跳变,每位开始时有跳变表示“0”,无跳变表示“1”。位

3、中间跳变表示时钟,位前跳变表示数据。其优点是:时钟、数据分离,便于提取。五、设计思路: 输入16进制数据,能够输出差分曼却斯特波形图,通过数组转变,将十六进制数据转化成二进制数据,转化过程中,必须将一位十六进制数据转化成四位二进制数据,并判断差分曼彻斯特编码,输出模拟图像。6、 图像示意:七、 开 始算法流程图: 输入一个十六进制数 将十六进制转换四位二进制数表示判断输入数据进制 不是二进制数,则运行结束 是二进制组成的数据 输出差分曼彻斯特编码波形 结 束8、 实验模块分析: 将一个十六进制数转化为二进制数void test() char cMAX;int a16=0;int i=0,j;c

4、out<<"请输入一个十六进制数:"<<endl;cin>>c; while(ci)if(ci>'0'&&ci<'9') ci=ci+-48; else if(ci>='A'&&ci<='Z') ci=ci+-55; else if(ci>='a'&&ci<='z')ci=ci+-87; else cout<<"输入错误,请从新输入&quo

5、t;<<endl;return; i=0;while(ci) for(j=3;j>=0;j-) aj=ci%2;ci/=2; for(j=0;j<4;j+) cout<<aj<<endl; i+; cout<<endl; 判断输入的数据是不是由01组成的序列。若不是,则做出错处理。bool check(char *ch)/局部变量bool flag=true;int index=1;char temp='n'if(ch0='0')cout<<"(-请输入上述转换的数据!-)&quo

6、t;<<endl;flag=false;/只有ch0!='0'时才会进入这个循环while(chindex!='0' && ch0!='0') if(chindex=' ') /如果输入的数据中有空格则忽略index+;continue;if(chindex!='0' && chindex!='1')cout<<"源数据有误!"<<endl<<endl;/根据用户需要决定是否继续编码过程cout<

7、;<"是否继续?y/n:"cin>>temp;if(temp!='y') exit(1);flag=false;break;index+;return flag;差分曼彻斯特编码。第一个数据若是1,则用10代替;若是0,则用01代替。其他数据,后一个数据若是1,则数据起始位置不跳变;若是0,则数据起始位置产生跳变。并且,每个数据中间都会产生跳变。void Differential_Manchester_Encody(char *ch)int index=1;char temp; /用temp来记录前一个数据后半部分是0还是1cout<

8、<"差分曼彻斯特编码图像为: "<<endl;if(ch0='0')cout<<"-_ "temp='1'elsecout<<"_- "temp='0'while(chindex!='0') /编码未完成才继续if(chindex=' ')index+;continue;if(chindex='1')if(temp='1')cout<<"_- "tem

9、p='0'elsecout<<"-_ "temp='1'elseif(temp='1')cout<<"-_ "temp='1'elsecout<<"_- "temp='0'index+;cout<<endl<<endl;主函数部分:int main() test();/char bufferMAX;/存放输入数据的缓冲区 char cMAX;/bufferMAX=cMAX;char temp=&#

10、39;y'while(temp='y')cout<<"非归零码为: "<<endl;gets(c); /利用gets而不用cin是为了当输入的数据中含有空格时能读取完整的码if(check(c) /首先检查输入的数据是否符合要求,01串符合要求Differential_Manchester_Encody(c);/根据用户需要决定是否继续编码过程cout<<"continue or noty/n:"cin>>temp;getchar(); /这个getchar()是必须存在的,否则ge

11、ts函数会读取cin>>temp中的回车return 0;9、 运行结果:10、 实验总结: 1、结果分析: (1)差分曼彻斯特码编码规则: 从上图可看出差分曼彻斯特码的编码规则,即: i.每个单位周期内,以1/2周期的时刻处,分为高低两个等时长电平。有两种:上升(先高后低)或下降(先低后高)。 ii.数据流的二进制编码中,第一个数据位是1,则编码为下降。0则相反。  iii.数据流的二进制编码中,其它数据位,则根据此位跟前一位的电平比较。相同则编码为不跳变(跟上一位后半部分一样)。不同则相反。 (2)差分曼彻斯特码特点:在信号为开始时不改变信号极性,表示逻辑“1”;在信

12、号为开始时改变信号极性,表示逻辑“0”。当比特为1时,前T/2比特位的电平与上一个比特位的后T/2的比特位的电平相同;当比特为0时,前T/2比特位的电平与上一个比特位的后T/2比特位的电平相反。2、 实验感想:首先,让我对差分曼彻斯特编码原理有了进一步的了解。差分曼彻斯特码又叫数字双相码,每个时钟中间都有一次跳变这个跳变作同步之用。其次,通过这次课程设计,我认识到了完成一项课程设计工作不但需要对知识的掌握和理解,还需要不懂就问,同学间共同努力来解决课程设计当中的种种困难,开拓创新能力的目的。最后,通过这次课程设计,让我对说明书的模板有了更清晰的了解,加深了我思想中对文章模范化的概念,对我一年后

13、的毕业论文也起了轮廓性作用。这将会变成我们在大学生活中获得的又一笔巨大的财富。附录代码:#include<iostream>using namespace std;#define MAX 1024bool check(char *ch)bool flag=true;int index=1;char temp='n'if(ch0='0')cout<<"(-请输入上述转换的数据!-)"<<endl;flag=false;while(chindex!='0' && ch0!=

14、9;0') if(chindex=' ') /如果输入的数据中有空格则忽略index+;continue;if(chindex!='0' && chindex!='1')cout<<"源数据有误!"<<endl<<endl;cout<<"是否继续?y/n:"cin>>temp;if(temp!='y') exit(1);flag=false;break;index+;return flag;void test

15、() char cMAX;int a16=0;int i=0,j;cout<<"请输入一个十六进制数:"<<endl;cin>>c; while(ci)if(ci>'0'&&ci<'9') ci=ci+-48; else if(ci>='A'&&ci<='Z') ci=ci+-55; else if(ci>='a'&&ci<='z')ci=ci+-87; els

16、e cout<<"输入错误,请从新输入"<<endl;return; i=0;while(ci) for(j=3;j>=0;j-) aj=ci%2;ci/=2; for(j=0;j<4;j+) cout<<aj<<endl; i+; cout<<endl; void Differential_Manchester_Encody(char *ch)int index=1;char temp; cout<<"差分曼彻斯特编码图像为: "<<endl;if(ch0=

17、'0')cout<<"-_ "temp='1'elsecout<<"_- "temp='0'while(chindex!='0') if(chindex=' ')index+;continue;if(chindex='1')if(temp='1')cout<<"_- "temp='0'elsecout<<"-_ "temp='1'elseif(temp='1')cout<<"-_ "temp='1'elsecout<<"_- "temp='0'index+;cout<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论