首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA+ARM的HDLC协议控制器的设计与实现

基于FPGA+ARM的HDLC协议控制器的设计与实现

摘要:针对飞控模拟装置中基于HDLC协议通信需求,完成了一种新的基于FPGA+ARM架构HDLC协议控制器的设计。文中首先介紹了HDLC协议的帧结构和循环冗余校验(CRC)原理,然后结合FPGA可进行任意数据宽度操作和ARM编程简单灵活的优点,有效实现了符合HDLC协议的帧结构和CRC校验的应用方法,满足HDLC协议要求。应用结果表明设计能够很好地满足各项功能指标的技术要求。
高级数据链路控制(HDLC,High-Level Data  Control)是一种同步数据传输、面向比特的数据链路层协议,具有差错检测功能强大、高效和同步传输的特点,目前HDLC协议已成为是通信领域中应用最广泛的协议之一,在飞行器设计领域经常用作飞控与舵机,助推器等之间通信的通信协议。
飞行控制模拟装置是在飞行器研制的方案阶段,用于飞行控制系统软件开发及仿真评估,飞行控制软件往往是A级软件,它的任何问题都将造成飞行失效,进而引起整个系统的瘫痪。采取飞行器控制系统模拟装置进行软件算法验证,对各个分系统软件调试和系统验证,能够加快飞行器设计进度,减少设计风险和成本。
本文研究的HDLC协议控制器用于某型飞行器的飞控模拟装置与舵机控制器之间的通信。一般而言HDLC协议主要是通过使用专用芯片和软件编程的方式来实现。目前在市场上有很多专用的HDLC协议处理芯片如MT8952B、MK5025,这些芯片性能可靠但功能针对性太强,适合应用于特定用途的大批量产品中。软件编程方式是通过针对微控制器或信号处理器进行编程,但是由于微控制器或信号处理器是基于字节(8位、16位等)的处理,而HDLC协议帧的解析和生成是面向比特的处理,因而这种方法会大大增加微处理器或信号处理器的负荷。考虑到本设计中针对的飞控模拟装置中存在大量不同总线接口需要处理,其处理器为FPGA+ARM,FPGA能对任意数据宽度的信号进行处理,ARM具备编程简单,修改灵活的优点,为此本文在此基础上采用FPGA+AHM的方式利用FPGA完成符合HDLC协议的数据传输控制,ARM完成CRC校验和信息帧解包,最终实现HDLC协议控制器的设计。
1 HDLC协议及CRC原理介绍
HDLC是高级链路层控制协议,面向位的数据链路层协议。HDLC通常为点一点或点一多点结构,可用于半双工或全双工通信,采用同步传输方式,常用于中高速数据传输场合。HDLC采用滑动窗口协议,可以同时确认几个帧;另外,每个帧都含有地址地段,这样在多点结构中,主站可以同时和多个从站建立连接,而每个从站只接收含有本站地址的帧,因此HDLC的传输效率比较高,具有较高的吞吐率。在HDLC协议控制器中,其实现的关键在于两个方面,一方面为保证帧间隔标志的唯一性,在后续的字段中采用“0”比特插入/删除技术。发送时,帧间隔标志之外的所有信息,只要出现连续的5个“1”,则自动插入一个“0”;同样,接收方在接收数据时,只要遇到连续的5个“1”,则自动将其后的“0”删除掉;另一方面是CRC码的产生及校验,即在发送端,利用生成多项式自动生成一帧数据的CRC校验码并附在信息段后发送出去;在接收端,对接受到的一帧数据作CRC码的校验。
CRC的全称为Cvclic Redundancy  Chcck,中文名称为循环冗余校验。它是一类重要的线性分组码。编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制。其基本原理是:对于一个给定的(N,K)码(在K位信息码后再拼接R位的校验码,N=R+K),可以证明存在一个最高次幂为N-K=R的多项式C(x)。根据C(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。校验码的具体生成过程为:假设要发送的信息用多项式C(X)表示,将C(x)左移R位(可表示成C(x)*2R),这样C(x)的右边就会空出R位,这就是校验码的位置。用C(x)*2R除以生成多项式G(x)得到的余数就是校验码。根据R的不同,形成多种不同的CRC标准,如(3RC-4:x4+x+1、CRC-8:x8+x6+X4+x3+X2+  X1、CRC16-CCITT:x16+X12+x5+1等。本文采用的即是CRC16-CCITT标准。
2 HDLC控制器设计
2.1 HDLC协议处理电路设计
为满足飞行器设计验证需求,可以实现基于HDLC协议传输的灵活配置,其功能和技术指标要求如下:422全双工;传输速率可调,最大达到2  Mbps;通信距离不超过5  m;通讯误码率小于10-7;帧头7E与帧尾个数可调,CRC校验方式采用CCITT-CRC16。根据功能和技术指标要求以及飞控模拟装置总体配置状况,控制器总体框图如图1所示。
其中数据处理单元采用ARM实现,完成数据帧的CRC校验和信息提取,并根据设定初始化传输控制单元的参数,包括波特率,7E有效个数;传输控制单元采用FPCA实现,主要功能是实现HDLC传输控制逻辑和数据缓存;接口总线采用全双工RS422数据总线,由于RS422传输线为差分电压,因此需要进行电平转化,为此根据设计要求本文设计的控制器选用MAX3491作为电子转换芯片,其转换速度达到10Mbps以满足需要。文中将针对HDLC控制器设计重点介绍数据处理单元、输出控制逻辑两部分。
2.2 HDLC传输控制单元
HDLC传输是按位操作,因此采用FPGA完成,FPGA采用altera公司的CYCLONE Ⅱ系列的FPGA,开发平台基于QuartuslI  6.0开发环境,利用有限状态机设计实现HDLC协议的传输控制部分,并最终以IP核的方式给出设计实现,便于开发人员进行维护和升级。
由于HDLC协议控制器是全双工通信,即包含了HDLC同步比特数据的接收电路设计和HDLC同步比特数据帧的发送电路设计。在FPGA的设计中,接收端和发送端都是基于比特的处理,其功能框图如图2所示。
在接收端,一直根据接收时钟RCLK信号的上升沿接收数据,在信息帧发出以前,判断帧头“7E”,并记录“7E”个数,当“7E”个数满足设定要求,开始启动信息帧的接收,并开启数1计数器,当遇到连续5个“1”时删除其后的“0”,同时进行串并转换,将数据按8BIT组成一字节,存入FIFO中,整字节接收完毕后,如接收到“7E”表明该信息帧结束,并开始记录“7E”个数,当“7E”个数满足帧尾设定要求,表明该帧接收完毕,否则表示接收出错,抛弃该帧。图3即为接收帧状态转移图。
继承事业,薪火相传
返回列表