HDLC协议控制器设计_第1页
HDLC协议控制器设计_第2页
HDLC协议控制器设计_第3页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内容摘要 1关键词 1Abstract 1Key Words 11. 绪论 21.1研究的意义21.2本设计的主要功能 22. HDLC协议综述 32.1 HDLC协议的产生背景32.2 HDLC协议的帧结构42.3 HDLC协议的规程分析 73. HDLC协议控制器的设计 83.1 HDLC协议控制器设计方案选择83.2 FPGA的设计原则93.3 HDLC协议控制器总框架103.4 HDLC帧发送器的设计 113.5 HDLC帧接收器的设计 15参考文献 18致谢 19说明:在本页中,“目录”二字居中,宋体小二号,加黑,其它统一由宋体小四号,不加黑排版打印、行间距为1.5内容摘要:HDLC

2、 (高级数据链路控制)协议是一种面向比特的链路控制规程, 广泛的用作数据链路层的控制协议。论文在分析和研究HDLC协议的基础上,提出了一种基于FPGA (现场可编程门阵列)的 HDLC协议控制器的设计。对 HDLC协 议控制器的功能进行划分,分别设计了标志位的检测和生成、插零和删零、FCS的校 验等控制模块。采用VHDL硬件描述语言在FPGA内部实现HDLC协议的各功能模块,本设计 使用Quartus II 9.1平台实现代码编写、综合、编译、仿真。对 HDLC链路控制规程 功能,帧控制和FCS校验功能进行了仿真实现。关键词:HDLC ; FPGA;帧收发器;Abstract :(宋体,小四号

3、,加黑)xxxxxxxxxxxxxxxxxxx XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXo (宋体,小四号,不加黑)Key words:(宋体,小四号,加黑)xxxDxxxDDxxx口(宋体,小四号,不加黑)1绪论1.1研究的意义HDLC是一个在同步网上传输数据、面向位的数据链路层协议,它是由国际标准 化组织(ISO)制订的。该协议被广泛的用作数据链路层的控制协议,HDLC空制器在网络设备中得到大量的使用,如列车通信网络技术、综合业务数字网ISDN X.25分组交换网以及帧中继网等。怎样在产品中设计与实现HDLC网络协议也是一个技术研究的热点。H

4、DLC勺一般实现方法为采用ASIC器件和软件编程等。ASIC的芯片有Motorola 公司的MC92460,ST公司的MK5025等。应用这些ASIC器件时设计简单,功能针对性 强,性能可靠,适用于特定用途的大批量产品中。但是这类ASIC芯片存在开发时间长,一旦芯片固有缺陷就不容易解决等问题,而且HDLC标准的文本较多,ASIC芯片出于专用性的目的难以通用于不同版本,缺乏灵活性。HDLC的软件编程方法灵活,通过修改程序就可适用于不同的 HDLC应用,但程序运行占用处理器资源多,执行速 度慢,实时性不易预测。FPGA( Field Programmable Gate Array,现场可编程门阵列

5、)器件采用硬件处理信号,可以反复编程,能够兼顾速度和灵活性,并能多路并行处理。在中小批量通 信产品的设计中,FPGA是取代ASIC实现HDLC功能的一种合适选择。1.2本设计的主要功能本文实现了一种采用FPGA的HDLC协议控制器的设计和功能仿真。首先综述了 HDLC协议的产生背景和帧结构,提出了基于FPGA设计模式的控制器。以HDLC协议帧的接收和发送为主体,在明确FPGA的设计原则的基础上,对帧收发器进行分 功能模块设计,编写代码,时序分析。以发送器为例,其中包括了标志位的生成,插 零,FCS校验等模块的设计。接收器跟发送器设计思想类似。 在完成各个模块的设计 后,使用了 Quartus

