循环冗余(CRC)模块设计说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附表1:
大学学生实验报告
开课学院及实验室:物理与电子工程学院-电子楼317室2016年 5 月 26 日
.学习帮手.
.学习帮手. 图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);
input[11:0] sdata;
input clk,datald;
output[16:0] datacrc;
output hsend;
.学习帮手.
.学习帮手.
.学习帮手.
.学习帮手.
.学习帮手. 电路原理图的顶层设计
四、仿真结果:
仿真时序图
运行流程:datald为0时,生成、接收模块最终保持在s9、s8状态;当datald在一个时钟上升沿为1时,生成模块从s0运行至保持s9;其中生成模块s8状态的操作使联络信号置1,接收模块也将因此从s0运行至保持s9。
上图初始时运行流程为:
.学习帮手.
六、硬件测试结果:.学习帮手.
.学习帮手. 下载程序到目标机
图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,所以在电路上的表现就如图所示。
.学习帮手.
目名称”栏以上部分统一。.学习帮手.