基于FPGA的CRC原理实现
来源:互联网 发布:管家婆软件怎么用 编辑:程序博客网 时间:2024/05/16 19:14
CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的。其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端。当然,这个附加的数不是随意的,它要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除(注意,这里不是直接采用二进制除法,而是采用一种称之为“模2除法”)。到达接收端后,再把接收到的新帧除以(同样采用“模2除法”)这个选定的除数。因为在发送端发送数据帧之前就已通过附加一个数,做了“去余”处理(也就已经能整除了),所以结果应该是没有余数。如果有余数,则表明该帧在传输过程中出现了差错
module CRC10 (Clock, Data_In, CRC_En, CRC_Clr, CRC_Out);
input Clock;input CRC_En;
input CRC_Clr;
output [9:0] CRC_Out;
//reg [9:0] CRC_Out;
input [31:0] Data_In;
reg CRC_En_reg;
reg CRC_Clr_reg;
reg [31:0] Data_In_reg;
always @ (posedge Clock)
begin
CRC_En_reg = CRC_En ;
CRC_Clr_reg = CRC_Clr ;
Data_In_reg = Data_In ;
end
reg crcfb;
reg [9:0] CRC_Reg;
integer i;
assign CRC_Out = CRC_Reg;
always @ (posedge Clock)
begin
if (CRC_Clr_reg)
CRC_Reg <= 0;
else if (CRC_En_reg)
begin
for (i=31;i>=0;i=i-1)
begin
crcfb <=CRC_Reg[9];
CRC_Reg[9]<=CRC_Reg[8]^crcfb;
CRC_Reg[8]<=CRC_Reg[7];
CRC_Reg[7]<=CRC_Reg[6];
CRC_Reg[6]<=CRC_Reg[5];
CRC_Reg[5]<=CRC_Reg[4]^crcfb;
CRC_Reg[4]<=CRC_Reg[3]^crcfb;
CRC_Reg[3]<=CRC_Reg[2];
CRC_Reg[2]<=CRC_Reg[1];
CRC_Reg[1]<=CRC_Reg[0]^crcfb;
CRC_Reg[0]<=Data_In_reg[i]^crcfb;
end
end
end
endmodule
0 0
- 基于FPGA的CRC原理实现
- 基于FPGA的CRC校验码生成器
- 基于FPGA的CRC校验码生成器
- CRC的原理与实现
- CRC算法的原理及实现
- CRC校验码的原理介绍及其实现
- CRC原理与实现
- CRC原理与实现
- CRC原理及实现
- 等精度测频的原理和基于FPGA的实现
- 基于FPGA的ARQ功能的实现
- FPGA实现基于ROM的正弦波发生器
- 基于FPGA的PCIe接口实现
- 基于FPGA的RGB565_YCbCr_Gray算法实现
- 基于fpga的串口通信实现
- 基于FPGA的16位crc编码,伪随机数的生成,基于LCD显示(中文注释版)
- CRC算法的原理
- CRC的校验原理
- 客户端发现响应内容类型为“text/html; charset=utf-8”怎么改为“text/xml”
- 当文件系统挂在不上的时候,如何拿回文件系统里面的数据??
- ubuntu mysql安装
- 关于java递归调用内存泄露
- ftp用户权限(其实是PHP的php.ini或APACHE的httpd.conf配置 限制目录访问)
- 基于FPGA的CRC原理实现
- mysql 时间戳 今天 昨天 7天 30天 及未来时间
- Leetcode Minimum Path Sum
- scikit-learn使用笔记与sign prediction简单小结
- awk经典
- c++静态成员与静态成员函数
- 透过生死,才会明白健康的重要
- 实例讲解hadoop中的map/reduce查询(python语言实现)
- 资本潮涌向企业移动化 国内市场谁最受青睐?