6、II 9.1自带仿真器对各个模块的功能一一进行了仿真,并对HDLC协议及其规程进行了验证和分析。2 HDLC协议综述2.1 HDLC协议的产生背景计算机通信的早期,人们发现对于经常发生误码的实际链路,只要加上了合适的控制规程,就可以是通信变得比较可靠。这些规程都是数据链路层的协议,都是面向字符的。所谓面向字符,就是说在链路上所传送的数据都是由规定的字符集中的字符 所组成的。而且,链路上传送的控制信息也必须由同一个字符集中的若干指定的控制 字符构成。面向字符的链路控制规程曾在计算机网络的发展过程中起了重要的作用,但 随着发展,这种规程就逐渐暴露出其弱点。其主要限制是:1通信线路的利用率低,因为它

7、采用的是停止等待协议,收发双方交替地工作。2.所有通信设备必须使用同样字符的代码,而不同版本的规程要求使用不同的代码。3只对数据部分进行差错控制,若控制部分出错就无法控制,因而可靠性差。4不易扩展,每增加一种功能就需要设定一个新的控制字符。1974年,IBM公司推出了著名的体系结构 SNA。在SNA的数据链路层规程 上采用了面向比特的规程 SDLC (Synchronous Data Link Control)。后来IBM 将此 规程提交美国国家标准协会 ANSI和国际标准化组织ISO,建议成为国家和国际 标准。ANSI 把 SDLC 修改为 ADCCP (Advaneed Data Comm

8、unication Control Procedure)作为美国国家标准,而ISO把SDLC修改后称为 HDLC (High-level Data Link Control),并作为国际标准ISO3309。HDLC协议有两种链路配置和三种数据传送方式:1. 非平衡模式:a. 正常响应方式 NRM (Nomal Response Mode)b. 异步响应方式 ARM (Asynchronous Response Mode)2. 平衡模式:c. 异步平衡方式 ABM (Asy nchron ous Bala need Mode)2.2 HDLC协议的帧结构HDLC的帧格式由六个字段组成,这六个字段

