HDLC协议控制器的设计解读
- 格式:doc
- 大小:680.47 KB
- 文档页数:23
HDLC协议概述协议名称:HDLC协议(High-Level Data Link Control Protocol)概述:HDLC协议是一种数据链路层协议,用于在物理链路上可靠地传输数据。
它提供了数据的封装、帧同步、流控制、差错检测和纠错等功能。
HDLC协议广泛应用于各种通信网络,包括广域网(WAN)、局域网(LAN)和串行通信链路等。
1. HDLC协议的基本原理HDLC协议采用点对点(Point-to-Point)或多点(Point-to-Multipoint)拓扑结构,通过数据链路层进行数据传输。
它将数据分割成一系列的帧(Frame),并在每个帧中添加控制信息,以确保数据的可靠传输。
2. HDLC协议的帧结构HDLC帧由以下几个部分组成:- 帧起始标志(Flag):一个字节的特定字符,用于标识帧的起始。
- 地址字段(Address):一个字节的地址标识,用于多点链路中的目标站点识别。
- 控制字段(Control):一个字节的控制信息,用于控制数据的流向和帧的类型。
- 信息字段(Information):可选的数据字段,用于携带传输的有效数据。
- 帧检验序列(FCS):用于检测帧中的差错,通常采用循环冗余校验(CRC)算法。
- 帧结束标志(Flag):一个字节的特定字符,用于标识帧的结束。
3. HDLC协议的工作模式HDLC协议支持三种工作模式:- 基本模式(Normal Mode):用于点对点链路,包含单个发送站点和单个接收站点。
- 非平衡模式(Asynchronous Balanced Mode,ABM):用于多点链路,包含多个发送站点和单个接收站点。
- 平衡模式(Synchronous Balanced Mode,SBM):用于多点链路,包含多个发送站点和多个接收站点。
4. HDLC协议的流控制HDLC协议通过控制字段实现流控制,包括以下几种方式:- 停止-等待流控制(Stop-and-Wait Flow Control):发送方发送一个帧后,等待接收方确认后再发送下一个帧。
2019年第16期信息与电脑China Computer & Communication软件开发与应用基于ARM的HDLC协议通信控制器设计与实现何 非(民航云南空管分局 技术保障部,云南 昆明 650000)摘 要:笔者采用ST公司ARM处理器STM32F103RCT6处理器,通过软件方式实现了使用高级数据链路控制(HDLC)协议封装的雷达数据报文在异步串口、以太网、USB等多种接口之间的数据双向传输。
该控制器的硬件成本低、接口丰富、使用灵活,能够满足民航空管系统雷达信号的通信需求。
关键词:高级数据链路控制;ARM;雷达数据处理中图分类号:TP273 文献标识码:A 文章编号:1003-9767(2019)16-075-03Design and Implementation of HDLC Protocol Communication ControllerBased on ARMHe Fei(Yunnan ATM Sub-bureau, CAAC, Kunming Yunnan 650000, China)Abstract: In this paper, STM32F103RCT6 processor, an ARM processor of ST company, is used to realize bidirectional data transmission between asynchronous serial port, ethernet, USB and other interfaces of radar data message encapsulated by HDLC protocol through software. The hardware cost of the controller is low, the interface is rich, and the use is flexible. The performance of the controller meets the communication requirements of the radar signal of the civil aviation air traffic control system.Key words: Advanced Data Link Control; ARM; Radar Data Processing0 引言高级数据链路控制(High-Level Data Link Control,HDLC)是一个在同步网上面向Bit位的数据链路层协议,具有透明传输、可靠性高、传输效率高等特点,可以实现点到点或者点到多点的数据传输,在民航空管系统使用的雷达信号通常采用HDLC协议进行传输。
HDLC协议简介HDLC(High-Level Data Link Control)协议是一种数据链路层的协议,用于在点对点和多点网络中的数据传输。
它提供了信道复用、错误检测和纠正、流量控制和数据传输确认等功能。
本文将详细介绍HDLC协议的概念、设计原理、工作方式以及在实际应用中的应用场景。
概念HDLC协议是由国际电信联盟(ITU)制定的一种面向比特同步传输的链路层协议。
它定义了帧的结构、传输模式和控制流程。
HDLC协议可以用于各种不同的物理介质,如同轴电缆、光纤和无线电频谱等。
它被广泛应用在广域网(WAN)和局域网(LAN)中,特别是在X.25、ISDN和PPP等网络协议中。
帧结构HDLC协议使用点对点的通信模式,通信双方分别被称为发送方和接收方。
数据在发送方被分成一系列的帧进行传输,接收方对帧进行接收、检测和处理。
HDLC帧由几个字段组成,如下所示: 1. 标志字段:标志字段由16位或8位的特定比特模式组成,用于标识帧的开始和结束。
2. 地址字段:地址字段用于在多点网络中识别接收方。
3. 控制字段:控制字段指定了帧的类型和控制信息,如传输模式和流量控制方式等。
4. 信息字段:信息字段包含数据部分,用于传输数据。
5. 校验字段:校验字段用于检测帧传输过程中的错误。
6. 填充字段:填充字段用于填充数据,使帧长度满足最小要求。
传输模式HDLC协议定义了三种传输模式:同步传输模式、异步传输模式和透明传输模式。
同步传输模式在同步传输模式下,帧的传输速率是固定的,发送方和接收方的时钟是同步的。
发送方按照时钟周期将数据拆分成一系列的比特,并依次传输。
接收方根据时钟周期对比特进行采样,确保数据的正确接收。
同步传输模式适用于相对稳定的传输环境,如同轴电缆和光纤等。
异步传输模式在异步传输模式下,帧的传输速率是可变的,发送方和接收方的时钟是不同步的。
发送方在帧的开始和结束时添加标志字段,接收方通过检测标志字段来确定帧的起始位置。
HDLC协议IP核的设计(全文)《电子设计工程杂志》2014年第十一期1HDLC的帧结构首先回顾一下HDLC基本的帧结构形式。
HDLC是面向比特的链路控制规程,其链路监控功能通过一定的比特组合所表示的命令和响应来实现,这些监控比特和信息比特一起以帧的形式传送。
每帧的起始和结束以”7E”(01111110)做标志,两个”7E”之间为数据段(包括地址数据、控制数据、信息数据)和帧校验序列。
帧校验采用CRC算法,对除了插入的”零”以外的所有数据进行校验。
为了避免将数据中的”7E”误为标志,在发送端和接收端要相应地对数据流和帧校验序列进行”插零”及”删零”操作。
2原理框图基于FPGA的HDLC协议的实现原理框图如图1所示。
该框图包括3个部分:对外接口部分、HDLC发送部分、HDLC接收部分。
以下对3个部分的实现分别进行论述。
2.1对外接口模块对外接口部分主要实现HDLC对外的数据交换。
包括CPU接口、发送FIFO、发送接口、接收FIFO以及接收接口。
本设计是以总线的形式实现HDLC与外部CPU的通信。
当需要发送数据时,外部CPU通过总线将待发数据写入FIFO(FIFO的IP核在各开发软件中都是免费提供的,在程序中只需直接调用即可,故在此不再详细描述)。
之中。
发送数据准备就绪标志(TX_DAT_OK);接收数据时,当对外接口模块接收到数据有效信号时,根据接收模块发来的写信号(WR_MEM)将数据写入接收FIFO中。
接收完一帧数时向CPU 发送中断信号(INT),通知CPU读取数据。
2.2HDLC发送模块HDLC发送部分主要实现HDLC发送功能。
当接收到数据准备就绪标志(TX_DAT_OK)后,向对外接口模块发送读使能(RD_MEM_EN)和读信号(RD_MEM),通过局部总线将待发数据存入发送缓冲区,在T_CLK的控制下将数据从HDLC_TXD管脚发出。
数据发送模块采用状态机来完成发送各个阶段的切换。
状态切换流程图如图2所示。
HDLC协议原理⼴域⽹简称WAN,是⼀种跨越超⼤的、地域性的计算机⽹络集合。
通常跨省、市、甚⾄⼀个国家。
⼴域⽹包括很多⼦⽹,⼦⽹可以是局域⽹;也可以是⼩型的⼴域⽹。
由于串⾏通信有着传输距离远、成本低的特点,所以远距离、超远距离的通信中较常使⽤串⾏通信。
HDLC协议及其特点HDLC(⾼级数据链路控制)协议,是⼀种数据链路层的协议。
HDLC是⼀个ISO标准的⾯向位的数据链路协议,其在同步串⾏数据链路上封装数据,最常⽤于点对点链接。
HDLC主要有以下⼏个特点: ①协议不依赖于任何⼀种字符编码集。
②数据报⽂可透明传输,⽤于透明传输的“0⽐特插⼊法”易于硬件实现。
③全双⼯通信,不必等待确认可连续发送数据报⽂,有较⾼的数据链路传输效率。
④所有帧采⽤CRC校验,并对信息帧进⾏编号,可防⽌漏收或重收,传输可靠性⾼。
⑤传输控制功能与处理功能分离,具有较⼤的灵活性和较完善的控制功能。
⑥ HDLC的主要缺点在于,没有指定字段来标识已封装的第三层协议。
因此,已经基于HDLC定义了其他⼏种协议。
HDLC⽀持的传输模式异步传输模式:是以字节为单位来传输数据,并且需要采⽤额外的起始位和停⽌位来标记每个字节的开始和结束。
因此,每个字节的发送都需要额外的开销。
可以⾯向点对点或点对多点的传输。
同步传输模式:是以帧为单位来传输数据,在通信时需要使⽤时钟来同步本端和对端设备的通信。
只能⽤于⾯向点对点的传输。
DCE(数据通信设备),提供了⼀个⽤于同步DCE设备和DTE设备之间数据传输的时钟信号,通常情况下使⽤DCE产⽣的时钟信号。
HDLC接⼝地址借⽤接⼝没有IP地址,就⽆法⽣产路由,也就⽆法转发数据报⽂。
IP地址借⽤允许⼀个没有IP地址的接⼝从其他的接⼝上借⽤IP地址,这样可以避免⼀个接⼝独占IP地址,从⽽造成IP地址的浪费。
⼀般是借⽤loopback接⼝的IP地址。
因为这类接⼝总是处于活跃(active)状态,因⽽能提供稳定可⽤的IP地址。
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
HDLC(High-Level Data Link Control)高层数据链路协议是一组用于在网络结点间传送数据的协议。
在HDLC中,数据被组成一个个的单元(称为帧)通过网络发送,并由接收方确认收到。
HDLC协议也管理数据流和数据发送的间隔时间。
HDLC是在数据链路层中最广泛最使用的协议之一。
现在作为ISO的标准,HDLC是基于IBM的SDLC协议的,SDLC 被广泛用于IBM的大型机环境之中。
在HDLC中,属于SDLC 的被称为通响应模式(NRM)。
在通常响应模式中,基站(通常是大型机)发送数据给本地或远程的二级站。
不同类型的HDLC被用于使用X.25协议的网络和帧中继网络,这种协议可以在局域网或广域网中使用,无论此网是公共的还是私人的。
HDLC的基本原理和应用场景1. HDLC简介HDLC(High-level Data Link Control)是一种数据链路层协议,用于在计算机网络中进行数据的传输和错误检测。
它是一种面向比特的协议,通过帧的形式将数据从发送方传输到接收方,并提供可靠的数据传输和流量控制。
2. HDLC的基本原理•帧结构:HDLC使用帧来传输数据,每个帧由开始标志、地址域、控制域、信息域、FCS(Frame Check Sequence)和结束标志组成。
开始标志和结束标志用于标识一个帧的开始和结束,地址域用于标识帧的接收方,控制域用于设置帧的控制信息,信息域用于传输数据,FCS用于检测错误。
•流量控制:HDLC支持两种流量控制机制,一种是基于窗口的流量控制,另一种是基于令牌的流量控制。
基于窗口的流量控制通过发送方和接收方的窗口大小来控制数据的发送和接收速率。
基于令牌的流量控制则是通过发送方和接收方之间的令牌来控制数据的发送和接收。
•错误检测:HDLC使用循环冗余检测(CRC)来检测数据传输过程中的错误。
发送方在发送数据之前,会计算数据的CRC值,并将CRC值添加到帧的FCS字段中。
接收方在接收到数据后,会重新计算CRC值,并与接收到的CRC值进行比较,如果两者不一致,则说明数据传输过程中发生了错误。
•可靠性:HDLC提供了可靠的数据传输机制,通过使用确认帧和重传机制来确保数据的正确接收。
发送方在发送完所有的帧之后,会等待接收方的确认帧,如果接收方收到了正确的数据,就会发送一个确认帧给发送方。
如果发送方在一定的时间内没有收到接收方的确认帧,就会重新发送帧。
3. HDLC的应用场景HDLC广泛应用于各种计算机网络中,包括局域网、广域网和数据中心网络等。
以下是一些HDLC的应用场景:•串口通信:HDLC常用于串口通信中,通过串口将数据传输到其他设备。
HDLC通过帧的形式传输数据,提供了可靠的数据传输和流量控制,适用于不同设备之间的通信。
目录内容摘要 (1)关键词 (1)Abstract (1)Key Words (1)1.绪论 (2)1.1研究的意义 (2)1.2本设计的主要功能 (2)2.HDLC协议综述 (3)2.1 HDLC协议的产生背景 (3)2.2 HDLC协议的帧结构 (4)2.3 HDLC协议的规程分析 (7)3.HDLC协议控制器的设计 (8)3.1 HDLC协议控制器设计方案选择 (8)3.2 FPGA的设计原则 (9)3.3 HDLC协议控制器总框架 (10)3.4 HDLC帧发送器的设计 (11)3.5 HDLC帧接收器的设计 (15)参考文献 (18)致谢 (19)[说明:在本页中,“目录”二字居中,宋体小二号,加黑,其它统一由宋体小四号,不加黑排版打印、行间距为1.5]内容摘要:HDLC(高级数据链路控制)协议是一种面向比特的链路控制规程,广泛的用作数据链路层的控制协议。
论文在分析和研究HDLC协议的基础上,提出了一种基于FPGA(现场可编程门阵列)的HDLC协议控制器的设计。
对HDLC协议控制器的功能进行划分,分别设计了标志位的检测和生成、插零和删零、FCS的校验等控制模块。
采用VHDL硬件描述语言在FPGA内部实现HDLC协议的各功能模块,本设计使用Quartus II 9.1平台实现代码编写、综合、编译、仿真。
对HDLC链路控制规程功能,帧控制和FCS校验功能进行了仿真实现。
关键词:HDLC;FPGA;帧收发器;Abstract:(宋体,小四号,加黑)××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××。
目录内容摘要 (1)关键词 (1)Abstract (1)Key Words (1)1.绪论 (2)1.1研究的意义 (2)1.2本设计的主要功能 (2)2.HDLC协议综述 (3)2.1 HDLC协议的产生背景 (3)2.2 HDLC协议的帧结构 (4)2.3 HDLC协议的规程分析 (7)3.HDLC协议控制器的设计 (8)3.1 HDLC协议控制器设计方案选择 (8)3.2 FPGA的设计原则 (9)3.3 HDLC协议控制器总框架 (10)3.4 HDLC帧发送器的设计 (11)3.5 HDLC帧接收器的设计 (15)参考文献 (18)致谢 (19)[说明:在本页中,“目录”二字居中,宋体小二号,加黑,其它统一由宋体小四号,不加黑排版打印、行间距为1.5]内容摘要:HDLC(高级数据链路控制)协议是一种面向比特的链路控制规程,广泛的用作数据链路层的控制协议。
论文在分析和研究HDLC协议的基础上,提出了一种基于FPGA(现场可编程门阵列)的HDLC协议控制器的设计。
对HDLC协议控制器的功能进行划分,分别设计了标志位的检测和生成、插零和删零、FCS的校验等控制模块。
采用VHDL硬件描述语言在FPGA内部实现HDLC协议的各功能模块,本设计使用Quartus II 9.1平台实现代码编写、综合、编译、仿真。
对HDLC链路控制规程功能,帧控制和FCS校验功能进行了仿真实现。
关键词:HDLC;FPGA;帧收发器;Abstract:(宋体,小四号,加黑)××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××。
(宋体,小四号,不加黑)Key words:(宋体,小四号,加黑)×××□□×××□□×××□□(宋体,小四号,不加黑)1 绪论1.1 研究的意义HDLC是一个在同步网上传输数据、面向位的数据链路层协议,它是由国际标准化组织(ISO)制订的。
该协议被广泛的用作数据链路层的控制协议,HDLC控制器在网络设备中得到大量的使用,如列车通信网络技术、综合业务数字网ISDN、X.25分组交换网以及帧中继网等。
怎样在产品中设计与实现HDLC网络协议也是一个技术研究的热点。
HDLC的一般实现方法为采用 ASIC 器件和软件编程等。
ASIC的芯片有Motorola 公司的MC92460,ST公司的MK5025等。
应用这些 ASIC 器件时设计简单,功能针对性强,性能可靠,适用于特定用途的大批量产品中。
但是这类ASIC芯片存在开发时间长,一旦芯片固有缺陷就不容易解决等问题,而且HDLC标准的文本较多,ASIC芯片出于专用性的目的难以通用于不同版本,缺乏灵活性。
HDLC的软件编程方法灵活,通过修改程序就可适用于不同的HDLC应用,但程序运行占用处理器资源多,执行速度慢,实时性不易预测。
FPGA(Field Programmable Gate Array, 现场可编程门阵列)器件采用硬件处理信号,可以反复编程,能够兼顾速度和灵活性,并能多路并行处理。
在中小批量通信产品的设计中,FPGA 是取代 ASIC 实现 HDLC 功能的一种合适选择。
1.2 本设计的主要功能本文实现了一种采用FPGA的HDLC协议控制器的设计和功能仿真。
首先综述了HDLC协议的产生背景和帧结构,提出了基于FPGA设计模式的控制器。
以HDLC 协议帧的接收和发送为主体,在明确FPGA的设计原则的基础上,对帧收发器进行分功能模块设计,编写代码,时序分析。
以发送器为例,其中包括了标志位的生成,插零,FCS校验等模块的设计。
接收器跟发送器设计思想类似。
在完成各个模块的设计后,使用了Quartus II 9.1自带仿真器对各个模块的功能一一进行了仿真,并对HDLC 协议及其规程进行了验证和分析。
2 HDLC协议综述2.1 HDLC 协议的产生背景计算机通信的早期,人们发现对于经常发生误码的实际链路,只要加上了合适的控制规程,就可以是通信变得比较可靠。
这些规程都是数据链路层的协议,都是面向字符的。
所谓面向字符,就是说在链路上所传送的数据都是由规定的字符集中的字符所组成的。
而且,链路上传送的控制信息也必须由同一个字符集中的若干指定的控制字符构成。
面向字符的链路控制规程曾在计算机网络的发展过程中起了重要的作用,但随着发展,这种规程就逐渐暴露出其弱点。
其主要限制是:1.通信线路的利用率低,因为它采用的是停止等待协议,收发双方交替地工作。
2.所有通信设备必须使用同样字符的代码,而不同版本的规程要求使用不同的代码。
3.只对数据部分进行差错控制,若控制部分出错就无法控制,因而可靠性差。
4.不易扩展,每增加一种功能就需要设定一个新的控制字符。
1974 年,IBM 公司推出了著名的体系结构SNA。
在SNA 的数据链路层规程上采用了面向比特的规程SDLC(Synchronous Data Link Control)。
后来IBM 将此规程提交美国国家标准协会ANSI 和国际标准化组织ISO,建议成为国家和国际标准。
ANSI 把SDLC 修改为ADCCP(Advanced Data Communication 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 (Asynchronous Balanced Mode)2.2 HDLC 协议的帧结构HDLC的帧格式由六个字段组成,这六个字段可以分为五种类型,即标志序列(F)、地址字段(A)、控制字段(C)、信息字段(I)、帧校验字段(FCS)。
在帧结构中允许不包含信息字段I。
图1 HDLC帧结构标志序列(F)HDLC指定采用01111110为标志序列,称为F标志。
要求所有的帧必须以F标志开始和结束。
接收设备不断地搜寻F标志,以实现帧同步,从而保证接收部分对后续字段的正确识别。
另外,在帧与帧的空载期间,可以连续发送F,用来作时间填充。
在一串数据比特中,有可能产生与标志字段的码型相同的比特组合。
为了防止这种情况产生,保证对数据的透明传输,采取了比特填充技术。
当采用比特填充技术时,在信码中连续5个“1”以后插入一个“0”;而在接收端,则去除5个“1”以后的“0”,恢复原来的数据序列,如图4所示。
比特填充技术的采用排除了在信息流中出现的标志字段的可能性,保证了对数据信息的透明传输。
数据中某一段比特组合恰好出现和F字段一样的情况会误认为是F字段发送端在5个连1之后填入0比特再发送出去填入0比特在接收端将5个连1之后图2 比特填充当连续传输两帧时,前一个帧的结束标志字段F可以兼作后一个帧的起始标志字段。
当暂时没有信息传送时,可以连续发送标志字段,使接收端可以一直保持与发送端同步。
●地址字段(A)地址字段表示链路上站的地址。
使用平衡方式(采用ABM),地址字段写入应答站的地址。
HDLC协议没有给出地址字段的具体格式,只对其扩充方法及全站地址、无站地址给出了定义。
考虑到实际的需要与实现上的方便,定义地址字面结构如下:X –未使用Bit0 置“1”,表示地址字段只有一个字节C/R 置“1”表示命令帧,置“0”表示响应帧图3 地址字段定义地址字段的长度采用8bit时,最多可以表示64个站的地址。
地址字段bit2~bit7为“111111”时,定义为全站地址,即通知所有的接收站接收有关的命令帧并按其动作;bit2~bit7为全“0”比特为无站地址,用于测试数据链路的状态。
因此有效地址共有62个。
●控制字段(C)控制字段用来表示帧类型、帧编号以及命令、响应等。
由于C字段的构成不同,可以把HDLC帧分为三种类型:信息帧、监控帧、无编号帧,分别简称I帧(Information)、S帧(Supervisory)、U帧(Unnumbered)。
在控制字段中,第1位是“0”为I帧,第1、2位是“10”为S帧,第1、2位是“11”为U帧。
图4 基本模式控制字段注:X-未使用,置0U-未定义,置1。
图5 扩充模式控制字段●信息字段(I)信息字段内包含了用户的数据信息和来自上层的各种控制信息。
长度小于58Bytes。
●帧校验序列字段(FCS)帧校验序列用于对帧进行循环冗余校验,其校验范围从地址字段的第1比特到信息字段的最后一比特的序列,并且规定为了透明传输而插入的“0”不在校验范围内,长度定义由于单板中有部分HDLC链路采用HDLC控制器实现,而HDLC控制器只能支持16bits的CRC2.3HDLC协议的规程分析1.使用统一的帧格式:实现数据、命令和响应的传输,实施起来方便;2.采用‘0’位插入法:使得规程可以支持任意的位流传输,保证了信息传输的透明性;3.采用窗口机制和捎带应答机制:全双工工作方式,允许在未收到确认的情况下,连续发送多个帧,提高了信息传输的效率;4.采用帧校验序列,并设置窗口序号,可以提高信息传输的正确性和可靠性。
总之,面向二进制位的控制规程比面向字符型的控制规程具有较高的优越性。
3 HDLC协议控制器的设计3.1 HDLC协议控制器设计方案选择HDLC协议控制器实现方法有三种:ASIC器件、软件编程以及FPGA器件。
实现HDLC协议的ASIC芯片有Motorola 公司的MC92460、ZILOG 公司的Z80230/85230、ST 公司的MK5025等。
这些集成电路使用简易,功能针对性强,适用于特定用途的大批量产品中。
但HDLC标准的文本较多,ASIC芯片出于专用性的目的难于通用于不同版本,缺乏灵活性。