基于FGA的HDLC协议设计

上传人:最*** 文档编号:11175899 上传时间:2020-04-20 格式:DOCX 页数:20 大小:344.98KB
返回 下载 相关 举报
基于FGA的HDLC协议设计_第1页
第1页 / 共20页
基于FGA的HDLC协议设计_第2页
第2页 / 共20页
基于FGA的HDLC协议设计_第3页
第3页 / 共20页
点击查看更多>>
资源描述
摘要高级数据链路控制(HDLC)协议是数字通信中的重要协议之一。Altera公司的可编程门阵列(FPGA),设计了一种基于并行机制的高级数据链路控制(HDLC)协议控制系统。该系统采用模块组合的设计方法,使系统的复杂功能由各个模块组合实现,这种分块处理使得设计层次清晰且易于修改。该系统有效利用FPGA的内部硬件资源,实现了并行的多通道的HDLC协议报文的生成和解析。通过分析当前实现HDLC协议的一般方法,指出其存在的一些弊端,提出了一种利用FPGA编程实现HDLC协议的硬件处理方法,并对FPGA如何实现HDLC协议的帧序列校验循环冗余校验(CRC)进行了阐述。模块下载到硬件中测试通过,证实了FPGA实现HDLC协议的可行性,模块编程简单且易于修改使其在应用中具有很大的优越性。基于在数据通信中为了降低通信线路传输的误码率,需要采用高效能的差错控制方法。循环冗余校验由于编码简单且有效,是一种最常用的信道编码方。【关键词】:HDLC协议FPGACRC校验ABSTRACT High level data link control (HDLC) protocol is an important one in digital communication. Alteras programmable gate array (FPGA), design of parallel mechanism based on high level data link control (HDLC) Protocol control system. The system uses a combination of modular design method, complex combination of features from the various modules of the system implementation, this block makes the design is clear and easy to modify. The system effectively uses the FPGAs internal hardware resources, enabling parallel multi-channel HDLC protocol message generation and parsing. Through an analysis of the current implementation of HDLC Protocol General, pointed out that there are some drawbacks, have come up with a hardware processing of the HDLC protocol using FPGA programming methods and verification on FPGA implementation of HDLC protocol using FPGA programming methods and verification on FPGA implementation of HDLC protocol frame sequence-a cyclic redundancy check (CRC) explains. Module downloaded to the hardware test passed, confirm the feasibility of FPGA implementation of HDLC Protocol, application module programming simple and easy to modify so that it has a lot of advantages. In data communication in order to reduce the error rate of the transmission of communication lines, requires the use of high-efficiency error control method. Cyclic redundancy check CRC as the coding is simple and effective, is one of the most common channel coding.【Key words】HDLC protocol FPGA CRC check目录前言5第一章 协议概述6第一节 协议简介.6第二节 HDLC协议分析6第二章 基于FPCA的HDLC协议器设计.9第一节 FIFO缓存区及端口控制.9第二节 HDLC协议器.10第三章 综合和验证及结果.13第一节仿真及验证.13第二节系统模块图.14第三节现象及讨论.14心得体会.15参考文献.16附录.17前言在数据通信中,链路层协议种类繁多,从通信方式看,可以分为异步通信和同步通信,同步通信的协议也多种多样,有基于字符的通信协议,比如BSC协议、CD2协议和DDCMP协议等;也有基于比特的通信协议,比如HDLC协议,HDLC(High Levei Data Link Controi)协议是通信领域中应用最广泛的协议之一,它是面向比特的高级数据链路控制规程,具有差错检测功能强大、高效和同步传输的特点。目前市场上有很多专用的HDLC 芯片,但这些芯片大多因追求功能的完备,而使芯片的控制变得复杂。实际上,对于某些特殊场合的特殊用途( 如手持式设备) ,我们只需选择HDLC 协议中最符合系统要求的部分功能,设计一种功能相对简单、使用灵活的小型化HDLC 协议控制器。另一方面,随着深亚微米工艺技术的发展,FPGA(Fieid Programmabie Gate Array) 芯片的规模越来越大,其单片逻辑门数已超过上百万门。同时它还具有设计开发周期短、设计制造成本低、可实时在线检验等优点,因此被广泛用于特殊芯片设计中。本设计中采用Altera 公司的飓风系列 芯片EP2C8Q208C8 来实现HDLC 协议控制器。第一章 协议概述第一节 协议简介在种类繁多的链路层协议中,HDLC协议是一个在同步网上传输数据、面向比特的数据链路层协议。该协议主要是为全双工点对点操作提供完整的数据透明度,也支持对等链路,在每个链路终端都不具有永久性管理站功能。链路控制协议着重于对分段成物理块或包的数据进行逻辑传输,块或包由起始标志引导并由终止标志结束,也称为帧。所有面向比特的数据链路控制协议帧格式均是统一的,不论是数据还是单独的控制信息的传送均以帧为单位。作为典型的面向比特的数据链路控制协议,HDLC协议具有如下特点:协议不依赖于任何一种字符编码集;数据报文可透明传输,用于实现透明传输的“0比特插入法”易于硬件实现;全双工通信,有较高的数据链路传输效率,不必等待确认便可连续发送数据;所有帧均采用循环冗余校验(CRC),传输可靠性高;传输控制功能与处理功能分离,具有较大灵活性和较完善的控制功能。第二节 协议分析一、 HDLC帧结构HDIC是面向比特数据的传输协议,他对一次传输的信息的位数没有限制,因此适合于大量数据的传输。HDIC协议以帧格式传输信息,帧的基本格式如图1所示。标志地址控制信息帧校验标志8b8/16b8/16b8bn16/32b8b图1 HDLC帧的基本格式标志符 HDLC规程规定,一个完整的帧信息是以一个标志字开始,并以该标志字结束。两个标志字之间为数据段(包括地址段、控制段和信息段)。在本协议中,标志字为01111110(Ox7e)。地址段 表示接收端的地址号,可以是8 b或16 b。每个接收端都有惟一的地址,可以判断当前数据帧是否是发给自己。控制段 是最为复杂的字段,根据他的定义可将HDLC帧分为信息帧、监督帧和无编号帧。信息段 所要传输的数据。帧校验序列 用于对传输数据的检错与纠错。二、“O”位插入和删除HDLC协议规定以01111110为标志字,但传输的数据组合有可能与标(01111110)相同,为了防止接收端误判为帧头或帧尾,在一帧的帧头和帧尾之间每当传输连续5个“1”比特之后,就自动插入一个“0”比特,此“O”不进行CRC计算。而接收端在接收到帧头后,每连续接收到5个“1”比特,就自动将其后的一个“o”比特删除,以恢复信息的原有形式。经过此操作保证了数据链路的透明传输(即可以传输任意组合的比特流)。三、 CRC校验HDLC规程中数据位信息是以帧方式来传送,为了保证数据传送的可靠性,在一帧的格式中加入了帧校验(Frame Checking Sequence,FCS)序列。HDLC规程采用循环冗余校验码(CRC),对所传送的数据进行检错与纠错。在HDLC规程中,帧校验序列通常与一码生成多项式相对应。对于16位帧校验序列,码生成多项式为:P(x)=x16+x12+x5+1对于32位帧校验序列,码生成多项式为:P(x)= x32+x26+x23+x22+x16+x11+x10+x8+x7+x5+x4+x2+x1+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的自身特性,本设计中采用一个648的FIF0完成速率转换和数据缓存功能。FPGA内的功能模块如图所示。第二节 HDLC协议器通过HDLC协议分析可知,要将数据以HDLC协议透明传送出去,还需要在FPGA中完成将FIFO送出的数据进行数据分段(SENDCONTROL)、并串转换(PSC0NTROL)、插“0”操作(A ZERO)和增加标志字(A HEAD)等模块处理。经过这些处理,送出的就是满足HDLC协议的数据(sdataout)和全局时钟(sclkout)。FPGA串行通信控制器接收HDLC数据的原理为:首先,将接收到的数据帧的消息字段和附加的状态字段移入,然后根据选定的寻址模式,对接收帧中的目的地址进行识别,确认数据帧的发送地址是否为本设备,是本设备数据帧则进行接收数据并存储在FIFO中,当接收数据帧结束时,发出中断信号给ARM系统,请求接收HDLC数据。目的地址不是本设备的数据帧将被抛弃,流程图如图3所示。 一、时钟与分频器要求HDLC传输数率为t_clk,同时提供数据时钟。本设计中采用分频器对已有的时钟进行分频,产生所需的rd_clk作为FIF0读时钟及计数时钟。从FIFO读出的数据数率即为rd_clk的时钟周期。其中分频器以VHDL语言写成,是一个通用型分频器,程序代码如下。其中若要求对时钟进行X分频,则m=X2,n=X一1;if(clk in 7event and clk in=1)thenif(countO)the“clk o一O 7:count:=count+1:elseif(countm)thenclk o一1:count一count+1;elseif(countn)thencount二一O;elsecount:一count+1;end if:else null:end if: 二、数据分段及并串转换考虑到传输的数据量大,为保证数据的准确性,减少误码率,FPGA中设计了一个数据分段模块,该操作的功能就是产生一个门信号,将FIFO读出的数据以64个为一组进行编组。FIFO送出的数据是一系列8 b的并行数据,数据速率是rd_cIk,通过FPGA内并串转换模块PS_CONTROL将并行数据转换成serial_clk的串行数据。 三、插“0”及去“0”操作根据HDLC透明传输协议要求,为了避免数据段中出现与标志字同一模式的数据,要求在发送数据端进行插“0”操作:具体操作就是,除标志字外,只要遇到连续5个“1”,就自动插入一个“0”。FPGA内,功能块A ZER0实现对串行数据的插“o”操作。经过插“0”操作,串行数据长度将增加,串行数据的位数变成8 b64+n,行为插入的“O”的个数。同样,接收端同步建立后提取出的信息要去“0”,即遇到连续的5 个“1”时要将其后的“0”去掉。去“0”模块的VHDL 代码如下:. . . . . .if din =“1”thenif cnt = 5 thencnt: = 0;end if;cnt: = cnt + 1;elsecnt: = 0;(4)增加HDLC标志字HDLC规程指定,一个完整的帧结构以标志字开始并以标志字结束。在FPGA内,A HEAD功能模块完成给串行数据增加HDLC帧头与帧尾标志字ox7e。增加标志字过程中,为了保证串行数据的完整性和平滑性,在增加标志字时,对串行数据先做延时处理,同时注意保持数据与时钟的一一对应,避免相位差异产生误码。HDLC协议规定,所有信息传输必须以一个标志字开始,且以同一个标志字结束,这个标志字是01111110。开始标志到结束标志之间构成一个完整的信息单位,称为一帧。接收方可以通过搜索01111110来探知帧的开始和结束,以此建立帧同步。在帧与帧之间的空载期,可连续发送标志字来做填充。第三章 综合和验证及结果第一节 仿真及验证程序加载之前要先采用VHLOG开发工具进行逻辑综合与时序仿真。由于各功能模块之间多数信号相关,在各功能融合之前要对相关模块之问设计严格的时序约束条件,同时对时序逻辑进行优化设计,保证HDLC协议器正确输出稳定的数据流。为验证HDLC协议器的设计准确性,模拟了一组数据值为oxfc的HDLC帧数列,检查经HDLC协议器处理后的仿真波形(数据较长,没有完全显示)如图8所示。由图可知送出的数据sdata_out正确且与数据时钟sclk_out满足对应关系。 经HDLC协议器处理后的仿真波形第二节 系统模块图第三节 现象及讨论为合理利用FPGA内部的逻辑资源,对设计进行一系列布局布线约束:(1)由前期的论证可知,设计的矛盾主要集中在资源的消耗上,所有模块的优化目标定位为“Area”,除FIFO外,其他模块规划在一起;(2)将FIFO划分为独立的模块;(3)全局时钟绑定在Global资源上,并串、串并模块中的衍生时钟,根据和全局时钟的关系,设定为多周期路径。实际数据收发的稳定性和可靠性,也跟单板、温度等有关系。仿真完成后,在单板上进行飞线,对特定的收发电路进行电气连接,进行回环测试法,即发送端输出的数据由其接收端接收回来进行测试。在常温下,经过30小时的长时间运行测试后,接收和发送的数据做了对比,没有发现丢数据包和错数据包的情况。由测试结果可知,该HDLC收发电路的具有稳定性和可靠性。高低温实验由于条件所限未进行,单板的温度特性可由器件的温度特性大概推知,这里不做讨论。心得体会为期一周多的课程设计很快就结束了,这次的课程设计我的收获很大。首先,因为通信原理课程时间有限,所以学到的东西很有限。而通过平时的实验对通信原理系统设计有了一个初步的了解。但是对于一个具体的任务而言这些往往是不够的。为了很好的完成这次课程设计,我们翻阅了很多相关资料,而且请教了学长学姐,终于了解了HDLC通信协议的过程,以及CRC循环冗余校验的原理。同时熟悉了相关软件的使用和仿真软件的应用。 通过这次课程设计,不仅提高了我们的实际动手能力,而且加强了我们对专业知识的更加深入的掌握。同时也让我了解到团结合作的重要性,一个人所掌握的知识毕竟是有限的,通过大家思路的综合,得出的结论更加完善更加的有说服力。 课程设计是一个辛苦的过程,其中程序调试部分尤为纠结,但是正因为这一次又一次的不断改进发现错误的过程,让我们对其了解和认识更加深入彻底。在不断的改进中,我们的程序也在不断的完善,就像一个新的生命一样在我们手中诞生。这是一个神奇的过程,只有实际去操作才可能体会到最后成功的乐趣。 通过这次设计我也深刻体会到自己的不足,还有很多方面的知识都很欠缺。但是学习是一个长期积累的过程,我们只有在不断的摸索中前进。以后的学习中我们应该更加注重理论知识与实践相结合。通过不断的创新和探索,我们的思路和能力都会得到很大的提升。最后也感谢这次课程设计给予我们帮助的老师和同学,感谢这个团队带给我这么多天的收获。参考文献【1】吴继华,王诚Alter FPGACPLD设计(高级篇)M北京:人民邮电出版社,2005【2】刘宝琴Altera可编程逻辑器件及其应用M北京:清华大学出版社,1995【3】求是科技vHDL应用开发技术与工程实践M北京:人民邮电出版社,2005【4】樊昌信,等通信原理M北京:国防工业出版社,2001 【5】卞新高,宋丽丽,等车辆旋转连接部件综合信号传输系统设计J河海大学常州分校学报,2004,18(4):5457【6】张鑫用VHDL语言在CPLD上实现串行通信J今日电子。2004(2):27-36【7】XILINX公司CPLDFI圯A的技术手册zXILINX公司,2002【8】王福源,何进循环纠错码的VHDL语言实现J郑州大学学报,2005,37(3):48-50 附录主要程序:module head_creat(clk,rst,dataout);input clk,rst;output dataout;reg 2:0 num;reg dataout;always (posedge clk or negedge rst)if(!rst) num=3b000;else if(num=0) begin dataout=0; num=num+1; end else if(num=3b111) begin dataout=0; num=num+1; end else begin dataout=1; num=num+1; endendmodule/-/ Design Name : serial_crc_ccitt/ File Name : serial_crc.v/ Function : CCITT Serial CRC/ Coder : Deepak Kumar Tala/-module crc_ccitt(clk,rst,crc_en,data_in,crc_out,flag);input clk ;input rst,crc_en ;input data_in ;output crc_out,flag;reg 15:0 lfsr;reg 3:0 num1;reg 3:0 num2;reg crc_out;reg flag;always (posedge clk or negedge rst)if (!rst) begin lfsr = 16hFFFF; num1 =4b0; num2 =4b0; flag =0;endelse begin if(crc_en) begin flag=1; lfsr0 = data_in lfsr15; lfsr1 = lfsr0; lfsr2 = lfsr1; lfsr3 = lfsr2; lfsr4 = lfsr3; lfsr5 = lfsr4 data_in lfsr15; lfsr6 = lfsr5; lfsr7 = lfsr6; lfsr8 = lfsr7; lfsr9 = lfsr8; lfsr10 = lfsr9; lfsr11 = lfsr10; lfsr12 = lfsr11 data_in lfsr15; lfsr13 = lfsr12; lfsr14 = lfsr13; lfsr15 = lfsr14; crc_out=data_in; if(num1=4b1111) begin num2=4b1111; num1=num1+1; end else num1=num1+1; end else if(flag) begin crc_out=lfsrnum2; num2=num2-1; if(num2=0) flag=0; else num2=num2; end else crc_out=0; endendmodule
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!