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

下载本文档

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

文档简介

附表1:广州大学学生实验报告开课学院及实验室:物理与电子工程学院-电子楼317室 2016 年 5 月 26 日 学 院物 电年级、专业、班姓名Jason.P学号实验课程名称EDA技术实验成绩实验项目名称循环冗余(CRC)模块设计指 导 教 师一、 实验目的:设计一个在数字传输中常用的校验、纠错模块:循环冗余校验CRC模块,学习使用FPGA器件完成数据传输中的差错控制。二、 实验内容:1、实验原理:CRC即Cyclic Redundancy Check 循环冗余校验,是一种数字通信中的信道编码技术。经过CRC方式编码的串行发送序列码,可称为CRC码,共由两部分构成:k位有效信息数据和r位CRC校验码。其中r位CRC校验码是通过k位有效信息序列被一个事先选择的r+1位“生成多项式”相“除”后得到(r位余数即是CRC校验码),这里的除法是“模2运算”。CRC校验码一般在有效信息发送时产生,拼接在有效信息后被发送;在接收端,CRC码用同样的生成多项式相除,除尽表示无误,弃掉r位CRC校验码,接收有效信息;反之,则表示传输出错,纠错或请求重发。本设计完成12位信息加5位CRC校验码发送、接收,由两个模块构成,CRC校验生成模块(发送)和CRC校验检错模块(接收),采用输入、输出都为并行的CRC校验生成方式。图10-1的CRC模块端口数据说明如下:图10-1 CRC模块sdata:12位的待发送信息datald:sdata的装载信号datacrc:附加上5位CRC校验码的17位CRC码,在生成模块被发送,在接收模块被接收。clk:时钟信号rdata:接收模块(检错模块)接收的12位有效信息数据hsend、hrecv:生成、检错模块的握手信号,协调相互之间关系error:误码警告信号datafini:数据接收校验完成采用的CRC生成多项式为X5+X4+X2+1,校验码为5位,有效信息数据为12位。2、实验步骤:(1)编译以上示例文件,给出仿真波形。(2)建立一个新的设计,调入crcm模块,把其中的CRC校验生成模块和CRC校验查错模块连接在一起,协调工作。引出必要的观察信号,锁定引脚,并在EDA实验系统上的FPGA目标器件中实现。三、 实验HDL描述:module sender(clk,sdata,datald,datacrc,hsend);input11:0 sdata;input clk,datald;output16:0 datacrc;output hsend;parameter D=6b110101;reg16:0 datacrc;parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8,s9=9;reg hsend;reg3:0 cs;reg11:0 data;always(posedge clk) if(datald) cs=s0; else case(cs) s0:begin cs=s1;data=sdata;datacrc16:5=sdata;hsend=0;end s1:begin cs=s2; if(data11=1) data=dataD; data=data1; end s2:begin cs=s3; if(data11=1) data=dataD; data=data1; end s3:begin cs=s4; if(data11=1) data=dataD; data=data1; end s4:begin cs=s5; if(data11=1) data=dataD; data=data1; end s5:begin cs=s6; if(data11=1) data=dataD; data=data1; end s6:begin cs=s7; if(data11=1) data=dataD; data=data1; end s7:begin cs=s8; if(data11=1) data=dataD; data=data1; end s8:begin cs=s9; hsend=1; datacrc=datacrc16:5,data11:7; end s9:begin hsend=0; end endcaseendmodulemodule receive(clk,rdata,datafini,datacrc,hrecv,error);input16:0 datacrc;input clk,hrecv;output11:0 rdata;output datafini,error;parameter D=6b110101;parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8;reg datafini,error;reg 11:0 rdata;reg3:0 cs;reg11:0 data;always(posedge clk) if(hrecv) cs=s0;else case(cs) s0:begin cs=s1;data=datacrc16:5;rdata11:0=datacrc16:5;error=0; datafini=0;end s1:begin cs=s2; if(data11=1) data=dataD; data=data1; end s2:begin cs=s3; if(data11=1) data=dataD; data=data1; end s3:begin cs=s4; if(data11=1) data=dataD; data=data1; end s4:begin cs=s5; if(data11=1) data=dataD; data=data1; end s5:begin cs=s6; if(data11=1) data=dataD; data=data1; end s6:begin cs=s7; if(data11=1) data=dataD; data=data1; end s7:begin cs=s8; if(data11=1) data=dataD; data=data1; end s8:begin if (data11:7=datacrc4:0) error=0; else error=1; datafini=1; end endcaseendmodule电路原理图的顶层设计四、仿真结果:仿真时序图运行流程:datald为0时,生成、接收模块最终保持在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个时钟上升沿,接收模块状态为s8,提取接收的校验码,与自身生成的校验码比较,若不同则error为1,最后校验完成信号datafini置1,接收端停留在此状态,直至接收联络信号为1,回到s0状态;第10个时钟上升沿,生成模块状态为s8,将校验码并位至输出口低5位,并将联络信号置1;时钟上升沿时联络信号为0,接收模块保持状态s8,并执行相应操作;第11个时钟上升沿,生成模块状态为s9,将联络信号置0,无datald高电平将保持此状态;时钟上升沿时联络信号为1,接收模块状态置为s0;第12个时钟上升沿,接收模块状态为s0,执行操作为:rdata和中间变量data均取得带校验码的17位数据的高12位,即sdata,并清除datafini和error信号;第13-20个时钟上升沿,接收模块事件情况同第2-9个时钟上升沿;第21个时钟上升沿及之后,由于联络信号始终为0,接收模块保持状态s8。五、引脚锁定:六、硬件测试结果:下载程序到目标机图1图2图3注:采用模式1。由键4-键2设置待发送的数据并由数码管4-数码管2显示;数码管7-数码管5显示接收到的数据;LED-D8为error信号;LED-D7为datafini信号;键7控制datald信号,由硬件测试可以清晰的看到,当datald信号经过一次高低电平切换后,在数码管7-数码管5显示出接收到的数据和输入的数据一致。七、实验心得:通过本次实验使我明白了循环冗余(CRC)校验实现的原理,同时也掌握了其Verilog HDL代码编写及原理图设计的方法。八、思考题:1. 如果输入数据、输出CRC码都是串行的,设计该如何实现(提示:采用LFSR)。答:通过线性反馈移位寄存器(LFSR)实现。 通过CRC的生成原理知道CRC的检验码生成是通过除法得到,由此联想到可以通过LFSR来产生校验码。 假设原信息码子多项式为 生成多项式为 那么CRC的码字为,使用用LFSR电路来进行实现,将M(x)向左移r位在电路中的意义即为输入完信息码后再输入r个0,所以在电路上的表现就如图所示。 将这个时刻产生的寄存器输入添加到原信息

温馨提示

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

评论

0/150

提交评论