FPGA实现UDP通信(5)——CRC校验

1.简介

现代数据通信要求信息传输具有高度的可靠性,即误码率要求足够低,然而,数据传输过程中不可避免地会受到噪声干扰,或者信道不理想,从而造成码间串扰而产生差错,即出现误码,因此在UDP数据传输中引入CRC校验机制,通过CRC校验来丢弃受到干扰的数据包。CRC校验原理总的来说非常简单,它的根本思想就是利用线性编码原理,在数据发送端将要传输的K位信息码后面根据一定的规则产生一个校验码即CRC校验的R位,从而形成一个长度为(K+R)的数据帧,在接收端根据信息码和校验码之间遵循的规则进行校验,从而确定数据传输过程中是否出现差错。通常来说使用的多为CRC32校验,即产生4个字节的校验数据,这里分享一个好用的在线CRC校验工具,可以选择各种CRC校验,输入数据就可以生成校验码,地址为:CRC(循环冗余校验)在线计算_ip33.com

2.实现

CRC校验主要是在数据发送端和接收端事先约定好一个多项式G(x)作为除数多项式,G(x)的最高次幂为r,将数据发送端将要发送的K位信息吗作为多项式M(x)的系数,将待编码的K位数据编码成M(x),多项式M(x)的表达式为:

对于R位的CRC校验,校验产生的过程为:

将M(x)左移R位然后除以一个G(x)多项式(模2除法),所得的余数就是CRC校验码,即:

上式中R(x)就是CRC校验码,其中G(x)为生成多项式。

对于不同的校验格式,G(x)有不同的表达式,对于CRC32校验来说,G(x)的表达式为:

x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1

对于CRC校验,手动计算还是比较麻烦的,所以还是推荐使用上面的在线CRC计算工具进行计算,如果我们需要在FPGA里事项自动CRC计算,这里推荐给大家一个工具,直接选择需要的CRC计算公式,就可以给出相应的verliog实现,地址为:http://www.easics.com/webtools/crctool。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

得之坦然,失之淡然。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值