摘要高级数据链路控制(HDLC)协议是数字通信中的重要协议之一。Altera公司的可编程门阵列(FPGA),设计了一种基于并行机制的高级数据链路控制(HDLC)协议控制系统。该系统采用模块组合的设计方法,使系统的复杂功能由各个模块组合实现,这种分块处理使得设计层次清晰且易于修改。该系统有效利用FPGA的内部硬件资源,实现了并行的多通道的HDLC协议报文的生成和解析。通过分析当前实现HDLC协议的一般方法,指出其存在的一些弊端,提出了一种利用FPGA编程实现HDLC协议的硬件处理方法,并对FPGA如何实现HDLC协议的帧序列校验——循环冗余校验(CRC)进行了阐述。模块下载到硬件中测试通过,证实了FPGA实现HDLC协议的可行性,模块编程简单且易于修改使其在应用中具有很大的优越性。基于在数据通信中为了降低通信线路传输的误码率,需要采用高效能的差错控制方法。循环冗余校验CRC由于编码简单且有效,是一种最常用的信道编码方。【关键词】:HDLC协议FPGACRC校验ABSTRACTHighleveldatalinkcontrol(HDLC)protocolisanimportantoneindigitalcommunication.Altera'sprogrammablegatearray(FPGA),designofparallelmechanismbasedonhighleveldatalinkcontrol(HDLC)Protocolcontrolsystem.Thesystemusesacombinationofmodulardesignmethod,complexcombinationoffeaturesfromthevariousmodulesofthesystemimplementation,thisblockmakesthedesignisclearandeasytomodify.ThesystemeffectivelyusestheFPGA'sinternalhardwareresources,enablingparallelmulti-channelHDLCprotocolmessagegenerationandparsing.ThroughananalysisofthecurrentimplementationofHDLCProtocolGeneral,pointedoutthattherearesomedrawbacks,havecomeupwithahardwareprocessingoftheHDLCprotocolusingFPGAprogrammingmethodsandverificationonFPGAimplementationofHDLCprotocolusingFPGAprogrammingmethodsandverificationonFPGAimplementationofHDLCprotocolframesequence-acyclicredundancycheck(CRC)explains.Moduledownloadedtothehardwaretestpassed,confirmthefeasibilityofFPGAimplementationofHDLCProtocol,applicationmoduleprogrammingsimpleandeasytomodifysothatithasalotofadvantages.Indatacommunicationinordertoreducetheerrorrateofthetransmissionofcommunicationlines,requirestheuseofhigh-efficiencyerrorcontrolmethod.CyclicredundancycheckCRCasthecodingissimpleandeffective,isoneofthemostcommonchannelcoding.【Keywords】HDLCprotocolFPGACRCcheck目录前言………………………………………………………………………………………………5第一章HDLC协议概述………………………………………6第一节HDLC协议简介………………………………………………...6第二节HDLC协议分析…………………………………………………………………………………6第二章基于FPCA的HDLC协议器设计……………………...9第一节FIFO缓存区及端口控制……………………………………………………………..9第二节HDLC协议器………………………………………………………………………………….10第三章综合和验证及结果……………………………………………………..13第一节仿真及验证…………………………………………………………………………………..13第二节系统模块图…………………………………………………………………………………..14第三节现象及讨论…………………………………………………………………………………..14心得体会…………………………………………………………………………………….15参考文献…………………………………………………………………………………….16附录…………………………………………………………………………………………….17前言在数据通信中,链路层协议种类繁多,从通信方式看,可以分为异步通信和同步通信,同步通信的协议也多种多样,有基于字符的通信协议,比如BSC协议、CD2协议和DDCMP协议等;也有基于比特的通信协议,比如HDLC协议,HDLC(HighLeveiDataLinkControi)协议是通信领域中应用最广泛的协议之一,它是面向比特的高级数据链路控制规程,具有差错检测功能强大、高效和同步传输的特点。目前市场上有很多专用的HDLC芯片,但这些芯片大多因追求功能的完备,而使芯片的控制变得复杂。实际上,对于某些特殊场合的特殊用途(如手持式设备),我们只需选择HDLC协议中最符合系统要求的部分功能,设计一种功能相对简单、使用灵活的小型化HDLC协议控制器。另一方面,随着深亚微米工艺技术的发展,FPGA(FieidProgrammabieGateArray)芯片的规模越来越大,其单片逻辑门数已超过上百万门。同时它还具有设计开发周期短、设计制造成本低、可实时在线检验等优点,因此被广泛用于特殊芯片设计中。本设计中采用Altera公司的飓风Ⅱ系列芯片EP2C8Q208C8来实现HDLC协议控制器。第一章HDLC协议概述第一节HDLC协议简介在种类繁多的链路层协议中,HDLC协议是一个在同步网上传输数据、面向比特的数据链路层协议。该协议主要是为全双工点对点操作提供完整的数据透明度,也支持对等链路,在每个链路终端都不具有永久性管理站功能。链路控制协议着重于对分段成物理块或包的数据进行逻辑传输,块或包由起始标志引导并由终止标志结束,也称为帧。所有面向比特的数据链路控制协议帧格式均是统一的,不论是数据还是单独的控制信息的传送均以帧为单位。作为典型的面向比特的数据链路控制协议,HDLC协议具有如下特点:协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现;全双工通信,有较高的数据链路传输效率,不必等待确认便可连续发送数据;所有帧均采用循环冗余校验(CRC),传输可靠性高;传输控制功能与处理功能分离,具有较大灵活性和较完善的控制功能。第二节HDLC协议分析一、HDLC帧结构HDIC是面向比特数据的传输协议,他对一次传输的信息的位数没有限制,因此适合于大量数据的传输。HDIC协议以帧格式传输信息,帧的基本格式如图1所示。标志地址控制信息帧校验标志8b8/16b8/16b8b×n16/32b8b图1HDLC帧的基本格式标志符HDLC规程规定,一个完整的帧信息是以一个标志字开始,并以该标志字结束。两个标志字之间为数据段(包括地址段、控制段和信息段)。在本协议中,标志字为01111110(Ox7e)。地址段表示接收端的地址号,可以是8b或16b。每个接收端都有惟一的地址,可以判断当前数据帧是否是发给自己。控制段是最为复杂的字段,根据他的定义可将HDLC帧分为信息帧、监督帧和无编号帧。信息段所要传输的数据。帧校验序列用于对传输数据的检错与纠错。二、“O”位插入和删除HDLC协议规定以01111110为标志字,但传输的数据组合有可能与标(01111110)相同,为了防止接收端误判为帧头或帧尾,在一帧的帧头和帧尾之间每当传输连续5个“1”比特之后,就自动插入一个“0”比特,此“O”不进行CRC计算。而接收端在接收到帧头后,每连续接收到5个“1”比特,就自动将其后的一个“o”比特删除,以恢复信息的原有形式。经过此操作保证了数据链路的透明传输(即可以传输任意组合的比特流)。三、CRC校验HDLC规程中数据位信息是以帧方式来传送,为了保证数据传送的可靠性,在一帧的格式中加入了帧校验(FrameCheckingSequence,FCS)序列。HDLC规程采用循环冗余校验码(CRC),对所传送的数据进行检错与纠错。在HDLC规程中,帧校验序列通常与一码生成多项式相对应。对于16位帧校验序列,码生成多项式为:P(x)=+++1对于32位帧校验序列,码生成多项式为:P(x)=+++++++++++++1本设计中采用16位帧校验序列,CRC计算由软件完成。在HDLC协议中,除了标志位和自动插入的“O”位外,所有的信息都参与CRC计算。CRC校验码生成原理图如下:第二章基于FPCA的HDLC协议器设计在可编程器件FPGA(EPFlOK)内设计HDLC协议器,该器件的优点是可以在线编程、方便调试、支持仿真。同时该器件内融合了雷达系统的多种控制功能。在FPGA内实现HDLC功能采用的是“自顶向下”的设计方法,即根据要求的功能先设计出顶层的原理框图,该图由若干个功能模块组成。再把各个模块细化为子模块,对较复杂的设计则把各子模块分成一层层的下级子模块,各层的功能可以用硬件描述语言或电路图实现。该设计中主要使用VHDIJ语言编写程序代码,经过综合、仿真和优化等过程,最终将程序下载到芯片中。HDLC协议器的工作原理为CPU将收到的大量数据通过数据总线,地址总线不断地送到FPGA中,FPGA将该数据存到HDLC协议器的缓存区内,并根据一定的时钟频率将该数据进行长度设定,通过并/串转换,“0”比特插入,增加标志字等模块处理后,将数据按照HDLC协议发送。接收端将接收到的数据进行校验显示,对比发送端的数据判断数据发送的可靠性。整个系统的收发端采用同一个全局时钟。HDLC协议总体结构图如图2所示。第一节FIFO缓存区及端口控制在数据发送时,为了平滑CPU与HDLC协议控制器之间的数据传输速率,采用一个异步FIFO作为两者之间的接口模块。该FIFO()接收数据总线上送来的数据转换成固定速率的并行数据输出,并且将自身状态信息(wrfull,rdempty)通过指定的地址接口送给CPU。考虑实际要求及FPGA的自身特性,本设计中采用一个64×8的FIF0完成速率转换和数据缓存功能。FPGA内的功能模块如图所示。第二节HDLC协议器通过HDLC协议分析可知,要将数据以HDLC协议透明传送出去,还需要在FPGA中完成将FIFO送出的数据进行数据分段(SENDCONTROL)、并/串转换(PSC0NTROL)、插“0”操作(AZERO)和增加标志字(AHEAD)等模块处理。经过这些处理,送出的就是满足HDLC协议的数据(sdataout)和全局时钟(sclkout)。FPGA串行通信控制器接收HDLC数据的原理为:首先,将接收到的数据帧的消息字段和附加的状态字段移入,然后根据选定的寻址模式,对接收帧中的目的地址进行识别,确认数据帧的发送地址是否为本设备,是本设备数据帧则进行接收数据并存储在FIFO中,当接收数据帧结束时,发出中