循环冗余(CRC)模块设计说明

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,所以在电路上的表现就如图所示。

.学习帮手.

目名称”栏以上部分统一。.学习帮手.

相关文档
最新文档