9、可以分为五种类型,即标志序列(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验字段(FCS)。在帧结 构中允许不包含信息字段I。标志地址控制信息帧校验序列标志FACIFCSF0111111016/8 位16/8 位N位16/32 位01111110图1 HDLC帧结构标志序列(F)HDLC指定米用01111110为标志序列,称为F标志。要求所有的帧必须以 F标志 开始和结束。接收设备不断地搜寻F标志,以实现帧同步,从而保证接收部分对后续 字段的正确识别。另外,在帧与帧的空载期间,可以连续发送F,用来作时间填充。在一串数据比特中,有可能产生与标志字段的码型相同的比特组合。 为了防止这

10、 种情况产生,保证对数据的透明传输,采取了比特填充技术。当采用比特填充技术时, 在信码中连续5个“ 1”以后插入一个“0”;而在接收端,则去除5个“ 1”以后的“0”, 恢复原来的数据序列,如图4所示。比特填充技术的采用排除了在信息流中出现的标 志字段的可能性,保证了对数据信息的透明传输。数据中某一段比特组合恰好出现和F字段一样的情况会误认为是F字0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0发送端在5个连1之后00 1 00 1 1 1 1 1 0 1 000 1010填入填入0比特再发送出去0比特在接收端将5个连1之后0 0 1 0 | 0 1 1 1 1 1 10

11、 0 1 0 1 0图2比特填充当连续传输两帧时,前一个帧的结束标志字段F可以兼作后一个帧的起始标志字 段。当暂时没有信息传送时,可以连续发送标志字段,使接收端可以一直保持与发送 端同步。地址字段(A)地址字段表示链路上站的地址。使用平衡方式(采用 ABM,地址字段写入应答站 的地址。HDLC协议没有给出地址字段的具体格式,只对其扩充方法及全站地址、无站地 址给出了定义。考虑到实际的需要与实现上的方便,定义地址字面结构如下:012345671C/RXXXXXXX -未使用BitO置“T,表示地址字段只有一个字节C/R置“ 1”表示命令帧,置“ 0”表示响应帧图3地址字段定义地址字段的长度采用8

12、bit时,最多可以表示64个站的地址。地址字段 bit2bit7 为“ 111111'时,定义为全站地址,即通知所有的接收站接收有关的命令帧并按其动 作;bit2bit7为全“ 0”比特为无站地址,用于测试数据链路的状态。因此有效地址 共有62个。控制字段(C)控制字段用来表示帧类型、帧编号以及命令、响应等。由于 C字段的构成不同, 可以把HDLC帧分为三种类型:信息帧、监控帧、无编号帧,分别简称I帧(Information)、 S帧(Supervisory)、U帧(Unnumbered)。在控制字段中,第1位是“ 0”为I帧,第1、 2位是“10”为S帧,第1、2位是“11”为U帧。

13、比特12345678I帧0N( S)P/FN( R)S帧10S1S2P/FXXXU帧11M1M2P/FM3M4M5图4基本模式控制字段比特12345678910111213141516I帧0N( S)P/FN( R)S帧10S1S2XXXXP/FN( R)U帧11M1M2UM3M4M5P/FXXXXXXX注:X-未使用,置0U-未定义,置1图5扩充模式控制字段信息字段(I)信息字段内包含了用户的数据信息和来自上层的各种控制信息。长度小于58Bytes。帧校验序列字段(FCS)帧校验序列用于对帧进行循环冗余校验,其校验范围从地址字段的第1比特到信 息字段的最后一比特的序列,并且规定为了透明传输而

14、插入的“0”不在校验范围内, 长度定义由于单板中有部分 HDLC链路采用HDLC控制器实现,而HDLC控制器只 能支持16bits的CRC2.3 HDLC协议的规程分析1使用统一的帧格式:实现数据、命令和响应的传输,实施起来方便;2采用 0'位插入法:使得规程可以支持任意的位流传输,保证了信息传输的透 明性;3采用窗口机制和捎带应答机制:全双工工作方式,允许在未收到确认的情况下, 连续发送多个帧,提高了信息传输的效率;4采用帧校验序列,并设置窗口序号,可以提高信息传输的正确性和可靠性。 总之,面向二进制位的控制规程比面向字符型的控制规程具有较高的优越性。3 HDLC协议控制器的设计3.

15、1 HDLC协议控制器设计方案选择HDLC协议控制器实现方法有三种:ASIC器件、软件编程以及FPGA器件。实现HDLC协议的ASIC芯片有Motorola公司的 MC92460、ZILOG 公司的Z8O23O/85230 ST公司的MK5025等。这些集成电路使用简易,功能针对性强,适 用于特定用途的大批量产品中。但 HDLC标准的文本较多,ASIC芯片出于专用性的 目的难于通用于不同版本,缺乏灵活性。而且,专用于HDLC的ASIC芯片其片内 数据存储器容量有限,通常只有不多字节的FIFO (先进先出存储器)可用,存储深度较浅,对于某些应用来说,当需要扩大数据缓存的容量时,只能对ASIC芯片

16、再外接存储器或其它电路,这样,ASIC芯片在使用中就会有一定的限制。HDLC的软件编程实现,包括 PC机和单片机,方法灵活,具有成本低、硬件结 构简单、软件编程容易等特点。通过修改程序就可以适用于不同的HDLC协议要求的应用。但是程序运行占用处理器资源多, 执行速度慢,对信号的时延和同步性不易 预测。使用FPGA (Field Programmable GateArray,现场可编程门阵列),能够有效的综合 前两种方法的优点。FPGA采用硬件技术处理信号,可以通过软件反复编程使用,能 兼顾速度和灵活性,可以实时预测和仿真。VHDL语言设计灵活,可以用模拟器来验 证程序的功能和时序的正确;不要求

17、设计者非常熟悉器件的内部结构, 使得设计者可 以集中精力从事设计构思,可以在各 EDA平台上运行。在中小批量通信产品的设计 生产中,用FPGA实现HDLC功能是一种较好的实现途径。3.2 FPGA的设计原则完整的FPGA设计流程分为电路设计与输入、功能仿真、综合、综合后仿真、 实现、布局布线后仿真、配置下载与调试等主要步骤。在设计FPGA系统时,主要考虑以下几个原则:面积和速度的平衡原则与互换原 则、硬件原则、系统原则和同步设计原则。1)面积和速度的平衡原则与互换原则:这里的“面积”是指一个设计所消耗的 FPGA的逻辑资源数量。“速度”是指 设计在芯片上稳定运行时所能够达到的最高频率,与设计时

18、众多时序特征量密切相关。一般来说,速度的优先级要高于资源耗费。当两者冲突时,采用速度优先的准 则。2)硬件原则对HDL代码编写而言,它的本质作用在于描述硬件。所以评判一段HDL代码的优劣的最终标准是其描述并实现的硬件电路的性能(包括速度和面积两个方面的指标)。3)系统原则系统原要求设计者能够通过全局、整体上把握设计,从而提高设计质量,优化设 计效果。4)同步设计原则同步时序设计是FPGA设计的最重要原则之一。异步电路容易产生毛刺和竞争冒险;同步时序电路主要信号和输出信号都由时钟 驱动触发器产生,能够避免毛刺,信号稳定。从资源使用方面考虑,在FPGA中,同步设计并不比异步设计浪费资源。特别需 要

