循环冗余(CRC)模块设计资料_第1页
循环冗余(CRC)模块设计资料_第2页
循环冗余(CRC)模块设计资料_第3页
循环冗余(CRC)模块设计资料_第4页
循环冗余(CRC)模块设计资料_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、广州大学学生实验报告开课学院及实验室:物理与电子工程学院 -电子楼317室2016年5月26日学院物电年级、专业、班姓名Jason.P学号实验课程名称EDA技术实验成绩实验项目名称循环冗余(CRC )模块设计指导 教师实验目的:设计一个在数字传输中常用的校验、纠错模块:循环冗余校验CRC模块,学习使用FPGA器件完成数据传输中的差错控制二、实验内容:1、实验原理:CRC即 Cyclic Redundancy Check 循环冗余校验,是一种数字通信中的信道编码技术。经过CRC方式编码的串行发送序列码,可称为 CRC码,共由两部分构成:k位有效信息数据和r位CRC校验码。其中r位CRC校验码是通

2、过k位有效信息序列被一个事先选择的叶1位“生成多项式”相“除”后得到(r位余数即是CRC校验码),这里的除法是“模 2运算”。CRC校验码一般在有效信息发送时产生,拼接在有效信息后 被发送;在接收端,CRC码用同样的生成多项式相除,除尽表示无误,弃掉r位CRC校验码,接收有效信息;反之,则表示传输出错,纠错或请求重发。本设计完成12位信息加5位CRC校验码发送、接收,由两个模块构成,CRC校验生成模块(发送)和 CRC校验检错模块(接收),采用输入、输出都为并行的 CRC校验生成方式。图10-1的CRC模块端口数据说明如下:hCRC技验JkK4atafinih生成模块datacK 检错模块rd

3、flta ;hrecTerror K4111ellL图10-1 CRC模块sdata : 12位的待发送信息datald : sdata的装载信号datacrc :附加上5位CRC校验码的17位CRC码,在生成模块被发送,在接收模块被接收clk :时钟信号rdata :接收模块(检错模块)接收的 12位有效信息数据hsend、hrecv :生成、检错模块的握手信号,协调相互之间关系error :误码警告信号datafi ni:数据接收校验完成采用的CRC生成多项式为X5+X4+X2+1校验码为5位,有效信息数据为12位。2、实验步骤:(1) 编译以上示例文件,给出仿真波形。(2) 建立一个新的

4、设计,调入crcm模块,把其中的CRC校验生成模块和CRC校验查错模块连接在一起,协调工作。引出必要的观察信号, 锁定引脚,并在EDA实验系统上的FPGA目标器件中实现。三、实验HDL描述:module sender (clk,sdata,datald,datacrc,hsend);in put11:O sdata;in put clk,datald;output16:0 datacrc; output hse nd;parameter D=6b110101;reg16:0 datacrc;parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8

5、=8,s9=9;reg hse nd;reg3:0 cs;reg11:0 data;always(posedge clk)if(datald) cs=s0;elsecase(cs)s0:begi n cs=s1;data=sdata;datacrc16:5=sdata;hse ndv=0;e nds1:begi n cs=s2;if(data11=1) data=dataAD;data=data1;ends2:begi n csv=s3;if(data11=1) data=dataP; data=datav1;ends3:begi n cs=s4;if(data11=1) data=dataA

6、D;data=datav1;ends4:begi n cs=s5;if(data11=1) data=dataAD;data=datav1;ends5:begi n cs=s6;if(data11=1) data=dataAD; data=datav1;ends6:begi n csv=s7;if(data11=1) data=dataAD; data=datavv1;ends7:begi n csv=s8;if(data11=1) data=dataAD;data=data1;ends8:begi ncsv=s9;hsendv=1; datacrc=datacrc16:5,data11:7;

7、 ends9:begi nhse ndv=O;endendcaseen dmodulemodule receive (clk,rdata,datafini,datacrc,hrecv,error);in put16:0 datacrc;in put clk,hrecv;output11:0 rdata;output datafi ni,error;parameter D=6b110101;parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8;reg datafi ni,error;reg 11:0 rdata;reg3:0 cs;reg1

8、1:0 data;always(posedge clk)if(hrecv) cs=s0;elsecase(cs)s0:begi n cs=s1;data=datacrc16:5;rdata11:0v=datacrc16:5;errorv=0;datafi ni=0;e nds1:begi n cs=s2;if(data11=1) data=dataAD;data=data1;ends2:begi n cs=s3;if(data11=1) data=dataAD;data=data1;ends3:begi n cs=s4;if(data11=1) data=dataAD;data=data1;e

9、nds4:begi n cs=s5;if(data11=1) data=dataAD;data=data1;ends5:begi n csv=s6;if(data11=1) data=dataP; data=datav1;ends6:begi n cs=s7;if(data11=1) data=dataAD; data=datav1;ends7:begi n cs=s8;if(data11=1) data=dataAD; data=datav1;ends8:begi nif (data11:7=datacrc4:0) error=0;else error=1;datafi ni=1;enden

