windows平台的crc算法的实现

摘 要 当今世界是高速信息化的,高速数字化的。随着物理学与合成材料等相关学科的不断取得重大突破,并且人类对信息的渴求都促成了当代通信的信息量指数爆炸式的增长,同时科技进步也提供扩充通信承载信息量相应的物质支持。而此同时,数字通信相比模拟通信主要具备两个优点:第一是抗干扰能力强,第二是远距离传输可靠,所以数字通信发展越来越快。而在数字通信中的编码从作用域来说有信源编码和信道编码两种,在此之中以数字通信的可靠性提高为目的采用的编码称为信道编码,信道编码是为提高数据传输效率和降低误码率。信道编码的过程就是在源数据字中加插一些冗余位来实现判错和纠错的功能。而本论文主要研究了信道编码中的循环冗余校验码。本论文首先介绍了论文研究的背景与目的,规划了论文的主要内容。其次简单介绍了差错控制的一些原理和循环冗余校验码的原理与计算法则以及软硬件实现方法。然后就循环冗余校验码性能与生成多项式的关系进行分析,并给出CRC应用的实例与国际标准。在这之后介绍了用Java模拟实现CRC过程的特殊优点,开发背景,设计流程,模拟实现步骤以及出现的问题。最后总结了本文的主要研究工作,并对未来进行展望。本论文中的CRC模拟软件具有自定义生成多项式,可模拟噪声,完整模拟通信过程等特点,有助于对CRC有更加深刻理解。
目 录
摘要 I
ABSTRACT II
目 录 IV
第1章 绪论 1
1.1课题研究背景 1
1.2课题研究的意义 2
1.3 JAVA平台的简介 3
1.4论文主要内容安排 4
第 2章 循环冗余校验码的原理 5
2.1差错控制的基本介绍 5
2.1.1奇偶校验码 5
2.1.2 汉明码 5
2.2循环冗余校验码的基本原理 6
2.2.1模二运算法则 6
2.3循环冗余校验码多种算法 7
2.3.1循环冗余校验码代数算法 7
2.3.2循环冗余校验码基本算法 9
2.3.3循环冗余校验码比特型算法 9
2.3.4循环冗余校验码字节型算法算法 9
2.3.5循环冗余校验码硬件电路实现方法 10
 *好棒文|www.hbsrm.com +Q: ¥351916072¥ 

