crc16校验码移位算法及vhdl实现

crc16校验码移位算法及vhdl实现

ID:21519168

大小:25.50 KB

页数:5页

时间:2018-10-22

crc16校验码移位算法及vhdl实现_第1页
crc16校验码移位算法及vhdl实现_第2页
crc16校验码移位算法及vhdl实现_第3页
crc16校验码移位算法及vhdl实现_第4页
crc16校验码移位算法及vhdl实现_第5页
资源描述:

《crc16校验码移位算法及vhdl实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、CRC16校验码移位算法及VHDL实现  摘要在数据输出过程中,为保证数据的可靠性,通常会在数据的末尾加上校验信息。CRC校验技术编码和解码过程简单,纠错能力强,被广泛应用于通信领域。本文介绍一种移位产生CRC校验码的方法,并给出了其VHDL实现及仿真分析。  【关键词】CRC校验移位CRC16VHDL  在数据传输过程中,由于信道干扰,往往使得发送和接收的数据不一致。为了降低误码率,保证传输数据的可靠性,通常会改进信道的传输质量或在传输的数据中加入校验信息。在各种校验方法中,循环冗余校验CRC(CyclicRedundancyCheck)是一种最常用的方法。C

2、RC校验技术是一种十分有效的数据传输错误检测技术,由于其编码和解码过程简单,检错和纠错能力强,广泛应用于通信领域用于实现差错控制。串行通信普遍应用于工业通信控制领域,如何提高数据的传输可靠性尤为重要,现有的串口在数据传输过程中加入CRC校验可提高数据传输的可靠性。普通串行口不自带CRC校验功能,大多数应用中都是通过软件编程计算CRC码后再附加在数据末尾传输的,由于软件执行耗费时间长,影响数据的传输速度。现场可编程门阵列FPGA(Field-ProgrammableGateArray)在数字系统设计中已被广泛使用。用硬件描述语言(VHDL)实现CRC校验码的计算,

3、然后下载到FPGA芯片中,硬件实现CRC校验,与软件实现相比,对数据的传输速度影响较小。本文介绍一种CRC16校验码串行产生的方法,并给出了其VHDL实现及仿真分析。  1CRC校验原理  在发送方要发送的K位数据码后,以一定的规则产生一个r位用于校验的监督码,附加在原数据后面,构成的信息码为n=k+r位,因此,这种编码又叫(n,k)码。接收方根据通信双方约定的规则进行校验,确定数据是否出错。这个规则即“生成多项式”。K位数据码表示为M(x),选择合适的CRC生成多项式G(x),G(x)的最高次幂为r。把M(x)左移r位,即M(x)*xr对G(x)做不借位除法(

4、即异或运算),所得余数为CRC校验码,即:  其中R(x)为CRC校验码。发送方以上述原理生成校验码附加在数据末尾发送出去,接收方接收到的数据也对同样的G(x)做除法,如果余数为0,则认为数据传送无误,否则按出错处理。  2CRC16校?实现原理图  常用的生成多项式有多种,如CRC4、CRC8、CRC16和CRC32等。计算CRC校验码可以用串行和并行的方法实现。串行实现电路结构简单,但比较耗时,位数越多越费时。并行实现电路结构复杂,但节省时间。本文介绍一种采用CRC16生成多项式串行移位产生校验码的计算过程。生成多项式为G(x)=g16x16+g15x15+

5、……+g1x+g0,在实际使用中,并不需要考虑最高位,它总是被舍弃的,因此只要考虑余下16个数据位。在串行通信中实现移位计算CRC16校验码的原理如图1所示。  图1中为乘法,?为异或。  图1所示为CRC16校验原理图由D触发器、与门和异或门构成。  实现原理:发送一个字节数据,末尾加入16位校验码。CRC16寄存器初始化为0,串行移入数据,CRC16寄存器左移1位,检查移除位,如果为1,CRC16寄存器与生成多项式异或,结果存入CRC16寄存器,如果不为0,则仅仅移位,不做异或。循环进行24次后,C15……C0为所求校验码。用Cik表示上一次移位后CRC的值

6、,Cik+1表示本次移位CRC的值,其关系如式2所示。式2中i=1,2,3,4,……,15。  用CRC16产生校验码由于G(x)并不是所有位都为1,因此其具体实现要简单得多。G(x)=x16+x15+x2+1是CRC16生成多项式中最常用形式,舍弃掉最高位,编码为1000000000000011,由式2可知,Cik和Cik+1的关系如式3所示。式3中i=2,15,j=1,3,4……14。  用该生成多项式产生校验码,由于只有第15、2和0位为1,因此每次移位产生的CRC值中只要C15、C2及C0位和移出的位和对应的g值有关,CRC的其它位值都等于上次移位的CR

7、C值中对应低一位的值。其产生校验码的原理图只要在图1中保留D寄存器及C15、C2和C0对应的异或门,其它位对应的乘法和异或可以全部省去,大大简化了电路。  3CRC校验在FPGA中的实现和仿真  在FPGA中进行系统设计,可采用硬件描述语言(HDL)设计也可以采用原理图的设计方法。本文采用两者结合形式进行,采用自下而上的设计方法,先模块化设计产生1位数据的CRC16校验码,然后顶层文件调用以上的模块产生8位数据的CRC16校验码。顶层文件的实体定义为:  LIBRARYieee;  USEieee.std_logic_1164.all;  LIBRARYwork

8、;  ENTITYCRC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。