10、dcaseen dmodule电路原理图的顶层设计四、仿真结果:NwivI80 (ns 160.0 le 240 0 u1V32C.01ns 40D.0 i1is 4C0. 0 ni 550.0 n1 1s 640.0 r.sT20 0 u180C.0 i1ISB80. 0 ns 960. 0 ns 11 1.04 us.12 uj1L.2UE J20诒JI J101V1elk datald1I1+1 sdita-1010101C1010a isda* afi nin1FH rdtta:aoDoaoDtJDOooi一lOlDiaiQiDioerror1仿真时序图运行流程:datald为0时,生

11、成、接收模块最终保持在s9、s8状态;当datald在一个时钟上升沿为1时,生成模块从s0运行至保持s9;其中生成模块s8状态的操作使联络信号置 1,接收模块也将因此从 s0运行至保持s9。上图初始时运行流程为:第1个时钟上升沿,datald信号置1,生成模块状态置为s0 ;此时接收模块状态为s0,执行状态操作(rdata取得数据为0,中间变量data 取得数据为sdata);第2个时钟上升沿,生成模块处理状态s0时事件,此时数据输出口高12位为原始数据sdata ;接收端在2-8时钟上升沿(s1-s7 )生成校验码;第3-9个时钟上升沿,生成模块状态为s1-s7,生成校验码;第9个时钟上升沿

12、,接收模块状态为s8,提取接收的校验码,与自身生成的校验码比较,若不同则error为1,最后校验完成信号datafini置1,接收端停留在此状态,直至接收联络信号为1,回到s0状态;第10个时钟上升沿,生成模块状态为 状态s8,并执行相应操作;第11个时钟上升沿,生成模块状态为置为s0 ;第12个时钟上升沿,接收模块状态为S8,将校验码并位至输出口低 5位,并将联络信号置1 ;时钟上升沿时联络信号为 0,接收模块保持 s9,将联络信号置0,无datald高电平将保持此状态;时钟上升沿时联络信号为1,接收模块状态s0,执行操作为:rdata和中间变量data均取得带校验码的17位数据的高12位,

13、即sdata,并清除 datafini 和 error 信号;第13-20个时钟上升沿,接收模块事件情况同第2-9个时钟上升沿;第21个时钟上升沿及之后,由于联络信号始终为0,接收模块保持状态s8五、引脚锁定:Frorr101213151617192021222323Assigrmenfc WarnsValueEnabledlodkLixationPIN J 52YesLoe胡呃PIMJ3SvWdataldLocationprL“iYesLocationPDJ 137Yes|i*rd3tjCL&caliOFbPFU 56v&?rda 出1LocationPIN S7Yes1 JrdataLoc

14、ationP1N 63Yes|rda扫卜LxationPINJ&9Yesrda岀可LocMionPBI 70iYeswrdatasLxlonPD13Y已|rda7LocationPH 76YtsLFda也ELocationprj 78YesrdataL 匀Licatio nPIN 80Yes|*9daUQjLKatiQHpi3aYesLnrationPIMJQvA呦占怙1LocationPINjtlYtsIi*sdat43LocationprjjtaYfts如mbaLocationPFJ J4Ves2-sdataCSLcatioiriP1N 45Ves|a9data6LDcatiomPIN6Y

15、esW5Jat|LKaticinipry 49YC5|lsdaU3LocationPINJ50YesA创at越刃LocationPDJJ51YeslisdauiioLjCdllunPINJ52刖|u5datailLocationprj_55Yes六、硬件测试结果:下载程序到目标机图3图2图1H832813键78l|8| 8口 ri7231141数码11J3* o 键5 dtt5 ftBl113*WD0注:采用模式1。由键4-键2设置待发送的数据并由数码管 4-数码管2显示;数码管7-数码管5显示接收到的数据;LED-D8为error信 号;LED-D7为datafini信号;键7控制datal

16、d信号,由硬件测试可以清晰的看到,当 datald信号经过一次高低电平切换后,在数码管 7-数 码管5显示出接收到的数据和输入的数据一致。七、实验心得通过本次实验使我明白了循环冗余(CRC校验实现的原理,同时也掌握了其Verilog HDL代码编写及原理图设计的方法八、思考题:1.如果输入数据、输出 CRC码都是串行的,设计该如何实现(提示:采用 LFSR。答:通过线性反馈移位寄存器 (LFSR)实现。通过CRC的生成原理知道CRC的检验码生成是通过除法得到,由此联想到可以通过LFSR来产生校验码。假设原信息码子多项式为生成多项式为GM = gxr 1 + g2xr = + + 爲那么CRC的码字为,使用用LFSR电路来进行实现,将 M(x)向左移r位在电路中的意义即为输入完信

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论