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

发布者:JoyfulSpirit5最新更新时间:2014-08-13 来源: eefocus关键字:HDLC控制器  FPGA  ARM 手机看文章 扫描二维码
随时随地手机看文章

针对飞控模拟装置中基于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所示。




图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所示。


图2 HDLC协议控制器传输接受功能框图


在接收端,一直根据接收时钟RCLK信号的上升沿接收数据,在信息帧发出以前,判断帧头“7E”,并记录“7E”个数,当“7E”个数满足设定要求,开始启动信息帧的接收,并开启数1计数器,当遇到连续5个“1”时删除其后的“0”,同时进行串并转换,将数据按8BIT组成一字节,存入FIFO中,整字节接收完毕后,如接收到“7E”表明该信息帧结束,并开始记录“7E”个数,当“7E”个数满足帧尾设定要求,表明该帧接收完毕,否则表示接收出错,抛弃该帧。图3即为接收帧状态转移图。



图3 接受帧状态转移图


在发送端,接收到ARM启动发送指令后,发送相应个数帧头0x7E,然后将数据从发送FIFO中取出,进行并串转换,在根据设置的时钟TCLK的下降沿,逐位发送数据到Tx线路上,并且在连续发送了5个比特“1”后,自动插入比特“0”,发送结束后发送相应个数帧尾0x7E,结束该次发送。发送帧状态转移图如图4所示。[page]



图4 发送帧状态转移图



图5 HDLC数据处理单元数据接受流程图


2.3 HDLC数据处理单元

HDLC数据处理单元主要完成信息的帧的CRC校验和打包解包任务,其处理芯片采用意法半导体的STM32F103系列ARM芯片,该芯片具有开发简单灵活,成本较低的优势。数据处理单元对数据的处理同样包括接收和发送两部分,以接收为例,具体工作流程图如图5所示。

当进入接收中断进程时,首先读空接收FIFO,其中最后两次读出的数据为该帧信息的CRC校验码,利用该校验码进行CRC校验,校验采用CRC-16-CCITT标准,生成r取值为16,其生成多项式为:C(x)=x16+x12+x2+1传统CRC校验是对消息逐位处理,对于ARM来说,这样效率是很低的。为了提高时间效率,通常的思想是以空间换时间。考虑到内循环只与当前的消息字节和crc_reg的低字节有关,针对crc_reg低字节建立数表进行查询相应的CRC校验码,最终循环完毕如果没有差错发生则结果应为0.

发送单元与接收单元类似,为其逆过程,首先将信息按约定帧格式打包,然后进行CRC校验,将校验码放入信息帧的最后2个字节,并将该信息帧通过数据总线存入FPGA的发送FIFO中,最后写入发送标志字,启动FPGA发送传输控制逻辑。

3验证及结果

为完成设计,首先采用ModelSim进行仿真验证,如图6所示通过激励文件生成ARM与FPCA的读写时序,给出符合HDLC帧格式的一组数据写入FPGA发送FIFO,并启动发送,在激励文件中将RX/RCLK与TX/TCLK短接,形成回环,FPGA根据协议控制器接收到数据,并将数据存入接收FIFO,完成验证。其逻辑时序满足HDLC协议帧格式和通信时序要求。



图6 HDLC协议控制器ModelSim仿真验证图


最后按照设计要求将设计好的HDLC通信协议控制器加载至FPGA与ARM上,并与串口通信卡BST23109进行回环测试,该卡能够实现串口同步模式,通信满足HDLC协议要求。试验结果表明在5 m通信距离内,波特率可达2 Mb/s,误码率为10-8.

4结论

文中针对飞行模拟装置中HDLC协议的应用需求开展了HDLC协议控制器的设计,文中首先介绍了HDLC协议的相关内容,然后重点介绍了HDLC协议控制器软硬件实现,详细给出于HDLC协议控制器的没计实现过程。通过仿真和实测试验表明在5m通信距离内,波特率可达2Mb/s,误码率为10-8.在该飞行模拟装置交付使用过程中,该控制器功能完整,能够很好地满足各项指标的技术要求。

关键字:HDLC控制器  FPGA  ARM 引用地址:基于FPGA+ARM的HDLC协议控制器的设计与实现

上一篇:意法半导体(ST)推出STM32数控电源微控制器
下一篇:信号处理器设计

推荐阅读最新更新时间:2024-03-16 13:39

