- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CRC循环冗余校验码(并行串行)
课程报告设计课题: CRC循环冗余校验码 姓 名: 陈舒凌,高冉专 业: 电子信息工程学 号: 11151080071115106012 日 期 2013 年 11月 20日—2013年12月1 日指导教师: 傅文渊老师 华侨大学信息科学与工程学院电子工程系CRC循环冗余校验码实验目的:设计一个在数字传输中常用的校验、纠错模块:循环冗余校验CRC模块,学习使用 FPGA器件完成数据传输中的差错控制实验内容: 采用的 CRC 生成多项式为 X5+X4+X2+1,校验码为 5 位,有效信息数据为 12位。 A、根据以上信息,编写硬件描述语言完成上述功能,给出仿真波形。 B、CRC 校验生成模块和 CRC 校验查错模块连接在一起,协调工作。引出必要的观察信号,锁定引脚,并在EDA实验系统上实现之。 C、如果输入数据、输出 CRC码都是串行的,设计该如何实现?给出你的方案,并通过硬件验证。模2运算的原理模2减法是不带借位的二进制减法运算。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。模2除法运算定义为:0÷1=0 1÷1=1多位二进制模2除法也类似于普通意义上的多位二进制除法,但是在如何确定商的问题上两者采用不同的规则。后者按带借位的二进制减法,根 据余数减除数够减与否确定商1还是商0,若够减则商1,否则商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义 的。实际上,在CRC运算中,总能保证除数的首位为1,则模2除法运算的商是由余数首位与除数首位的模2除法运算结果确定。因为除数首位总是1,按照模2 除法运算法则,那么余数首位是1就商1,是0就商0。例如1100100÷1011=1110……110,列竖式计算: 1 1 1 0 ────────1 0 1 1〕1 1 0 0 1 0 0 -1 0 1 1 ────── 1 1 1 1 - 1 0 1 1 ────── 1 0 0 0 - 1 0 1 1 ────── 0 1 1 0 - 0 0 0 0 ────── 1 1 引言 随着工业控制系统网络化的不断发展,建立可靠、稳定、高速的通信网络已成为控制系统的必然要求。然而,在数字通信中可靠与快速往往是一对矛盾。若要求快速,则必然使得每个数据码元所占地时间缩短、波形变窄、能量减少,从而在受到干扰后产生错误的可能性增加,传送信息的可靠性下降。若是要求可靠,则使得传送消息的速率变慢。其中差错检测和纠错控制是保证高可靠性的一种切实方法。在各种通信领域,多项式编码循环冗余码CRC简单且误判概率很低,被普遍应用。---实现方法 CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是: 1)、首先将原信息码(kbit)左移r位(k+r=n) 2)、运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码 生成CRC码的基本原理:任意一个由二进制位串组成的代码都可以和一个系数仅为‘0’和‘1’取值的多项式一一对应。例如:代码1010111对应的多项式为x6+x4+x2+x+1,而多项式为x5+x3+x2+x+1对应的代码101111。程序设计的原理 并行输入输出CRC校验生成模块:library IEEE;use ieee.numeric_std.all;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity crcversion2 isPort ( sdata : in STD_LOGIC_VECTOR (11 downto 0); ---message bits clk : in STD_LOGIC;redundant : out STD_LOGIC_VECTOR (4 downto 0); ---redundant bitsdataid:in std_logic;hsend:out std_logic;datacrco : out STD_LOGIC_VECTOR (16 downto 0));---message with redundant bitsend crcversion2;architecture Behavioral of crcversion2 isbegin process(clk) variable v:std_logic_vector(16 downto 0); variable u:std_logic_vector
文档评论(0)