版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于FPGA的CRC校验码生成器设计1.概述CRC即CyclicRedundancyCheck,循环冗余校验,是一种数字通信中的常用信道编码技术。其特征是信息段和校验字段的长度可以任意选定。2.CRC校验的基本原理:CRC码是由两部分组成的,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码长共nbit,信息码长kbit,就称为(n,k)码,剩余的rbit即为校验位。如:(7,3)码:110
1001,前三位110为信息码,1001为校验码。3.校验码的生成规则:1)将原信息码左移rbit,右侧补零,如110-->1100000;2)用1100000除以g(x)
(注意,使用的是模2除法,见下文),得到的余数即为CRC校验码;3)将校验码续接到信息码的尾部,形成CRC码。4.关于生成多项式g(x)在产生CRC校验码时,要用到除法运算,一般来说,这是比较麻烦的,因此,把二进制信息预先转换成一定的格式,这就是CRC的多项式表示。二进制数表示为生成多项式的系数,如下:所有二进制数均被表示为一个多项式,x仅是码元位置的标记,因此我们并不关心x的取值,称之为码多项式。(我没研究过CRC代数推理过程,没体会到用多项式计算的方便之处,这里要学会的就是给出生成多项式g(x),能写出对应的二进制即可)常见的生成多项式如下:
5.关于模2除法模2运算就是加法不考虑进位,减法不考虑借位,1)加法运算:0+0=0
0+1=1
1+0=1
1+1=0例如0101+0011=0110,列竖式计算:
0101
+0011──────
01102)减法运算:0-0=0
0-1=1
1-0=1
1-1=0例如0110-0011=0101,列竖式计算:
0110
-
0011
──────
01013)乘法运算0×0=0
0×1=0
1×0=0
1×1=1多位二进制模2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果时采用带进位的加法,而模2乘法对中间结果的处理方式采用的是模2加法。例如1011×101=100111,列竖式计算:4)除法运算:0÷1=0
1÷1=1多位二进制模2除法也类似于普通意义上的多位二进制除法,但是在如何确定商的问题上两者采用不同的规则。后者按带借位的二进制减法,根据余数减除数够减与否确定商1还是商0,若够减则商1,否则商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义的。
实际上,在CRC运算中,总能保证除数的首位为1,则模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是1,按照模2除法运算法则,那么余数首位是1就商1,是0就商0。例如1100100÷1011=1110……110,列竖式计算:掌握了上面的运算规则,您可以尝试计算一个复杂一点的,如下:如果您得到的余数结果正确,您掌握的东西就够用了。6.CRC-CCITT的硬件实现CRC-CCITT的生成多项式为:对应的二进制数就是上面复杂运算中那个除数。由刚才的计算可知,对于8bit的数据0xaa,它的CRC校验码为0001010010100000,下面用verilog来实现,看能否得到这个结果:要实现这一过程,仍然需要LFSR电路,参看《FPGA产生基于LFSR的伪随机数》中关于该电路特性的介绍,如果您不需要了解原理,直接略过即可;有所改进的地方就是,可以将伪随机数发生器看作一个Moore型状态机,它的输出只与当前的状态有关;而此时利用LFSR电路,需要引入数据输入端,输出不仅取决于当前的状态,还取决于输入信号,相当于Mealy型状态机,如下图:注意对比与伪随机数产生器中该反馈支路的区别!反馈项gr+1gr……g0为生成多项式的系数,依然是1代表存在反馈,0代表不存在反馈;此电路可以完成上述的模2除法操作,若我们要求0xaa的CRC校验码,则从高位到低位顺序输入0xaa共8bit后,D15……D0中的数据即为所要求的余数,即CRC校验位。7.verilog描述如果用时序电路串行实现,则8bit数据要移位8次,就需要8个clk,效率低下,为了能在一个时钟周期输出结果,必须采用组合电路,当然,这是以空间换时间的方法,由于使用了for循环8次,直观的讲电路规模将扩大8倍。。。
moduleCRC_GEN(inputrst,/*asyncreset,activelow*/inputclk,/*clockinput*/input[7:0]data_in,/*paralleldatainputpins*/inputd_valid,/*datavalid,starttogenerateCRC,activehigh*/outputreg[15:0]crc);integeri;regfeedback;reg[15:0]crc_tmp;/**sequentialprocess*/always@(posedgeclkornegedgerst)beginif(!rst)crc<=16'b0;/*触发器中的初始值十分重要*/elseif(d_valid==1'b0)crc<=16'b0;elsecrc<=crc_tmp;end/**combinationprocess*/always@(data_inorcrc)begincrc_tmp=crc;for(i=7;i>=0;i=i-1)beginfeedback=crc_tmp[15]^data_in[i];crc_tmp[15]=crc_tmp[14];crc_tmp[14]=crc_tmp[13];crc_tmp[13]=crc_tmp[12];crc_tmp[12]=crc_tmp[11]^feedback;crc_tmp[11]=crc_tmp[10];crc_tmp[10]=crc_tmp[9];crc_tmp[9]=crc_tmp[8];crc_tmp[8]=crc_tmp[7];crc_tmp[7]=crc_tmp[6];crc_tmp[6]=crc_tmp[5];crc_tmp[5]=crc_tmp[4]^feedback;crc_tmp[4]=crc_tmp[3];crc_tmp[3]=crc_tmp[2];crc_tmp[2]=crc_tmp[1];crc_tmp[1]=crc_tmp[0];crc_tmp[0]=feedback;endendendmodule
仿真结果如下:得到的是数据0xaa和0xf0的CRC校验码,为验证结果的正确性,您可以按照模2法则手工计算一下^.^8.同样给出一个4bit信息位,5bitCRC码的(9,4)码的程序和仿真结果,程序的流程与上述流程完全一样:
moduleCRC5_GEN(inputrst,inputclk,input[3:0]data_in,inputd_valid,outputreg[4:0]crc);integeri;regfeedback;reg[4:0]crc_tmp;always@(posedgeclkornegedgerst)beginif(!rst)crc<=5'b0;elseif(d_valid==1'b0)crc<=5'b0;elsecrc<=crc_tmp;endalways@(data_inorcrc)begincrc_tmp=crc;for(i=3;i>=0;i=i-1)beginfeedback=crc_tmp[4]^data_in[i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 莫成荣教授论治骨性关节炎的学术思想与临证经验探究
- 英语委婉语的认知语用多维解析:理论功能与跨文化视角
- 2026年宠物繁殖合同协议
- 2026年四川省内江市事业单位公开选调工作人员考试(职业能力测试)综合练习题及答案
- 吉林职业技能竞赛(无人机装调检修工)自测试题及答案(2025年吉林通化市)
- 2026年公开遴选公务员(财经专业知识)考前冲刺试题及答案
- 交通运输安全培训机构备案管理规范
- 城市更新工程有限空间作业安全导则
- 无锡一级建造师考试(通信与广电工程管理与实务)真题及答案
- 2026年5类人员进班子考试题及答案(陕西)
- DB6108T 100-2024 一般工业固体废物矿坑回填修复治理技术规范
- 2025年国家安全部公开遴选公务员面试题及答案
- 2025年高考化学试题分类汇编:有机合成与推断题(解析版)
- 订单应急预案管理办法
- 节能施工应急预案措施
- 2025湖北恩施州恩施市面向市外教师选调60人笔试备考试题及答案解析
- 海船船员适任 评估规范(2024)轮机专业
- 公司欠款支付管理办法
- 2025年深信服大云SCTP认证考试复习题库
- 2025年辽宁省中考数学真题试卷及答案
- 新生儿病历书写规范
评论
0/150
提交评论