欢迎来到天天文库
浏览记录
ID:34253018
大小:62.00 KB
页数:4页
时间:2019-03-04
《循环冗余校验(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
此文档下载收益归作者所有