文/段佳明 曾兵
CRC 即循环冗余校验码,是一种数据通信领域中最常用的差错校验码。介绍了CRC 编码的原理算法和校验规则。Labview 是一种图形化编辑软件。介绍了通过labview 数据流编程方式实现任意长度校验码和任意生成多项式的CRC 校验的算法的实现。
摘 要
发送的数据。
2 labview的CRC算法实现
2.1 CRC编码过程
CRC 算法的编码过程基本一致, 只是信息码位数和生成多项式不一样。为了更直观的了解CRC 编码过程,就以上面的CRC-4 编码为例。CRC 码的流程如下:
2.2 labview的实现
从上面可以看出,CRC 的算法是对二进制数操作,但labview 不能直接的对二进制数进行处理。这就得对二进制数先进行预处理。由于二进制数非0 即1 与labview 布尔量的非真即假相符,则把二进制数组转化为布尔数组进行后续操作。根据上面分析,labview 实现该算法的流程图如图1。其中c[m] 为C(x)* xr 序列,g[n] 为G(x)序列,o 为记录从c[m] 中取数位置。在labview 中,两个不同长度数组直接异或是允许的,即以短数组为基准,和长数组相应位置数据异或。按上面流程画好程序框图后只需在前面板输入信息码和生成多项式序列,就可对信息数据进行CRC 校验。
3 总结
Labview 把CRC 算法转化成了对布尔数组的操作,再利用自身丰富的数组函数完成整个程序编制。该程序不受制于某一具体CRC校验,其生成多项式可以是任意值,当然为了达到校验的目的,要满足文中提到的要求。这样不仅方便求取CRC 码,也方便对生成多项式的确定。
参考文献
[1] 刘立新, 杨宏. 基于FPGA 的CRC_5 算法的实现[J]. 科技资讯,2008.
[2] 霍旭东, 朱卫华. 大数据量高复杂度CRC校验的串并优化设计[J]. 铁道通信信号,2012.
[3] 张晓渝. 循环冗余校验在单片机通信中的C 语言的实现[J]. 甘肃科技,2013.
[4] 陈公兴, 谷刚. 基于labview 的CRC-16程序分析与实现[J]. 广东工业大学学报,2008.
[5] 陈金平, 王生泽等. 基于labview 的CRC检错码检验方法[J]. 自动化仪表,2004.
作者简介
段佳明(1990-),男,汉族,四川省蓬安县人,研究生在读。研究方向:紧密仪器及机械。
作者单位
成都理工大学 四川省成都市 610059