




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精品文档杭 州 电 子 科 技 大 学实 验 报 告学生姓名:金雨鑫 学 号:12081220 指导教师:吴端坡实验地点:第1教研楼108 实验时间:第1012节一、实验室名称: 计算机通信与网络实验室二、实验项目名称:Coding on error dectecting algorithms(C+)三、实验学时:3学时四、实验原理:1. CRC即循环冗余校验码(CyclicRedundancyCheck1):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。2. 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设要发送的信息用多项式C(X)表示,将C(x)左移R位(可表示成C(x)*xR),这样C(x)的右边就会空出R位,这就是校验码的位置。用 C(x)*xR除以生成多项式G(x)得到的余数就是校验码。3. 任意一个由二进制位串组成的代码都可以和一个系数仅为0和1取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。4. 奇偶校验(ParityCheck)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。五、实验目的:1.认识学习CRC原理,并掌握CRC16-IBM的编写方法。2.学习奇偶校验的原理,并会用C代码编写。六、实验内容:1. Cyclic redundancy checkUsing the polynomials below to encode random generated data stream (40-100bits). Show the FEC, and encoded data frame.CRC-4x4+x+1ITU G.704CRC-16x16+x15+x2+1IBM SDLCCRC-32x32+x26+x23+.+x2+x+1ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCSFor the error patter listed below, what the conclusion does the receiver get? Can the receiver find the errors?CaseError patternNo error00000000One error1000.000Two errors100.001Random errorsRandom error pattern2. Parity check Using even or odd parity check on random generated data stream (8-20bits).Show encoded data frame.For the error patter listed below, what the conclusion does the receiver get? Can the receiver find the errors?CaseError patternNo error00000000One error1000.000Two errors100.001七、实验器材(设备、元器件):笔记本1台, 八、实验步骤:#include #include using namespace std;#define POLY 0xA001 /8005的二进制倒过来写就是A001 不同的计算机存储数据的时候可能会不一样 类似于大端和小端 typedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned int uint32_t;uint16_t gen_crc16 (uint8_t const * buffer, uint16_t len) uint16_t i, j; uint8_t data; uint16_t crc=0; for (j = 0; jlen; j+) data = bufferj; for (i = 0; i 1) POLY): (crc 1); data = 1; return crc;char* hex_byte(unsigned char c) static unsigned char buf9=0; char i; for(i=0;i(7-i)&1)+0; return (char*)buf;void hex_print(unsigned char* c,int len) int i; for(i=0;i8; printf(%s ,hex_byte(c); c=dat&0xff; printf(%s ,hex_byte(c);unsigned char data512=a,b,c,d;unsigned char ALL_ZERO512=0;#define DATA_LEN 4#define DATA_TST dataint main() uint16_t crc16; printf(原始数据:t); hex_print(DATA_TST,DATA_LEN); printf(CRC-16: t); crc16=gen_crc16(DATA_TST,DATA_LEN); hex_print_ushort(crc16); printf(0x%x)n,crc16); DATA_TSTDATA_LEN+1=crc168; DATA_TSTDATA_LEN=crc16&0xff; printf(n要发送的数据:t); hex_print(DATA_TST,DATA_LEN+2); printf(n如果没有错误:n); printf(核对结果: t); crc16=gen_crc16(DATA_TST,DATA_LEN+2); hex_print_ushort(crc16); printf(nn如果第一位数据反转了 n); DATA_TST0=DATA_TST00x80; printf(错误数据: t); hex_print(DATA_TST,DATA_LEN+2); printf(校验后 t); crc16=gen_crc16(DATA_TST,DATA_LEN+2); hex_print_ushort(crc16); return 0;奇偶校验:#include#include#include#include#include #include #define NO_ERROR 1#define ONE_ERROR 2#define TWO_ERROR 3#define Parity 0#define check 1int flag_parity;/判断奇偶校验void ByteToBit(char* out,const char* in,int bits);char Parity_check(char *message_output,int length,int mode);int main() int channel_way =0;int len_d=5,k,f,message_number;/被除数长度设置int length; /messages lengthchar message_input1000=;char message8=NULL;/ data that produced by chance char message_output1000 = NULL;fflush(stdin);/任意输入数据printf(please input the message!n);gets(message);printf(A need to send this message:%sn,message);length = strlen(message);ByteToBit(message_output,message,length*8);for(k = 0;klength*8;k+)printf(%d,message_outputk);message_inputk = message_outputk+48;printf(Please select the parity moden);printf( 1.Even parity n);printf( 2.Odd parityn);scanf(%d,&flag_parity);char m = Parity_check(message_input,length*8,Parity);printf(在信道中传输的message:);message_inputlength*8 = m ;for(message_number = 0;message_number=length*8;message_number+)printf(%c,message_inputmessage_number);printf(n);printf(*n);printf(* analog channel *n);printf(*please choice the way of error*n);printf(* 1.No error *n);printf(* 2.One error *n);printf(* 3.Two errors *n);scanf(%d,&channel_way);if(channel_way = NO_ERROR)for(f =0;flength*8;f+)printf(%c,message_inputf);printf(正在检错中.n);printf(检错结果:);char flag_parity_mode = Parity_check(message_input,length*8,check);if(flag_parity_mode = (message_inputlength*8)printf(no error!n);if(channel_way = ONE_ERROR)message_input0 = (message_input0 - 48)(1-48) + 48;for(f =0;flength*8;f+)printf(%c,message_inputf);printf(正在检错中.n);printf(检错结果:);char flag_parity_mode = Parity_check(message_input,length*8,check);if(flag_parity_mode != (message_inputlength*8)printf( error!n);if(channel_way = TWO_ERROR)message_input0 = (message_input0 - 48)(1-48) + 48;message_inputlength*8-1 = (message_inputlength*8-1 - 48)(1-48) + 48;for(f =0;flength*8;f+)printf(%c,message_inputf);printf(正在检错中.n);printf(检错结果:);char flag_parity_mode = Parity_check(message_input,length*8,check);if(flag_parity_mode = (message_inputlength*8)printf(no error!n);/*/function: 完成字节转换成位的功能/输入字符:In 输出的二进制:Out*/void ByteToBit(char* out,const char* in,int bits)/char out_11000 = ;int i;/printf(%sn,in);for(i=0;i3(i&7)&1;/printf(%d:%dn,i,outi);/*/function: 完成奇偶校验/输入:message_output为需要传输的数据以及数据的长度lengh 奇偶校验的模式/输出:返回奇偶校验的结果*/char Parity_check(char *message_output,int length,int mode)fflush(stdin);int i,j = 0;/偶校验if(flag_parity= 1)if(mode = Parity)for(i = 0;ilength;i+)if(message_outputi = 49)j+;elsecontinue;if(j%2 = 0)return 0;elsereturn 1;elsefor(i = 0;ilength;i+)if(message_outputi = 49)j+;elsecontinue;if(j%2 = 0)return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 实验1 研究匀变速直线运动-2023年高考物理实验专项突破(原卷版)
- 老年人安全游泳知识培训课件
- 第五节 双曲线 2026年高三数学第一轮总复习
- 脑溢血的死亡率有多高
- 天气与气候-2024年中考地理一轮复习知识清单(扣空版)
- 人工智能通识教程(微课版) 课件 04 人工智能技术的觉醒-深度学习技术框架
- 上海市某中学2025-2026学年高三年级上册暑期考试数学试卷(7月份)
- CN120203212A 一种以米粒为支架一步法培养大黄鱼细胞为动植物复合食品的方法
- CN120201845A 一种有机半导体异质结光子突触晶体管及其制备方法
- CN120200250A 一种基于企业供电服务画像的供电服务策略优化方法
- 职业技术学院金融科技应用专业《金融科技合规管理》课程标准
- 2025年军事理论课程考试试卷及答案解析
- 下半年中小学教师资格笔试备考资料2025
- 健康政策与经济发展-全面剖析
- 利用绘本进行家庭教育的方法探讨
- 北京版(2024)小学一年级全一册体育与健康全册教案
- 重点领域敏感岗位廉洁风险防控实施细则
- 数字金融 远程音视频手机银行技术规范
- 2024午托托管协议书:城市儿童午托与习惯养成服务3篇
- 医疗责任险产品介绍
- 膝关节解剖完整版本
评论
0/150
提交评论