没有合适的资源?快使用搜索试试~ 我知道了~
crc校验源代码
5星 · 超过95%的资源 需积分: 44 15 下载量 155 浏览量
2012-01-07
09:37:18
上传
评论
收藏 146KB DOC 举报
温馨提示
试读
20页
crc校验源代码
资源详情
资源评论
资源推荐
校验原理
1、循环校验码(CRC 码):是数据通信领域中最常用的一种差错校验码,其
特征是信息字段和校验字段的长度可以任意选定。
2、生成 CRC 码的基本原理:任意一个由二进制位串组成的代码都可以和一个
系数仅为‘和‘取值的多项式一一对应。例如:代码 对应的多项式
为
,而多项式为
对应的代码 。
3、CRC 码集选择的原则:若设码字长度为 ,信息字段为 位,校验字段为
位,则对于 码集中的任一码字,存在且仅存在一个 次多项
式 ,使得
V(x)=A(x)g(x)=x
R
m(x)+r(x);
其中为 次信息多项式, 为 次校验多项式,
称为生成多项式:
发送方通过指定的 产生 码字,接收方则通过该 来验证收到的
码字。
4、CRC 校验码软件生成方法:
借助于多项式除法,其余数为校验字段。
例如:信息字段代码为;对应
假设生成多项式为:
;则对应 的代码为
对应的代码记为:;
采用多项式除法: 得余数为: 1010 (即校验字段为:1010)
发送方:发出的传输字段为: 1 0 1 1 0 0 1 1 0 10
信息字段 校验字段
接收方:使用相同的生成码进行校验:接收到的字段/生成码(二进制除法)
如果能够除尽,则正确,
CRC 校验源码分析
这两天做项目,需要用到 校验。以前没搞过这东东,以为挺简单的。结
果看看别人提供的汇编源程序,居然看不懂。花了两天时间研究了一下
校验,希望我写的这点东西能够帮助和我有同样困惑的朋友节省点时间。
先是在网上下了一堆乱七八遭的资料下来,感觉都是一个模样,全都是从
的数学原理开始,一长串的表达式看的我头晕。第一次接触还真难以理解。
这些东西不想在这里讲,随便找一下都是一大把。我想根据源代码来分析会比
较好懂一些。
费了老大功夫,才搞清楚 根据”权”即多项表达式的不同而相应的源代
码也有稍许不同。以下是各种常用的权。
以下的源程序全部以 为例。其实本质都是一样,搞明白一种,其他的都
是小菜。
图 ,图 说明了 校验中 值是如何计算出来的,体现的多项式正是
。 !"#$"%"即是需要校验的数据。从把数据移位开始计
算,将数据位(从最低的数据位开始)逐位移入反向耦合移位寄存器这个名词
我也不懂,觉得蛮酷的,就这样写了,嘿。当所有数据位都这样操作后,计算
结束。此时,位移位寄存器中的内容就是 码。
图中进行 &运算的位与多项式的表达相对应。
代表 '!%,代表 '!%,自然是代表 '!%,比较特别,是指
移位寄存器移出的数据,即图中的 $((&)。可以这样理解,与数据位做
& 运算的是上次 值的 '!%。
根据以上说明,可以依葫芦画瓢的写出以下程序。程序都是在 * !#下
调试的
%+, - ./01!0 -23"/23"4
%+, - ./01!0 -!0%/!0%4
25- /23"226/789
:;;;;;-;-; <4
/!0%224==码
>5!-"!0>5!-
:
/23"?,%4
224==初值
,%226/74==指向第一个 '+% 数据
2222#,%;4
@3!# 4
<
/!0%22#/23"?,%;/23"# 0==,%为数据指针,# 0为数据长度
:
/23"!4
@3!# # 0
:
.5!4!A4!BB
:
!.22CA:22DD422E4<
#1 22DD4
!.?,%C!A22E4
剩余19页未读,继续阅读
Android王维
- 粉丝: 4
- 资源: 36
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3