简单串行CRC的verilog实现

本文介绍了如何使用Verilog实现简单串行CRC校验,采用的多项式为x8+x2+x+1。通过LSFR(线性反馈移位寄存器)进行计算,并详细阐述了CRC算法步骤,包括初始化、数据传输和校验结果的输出。同时,提供了CRC寄存器及测试文件的代码,并展示了仿真结果。
摘要由CSDN通过智能技术生成

简单串行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 [7:0] crc_out
  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值