FPGA实现差错控制编码技术2.docx

上传人:b****6 文档编号:8471107 上传时间:2023-01-31 格式:DOCX 页数:27 大小:231.90KB
下载 相关 举报
FPGA实现差错控制编码技术2.docx_第1页
第1页 / 共27页
FPGA实现差错控制编码技术2.docx_第2页
第2页 / 共27页
FPGA实现差错控制编码技术2.docx_第3页
第3页 / 共27页
FPGA实现差错控制编码技术2.docx_第4页
第4页 / 共27页
FPGA实现差错控制编码技术2.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

FPGA实现差错控制编码技术2.docx

《FPGA实现差错控制编码技术2.docx》由会员分享,可在线阅读,更多相关《FPGA实现差错控制编码技术2.docx(27页珍藏版)》请在冰豆网上搜索。

FPGA实现差错控制编码技术2.docx

FPGA实现差错控制编码技术2

中文提要

本文首先介绍了电子设计自动化(EDA)技术的主要特征、现状和前景,并就课题的研究方向做了有关论述;进一步研究了EDA技术的发展对电路设计方法的影响,深入探讨了用VHDL语言和复杂系统可编程逻辑器件(CPLD)开发的基本方法,作为应用对象,进一步研制、开发了循环冗余差错校验编码(CRC)、RS(255,239)编码和MD5编码。

通过对前两种编码各个模块的设计,完整阐述了对前两种编码软件部分的设计;又通过硬件的测试,完善,修改,最终完成了各自独立的编码程序。

基于VHDL语言,利用FPGA器件开发的差错控制编码系统,采用了自顶向下的设计方法,系统的顶层设计和底层设计采用原理图输入描述和VHDL语言进行设计,选用当前应用最广泛的EDA软件QUARTUSII作为开发平台,所有程序全部通过了该平台的编译和功能仿真测试,得出了实际的仿真波形,最后,对设计调试过程中出现的问题进行了分析、研究、解决。

我还对上述这些各种编码的异同点进行了总结,对MD5编码进行了算法分析,从而对这些编码进行研究。

关键词:

循环冗余差错校验编码FPGAQUARTUSIIVHDL语言RS编码MD5

Abstract

Thistextfirstintroductionelectronicsdesignautomation(EDA)techniqueofmaincharacteristic,presentconditionandforeground,andtopicofresearchthedirectiondidrelevantdiscuss;FurtherresearchEDAtechniqueofdevelopmenttoelectriccircuitdesignmethodofinfluence,thoroughstudyuseVHDLlanguageandcomplicationssystemprogrammablelogicsparepart(CPLD)developmentofbasicmethod,Beapplicationobject,furtherdevelop,developmentcirculationredundancymistaketheschoolcheckcode(CRC),RS(255,239)codeandMD5code.Passtotwokindsofex-codeeachmoldpieceofonebyoneintroduction,integrityelaboratetotwokindsofex-codesoftwarepartofdesign;Thetestpassedhardwareagain,perfect,modification,endcompletionindependenceofrespectivelycodeprocedure.AccordingtotheVHDLlanguage,applicationFPGAsparepartdevelopmentofmistakecontrolcodesystem,adoptionfromcrestgetdownofdesignmethod,thecrestofthesystemlayerdesignandfirstfloordesignadoptionprinciplediagramimportationdescriptionandtheVHDLlanguagecarryondesign,choosetousecurrentapplicationmostextensiveofEDAsoftwareQUARTUSIIBedevelopmentterrace,allalloftheprocedurespassedthateditandtranslateofterraceandfunctiontoimitatetruetest,giveactualofimitatetruewaveform,end,todesignadjusttotrytoappearintheprocessoftheproblemcarriedonanalysis,research,solve.Ireturnvarioustothesecodeofdifferentandsimilarpointcarriedonsummary,toMD5codecarriedoncalculatewayanalysis,thustothesecodecarryonresearch.

Keywords:

CyclicRedundancyCheckFieldProgrammableGateArrayQUARTUSIIVHDLlanguageRScodeMessage-DigestAlgorithm5

目录

目录III

第一章引言1

1.1EDA技术综述1

1.2本课题的主要研究方向及意义3

