ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:295.71KB ,
资源ID:14685460      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14685460.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(循环冗余CRC模块设计说明Word文件下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

循环冗余CRC模块设计说明Word文件下载.docx

1、本设计完成 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:误码警告

2、信号 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 datacr

3、c;output hsend;parameter D=6b110101;reg16: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

4、 cs=s3;end s3:begin cs=s4;end s4:begin cs=s5;end s5:begin cs=s6;end s6:begin cs=s7;end s7:begin cs=s8;end s8:begin cs=s9;hsend=1;datacrc=datacrc16:5,data11:7;end s9:begin hsend=0;end endcase endmodule module receive(clk,rdata,datafini,datacrc,hrecv,error);input16:input clk,hrecv;output11:0 rdata;out

5、put datafini,error;parameter s0=0,s1=1,s2=2,s3=3,s4=4,s5=5,s6=6,s7=7,s8=8;reg datafini,error;reg 11:always(posedge clk)if(hrecv)cs=s0;data=datacrc16:5;rdata11:0=datacrc16:error=0;datafini=0;begin if(data11:7=datacrc4:0)error=0;else error=1;datafini=1;end endcase endmodule 电路原理图的顶层设计 四、仿真结果:仿真时序图 运行流

6、程: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)生成校验码;第

7、 3-9个时钟上升沿,生成模块状态为 s1-s7,生成校验码;第 9 个时钟上升沿,接收模块状态为 s8,提取接收的校验码,与自身生成的校验码比较,若不同则 error为 1,最后校验完成信号 datafini 置 1,接收端停留在此状态,直至接收联络信号为 1,回到 s0 状态;第 10个时钟上升沿,生成模块状态为 s8,将校验码并位至输出口低 5 位,并将联络信号置 1;时钟上升沿时联络信号为 0,接收模块保持状态 s8,并执行相应操作;第 11个时钟上升沿,生成模块状态为 s9,将联络信号置 0,无 datald 高电平将保持此状态;时钟上升沿时联络信号为 1,接收模块状态置为 s0;第

8、 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 为 datafi

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

10、 那么 CRC 的码字为,使用用 LFSR 电路来进行实现,将 M(x)向左移 r位在电路中的意义即为输入完信息码后再输入 r个 0,所以在电路上的表现就如图所示。将这个时刻产生的寄存器输入添加到原信息码的后边就进行完了 CRC 编码,同样接收端可以使用 LFSR 来进行 CRC 检验。2.在程序中需要 8 个时钟周期才能完成一次 CRC 校验,试重新设计使得在一个clk 周期内完成。将含状态机的两个大模块分解为多个串并联的小模块,每个模块处理时间为 1 个时钟周期,形成流水线结构。说明:各学院(实验中心)可根据实验课程的具体需要和要求自行设计和确定实验报告的内容要求和栏目,但表头格式按照“实验项目名称”栏以上部分统一。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1