循环冗余校验(crc)模块设计

循环冗余校验(crc)模块设计

ID:34253018

大小:62.00 KB

页数:4页

时间:2019-03-04

循环冗余校验(crc)模块设计_第1页
循环冗余校验(crc)模块设计_第2页
循环冗余校验(crc)模块设计_第3页
循环冗余校验(crc)模块设计_第4页
资源描述:

《循环冗余校验(crc)模块设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验十三循环冗余校验(CRC)模块设计一、实验目的1、学习使用FPGA器件完成数据传输中的差错控制;2、了解循环冗余校验CRC模块的工作原理3、应用VHDL语言设计循环冗余校验CRC模块,实现在数字传输中的校验和纠错功能。3、学习实验环节的设计与实现。二、实验仪器计算机、Max+plusII或QuartusII软件、EDA试验箱、示波器。三、实验内容原理:CRC即CyclicRedundancyCheck循环冗余校验,是一种数字通信中的信道编码技术。经过CRC方式编码的串行发送序列码,可称为CRC码,共由两部分构成:k位有

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

3、验生成方式。图12.1的CRC模块端口数据说明如下:sdata:12位的待发送信息;datald:sdata的装载信号;error:误码警告信号;datafini:数据接收校验完成;rdata:接收模块(检错模块)接收的12位有效信息数据;clk:时钟信号;datacrc:附加上5位CRC校验码的17位CRC码,在生成模块被发送,在接收模块被接收;hsend、hrecv:生成、检错模块的握手信号,协调相互之间关系;实验要求:1、设计CRC校验生成模块,采用的CRC生成多项式为X5+X4+X2+1,校验码为5位,有效信息数据

4、为12位。2、设计CRC校验查错模块,并将CRC校验生成模块和CRC校验查错模块连接在一起,协调工作。3、估计实验使用的硬件资源,自行设定测试方法和测试内容。4、自行设定测试方案和测试步骤。5、自行设定实验步骤和设计纪录方式,完成实验报告。四、实验研究与思考1、如果输入数据、输出CRC码都是串行的,设计该如何实现(提示:采用LFSR)。3、在例子程序中需要8个时钟周期才能完成一次CRC校验,试重新设计使得在一个clk周期内完成。实验vhdl程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

5、USEIEEE.STD_LOGIC_unsigned.ALL;USEIEEE.STD_LOGIC_arith.ALL;ENTITYcrcmISPORT(clk,hrecv,datald:INSTD_LOGIC;sdata:INSTD_LOGIC_VECTOR(11DOWNTO0);datacrco:outSTD_LOGIC_VECTOR(16DOWNTO0);datacrci:inSTD_LOGIC_VECTOR(16DOWNTO0);rdata:outSTD_LOGIC_VECTOR(11DOWNTO0);datafin

6、i:outstd_logic;ERROR0,hsend:outstd_logic);ENDcrcm;ARCHITECTUREcommOFcrcmISconstantmulti_coef:std_logic_vector(5downto0):="110101";signalcnt,rcnt:std_logic_vector(4downto0);signaldtemp,sdatam,rdtemp:std_logic_vector(11downto0);signalrdatacrc:std_logic_vector(16down

7、to0);signalst,rt:std_logic;beginprocess(clk)variablecrcvar:std_logic_vector(5downto0);beginif(clk'eventandclk='1')thenif(st='0'anddatald='1')thendtemp<=sdata;sdatam<=sdata;cnt<=(others=>'0');hsend<='0';st<='1';elsif(st='1'andcnt<7)thencnt<=cnt+1;if(dtemp(11)='1')t

8、hencrcvar:=dtemp(11downto6)xormulti_coef;dtemp<=crcvar(4downto0)&dtemp(5downto0)&'0';elsedtemp<=dtemp(10downto0)&'0';endif;elsif(st='1'andcnt=7)thendata

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。