日志档案

发表于 2008-2-25 20:41:32

4

标签: 并行CRC  FPGA  Verilog  VHDL  源代码  

基于FPGA的并行CRC的研究

  相信在的系统中CRC校验已经是个司空见惯的设计。

本文总结了CRC的常规设计思路,并提供给各位同僚一个绝佳的并行CRC在线生成的工具。方便生成任意的CRC校验的Verilog 和VHDL源代码。http://www.easics.com/webtools/crctool

在这里CRC的原理就不再赘述了。不同于软件上的CRC校验,软件上一般采用查表的方法来进行CRC的校验。硬件上当然可以采用查表的方法来实现CRC的校验,缺点有两个:1占用大量的逻辑资源,2速度没有办法保障。

基于硬件的串行CRC,占用较少的资源即可实现最基本的CRC校验,基本的表达式为  移位和反馈:CRC[N-2:0] <= CRC[N-1:1];  CRC[N] <= f(x)*CRC;其中f(x)为本原多项式。跟M序列的发生逻辑很类似,是一个线形的系统。数据由高位向地位 逐级进入该线形系统,CRC为最低位数据进入系统后的CRC表达式的输出值。由此可以知道,生成一个CRC32_D32的数据需要32个时钟周期。在应用层面上来讲是不能忍受的。

于是下面我们引出并行的CRC校验的逻辑。根据串行的基本表达式 我们联立求解,我们知道他是一个的N*N的一个线形方程,很容易求解得到CRC当前值与上次迭代值的表达式:(表达式不好编辑--见源代码)。由表达式可以很容易实现但周期并行的CRC校验。前面提到了一个在线的并行CRC校验的小工具。目前的工程上应用,很大一部分代来自这个在线的小工具。只要设定一定的参数,就可以生成想要的代码。--未完待续//08-02-25

系统分类: CPLD/FPGA   |   用户分类: 学习   |   来源: 原创   |   【推荐给朋友】

    阅读(1646)    回复(4)  

投一票您将和博主都有获奖机会!

  • 彩云

    2008-2-26 10:33:55

    好文,支持原创作品!

  • NBX

    2008-3-2 11:03:09

    楼主继续更新啊,期待中~~~~~~~~~~~

  • cyber211

    2008-3-22 11:03:39

    楼主继续更新啊,期待中~~~~~~~~~~~ 是呀,原创的好,比那些沽名钓誉的那破资料骗人的好

  • orand

    2008-5-2 10:59:12

    同道中人。这个代码我自己也实现过,其实就是模拟运算过程,求一下迭代关系,再化简一下,有点类似多项式运算。。。