2.4小结 12
第 3 章 循环冗余码性能分析 13
3.1汉明距离 13
3.1.1汉明距离与最小汉明距离 13
3.1.2汉明距离和检错 14
3.2循环编码的特殊差错分析 14
3.2.1循环编码检错的一般分析 14
3.2.2循环编码的单个位差错 15
3.2.3循环编码的突发性差错 15
3.2.4生成多项的要求 16
3.3 CRC的应用 16
3.3.1 CRC在LTE中的应用 16
3.3.2 CRC的国际标准 17
3.4 小结 17
第 4 章 CRC软件的实现 19
4.1 系统流程 19
4.2 程序的实现 20
4.2.1 Eclipse的简介 20
4.2.2界面设计 20
4.2.3 TCP/IP协议 22
4.2.4 Java的socket编程实现 23
4.3 程序的运行与结果展示 24
4.3.1程序连接成功运行结果 24
4.3.2程序运行的意外情况 28
4.4 小结 30
第 5章 总结与展望 31
参考文献 33
致 谢 34
附录 35
第1章 绪论
1.1课题研究背景
自从步入21世纪以来,信息产业进入了前所未有的发展高峰。从计算机互联网到移动通信网两次革命性浪潮,而如今下一代的信息技术发展潮流正当今如日中天的物联网技术。物联网技术就是利用各种无线传感器以及数据通信技术使各种终端连上互联网,进行信息的共享,分析,处理,反馈,使整个世界更加智能化,数字化。与此同时,物联网技术的发展也预示着数字通信技术中的容量大小与准确性愈发的重要。在数字通信中位,将数据从一个发送方发送到接收方时,由于干扰的存在,都可能使数据遭到破坏,这就需要用一种机制来检测错误和纠正错误。检错或纠错的核心概念是冗余。要从接收到的的数据中检测或者纠正错误,那我们除了发送原来的数据位之外,还得发送一些额外的位。并且由发送方添加,然后接收方对应相应的约定规律进行判定与消除。这将实现对接收方发来的可能包含错误的数据位检测或纠正被破坏的位。
一般通过各种编码方案就能够实现冗余。发送方增加冗余位,通过某种方法建立冗余位与真实的数据位特定的相对关系。而接收方却通过对应的那种关系来检测收到的数据位是否有错或者纠错。冗余位和数据位的比率以及方法的健壮性是任何编码方案的重要因素。如图11就说明了编码的一般概念。
解决数据传输中的误码问题就要利用信道编码,线性分组码、卷积码、级联码、Turbo码和LDPC码是线性分组码的主要组成部分。
汉明码和循环码是在在数字通信系统中应用最广泛的分组码,而第一个差错控制编码方案——二进制汉明码是1950年由R. Hamming提出的,多进制汉明码是由戈莱和科克(Cocke)发展而来的[1]。在1957年普兰奇(Prange)首先引入了循环码的概念及码多项式的表示方法之后,在此之后,分组码的理论与应用,特别是循环码的理论与应用得到了迅速发展。
循环码最优秀的特点是,它的编码和伴随式计算可以通过简单的带有一定反馈机制的寄存器来实现实际模拟。此外,因为循环码有良好的代数这一特点,我们可以用“代数”这个特别有效的数学工具来对循环码进行更加深入的彻底的研究,之后便能找到各种相对简单又有效的译码方法。
在实际应用中,往往会对一个循环码的码长和信息的长度会有所约束与要求,因此缩短循环码应运而生,它就是在(n,k)循环码的2k个码字中挑选出前i个信息位均为0值的码字(有2k1个这样的码字)作为(ni,ki)缩短循环码的码字[2]。通过这种方法就可以省去若干位不用传输,从而提高传输的效率。
循环冗余校验码是一类应用范围比较广的缩短循环码,而且本质上是一种系统码[3]。伴随着它的广泛应用与数字通信中,国内外对与它有关的原理、性能、理论分析及应用等各个方面的研究都取得了不同程度的进展。

1.2课题研究的意义
CRC循环冗余码在通信系统得到了广泛运用。例如CRC32标准广泛应用于Winrar,CRC16标准则应用于HDLC帧控制,CRC8标准则应用于ATM头部等。研究CRC循环冗余校验码实现原理。现在国内外对CRC循环冗余码的算法研究相当深入,有用FPGA实现CRC算法的,也有用MATLAB模拟硬件实现,或者是在USB控制器中实现,有譬如千兆以太网CRC 的算法。而本文中运用java语言灵活的实现发送端与接收端生成多项式的自由定义,并且学习并掌握基于java的socket网络编程,利用 TCP/IP协议族,模拟了数字通信中对真实数据位添加相应位,形成冗余位,利用了CRC编码对应代数关系,成功在发送端完成添加冗余位的工作和在接收端纠错的功能,并要求重发数据。
本课题的研究与软件模拟实现了CRC8,CRC12,CRC16,CRC24或者根据不同应用场景自由选择的生成多项式G(x),以最优化的方式完成当前数据通信的纠错与重发功能。同时添加干扰的自由加入,模拟了充满不确定向的数据传输实情。
课题中基于Java的CRC算法实现的软件实现了自由化决定生成多项式的功能。相对于传统的硬件实现或者软件实现CRC,更能从根本上来理解CRC算法,做到一通百通的地步。同时,又利用相关通信协议,模拟传输过程中的干扰问题。从原有理解使用信道编码的意义与价值。又通过查阅资料对CRC编码的学习,也让我理解CRC编码在检错领域中优于其他冗余码的地方。

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/txgc/1054.html

好棒文