收藏 分享(赏)

实验三 循环冗余校验(crc)模块设计指导书.doc

上传人:cjc2202537 文档编号:1529440 上传时间:2018-07-25 格式:DOC 页数:3 大小:92.50KB
下载 相关 举报
实验三 循环冗余校验(crc)模块设计指导书.doc_第1页
第1页 / 共3页
实验三 循环冗余校验(crc)模块设计指导书.doc_第2页
第2页 / 共3页
实验三 循环冗余校验(crc)模块设计指导书.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、 实验三 循环冗余校验(CRC)模块设计一、实验目的:设计一个在数字传输中常用的校验、纠错模块:循环冗余校验 CRC模块,学习使用 FPGA 器件完成数据传输中的差错控制。二、原理说明:CRC 即 Cyclic Redundancy Check 循环冗余校验,是一种数字通信中的信道编码技术。经过 CRC 方式编码的串行发送序列码,可称为 CRC 码,共由两部分构成:k 位有效信息数据和 r 位 CRC 校验码。其中 r 位 CRC 校验码是通过 k 位有效信息序列被一个事先选择的 r+1 位“ 生成多项式 ”相“ 除”后得到(r 位余数即是 CRC 校验码) ,这里的除法是“ 模 2 运算”。

2、CRC 校验码一般在有效信息发送时产生,拼接在有效信息后被发送;在接收端,CRC码用同样的生成多项式相除,除尽表示无误,弃掉 r 位 CRC 校验码,接收有效信息;反之,则表示传输出错,纠错或请求重发。本设计完成 12 位信息加 5 位 CRC 校验码发送、接收,由两个模块构成,CRC 校验生成模块(发送)和 CRC 校验检错模块(接收) ,采用输入、输出都为并行的 CRC 校验生成方式。图 9-6 的 CRC 模块端口数据说明如下:C R C 校验生成模块C R C 校验检错模块s d a t a d a t a c r cd a t a c r c r d a t ac l kc l kh

3、 s e n dh r e c vd a t a f i n ie r r o rd a t a l d图 7-1 CRC 模块sdata:12 位的待发送信息datald:sdata 的装载信号 datacrc:附加上 5 位 CRC 校验码的 17 位 CRC 码,在生成模块被发送,在接收模块被接收。clk:时钟信号 rdata:接收模块(检错模块)接收的 12 位有效信息数据 hsend、 hrecv:生成、检错模块的握手信号,协调相互之间关系error:误码警告信号datafini:数据接收校验完成例 9-36 中采用的 CRC 生成多项式为 X5+X4+X2+1,校验码为 5 位,有

4、效信息数据为 12 位。 【例 9-36】LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE ieee.std_logic_arith.ALL;ENTITY crcm ISPORT (clk : IN std_logic;sdata : IN std_logic_vector(11 DOWNTO 0);datald : IN std_logic;datacrco : OUT std_logic_vector(16 DOWNTO 0);datacrci : IN std_logic_vector

5、(16 DOWNTO 0);rdata : OUT std_logic_vector(11 DOWNTO 0);datafini : OUT std_logic;ERROR,hsend : OUT std_logic;hrecv : IN std_logic);END crcm; ARCHITECTURE comm OF crcm ISCONSTANT multi_coef : std_logic_vector(5 DOWNTO 0) := “110101“; - 多项式系数, MSB 一定为1SIGNAL cnt : std_logic_vector(4 DOWNTO 0);SIGNAL d

6、temp : std_logic_vector(11 DOWNTO 0);SIGNAL sdatam : std_logic_vector(11 DOWNTO 0);SIGNAL rdtemp : std_logic_vector(11 DOWNTO 0);SIGNAL rdatacrc: std_logic_vector(16 DOWNTO 0);SIGNAL rcnt : std_logic_vector(4 DOWNTO 0);SIGNAL st : std_logic;SIGNAL rt : std_logic;BEGINPROCESS(clk) VARIABLE crcvar : s

7、td_logic_vector(5 DOWNTO 0);BEGIN IF(clkevent AND clk = 1) THENIF(st = 0 AND datald = 1) THENdtemp 0);hsend 0);ERROR = 0; rt = 1;ELSIF(rt= 1 AND rcnt 7) THENdatafini = 0; rcnt = rcnt + 1;rcrcvar := rdtemp(11 DOWNTO 6) XOR multi_coef;IF(rdtemp(11) = 1) THENrdtemp = rcrcvar(4 DOWNTO 0) ELSE rdtemp = r

8、dtemp(10 DOWNTO 0) END IF;ELSIF(rt = 1 AND rcnt = 7) THENdatafini = 1;rdata = rdatacrc(16 DOWNTO 5);rt = 0;IF(rdatacrc(4 DOWNTO 0) /= rdtemp(11 DOWNTO 7) THENERROR = 1;END IF;END IF;END IF;END PROCESS;END comm; 三、实验内容:1、编译以上示例文件,给出仿真波形。2、建立一个新的设计,调入 crcm 模块,把其中的 CRC 校验生成模块和 CRC 校验查错模块连接在一起,协调工作。引出必要的观察信号,锁定引脚,并在 EDA 实验系统上的 FPGA 目标器件中实现。四、思考题:例子中对 st、rt 有不妥之处,试解决之(提示:复位 reset 信号的引入有助于问题的解决) 。 (4)思考题 2:如果输入数据、输出 CRC 码都是串行的,设计该如何实现(提示:采用 LFSR) 。(5)思考题 3:在例子程序中需要 8 个时钟周期才能完成一次 CRC 校验,试重新设计使得在一个 clk 周期内完成。五、实验报告:叙述 CRC 校验的工作原理,根据以上的实验内容写出实验报告,包括设计原理、程序设计、程序分析、仿真分析、硬件测试和详细实验过程。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报