19、注意的是,不同的时钟域的接口需要进行同步。还要考虑全局时钟布线资源的利用。全局时钟资源由特殊的工艺实现,具有很高 的扇出性能,且到达芯片内部的所有可配置单元、F0单元和选择性块RAM的时延和抖动都为最小。逻辑设计中使用非常频繁的时钟信号、预设置信号、复位信号和使 能信号均应从全局脚引入。3.3 HDLC协议控制器总框架帧发送器总控制端local if帧接收器由结构图可以看出,HDLC协议控制器分为总控制模块、帧发送器、帧接收器, 按具体功能模块划分,每个帧控制器又划分为控制、数据缓冲、插零、删零、标志位 等模块。各个模块之间的连接时依靠控制信号和寄存器的配置实现的,通过配置好总控制模块的各个控

20、制信号,从而组成整体的HDLC帧的收发功能。具体电路如下图所示:3.4 HDLC帧发送器的设计帧发送器是将信息按照HDLC协议的格式封装成帧并发送出去,其中包括了帧头 帧尾标志位的插入、插零、FCS校验和发送模块。通过配置功能选择寄存器 addr选 择发送功能,并设置好时钟、复位等控制信号即可实现帧发送器的功能。3.4 .1帧发送器的主要功能1)插零发送器接收到数据时,首先检测是否数据中有 5个连续的 1'如若有就在其后 面插入一个 0'。2)标志位生成当接收到信号开始发送数据时,将“ 7E”加在帧头和帧尾,并发送出去。3)CRC校验帧校验序列用于对帧进行循环冗余校验,其校验范

21、围从地址字段的第1比特到信 息字段的最后一比特的序列,并且规定为了透明传输而插入的“0”不在校验范围内。4)数据缓冲3.4 .2帧发送器的组成控制模块txfcstxcha nnel帧发送器功能组成模块数据缓冲模块(txbuff):数据缓冲模块负责将接收到的数据缓存起来,然后供后续模块调用数据。其端口定义如下图:txbuff:txbuff blkrdbuffrst nfulltxclktxdataavailtxenabl&txdonewrtxdataoutbuff7 .0txdatainbufl7 OJ数据缓冲模块管脚定义图初始化之后,当控制端收到发送数据的信号时,将 txenable和