第二章应用EDA技术实现差错控制编码技术4

2.1差错控制编码技术介绍4

2.2差错控制编码的总体方案设计4

2.3循环冗余差错控制校验码的设计5

2.3.1CRC循环校验码5

2.3.2CRC校验码的算法分析6

2.3.3CRC编码规则6

2.3.4CRC编码的举例6

2.3.5CRC码编码原理7

2.3.6CRC码编码系统底部模块设计如图3所示8

2.3.7CRC码编码波形仿真图为图4所示9

2.3.8CRC码校验原理图为图7所示10

2.3.9CRC校验码的系统底部模块设计如图8所示11

2.3.10CRC校验码波形仿真图如图9所示12

2.3.11CRC校验码检错测试结果波形图为图12所示13

2.3.12六个生成多项式及应用范围14

2.4RS(255,239)码编码器的算法分析15

2.4.1RS码的编码15

2.4.2RS(255,239)编码电路的的结构16

2.5MD5码的算法分析18

2.5.1MD5的引言18

2.5.2MD5的原理19

2.5.3MD5算法的安全性考虑20

2.5.4MD5的应用20

2.6CRC码、RS码和MD5码的异同点20

2.6.1CRC码、RS码和MD5码的算法差异20

2.6.2CRC码、RS码和MD5码的应用领域差异21

2.6.3CRC码、RS码和MD5码的相同点21

2.7差错控制编码技术编码涉及的实验台的软件设计21

第三章差错控制编码技术的开发体会24

3.1算法的重要24

3.2硬件对软件的制约影响24

3.3调试的重要性24

第四章结束语24

参考文献26

致谢28

附录(部分源代码)29

第一章引言

1.1EDA技术综述

随着大规模集成电路技术的发展和电子产品市场运作节奏的进一步加快,涉及诸如计算机应用、通信、智能仪表、医用设备、军事、民用电器等领域的现代电子设计技术已迈入一个全新的阶段,EDA技术已成为当今电子设计领域的主流。

EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

20世纪90年代以来,微电子技术以惊人的速度发展,其工艺水平达到了深亚微米级,在一个芯片上可集成数百万乃至上千万只晶体管,工作速度可达到GHz,这为制造出规模更大,速度更快和信息容量更大的芯片系统提供了条件,但同时也对EDA系统提出了更高的要求,并促进了EDA技术的发展。

此阶段主要出现了以高级语言描述、系统仿真和综合技术为特征的第三代EDA技术,不仅极大地提高了系统的设计效率,而且使设计人员摆脱了大量的辅助性及基础性工作,将精力集中于创造性的方案与概念的构思上,下面简单介绍这个阶段EDA技术的主要特征:

(1)高层综合(HLS,HighLevelSynthesis)的理论与方法取得较大进展,将EDA设计层次提高到系统级(又称行为级),并划分为逻辑综合和测试综合。

(2)采用硬件描述语言HDL(HardwareDescriptionLanguage)来描述10万门以上的设计,并形成了VHDL(VeryHighSpeedIntegratedCircuitHDL)和VerilogHDL两种标准硬件描述语言。

它们均支持不同层次的描述,使得复杂IC的描述规范化,便于传递、交流、保存于修改,也便于重复使用。

它们多应用于FPGA/CPLD/EPLD的设计中。

(3)可测性综合设计。

随着ASIC的规模与复杂性的增加,测试难度与费用急剧上升,由此产生了将可测性电路结构制造在ASIC芯片上的想法,于是开发了扫描插入、BLST(内建自测试)、边界扫描等可测性设计(DFT)工具,并已集成到EDA系统中。

(4)建立并行设计工程CE(ConcurrentEngineering)框架结构的集成化设计环境,以适应当今ASIC的如下一些特点:

数字与模拟电路并存,硬件与软件设计并存,产品上市速度要快。

在这种集成化设计环境中,使用统一的数据管理系统与完善的通讯管理系统,由若干相关的设计小组共享数据库和知识库,并行地进行设计,而且在在各种平台之间可以平滑过渡。

