循环冗余校验编码( CRC).doc_第1页
循环冗余校验编码( CRC).doc_第2页
循环冗余校验编码( CRC).doc_第3页
循环冗余校验编码( CRC).doc_第4页
循环冗余校验编码( CRC).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA专用周实训报告课题:循环冗余校验编码(CRC) 组员:指导老师:前言EDA(电子设计自动化)技术是现代电子工程领域的一门新技术,它提供了基于计算机和信息技术的电路系统设计方法。EDA技术的发展和推广应用极大地推动了电子工业的发展。随着EDA技术的发展,硬件电子电路的设计几乎可以完全依靠计算机来完成,这样就大大缩短了硬件电子电路设计的周期,从而使制造商可以快速开发出品种多、批量小的产品,以满足市场的需求。EDA教学和产业界的技术推广时当今世界的一个技术热点,EDA技术是现代电子行业中不可缺少的一项技术。CRC(Cyclic Redundancy Check)循环冗余校验码是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来确认信息的困惑,对通信的可靠性检查就需要校验,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。目录一:实验目的4二:实验内容4三:实验步骤4四:实验原理51CRC 校验码介绍52. 硬件电路的实现方法6五:程序设计7六:专用周总结12一:实验目的1:学习CRC 编码基本流程, 学会调试循环冗余校验码编码程序。2:掌握CRC 校验码的编码原理,重点掌握按字节(Byte)编码方法。3:学习用FPGA设计一个数据通信中常用的数据检测模块循环冗余校验CRC模块,熟悉理解CRC的检测原理。二:实验内容本实验的内容是设计循环冗余校验CRC模块。利用Quartus2完成设计、仿真等工作,最后在Smart SOPC实验箱上进行硬件测试和分析。通过KEY1KEY3输入信息,并显示于数码管13,接收到的数据显示于数码管46,CRC校验码显示于数码管7/8。按KEY4加载要发送的信息,由LED2指示其状态;KEY5为复位键,由LED1指示,数据接收状态由LED3(完成)和LED4(出错)指示,数据的输入、输出显示等操作由本实验提供的一个测试模块(crc5_test)完成,用户可以自行分析该测试模块。这里主要介绍CRC模块的设计。三:实验步骤1:启动Q uartus2建立一个空白工程,然后命名为crc5.pqf。2:建立VerilogHDL源程序文件crc5.v.,写出程序代码并保存(完整的VerilogHDL程序参考清单),进行综合编译。若在编译过程中发现错误,则找出并更正错误,直至编译成功为止。3:建立波形仿真文件并进行仿真验证,分析其运行最高时钟频率。4:将光盘中EDA_Component目录下的crc5_test. bsf、crc5_ test.v拷贝到工程目录。5:自行设计按键及数码管显示程序然后编译直至没有发现错误。6:选择目标器件并对相应的引脚进行锁定。7:将crc5_ top. bdf 设置为顶层实体,对该工程文件进行全程编译处理。8:硬件连接,下载程序。9:通过KEY1KEY5进行操作,观察数码管和发光二极管的状态,取几个数计算验证。四:实验原理1CRC 校验码介绍 CRC 校验的基本思想是利用线性编码理论,在发送端根据要传送的k 位二进制码序列,以一定的规则产生一个校验用的监督码(CRC 码)r 位,并附在信息后边,构成一个新的二进制码序列数共 (k+r) 位,最后发送出去。在接收端,则根据信息码和CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。16 位的CRC 码产生的规则是先将要发送的二进制序列数左移16 位(乘以216)后,再除以一个多项式,最后所得到的余数既是CRC 码。求CRC 码所采用模2 加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。接收方将接收到的二进制序列数(包括信息码和CRC 码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误。 2、实现方法: 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。 3 硬件电路的实现方法 多项式除法,可用除法电路来实现。除法电路的主体由一组移位寄存器和模2加法器(异或单元)组成。以CRC-ITU为例,它由16级移位寄存器和3个加法器组成,见下图(编码/解码共用)。编码、解码前将各寄存器初始化为1,信息位随着时钟移入。当信息位全部输入后,从寄存器组输出CRC结果。五:程序设计module zyz(clock,key,led,seg,dig); input clock;input4:0 key;output3:0led;output7:0seg;output7:0dig;wire11:0sdata; wire11:0rdata;wire4:0crc;/crc冗余码输入 wire dload;wire rst_n;reg led2_r;reg led3_r;reg11:0sdata_r; reg11:0rdata_r;reg7:0seg_r; reg7:0dig_r; regdload_r; reg16:0count;reg4:0dout1,dout2,dout3;reg4:0buff;reg2:0cnt3; reg3:0disp_dat; reg div_clk; wire4:0key_edge; wire16:0datacrco;wirehsend;reg16:0datacrci;reghrecv;reg16:0datacrco_r;reghsend_r;reg16:0dtemp;reg11:0sdtemp;reg16:0rdtemp;reg16:0rdatacrc; /*信号输出 */assigncrc4:0=datacrco_r4:0;assignled2=led2_r;assignled3=led3_r;assign seg = seg_r; assign dig = dig_r; assign sdata = sdata_r; assign dload = dload_r; assign led1:0 = dload_r,rst_n; parameterpolynomial=6b110101;assign datacrco=datacrco_r;assign hsend=hsend_r;assign rdata=rdata_r;/*时钟分频部分 */always (posedge clock) begin if (count 17d120000) begin count = count + 1b1; div_clk = 1b0; end else begin count = 17d0; div_clk = 1b1; end end /*按键消抖部分 */always (posedge clock) begin if(div_clk) begin dout1 = key; dout2 = dout1; dout3 = dout2; end end /*按键边沿检测部分 */always (posedge clock) begin buff = dout1 | dout2 | dout3; end /*下降沿检测 */assign key_edge = (dout1 | dout2 | dout3) & buff; /*3位16进制数输出部分 */always (posedge clock)/按键1 begin if(key_edge0)/下降沿检测 sdata_r11:8 = sdata_r11:8 + 1b1; end always (posedge clock)/按键2 begin if(key_edge1)/下降沿检测 sdata_r7:4 = sdata_r7:4 + 1b1; end always (posedge clock)/按键3 begin if(key_edge2)/下降沿检测 sdata_r3:0 = sdata_r3:0 + 1b1; end always (posedge clock)/按键4 begin if(key_edge3)/下降沿检测 dload_r = dload_r; end assign rst_n = buff4;/按键5 always(posedge clock or negedge rst_n)beginif(!rst_n)beginhsend_r=1b0;datacrco_r=17d0; endelse if(dload=1b1)begindtemp=sdata,5b00000;sdtemp=sdata;if(dtemp16)dtemp16:11=dtemp16:11polynomial;if(dtemp15)dtemp15:10=dtemp15:10polynomial; if(dtemp14)dtemp14:9=dtemp14:9polynomial;if(dtemp13)dtemp13:8=dtemp13:8polynomial;if(dtemp12)dtemp12:7=dtemp12:7polynomial;if(dtemp11)dtemp11:6=dtemp11:6polynomial;if(dtemp10)dtemp10:5=dtemp10:5polynomial;if(dtemp9)dtemp9:4=dtemp9:4polynomial;if(dtemp8)dtemp8:3=dtemp8:3polynomial;if(dtemp7)dtemp7:2=dtemp7:2polynomial;if(dtemp6)dtemp6:1=dtemp6:1polynomial;if(dtemp5)dtemp5:0=dtemp5:0polynomial;datacrco_r=sdtemp,dtemp4:0;hsend_r=1b1;endelsehsend_r=1b0;endalways(posedge clock or negedge rst_n)beginif(!rst_n)beginrdata_r=12d0;led2_r=1b1;led3_r=1b1;endelse if(hsend=1b1)beginrdatacrc=datacrco_r;rdtemp=datacrco_r;if(rdtemp16)rdtemp16:11=rdtemp16:11polynomial; if(rdtemp15)rdtemp15:10=rdtemp15:10polynomial; if(rdtemp14)rdtemp14:9=rdtemp14:9polynomial; if(rdtemp13)rdtemp13:8=rdtemp13:8polynomial; if(rdtemp12)rdtemp12:7=rdtemp12:7polynomial;if(rdtemp11)rdtemp11:6=rdtemp11:6polynomial;if(rdtemp10)rdtemp10:5=rdtemp10:5polynomial;if(rdtemp9)rdtemp9:4=rdtemp9:4polynomial;if(rdtemp8)rdtemp8:3=rdtemp8:3polynomial;if(rdtemp7)rdtemp7:2=rdtemp7:2polynomial;if(rdtemp6)rdtemp6:1=rdtemp6:1polynomial;if(rdtemp5:0polynomial)beginrdata_r=rdatacrc16:5;led2_r=4b0;endelsebeginrdata_r=12d0;led3_r=1b0;endendelseled2_r=1b1;end /*数码管扫描显示部分 */always (posedge clock) /定义上升沿触发进程 begin if(div_clk) cnt3 = cnt3 + 1b1; end always (posedge clock) begin if(div_clk) begin case(cnt3)/选择扫描显示数据 3d0:disp_dat = sdata_r11:8;/第一个数码管 3d1:disp_dat = sdata_r7:4;/第二个数码管 3d2:disp_dat = sdata_r3:0;/第三个数码管 3d3:disp_dat = rdata_r11:8;/第四个数码管 3d4:disp_dat = rdata_r7:4;/第五个数码管 3d5:disp_dat = rdata_r3:0;/第六个数码管 3d6:disp_dat = 3b0,crc4;/第七个数码管 3d7:disp_dat = crc3:0;/第八个数码管 endcase case(cnt3)/选择数码管显示位 3d0:dig_r = 8b01111111;/选择第一个数码管显示 3d1:dig_r = 8b10111111;/选择第二个数码管显示 3d2:dig_r = 8b11011111;/选择第三个数码管显示 3d3:dig_r = 8b11101111;/选择第四个数码管显示 3d4:dig_r = 8b11110111;/选择第五个数码管显示 3d5:dig_r = 8b11111011;/选择第六个数码管显示 3d6:dig_r = 8b11111101;/选择第七个数码管显示 3d7:dig_r = 8b11111110;/选择第八个数码管显示 endcase end end always (disp_dat) begin case(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论