22、wr端口置1' 数据由txdatainbuff输入,txbuff开始缓冲数据,当数据缓冲满了将 full置 1'或达 到了预定的数值时会将txdone置1'数据缓冲完后,txdataavail置1'表示此时 缓冲器内数据可以供调用,数据由txdataoutbuff输出。txbuff模块对帧的数据量根据存储模块的大小和后面数据处理能力来决定,模块 输出的8比特并行数据。 CRC校验模块(txfcs):在通信系统中传输数据的可靠性即误码率是非常重要的,因此在传输的数据中需 要插入一定的校验信息。根据 HDLC协议的要求,数据发送前要对帧内所有的数 据进行CRC多项式

23、的计算,并将结果一起发送出去,CRC校验的模块引脚图如下图:txfcs: txfcsblkack_Jfcsenrebuffrdyvalidframe-crst nwntebytetxclktxdata7.0jtxdataavailtxdatabiifff7.01发送器CRC校验模块系统初始处于idle_st状态,当收到读数据信号时(rdy置 1',进入read_st状 态,如果txdataavail有效txfcs将rdbuff置“1”开始从txbuff中读取数据,然后将数 据一一进行CRC多项式运算,并将数据一起封装在帧里面发送出去。 txs ynch 模块:txsynch模块的功能是

24、将总控制模块、txbuff模块、txfcs模块和txchannel模块连接,模块引脚图如下:txsy nch:txsynch blkaborte(ftrans_d1abortframe d2abortedtrans d2elk d1abortframe d1elk d2ackrdv d1rdy d2rst_nvalidframedlvalidframe_d2wntebytedlwntebyte_d2txd_d17 .0txsy nch模块引脚图 txcha nnel 模块:txchannel模块又由zeroins、txcont、flagns3个模块构成,分别负责标志位的生成和插零功能的实现,其

25、模块引脚图如下:txchannel:txcore blkabortftamerst ntxclkabort edtranstxenrdvvalidframe write byte txdata7. 0txtxcha nnel模块引脚图1)标志位生成模块flagns:标志位生成模块负责对待发送的数据进行帧头尾的添加,其端口定义图如下图:flaginsflagmachineflagns模块引脚图当该模块接收到控制使能信号时(TXEN置”,串行数据由TXD端口输入,TX端口输出已加好标志位的串行数据流。标志位的仿真时序图如下图:莎03 4:国 addrclk_iITcs_n報6 dataA1.r瑕o

26、e_n1.rst i1* 1.rxA 1.rzclkrLrm rLrT rm rLrmrLrm n rm ri rLrm rLii>2.rxena 2.tx 一L !_Tl2.txclkjT_rTjTjT_a_rmjT_n_rLrm_rmjUT_n_rrn_mtxenwe_n发送端标志位仿真时序图设定发送数据为“10101010',由图可知数据流中已加入“ 0x7E”的标志位,这 是构建HDLC帧的第一步。2)插零模块zeroins:为了保证数据链路的透明传输(即可以传输任意组合的比特流),HDLC发送器在遇到5个连“1”的情况下,为了防止接收端误判帧头或帧尾,必须在其后填充一

27、个“0”比特。其模块引脚图如下:zeroins:backe ndmachi ne当data7.0端口接收到数据时,在时钟上升沿来到时利用移位寄存器,进行 8位 数据并串转换,在模块内定义一个5位的寄存器,对转换后的连续的5比特数据进行 求与运算,若是连续的5个“1”比特,则在后面插入一个“ 0”比特。插零功能仿真时序图如下:发送端插零模块仿真时序图由图可以看出,输入数据值为“ 11111000时,由于数据的高5位均为“ 1”,根据每逢5个连续的“ T插一个“ 0”,所以输出的数据流中变成了“ 1111100003.5 HDLC帧接收器设计帧接收器设计的模块与帧发送器的设计过程类似,接收器负责标

28、志位检测、CRC生成、删零模块,基本与帧发送器相逆。同样帧接收器的数据缓冲模块也与帧发送器 的设计过程相似。通过配置addr寄存器即可实现HDLC帧接收器的整体功能。3.5 .1帧发送器的主要功能1)标志检测:此模块检测比特流中的“ 7E',作为数据帧开始和结束的标志。2)删零:接收数据时,每遇到连续的 5个“ 1”,就将其后面的一个“ 0”删掉3)CRC检测:采用CRC-12也可以不进行检测。3.5 .2帧发送器的组成rxfcsrxbuff控制模块rxsynchrxcha nnel数据缓冲模块(rxbuff):帧接收器的数据缓冲模块,跟发送器的缓冲模块功能相似,但是逻辑相逆。这里 是

29、将从txchannel中收到的数据缓存起来,等到缓冲满了,供用户调用数据。 数据缓冲模块引脚图如下:rxbuff: rxbuff blkelkeofoverflowrdrxrdyrstnframesize10.0wrbuffrxdat abuffo ut|7 .0databuffT7 01 rxcha nnel 模块:rxchannel 也包含了 rxcont、flagdetect、zerodetect 这 3 个模块。 Rxchannel模块引脚图如下:rxchannel:rxchannel blkRxchannel模块引脚图1)标志位检测功能模块引脚图:FaaDetect:flaa det

