版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
老师课题:循环冗余校验编码(CRC老师课题:循环冗余校验编码(CRC)前言EDA(电子设计自动化)技术是现代电子工程领域的一门新技术,它提供了基于计算机和信息技术的电路系统设计方法。EDA技术的发展和推广应用极大地推动了电子工业的发展。随着EDA技术的发展,硬件电子电路的设计几乎可以完全依靠计算机来完成,这样就大大缩短了硬件电子电路设计的周期,从而使制造商可以快速开发出品种多、批量小的产品,以满足市场的需求。EDA教学和产业界的技术推广时当今世界的一个技术热点,EDA技术是现代电子行业中不可缺少的一项技术。CRC(CyclicRedundancyCheck)循环冗余校验码是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来‘确认信息’的困惑,对通信的可靠性检查就需要‘校验’,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。
目录TOC\o"1-5"\h\z\o"CurrentDocument"一:实验目的肆\o"CurrentDocument"二:实验内容肆\o"CurrentDocument"三:实验步骤肆四:实验原理伍CRC校验码介绍伍硬件电路的实现方法陆五:程序设计7六:专用周总结壹拾贰IBiInIBiIn一:实验目的1:学习CRC编码基本流程,学会调试循环冗余校验码编码程序。2:掌握CRC校验码的编码原理,重点掌握按字节(Byte)编码方法。3:学习用FPGA设计一个数据通信中常用的数据检测模块——循环冗余校验CRC模块,熟悉理解CRC的检测原理。二:实验内容本实验的内容是设计循环冗余校验CRC模块。利用Quartus2完成设计、仿真等工作,最后在SmartSOPC实验箱上进行硬件测试和分析。通过KEY1-KEY3输入信息,并显示于数码管1〜3,接收到的数据显示于数码管4〜6,CRC校验码显示于数码管7/8。按KEY4加载要发送的信息,由LED2指示其状态;KEY5为复位键,由LED1指示,数据接收状态由LED3(完成)和LED4(出错)指示,数据的输入、输出显示等操作由本实验提供的一个测试模块(crc5_test)完成,用户可以自行分析该测试模块。这里主要介绍CRC模块的设计。三:实验步骤1:启动Quartus2建立一个空白工程,然后命名为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:通过KEY1〜KEY5进行操作,观察数码管和发光二极管的状态,取几个数计算验证。实验原理1.CRC校验码介绍IBiInCRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(CRC码)r位,并附在信息后边,构成一个新的二进制码序列数共(k+r)位,最后发送出去。在接收端,则根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(乘以216)后,再除以一个多项式,最后所得到的余数既是CRC码。求CRC码所采用模2加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法
运算是一样,符合同样的规律。接收方将接收到的二进制序列数(包括信息码和CRC码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输IBiIn2、实现方法: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结果。—Hl5|l4|l3|l2|ll|-»®—|l()|9|8|7|6|5|4―|3|211|0比特输入——一IBB五:程序设计//crc冗余码输入图2用于计算CRC_ccrrr的移位寄存器的电路配置modulezyz(clock,key,led,seg,dig);inputclock;input[4:0]key;output[3:0]led;output[7:0]seg;output[7:0]dig;wire[11:0]sdata;wire[11:0]rdata;wire[4:0]crc;wiredload;wirerst_n;regled2_r;regled3_r;reg[11:0]sdata_r;reg[11:0]rdata_r;reg[7:0]seg_r;reg[7:0]dig_r;regdload_r;reg[16:0]count;reg[4:0]dout1,dout2,dout3;reg[4:0]buff;reg[2:0]cnt3;reg[3:0]disp_dat;regdiv_clk;wire[4:0]key_edge;wire[16:0]datacrco;wirehsend;reg[16:0]datacrci;reghrecv;reg[16:0]datacrco_r;reghsend_r;reg[16:0]dtemp;reg[11:0]sdtemp;五:程序设计//crc冗余码输入reg[16:0]rdatacrc;/*信号输出*/assigncrc[4:0]=datacrco_r[4:0];assignled[2]=led2_r;assignled[3]=led3_r;assignseg=seg_r;assigndig=dig_r;assignsdata=sdata_r;assigndload=dload_r;assignled[1:0]={~dload_r,rst_n};parameterpolynomial=6'b110101;assigndatacrco=datacrco_r;assignhsend=hsend_r;assignrdata=rdata_r;/*时钟分频部分*/always@(posedgeclock)beginif(count<17'd120000)begincount<=count+1'b1;div_clk<=1'b0;endelsebegincount<=17'd0;div_clk<=1'b1;endend/*按键消抖部分*/always@(posedgeclock)beginif(div_clk)begindout1<=key;dout2<=dout1;dout3<=dout2;endend—SIMsfii/*按键边沿检测部分*/always@(posedgeclock)—SIMsfiibuff<=doutlIdout2Idout3;end/*下降沿检测*/assignkey_edge=~(dout1Idout2Idout3)&buff;/*3位16进制数输出部分*/always@(posedgeclock)〃按键1beginif(key_edge[0])〃下降沿检测sdata_r[11:8]<=sdata_r[11:8]+1'b1;endalways@(posedgeclock)〃按键2beginif(key_edge[1])〃下降沿检测sdata_r[7:4]<=sdata_r[7:4]+1'b1;endalways@(posedgeclock)〃按键3beginif(key_edge[2])〃下降沿检测sdata_r[3:0]<=sdata_r[3:0]+1'b1;endalways@(posedgeclock)〃按键4beginif(key_edge[3])〃下降沿检测dload_r<=~dload_r;endassignrst_n=buff[4];〃按键5always@(posedgeclockornegedgerst_n)beginif(!rst_n)beginhsend_r=1'b0;datacrco_r=17'd0;endelseif(dload==1'b1)beginIBiInIBiInsdtemp=sdata;if(dtemp[16])dtemp[16:11]=dtemp[16:11]Apolynomial;
if(dtemp[15])dtemp[15:10]=dtemp[15:10]Apolynomial;if(dtemp[14])dtemp[14:9]=dtemp[14:9]Apolynomial;if(dtemp[13])dtemp[13:8]=dtemp[13:8]Apolynomial;if(dtemp[12])dtemp[12:7]=dtemp[12:7]Apolynomial;if(dtemp[11])dtemp[11:6]=dtemp[11:6]Apolynomial;if(dtemp[10])dtemp[10:5]=dtemp[10:5]Apolynomial;if(dtemp[9])dtemp[9:4]=dtemp[9:4]Apolynomial;if(dtemp[8])dtemp[8:3]=dtemp[8:3]Apolynomial;if(dtemp[7])dtemp[7:2]=dtemp[7:2]Apolynomial;if(dtemp[6])dtemp[6:1]=dtemp[6:1]Apolynomial;if(dtemp[5])dtemp[5:0]=dtemp[5:0]Apolynomial;datacrco_r={sdtemp,dtemp[4:0]};hsend_r=1'b1;endelsehsend_r=1'b0;endalways@(posedgeclockornegedgerst_n)beginif(!rst_n)beginrdata_r=12'd0;led2_r=1'b1;led3_r=1'b1;endelseif(hsend==1'b1)beginrdatacrc=datacrco_r;rdtemp=datacrco_r;if(rdtemp[16])rdtemp[16:11]=rdtemp[16:11]Apolynomial;if(rdtemp[15])rdtemp[15:10]=rdtemp[15:10]Apolynomial;if(rdtemp[14])rdtemp[14:9]=rdtemp[14:9]Apolynomial;if(rdtemp[13])rdtemp[13:8]=rdtemp[13:8]Apolynomial;if(rdtemp[12])rdtemp[12:7]=rdtemp[12:7]Apolynomial;if(rdtemp[11])rdtemp[11:6]=rdtemp[11:6]Apolynomial;if(rdtemp[10])rdtemp[10:5]=rdtemp[10:5]Apolynomial;if(rdtemp[9])rdtemp[9:4]=rdtemp[9:4]Apolynomial;if(rdtemp[8])rdtemp[8:3]=rdtemp[8:3]Apolynomial;if(rdtemp[7])rdtemp[7:2]=rdtemp[7:2]Apolynomial;if(rdtemp[6])rdtemp[6:1]=rdtemp[6:1]Apolynomial;if(~(rdtemp[5:0]Apolynomial))—SIMsfiibegin—SIMsfii壹拾endelsebeginrdata_r=12'd0;led3_r=1'b0;endendelseled2_r=1'b1;end/*数码管扫描显示部分*/always@(posedgeclock)beginif(div_clk)cnt3<=cnt3+1'b1;endalways@(posedgeclock)beginif(div_clk)begincase(cnt3)3'd0:disp_dat3'd1:disp_dat3'd2:disp_dat3'd3:disp_dat3'd4:disp_dat3'd5:disp_dat3'd6:disp_dat3'd7:disp_datendcasecase(cnt3)3'd0:dig_r=8'b01111111;3'd1:dig_r=8'b10111111;3'd2:dig_r=8'b11011111;3'd3:dig_r=8'b11101111;3'd4:dig_r=8'b11110111;3'd5:dig_r=8'b11111011;3'd6:dig_r=8'b11111101;3'd7:dig_r=8'b11111110;endcaseendend〃定义上升沿触发进程=sdata_r[11:8];=sdata_r[7:4];=sdata_r[3:0];=rdata_r[11:8];=rdata_r[7:4];=rdata_r[3:0];={3'b0,crc[4]};=crc[3:0];〃选择扫描显示数据//第一个数码管//第二个数码管//第三个数码管//第四个数码管//第五个数码管//第六个数码管//第七个数码管//第八个数码管〃选择数码管显示位〃选择第一个数码管显示〃选择第二个数码管显示〃选择第三个数码管显示〃选择第四个数码管显示〃选择第五个数码管显示〃选择第六个数码管显示〃选择第七个数码管显示〃选择第八个数码管显示IBiIn壹拾壹always@(disp_dat)begindisp_dat)//七段译码4'h0:seg_r=8'hc0;〃显示04'h1:seg_r=8'hf9;〃显示14'h2:seg_r=8'ha4;〃显示24'h3:seg_r=8'hb0;〃显示34'h4:seg_r=8'h99;〃显示44'h5:seg_r=8'h92;〃显示54'h6:seg_r=8'h82;〃显示64'h7:seg_r=8'hf8;〃显示74'h8:seg_r=8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老院安全责任制度
- 第二章 多彩缤纷的自然环境(串讲课件)-中华中图版2024七年级地理上册考点总结
- 2024年事业单位招聘考试计算机基础知识复习题库及答案(共700题)
- 动物园卫生管理与清洁制度
- 2024至2030年温湿度测量仪项目投资价值分析报告
- 2024年食品级氢氧化钙项目可行性研究报告
- 2024年电脑绣窗帘项目可行性研究报告
- 2024年印刷开槽机上刀项目可行性研究报告
- 2024至2030年中国舞台照明配件数据监测研究报告
- 环保企业财务会计制度的可持续发展
- 医院水电安装施工方案
- 计算机网络考试重点整理
- 分子生物学DNA重组与转座
- 水泥搅拌桩机械进场安装验收记录表
- 生命生态安全
- 高一物理的必修的一期中考试试卷解析告
- 人教PEP五年级上册英语课件 Unit 4 Part B 第二课时
- 网络通信类visio图库
- 四年级英语上册Unit4第四课时教案人教PEP标准版
- 九大类危险品英文解释与图标
- 小学科学(16年级)课程标准解读
评论
0/150
提交评论