随着百万门规模的复杂的可编程逻辑器件(CPLD)的推出及大规模的芯片组和高速、高密度印刷电路板的应用,EDA技术在仿真、时序分析、集成电路自动测试、高速印刷电路板设计及操作平台的扩展等方面都面临着新的问题,这些问题实际上也是新一代EDA技术的未来发展趋势。

用VHDL语言开发CPLD/FPGA的设计流程如图1所示:

图1开发设计流程图

接受设计任务:

进行设计之前,首先要由硬件总体设计部门给出设计任务以及设计的一些要求。

确定功能要求:

对硬件总体设计部门给出的设计任务以及设计的一些要求进行分析,确定出具体的功能要求。

进行分析:

决定设计中所要采用的设计方式。

源代码模拟:

设计中,采用VHDL模拟器进行源代码模拟可以在早期发现设计上的缺陷和错误,及时进行修改,从而节省大量的设计时间,缩短开发周期。

综合、优化和布局布线:

综合是将较高层次的抽象描述转化到较低级描述的一种方法,即将设计的VHDL源描述转化成底层电路表示。

也就是说,被综合的文件是VHDL文件,综合的结果是一个硬件电路的实现方案。

优化是指将设计的时延缩小到最小和有效利用资源。

布局布线就是把通过综合和优化所得到的逻辑,安放到一个逻辑器件中的过程,一个较好的布局布线过程就是将电路的相关部分放置在一起,以消除布线延迟。

布局布线后的设计模拟:

布局布线后的设计模拟与源代码模拟不同,源代码模拟只是对设计的逻辑功能进行模拟,而布局布线后的设计模拟不仅可以对逻辑功能进行验证,而且还能对设计时序功能进行验证。

器件编程和配置:

器件编程就是将VHDL设计描述经过模拟、综合、优化和布局布线的结果,经过一定映射转化成一个器件编程所用的数据文件格式。

器件配置就是在功能仿真和时序仿真正确的前提下,将综合后的文件下载到具体的芯片中进行电路验证。

1.2本课题的主要研究方向及意义

现代电子产品面临高功能、设计周期短、上市快的要求,其复杂度日益加深,一个电子系统可能由数万个中小规模的集成电路构成,这就带来了体积大、功耗大、可靠性差的问题,解决这一问题的有效方法就是来用可编程逻辑器件(PLD)进行设计。

可编程逻辑器件,尤其是CPLD/FPGA器件,具有集成度高、运行速度快、可靠性强、设计方式灵活、快速等特点,现已成为现代高层次电子设计方法的实现载体。

本课题研究了EDA技术发展对电路设计方法的影响,深入探讨了用VHDL语言和复杂系统可编程逻辑器件开发的基本方法,为开发专用集成电路提供了基本的设计步骤。

作为应用对象,进一步开发差错控制编码技术。

开发这一系统的目的并不是为了实际的应用或应用到市场中去,只是通过一个简单系统的整体设计完成过程,深入体会FPGA技术优势性,了解这些编码的特性及其应用,使这几类编码得到更广泛的应用。

在数字系统过程中,为了减少误码率,使这些编码技术很好的应用到相关的一些领域中去,我总结出这些编码的异同点,为以后选择这些编码时在相关领域的应用奠定一定的基础。

第二章应用EDA技术实现差错控制编码技术

2.1差错控制编码技术介绍

现在利用FPGA技术实现差错控制编码的种类很多,而且这些具有很强的纠错、检错码,被广泛应用到密码学、通信、磁盘阵列及光存储等方面。

研究这个课题主要是想比较一些这些编码技术的差异,找出它们之间的异同点,以便为以后在相应领域应用到适应的编码提供方便。

我主要是研究循环冗余差错校验编码(CRC)、RS(255、239)编码和MD5编码,然后利用FPGA技术去实现。

CRC校验实用程序库在数据存储和数据通讯等领域,为了保证数据的正确,就不得不采用检错的手段。

在诸多检错手段中,CRC是最著名的一种。

CRC的全称是循环冗余校验,其特点是:

检错能力极强,开销小,易于用编码器及检测电路实现。

从其检错能力来看,它所不能发现的错误的几率仅为0.0047%以下。

从性能上和开销上考虑,均远远优于奇偶校验及算术和校验等方式。

因而,在数据存储和数据通讯领域,CRC无处不在:

著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用CRC作为检错手段。

CRC的本质是模2除法的余数,采用的除数不同,CRC的类型也就不一样。

为实现高速数字系统所要求的可靠性,几乎所有的现代通信系统都把纠错编码作为一个基本组成部分.RS纠错编码(Reed2Solomoncodes)是目前最有效、应用最为广泛的差错控制编码方式之一.它首先是由IrvingReed和GusSolomon于1960年构造出来的一类多进制BCH码.它不但可以纠正随机错误、突发错误以及二者的组合,而且可以用来构造其它码类.因此,RS码在卫星通信、数字电视传输以及磁记录系统等许多领域得到广泛应用.RS码已被NASA,ESA,CCSDS等空间组织接受,用于空间信道纠错.

MD5的全称是Message-DigestAlgorithm5,在90年代初由MIT的计算机科学实验室和RSADataSecurityInc发明,经MD2、MD3和MD4发展而来。

Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。

MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的。

2.2差错控制编码的总体方案设计

对于差错控制编码技术的研究,我主要是研究CRC编码、RS编码和MD5编码,现在首先是分别研究这几种编码,对前两种分别应用FPGA技术去实现,用VHDL语言去编写代码,然后再进行编译,下载,仿真及其去了解这些编码;然后是对MD5码进行研究和算法分析;最后总结出它们的异同点,以适应在以后需要的时候选择适当的编码应用到相应的领域中去。

2.3循环冗余差错控制校验码的设计

在具体设计过程中,采取自上而下的设计思路。

首先根据整体的规划设计出模块的外部输入输出引脚定义以及功能,也就是设计出这一个小芯片的外部特性;然后根据设计的这一个芯片的外部特性以及功能设计实现芯片内部的实现细节。

2.3.1CRC循环校验码

CRC校验采用多项式编码方法。

被处理的数据块可以看作是一个n阶的二进制多项式,如一个8位二进制数10110101可以表示为:

x7+x5+x4+x2+1。

多项式乘除法运算过程与普通代数多项式的乘除法相同。

多项式的加减法运算以2为模,加减时不进位、错位和逻辑异或运算一致。

采用CRC校验时,发送方和接收方用同一个生成多项式g(x),并且g(x)的首位和最后一位的系数必须为1。

CRC的处理方法是:

发送方以g(x)去除t(x),得到余数作为CRC校验码。

校验时,以计算的校正结果是否为0为据,判断数据帧是否出错。

CRC校验可以100%地检测出所有奇数个随机错误和长度小于等于k(k为g(x)的阶数)的突发错误。

所以CRC的生成多项式的阶数越高,那么误判的概率就越小。

CCITT建议:

2048kbit/s的PCM基群设备采用CRC-4方案,使用的CRC校验码生成多项式g(x)=x4+x+1。

采用16位CRC校验,可以保证在1014bit码元中只含有一位未被检测出的错误。

在IBM的同步数据链路控制规程SDLC的帧校验序列FCS中,使用CRC-16,其生成多项式g(x)=x16+x15+x2+1;而在CCITT推荐的高级数据链路控制规程HDLC的帧校验序列FCS中,使用CCITT-16,其生成多项式g(x)=x16+x15+x5+1。

CRC-32的生成多项式g(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1。

CRC-32出错的概率比CRC-16低10−5倍。

由于CRC-32的可靠性,把CRC-32用于重要数据传输十分合适,所以在通信、计算机等领域运用十分广泛。

在一些UART通信控制芯片(如MC6582、Intel8273和Z80-SIO)内,都采用了CRC校验码进行差错控制;以太网卡芯片、MPEG解码芯片中,也采用CRC-32进行差错控制。

2.3.2CRC校验码的算法分析

CRC校验码的编码方法是用待发送的二进制数据t(x)除以生成多项式g(x),将最后的余数作为CRC校验码。

其实现步骤如下:

(1)设待发送的数据块是m位的二进制多项式t(x),生成多项式为r阶的g(x)。

在数据块的末尾添加r个0,数据块的长度增加到m+r位,对应的二进制多项式为t(x)。

(2)用生成多项式g(x)去除t(x),求得余数为阶数为r-1的二进制多项式y(x)。

此二进制多项式y(x)就是t(x)经过生成多项式g(x)编码的CRC校验码。

(3)用t(x)以模2的方式减去y(x),得到二进制多项式t'(x)。

t'(x)就是包含了CRC校验码的待发送字符串。

2.3.3CRC编码规则

CRC编码实际上是将代发送的m位二进制多项式t(x)转换成了可以被g(x)除尽的m+r位二进制多项式t'(x),所以解码时可以用接受到的数据去除g(x),如果余数位零,则表示传输过程没有错误;如果余数不为零,则在传输过程中肯定存在错误。

许多CRC的硬件解码电路就是按这种方式进行检错的。

同时t'(x)可以看做是由t(x)和CRC校验码的组合,所以解码时将接收到的二进制数据去掉尾部的r位数据,得到的就是原始数据。

2.3.4CRC编码的举例

由于CRC-32、CRC-16、CCITT和CRC-4的编码过程基本一致,只有位数和生成多项式不一样。

为了叙述简单,用一个CRC-4编码的例子来说明CRC的编码过程。

设待发送的数据t(x)为12位的二进制数据100100011100;CRC-4的生成多项式为g(x)=x4+x+1,阶数r为4,即10011。

首先在t(x)的末尾添加4个0构成x4t(x),数据块就成了1001000111000000。

然后用g(x)去除x4t(x),不用管商是多少,只需要求得余数y(x)。

表1给出了除法过程。

 

表1求校验码的过程表

除数次数

被除数/g(x)/结果

余数

0

1001000111000000

100111000000

10011

0000100111000000

1

100111000000

1000000

10011

000001000000

2

1000000

1100

10011

0001100

从表1中可以看出,CRC编码实际上是一个循环移位的模2运算。

对CRC-4,我们假设有一个5bits的寄存器,通过反复的移位和进行CRC的除法,那么最终该寄存器中的值去掉最高一位就是我们所要求的余数。

2.3.5CRC码编码原理

信息码多项式就是以待转换信息码字为系数所构成的多项式,一旦信息码确定,则该多项式就是唯一的。

信息码多项式只是编码器处理的对象,在整个编码过程中起决定作用的是生成多项式。

CRC码编码的系统顶层设计为图2所示。

图2CRC编码实现的外部特性

引脚的定义说明:

rst---复位清零信号

hDataClk---高位数据输入信号

lDataClk---低位数据输入信号

displayMode---显示模式信号

clk---时钟脉冲为1HZ

inputClk---输入允许信号

modeinputOne---输入模式1

modeinputTwo---输入模式2

modeinputThree---输入模式3

outData[63..0]---输出信息码和校验码的组合

sigOut---输出标志信号

2.3.6CRC码编码系统底部模块设计如图3所示

图3CRC编码总体设计

图3表示为CRC编码总体设计原理图由各模块组成,CrcCode模块是主要模块,在这模块中进行CRC编码运算的操作,然后把结果送到CrcCodeOut模块中输出结果,从而来完成实验的输出。

CRC编码总体设计各模块的代码见附录

2.3.7CRC码编码波形仿真图为图4所示

图4CRC编码波形仿真图总体设计(生成多项式为CRC-ITU)

 

(1)CRC码编码波形仿真图为图5所示

图5CRC编码波形仿真图总体设计(生成多项式为CRC-16)

(2)CRC码编码波形仿真图为图6所示

图6CRC编码波形仿真图总体设计(生成多项式为CRC-4)

2.3.8CRC码校验原理图为图7所示

信息码经过编码形成信息码与校验码的组合,传送到目地处后经过相同的算法得出经过校验后的信息码,如果此信息码与原信息码相同证明没有发生错误,如果不同就进行校验纠错。

CRC校验码的系统顶层设计如图7表示。

 

图7CRC校验码实现的外部特性

引脚的定义说明:

rst---复位清零信号

hDataClk---高位数据输入信号

lDataClk---低位数据输入信号

displayMode---显示模式信号

clk---时钟脉冲为1HZ

inputClk---输入允许信号

modeinputOne---输入模式1

modeinput

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1