CRC 校验是一种在数据通信系统和其它串行传输系统中广泛使用的错误检测手段。通用的CRC 标准有CRC-8、CRC-16、CRC-32、CRC-CCIT,其中在网络通信系统中应用最广泛的是CRC-32 标准。本文将以CRC-32 为例,说明CRC 编码的实现方式以及如何用verilog 语言对CRC 编码进行描述。
在说明CRC 编码方式之前,首先介绍一下模2 运算法则,在CRC 运算过程中会使用到模2 除法运算。模2 运算是一种二进制运算法则, 与四则运算相同,模2 运算也包括模2 加、模2 减、模2 乘、模2 除四种运算。模2 运算用“ +”表示加法运算,用“ -”、“×”或“ 。”、“/”分别表示减法、乘法和除法运算。与普通四则运算法则不同的是, 模2 加法是不带进位的二进制加法运算,模2 减法是不带借位的二进制减法运算。同时,模2 乘法在累加中间结果时采用的是模2 加法运算; 模2 除法求商过程中余数减除数采用的是模2 减法运算。因此,两个二进制数进行模2 加减法运算时,相当于两个二进制数进行按位异或运算, 每一位的结果只与两个数的当前位有关。模2 除法在确定商时,与普通二进制除法也略有区别。普通二进制除法中,当余数小于除数时,当前位的商为0,当余数大于等于除数时,当前位的商为1。模2 除法在确定当前位的商时,只关心余数的首位,首位为1 则商为1,首位为0 则商为0。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !