12081220+金雨鑫+实验1(按照模版修改版)

上传人:第*** 文档编号:33547010 上传时间:2018-02-15 格式:DOC 页数:11 大小:163.50KB
返回 下载 相关 举报
12081220+金雨鑫+实验1(按照模版修改版)_第1页
第1页 / 共11页
12081220+金雨鑫+实验1(按照模版修改版)_第2页
第2页 / 共11页
12081220+金雨鑫+实验1(按照模版修改版)_第3页
第3页 / 共11页
12081220+金雨鑫+实验1(按照模版修改版)_第4页
第4页 / 共11页
12081220+金雨鑫+实验1(按照模版修改版)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《12081220+金雨鑫+实验1(按照模版修改版)》由会员分享,可在线阅读,更多相关《12081220+金雨鑫+实验1(按照模版修改版)(11页珍藏版)》请在金锄头文库上搜索。

1、杭 州 电 子 科 技 大 学实 验 报 告学生姓名:金雨鑫 学 号:12081220 指导教师:吴端坡实验地点:第 1 教研楼 108 实验时间:第 1012 节一、实验室名称: 计算机通信与网络实验室二、实验项目名称: Coding on error dectecting algorithms(C+)三、实验学时:3 学时四、实验原理:1. CRC 即 循环冗余校验码(CyclicRedundancyCheck1 ):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC )是一种数据传输检错 功能, 对数据进行多项式计算,并将得到的结果

2、附在帧的后面,接收 设备也执行类似的算法,以保证数据传输的正确性和完整性。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)*x

3、R 除以生成多项式 G(x)得到的余数就是校验码。3. 任意一个由二进制位串组成的代码都可以和一个系数仅为0和1取值的多项式一一对应。例如:代码 1010111 对应的 多项式为 x6+x4+x2+x+1,而多项式为 x5+x3+x2+x+1 对应的代码 101111。4. 奇 偶校验(ParityCheck)是一种校验代码传输正确性的方法。根据被传输的一组 二进制代码的数位中“1” 的个数是奇数或偶数来 进行校验。采用奇数的称为 奇校验,反之,称为 偶校验。采用何种校 验是事先 规定好的。通常专门设置一个 奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用 奇校验,则当接收端收到这组

4、代码时,校 验“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-4 x4+x+1 ITU G.704CRC-16 x16+x15+x2+1 IBM SDLCCRC

5、-32 x32+x26+x23+.+x2+x+1 ZIP, 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?Case Error patternNo error 00000000One error 1000.000Two errors 100.001Random errors Random error pattern2. Parity ch

6、eck 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?Case Error patternNo error 00000000One error 1000.000Two errors 100.001七、实验器材(设备、元器件):笔

7、记本 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;

8、uint16_t crc=0;for (j = 0; j 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)return (char*)buf;void hex_print(unsigned char* c,int len)int i;for(i=0;i8;printf(%s ,hex_byte(c);c=datprintf(%s ,hex_byte(c);unsigned char data512=a,b,c

9、,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=crc16printf(n 要发送的数

10、据: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

11、);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

12、 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,mes

13、sage);length = strlen(message);ByteToBit(message_output,message,length*8);for(k = 0;k3(i/ 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

14、) if(mode = Parity) for(i = 0;ilength;i+) if(message_outputi = 49)j+;elsecontinue;if(j%2 = 0)return 0;elsereturn 1;else for(i = 0;ilength;i+)if(message_outputi = 49)j+;elsecontinue;if(j%2 = 0)return 0;elsereturn 1;/奇校验else if(flag_parity = 0)if(mode = Parity)for(i = 0;ilength;i+)if(message_outputi =

15、 49)j+;elsecontinue;if(j%2 = 1)return 0;elsereturn 1;elsefor(i = 0;ilength;i+)if(message_outputi = 49)j+;elsecontinue;if(j%2 = 1)return 0;elsereturn 1;九、实验数据及结果分析:与标准 CRC 校验计算器的对比CRC:除了没有错误之外,其余的均能检测到错误。奇偶校验:Even parity:No error: One error:Two error:Odd parity:No error: One error:Two error:结果如图中所示:奇偶校验能够检测出信息传输过程中的部分误码(奇

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号