30、ectrstAbortRXFlagDetectRxclkRXDRxEnRXEriJD接收器标志位检测引脚图标志位检测的主要功能是检测接收到数据流的帧头,确定帧的边界。帧头判别式 如下:FlagVar := not ShiftReg(O) and ShiftReg(l) and ShiftReg (2) and ShiftReg(3)and ShiftReg and ShiftReg (5) and ShiftReg (6) and not ShiftReg(7);FlagDetect <= FlagVar ;如果检测到FlagDetect其值为高,则表明检测到帧头的出现,这样就可将为下个

31、模 块提高控制信号,提示可以开始接收数据。若为零,则表示帧头还未到来。标志位检测功能模块仿真时序图如下: addr clk_l cs_n data int_rx oe_n rsti rx rxclk rxen tkIll1:3l1H1n11h1illiiailnailailiiiihi1!iiip iihiiiiiii1iHilia(iiiiiiillii aii >i i r i i i i i h | i i i011111111ll1iaaiaa1 1 11 1 1iaiiiiai111iIg11L1 r1rLrmnTLRnsinnTLHn TLTLT1TLTIJirmjinnTL

32、TLnnnr11I1111I111iaiiiiii11标志位检测功能模块仿真时序图1由图可知,输入标志位“ 0x7E”之后紧跟着的是“ 数据流。输出数据data如下图所示:淨Z|%2we_n dataCOlrar1 1 iijtB1jndataCUrcrda-ta2urcir*2.dataESlrei-rdataC4r(nrrndata9rEn tIIdataCGlrcri_>3.datatTlreri_标志位检测功能模块仿真时序图2这是输出的8比特并行数据,两组数据分别是“ 11110000'和“ 00001111”,可见帧接收器正确的接收到了发出的数据。2)零检测功能模块引脚

33、图:ZeroDetect:zero backend零检测功能模块引脚图零检测功能模块是检测比特流中连续“ 1”的个数,向后面的提供控制信号,以完成删零判断,检测帧结束标志的功能。模块内设置一个计数器,用来计算连续“1的个数。若是计数值为6且下一接收比特为“ 0”表明检测到结束标志。当计数器值 为5且下一比特为“ 0”则表明该“ 0”比特应该删去。零检测功能模块仿真时序图如下:Name0 ps640, 0 nsI, 2S usk 92 us2, 5i,Ia 2.oe_n rst_i rxrxclkrxentx»2毋2,txclktxenU120. 025 nsJ.rLrLrLrLrmnrLrLrLrLruLTLrLrLrLrmnrLrLrLrLrL,rLrLrLrmrLnrLTLrmnRarLr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论