简单串行CRC的verilog实现 | 您所在的位置:网站首页 › crc编码电路设计 › 简单串行CRC的verilog实现 |
简单串行CRC的verilog实现
CRC(Cyclic Redundancy Check,循环冗余校验)是数据传输中常用的一种差错控制编码方式,针对要发送的数据帧,使用一些特定的多项式可以计算出CRC校验结果,CRC校验结果和原始数据一起传输到接收端。 本例基于LSFR建立一个多项表达式为x8+x2+x+1的CRC算法,步骤如下: a.计算CRC之前,CRC寄存器初始化为一个已知的值(初始值),接收端的CRC校验电路的初始值要使用和发送端相同的初始值。 b.当最后一个数据比特到达时,CRC内部存储的就是最后的校验结果 c.在最后一个数据比特发出后,储存在寄存器中的CRC校验结果逐比特输出,直至最后一个比特。校验结果紧跟在用户数据后面输出。 LSFR的多项表达式含义详解见https://blog.csdn.net/qq_44113393/article/details/89852994 CRC算法图如下: 其CRC寄存器代码如下,CRC的初始值设为8’hFF module CRC8_CCITT (clk,reset, din, init_crc, calc_crc, crc_out); input clk,reset; input din; input [7:0]init_crc; input calc_crc; output [7:0] crc_out; parameter CRC_INIT_VALUE = 8'hFF; reg [7:0]crcreg,crcreg_nxt; wire [7:0] newcrc; wire [ |
CopyRight 2018-2019 实验室设备网 版权所有 |