基于ARM的嵌入式处理器和FPGA之间通信的实现
1 前 言 在ARM+FPGA系统结构中,实现基于ARM的嵌入式处理器和FPGA之间通信最简单的方法就是通过异步串行接口EIARS232C。考虑选用集成有UART(Universal Asynchronous Receiver / TraNSmitter )控制器的嵌入式处理器(例如,EP7312),那么嵌入式处理器一侧就具有了利用异步串行接口收、发通信的能力。然而,FPGA内部并不拥有CPU控制单元,无法处理由UART控制器产生的中断,所以FPGA一侧不能利用现成的UART控制器构成异步串行接口,必须将UART控制器的功能集成到FPGA内部。 同一个系统中的ARM与FPGA之间属于短距离通信连接,他们之间的异步串
[单片机]
arm linux 系统调用实现
In this article we will dive into system call interface implementation in arm linux(with gnu eabi).我们将从bionic中的open函数开始追溯arm linux的系统调用实现(使用gnu eabi)。 Linux的应用程序要想访问内核必须使用系统调用从而实现从usr模式转到svc模式。在arm中,这个过程是通过swi(或者和它等价的指令)来实现模式转换的。 从bionic libc中的open函数追溯系统调用实现 相关文件: bionic/libc/unistd/open.c bionic/libc/arch-arm/
[单片机]
基于ARM的六相位交通信号机设计
0 引言 随着我国城市化飞速发展,路面交通拥堵问题日益严重。交通信号机作为缓解交通拥堵问题的重要手段之一,其核心控制器主要包括两类:一类是单片机控制器,这类控制器基于8/16位单片机,功能简单,控制方式单一;另一类采用工控机作控制器,功能强大,但结构复杂且多冗余,成本高。相位控制方面,传统的信号机主要为两相位和四相位信号控制。两相位控制时,直行方向和左转方向同时放行,左转车辆与对向直行车辆形成冲突,极易造成交通事故;四相位控制时,将右转方向作为常通状态来对待,这显然忽视了没有过街天桥或地下通道的情况下行人安全通行的要求。 针对上述传统信号机的缺陷,本文提出了一种基于ARM芯片LM3S8962的六相位交通信号机的系统控制方案及
[单片机]
基于<font color='red'>ARM</font>的六相位交通信号机设计
ARM仿真器的作用 仿真器有什么用途
  ARM仿真器是用于调试基于ARM内核的硬件模块,市面上常见的ARM内核有ARM7,ARM9,ARM11,Cortex-A,Cortex-M,Cortex-R等,而基于这些内核的芯片则多得多。   仿真器如果用于低端嵌入式MCU的话,使用ULINK2,ULINKPpro即可,可以用来调试Cortex-M,Cortex-R芯片等低端芯片;   如果要调试的是高端ARM核心芯片,则可以用到DSTREAM仿真器了。   ARM仿真器的作用,可以在寄存器级、用汇编语言调试你的硬件。当然用C也可以。   普通在你的ARM板是完全的裸板时,即所有Flash都还没有烧写程序时(这时串口、网口都不能用),烧写必要的启动程序。
[单片机]
<font color='red'>ARM</font>仿真器的作用 仿真器有什么用途
FPGA中实现图像格式转换的参考设计
引言   服务器、交换机、前端编码器以及专用演播显示器等广播基础设备系统支持各种输入图像格式,在存储、编码和显示之前,通常需要将图像转换为高清晰(HD) 或者其他分辨率格式。专用 ASSP 虽然满足了这一市场需求,取得了一定的成功,但仍然面临通过采用单芯片方案来满足广播设备供应商各种特殊需求这一挑战。例如,在交换机应用中,总延时非常重要,延时是显示和视频会议系统的关键因素,而图像质量是摄制后期设备最重要的指标。除了这些特殊应用需求,器件还必须能够支持各种帧速率、分辨率和格式。   而且,这类设备的设计周期相对较短,当需求变化时,设计人员没有足够的时间等待长周期ASSP 重制的完成。结果,很多优秀的视频技术ASSP 供应
[嵌入式]
在<font color='red'>FPGA</font>中实现图像格式转换的参考设计
嵌入式软件开发流程及ARM的中断调试方法介绍
  1 嵌入式软件开发流程   参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第三步:工程编译和链接。第四步:软件的调试。第五步:执行文件的固化。   在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,包括自己编写的汇编和C语言源程序,还有工程编译时需要编写的链接脚本文件,调试过程中需要编写存储区映像文件和命令脚本文件,以及上电复位时的程序运行入口的启动程序文件。   对后四种文件的理解很重要,其作用解释如下。   (1) 链接脚本文件:在程序编译时起作用。该文件描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对整个系统
[单片机]
基于ARM7内核LPC2119芯片实现双向DC/DC变换器的设计
为了实现直流能量的双向传输,双向DC/DC变换器被广泛应用于UPS系统、航天电源系统、电动汽车驱动及蓄电池充放电维护等场合。 在这些应用当中,很多时候都要求开关电源不仅能够控制能量的双向流动,还要能够实现低压、大电流的输出。在开关频率不太高的情况下,随着输出电压的降低、输出电流的增加,整流损耗就成了影响开关电源效率的主要冈素。因此,为了提高开关电源的效率,就必须设法降低整流损耗。而在本文中采用的同步整流技术就是一种降低整流损耗的有效手段。 在以往的电源设计当中,模拟控制技术因其动态响应快、无量化误差、价格低廉等优点而被广泛应崩;而数字控制技术则由于其成本和技术等方面的因素而较少得到应用。近年来,随着半导体技术的不断发展,数
[单片机]
基于<font color='red'>ARM</font>7内核LPC2119芯片实现双向DC/DC变换器的设计
μCOS-II在ARM Cortex-M3处理器上的移植
0 引言 嵌入式系统已经广泛渗透到了人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%,其中ARM的应用最为广泛。基于ARM内核的处理器以其诸多优异性能而成为各类产品中选用较多的处理器之一。 当系统越来越大,应用越来越多时,就出现了如何管理众多的硬件资源,以及如何满足系统的实时控制要求和如何提高系统软件开发效率等不可回避的问题。这时,使用嵌入式操作系统很有必要。操作系统的主要作用有:统一管理系统资源;为用户提供访问硬件的接口;调度多个应用程序和管理文件系统等。 1 概述 μC/OS-II是著名的、源码公开的实时内核,是专为嵌入式应用设计的,可用于各类8位、16位和32位处理器。μC/OS-II已经
[单片机]
μCOS-II在<font color='red'>ARM</font> Cortex-M3处理器上的移植
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved