通信系统中的CRC码研究及FPGA实现.docx

上传人:b****6 文档编号:6228149 上传时间:2023-01-04 格式:DOCX 页数:25 大小:1.25MB
下载 相关 举报
通信系统中的CRC码研究及FPGA实现.docx_第1页
第1页 / 共25页
通信系统中的CRC码研究及FPGA实现.docx_第2页
第2页 / 共25页
通信系统中的CRC码研究及FPGA实现.docx_第3页
第3页 / 共25页
通信系统中的CRC码研究及FPGA实现.docx_第4页
第4页 / 共25页
通信系统中的CRC码研究及FPGA实现.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

通信系统中的CRC码研究及FPGA实现.docx

《通信系统中的CRC码研究及FPGA实现.docx》由会员分享,可在线阅读,更多相关《通信系统中的CRC码研究及FPGA实现.docx(25页珍藏版)》请在冰豆网上搜索。

通信系统中的CRC码研究及FPGA实现.docx

通信系统中的CRC码研究及FPGA实现

 

通信系统中的CRC码研究及FPGA实现

 

作者姓名***

专业电子信息工程

指导教师姓名********

专业技术职务******

 

3.3.2VHDL的优点14

摘要

在通信系统中,数据在传输过程中,由于通道传输特性不理想,并且受到干扰或噪声的影响。

循环冗余校验(CRC)是一种最常用的信道编码方法,广泛应用于通信领域以提高数据传输的可靠性。

随着半导体技术的迅速发展,在现代数字系统设计中,FPGA和CPLD的使用越来越广泛。

与此同时,基于大规模可编程逻辑器件的EDA硬件解决方案也被广泛采用。

本文在上述背景下提出了基于FPGA的CRC并行处理算法。

采用VHDL语言实现了CRC码的生成模块和校验模块,并以Altera公司开发的EDA工具QuartusⅡ8.0作为编译、仿真平台进行了仿真,最后将程序下载到CycloneⅢ芯片进行了验证测试。

测试结果表明,算法的实验结果与理论分析结果完全相符。

论文介绍了CRC的编码、解码算法的工作原理以及FPGA技术、VHDL语言的基本知识,在此基础上详细介绍了在QuartusⅡ8.0中利用VHDL语言实现CRC的过程。

关键词:

通信系统CRCFPGAVHDL

 

ABSTRACT

Inthecommunicationsystem’sdatatransmission,transmissioncharacteristicsofthechannelisnotideal,andsubjecttointerferenceornoise.CyclicRedundancyCheck(CRC)isoneofthemostcommonlyusedchannelcodingmethod,itiswidelyusedincommunicationstoenhancethereliabilityofdatatransmission.Withtherapiddevelopmentofsemiconductortechnologyinthemoderndigitalsystemdesign,FPGAandCPLDofthemorewidelyused.Atthesametime,large-scaleprogrammablelogicdevicesbasedonEDAhardwaresolutionsarealsowidelyused.

Intheabovecontext,thispaperproposedFPGA-basedparallelprocessingalgorithmforCRC.VHDLlanguageusingaCRCcodegenerationmoduleandcalibrationmodules,andEDAtoolsdevelopedbyAlteraQuartusⅡ8.0asacompiler,simulationplatform,asimulation,andfinallytheprogramisdownloadedtoCycloneⅢchipvalidationtests.Theresultsshowthatthealgorithmresultsentirelyconsistentwiththetheoreticalanalysis.ThepaperintroducestheCRCencodinganddecodingalgorithmworksaswellasFPGAtechnology,VHDLlanguage,basicknowledge,onthebasisdescribedindetailintheQuartusⅡ8.0VHDLlanguageusingCRCprocess[1].

Keywords:

Communicationsystem;CRC;FPGA;VHDL

 

第一章绪论

1.1课题研究背景和意义

在近年来,随着微电子学和计算机科学的迅速发展,给EDA(电子设计自动化)行业带来了巨大的变化,特别是近代,电子系统已经从电路板级系统集成发展成为包括ASIC、FPGA和嵌入系统的多种模式。

可以说EDA产业已经成为电子信息类产品的支柱产业。

EDA技术能蓬勃发展的关键技术之一就是采用了硬件描述语言(HDL)描述电路系统,这也是计算机应用的一次重大突破,硬件描述语言的出现使电子系统的设计可以像编C语言一样简单易学,从而让我们很容易了解硬件的设计。

在通信系统中,数据在传输过程中,由于通道传输特性不理想,并且受到干扰或噪声的影响,传输到接收端后可能发生错误判决,并且有时由于受到突发的脉冲干扰,错码会成串出现。

因此为了降低通信线路传输的误码率,提高通信的质量,需要采用高效能的差错控制方法,循环冗余校验CRC(CyclicRedundancyCheck)由于编码简单、检错能力强且误判概率很低,是一种最常用的信道编码方法,广泛应用于移动通信、计算机通信、USB接口、测控等。

CRC算法占用系统资源少,实现简单、校验能力很强,是进行数据传输差错控制的一种很好的手段。

本文讨论了CRC-5算法的FPGA实现,并借助EDA工具和硬件描述语言VHDL对这种算法进行验证和实现。

1.2课题研究现状

循环码是具有循环移位特性且能纠错的分组码。

纠错码的译码是该编码能否得到实际应用的关键所在。

译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。

根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。

任何两个相邻的循环码只有一位数字不同,因此循环码具有可靠性高的优点,在通信、军事等领域中应用非常广泛。

由于循环码是无权码,书写和编制都比普通二进制码麻烦,正确的编制是电路设计的关键。

目前常用的实现CRC编码语言有C语言、Verilog和VHDL语言。

但由于VHDL有更强的行为描述能力及其对硬件设计的独立性,从而避开具体的器件结构,从逻辑行为上描述和设计该电子系统使得程序实现较为方便。

从以上方面考虑,本设计中采用VHDL程序实现。

1.3论文内容结构安排

本设计中,首先查阅了相关资料、文献,了解了循环冗余校验CRC(CyclicRedundancyCheck)的原理,学习了基本EDA知识以及一些基本的FPGA编程。

然后通过VHDL硬件描述语言来实现循环冗余校验码的生成及校验,通过软件Quartus8.0运行程序,实现生成代码和校验代码的仿真。

最后通过和实验箱的链接下载,实现了硬件实现该设计。

本论文第一章介绍了课题的研究背景、意义及现状。

第二章详细介绍了CRC循环冗余校验的基本原理及数学计算方法,并针对本课程设计给出了CRC-5的数学计算方法。

第三章给出了FPGA和VHDL语言的详细介绍。

第四章介绍了了具体的软件模块实现,给出了波形仿真并做出了分析。

第二章CRC校验原理

2.1概述

循环冗余校验采用在要发送的有用码后边添加一个称为循环冗余校验码(简称CRC码)的比特串来实现数据传输差错检测。

这种码的编码和解码设备都不太复杂,且检错的能力较强。

循环冗余校验由线性分组码的分支而来,它建立在严格的代数理论基础上,利用除法和余数的原理来进行错误侦测(errordetecting)。

在除法运算中,如果用被除数除以除数后所得的余数不为零,那么从被除数中减去余数后,所得结果可被除数除尽,循环冗余校验正是基于这一思想。

采用CRC校验时,发送方和接收方事先约定一个生成多项式

,该生成多项式作为除数多项式,将要发送的数据比特序列作为一个多项式

的系数,该多项式为被除多项式,被除多项式

与除数多项式的余数多项式

的系数为循环冗余校验码(CRC码),它添加在要检测的二进制位串后边,形成发送码。

数据链路将发送码发送到接收方后,接收方同样将其看成是一个多项式的系数序列,并用相同的生成多项式来除该多项式。

若余数为零,则传输无差错;否则,传输有差错[2]。

2.2CRC码的数学计算方法

在纠错编码代数中,把以二进制数字表示的一个数据系列看成一个多项式.例如,二进制数字序列10101111,用多项式可以表示成[3]:

公式(2-1)

上式(2-1)中:

表示代码的位置或某个二进制数位的位置;

前面的系数

表示码的值,若

是一位二进制代码则取值是0或者1;

称为信息代码多项式。

求CRC码采用模2除法运算法则,这种运算实际上就是逻辑上的异或运算。

对于模2运算来说,代码多项式的加法和减法运算所得结果相同。

所以在做代码多项式的减法时,可用做加法来代替做减法。

如果一个k位的二进制代码多项式为

再增加

位的校验码,那么增加

位之后,信息代码多项式在新的数据块中就表示成

,如图2-1所示:

图2-1信息代码多项式在新的数据块中的表述图

如果用一个校验码生成多项式

去除代码多项式

,得到的商假定为

,余式为

,则可写成如下公式(2-2):

公式(2-2)

因为模2多项式的加法和减法运算结果相同,所以又可把式(2-2)写成:

公式(2-3)

从式中可以看到,代表新的代码多项式式

是能够被校验码生成多项式

除尽的,即它的余项为0。

例如,CD盘中的

通道和软磁盘存储器中使用的CRC校验码生成的多项是

,若用二进制表示,则为:

=100010000000100001

=11021

公式(2-4)

假定要写到盘上的信息代码

为:

,由于增加了2个字节共16位的校验码,所以信息代码变成:

,计算过程如下图2-2。

图2-2CRC校验码计算过程

2数相除的结果,其商可不必关心,其余数为B499(H),就是CRC校验码。

当把信息代码写到盘上时,将原来的信息代码和CRC码一起写到盘上。

在这个例子中,写到盘上的信息代码和CRC码是4D6F746FB499,这个码是能被11021(H)除尽的。

从盘上把这块数据读出时,同样的CRC码生成多项式去除这块数据,相除后得到2种可能结果,若余数为0表示读出没有出错;若余数为1,表示有错。

2.3CRC-5编码的算法

设待发送的信息是111101100101,则信息多项式为

CRC-5的生成多项式为g(x)=

对应序列为110101。

首先在m(x)的末尾添加5个0构成

m(x),数据块就成了11110110010100000。

然后

m(x)除以g(x),得余式r(x)=

+1。

那么通过CRC-5编码器后的输出数据就变成了11110110010100011。

计算CRC码的流程如图2-3所示。

图2-3CRC码的模2计算流程

第三章FPGA和VHDL语言

3.1概述

目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。

这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。

在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。

FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。

但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。

厂商也可能会提供便宜的但是编辑能力差的FPGA。

因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。

另外一种方法是用CPLD(复杂可编程逻辑器件备)。

另外FPGA还有以下特点[4]:

(1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。

(2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

(3)FPGA内部有丰富的触发器和I/O引脚。

(4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

(5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。

用户可以根据不同的配置模式,采用不同的编程方式。

加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。

掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。

FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。

当需要修改FPGA功能时,只需换一片EPROM即可。

这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。

因此,FPGA的使用非常灵活。

FPGA主要生产厂商有:

Altera、Xilinx3、Actel和Lattice。

其中Altera作为世界老牌可编程逻辑器件的厂家,是当前世界范围内市场占有率最大的厂家,它和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。

Actel主要提供非易失性FPGA,产品主要基于反熔丝工艺和FLASH工艺。

3.2FPGA

3.2.1FPGA工作原理

FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。

现场可编程门阵列(FPGA)是可编程器件。

与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。

FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及个模块之间或模块与I/O间的连接方式,并最终决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程[5]。

FPGA有多种配置模式:

并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。

3.2.2FPGA芯片结构

目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。

如图1-1所示(注:

图1-1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构),FPGA芯片主要由7部分完成,分别为:

可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块[6]。

图3-1FPGA芯片的内部结构

1.可编程输入输出单元(IOB)

可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构如图1-2所示。

FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。

通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。

目前,I/O口的频率也越来越高,一些高端的FPGA通过DDR寄存器技术可以支持高达2Gbps的数据速率。

外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA内部。

当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(HoldTime)的要求可以降低,通常默认为0。

为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有一种VCCO,但不同bank的VCCO可以不同。

只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。

2.可配置逻辑块(CLB)

CLB是FPGA内的基本逻辑单元。

CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些选型电路(多路复用器等)和触发器组成。

开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。

在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成,如图1-3所示。

每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM。

Slice是Xilinx公司定义的基本逻辑单位,其内部结构如图1-4所示,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。

算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的两个输入函数为6输入,可以实现6输入LUT或64比特移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。

3.数字时钟管理模块(DCM)

业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。

Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。

相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。

4.嵌入式块RAM(BRAM)

大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。

块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。

RAM、FIFO是比较普及的概念,在此就不冗述。

CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。

除了块RAM,还可以将FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。

在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素。

单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:

首先,修改后的容量(位宽深度)不能大于18k比特;其次,位宽最大不能超过36比特。

当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而不再受上面两条原则约束。

5.丰富的布线资源

布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。

FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。

第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。

从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系。

6.底层内嵌功能单元

 内嵌功能模块主要指DLL(DelayLockedLoop)、PLL(PhaseLockedLoop)、DSP和CPU等软处理核(SoftCore)。

现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡。

DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。

Xilinx公司生产的芯片上集成了DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。

PLL和DLL可以通过IP核生成的工具方便地进行管理和配置。

DLL的结构如图1-5所示。

7.内嵌专用硬核

内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(HardCore),等效于ASIC电路。

为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。

例如:

为了提高FPGA的乘法速度,主流的FPGA中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。

Xilinx公司的高端产品不仅集成了PowerPC系列CPU,还内嵌了DSPCore模块,其相应的系统级设计工具是EDK和PlatformStudio,并依此提出了片上系统(SystemonChip)的概念。

通过PowerPC、Miroblaze、Picoblaze等平台,能够开发标准的DSP处理器及其相关应用,达到SOC的开发目的。

3.2.3FPGA设计的注意事项

不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。

不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。

3.2.4I/O信号分配

可提供最多的多功能引脚、I/O标准、端接方案和差分对的FPGA在信号分配方面也具有最复杂的设计指导原则。

尽管Altera的FPGA器件没有设计指导原则(因为它实现起来比较容易),但赛灵思的FPGA设计指导原则却很复杂。

但不管是哪一种情况,在为I/O引脚分配信号时,都有一些需要牢记的共同步骤[7]:

(1)使用一个电子数据表列出所有计划的信号分配,以及它们的重要属性,例如I/O标准、电压、需要的端接方法和相关的时钟。

(2)检查制造商的块/区域兼容性准则。

(3)考虑使用第二个电子数据表制订FPGA的布局,以确定哪些管脚是通用的、哪些是专用的、哪些支持差分信号对和全局及局部时钟、哪些需要参考电压。

(4)利用以上两个电子数据表的信息和区域兼容性准则,先分配受限制程度最大的信号到引脚上,最后分配受限制最小的。

例如,你可能需要先分配串行总线和时钟信号,因为它们通常只分配到一些特定引脚。

(5)按照受限制程度重新分配信号总线。

在这个阶段,可能需要仔细权衡同时开关输出(SSO)

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

当前位置:首页 > 教学研究 > 教学计划

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

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