欢迎来到天天文库
浏览记录
ID:11570100
大小:446.50 KB
页数:39页
时间:2018-07-12
《基于fpga的crc校验西邮精版说明书》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、西安邮电学院FPGA课程设计报告题目:基于FPGA的CRC校验院系:通信与信息工程学院专业班级:电科0903学生姓名:于宝军导师姓名:山蕊起止时间:2012-9-10至2012-9-21年月日39FPGA课程设计报告提纲1.任务本实验主要完成一个完整的CRC校验过程,其中包括数据源发送,CRC编码、CRC校验。2.目的本实验主要以多项式为基础,完成CRC校验。3.使用环境(软件/硬件环境,设备等)a)windows环境下使用ModelSim仿真工具。b)windows环境下使用QuartusII综合工
2、具。4.FPGA课程设计详细内容4.1技术规范⑴完成功能:以多项式为基础完成CRC校验。⑵实验原理:循环冗余校验CRC是由分组线性码的分支而来,其主要应用是二元码组。CRC的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(即CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。任何一个由二进制位串组成的代码可以和一个多项式相对应。例如k
3、为要发送的信息位位数,可对应一个(k-1)次多项式,r位冗余位可对应于一个(r-1)次多项式r(x),在CRC校验编码时,由信息位产生冗余码的编码过程就是求余数r(x)的过程。3.引脚定义信号名称I/O引脚功能mod[15:0]输出余数valid_mod输出输出余数标志位valid输出标志位clk输入时钟脉冲din[31:0]输入数据输入端count[5:0]输出计算异或次数rst输入复位键394.2设计方案1.总体设计方案本实验主要完成CRC编码、CRC校验。2.详细设计方案1)CRC编码①输入32
4、位任意报文信息,已知17位生成多项式对应的CRC码,则在报文信息后拼接16位0组成新的报文,将新组成的报文与已知多项式对应的二进制数据流进行异或运算。②判断报文信息首位是否为0,若为0,则将报文信息左移一位进行计数;若为1,则将报文信息与多项式生成的数据流进行逐位异或运算,将运算得到的结果保存在寄存器中,并且开始计数,再将报文信息左移一位,将得到的结果替换报文信息高17位,继续与已知多项式进行异或运算。③重复上述操作,运算32次后结束,得到最终的异或结果即为所求的CRC码。4.3功能验证方案1)验证模
5、块是否正常工作:CRC编码模块。)对总体模块进行验证,看系统是否正常工作。4.4电路设计源代码,功能仿真激励源代码及功能仿真结果报告源代码modulejiaoyan(clk,rst,valid,din,mod,valid_mod);inputclk;inputrst;inputvalid;input[31:0]din;output[15:0]mod;outputvalid_mod;reg[47:0]D;wire[16:0]Q;reg[5:0]count;always@(posedgeclkornege
6、dgerst)39beginif(~rst)beginD<=48'd0;endelsebeginif(valid)beginD<={din,16'b0000000000000000};endelseD<={Q,D[30:0]}<<1;endendassignQ=(D[47])?(D[47:31]^17'b10001000000100001):D[47:31];assignvalid_mod=(count==6'd1);assignmod=Q[15:0];always@(posedgeclkornege
7、dgerst)beginif(~rst)begincount<=6'd0;endelseif(valid)count<=6'd30;elseif(count!=6'd0)begincount<=count-1'd1;end39endendmodule激励代码modulestimulus;regclk;regrst;reg[31:0]din;regvalid;wire[15:0]mod;wirevalid_mod;jiaoyanjiaoyan(.clk(clk),.rst(rst),.valid(val
8、id),.din(din),.mod(mod),.valid_mod(valid_mod));always#10clk<=~clk;initialbeginclk<=0;rst<=0;#10rst<=1;#10;@(posedgeclk);#1valid=1;din=32'b10001001000100000000000000000001;@(posedgeclk);#1valid=0;#600;39@(posedgeclk);#1valid=1;din
此文档下载收益归作者所有