基于ARM的HDLC协议通信控制器设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019年第16期
信息与电脑
China Computer & Communication
软件开发与应用
基于ARM的HDLC协议通信控制器设计与实现
何 非
(民航云南空管分局 技术保障部,云南 昆明 650000)
摘 要:笔者采用ST公司ARM处理器STM32F103RCT6处理器,通过软件方式实现了使用高级数据链路控制(HDLC)协议封装的雷达数据报文在异步串口、以太网、USB等多种接口之间的数据双向传输。
该控制器的硬件成本低、接口丰富、使用灵活,能够满足民航空管系统雷达信号的通信需求。
关键词:高级数据链路控制;ARM;雷达数据处理
中图分类号:TP273 文献标识码:A 文章编号:1003-9767(2019)16-075-03
Design and Implementation of HDLC Protocol Communication Controller
Based on ARM
He 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 Processing
0 引言
高级数据链路控制(High-Level Data Link Control,HDLC)是一个在同步网上面向Bit位的数据链路层协议,具有透明传输、可靠性高、传输效率高等特点,可以实现点到点或者点到多点的数据传输,在民航空管系统使用的雷达信号通常采用HDLC协议进行传输。
为了对雷达数据进行分析和处理,需要对HDLC封装的雷达数据进行转换。
为此,笔者基于ARM处理器设计了一套多接口、全双工的HDLC协议通信控制器,实现了HDLC封装的Bit流与以太网、异步串口等接口之间的双向通信。
1 HDLC协议
HDLC协议是由国际标准化组织制定的面向比特的同步数据链路层协议。
其特点是:协议不依赖任何一种字符编码集;采用“0比特插入法”实现数据的透明传输,有较高的数据链路传输效率;采用CRC校验,具有较高的可靠性。
1.1 HDLC帧格式
HDLC协议采用“帧”对其需要传输的数据块进行逻辑封装,帧与帧之间使用分割标志进行分割,其帧格式如表1所示。
表1 HDLC帧格式
分割标志地址字段控制字段信息帧校验分割标志01111110
HEX(7E)8 bits8 bits或16 bits n*8 bits
CRC
16 bits
01111110
HEX(7E)需要特别注意的是,雷达数据封装为HDLC帧后,其地址字段规定为1 Byte长度,其值为封装该帧的雷达设备地址。
控制字段同样规定为1 Byte长度,并且雷达仅发送信息帧。
在实际传输过程中,雷达数据的HDLC帧的控制字段一般设置为0x00。
1.2 HDLC协议实现方式的比较
目前,市场上有很多专用的HDLC协议处理芯片,例如三星的S3C4510B处理器、Motorola公司的MPC860T芯片、ST公司的STR7系列处理器等[1]。
但这类专用处理器只适用于特定用途的大批量产品,对于小规模的使用成本过高。
由于HDLC协议有多个版本的实现标准,加之用于雷达信号传输的HDLC数据有一定的特殊性,使用专用的处理器兼容性与灵活性不足。
作者简介:何非(1984—),男,云南昆明人,硕士研究生,工程师。
研究方向:雷达信息处理与显示系统研究。
2019年第16期
信息与电脑
China Computer & Communication
软件开发与应用
有文章采用了FPGA 技术来处理HDLC 协议。
虽然FPGA 相较于ASIC 灵活,但对于需要在多种复杂接口之间相互转换的应用而言,其灵活性仍然不足[2]。
有人也采用FPGA+MCU 的方式实现了HDLC 协议的处理和转换,但其外围电路复杂,且额外的MCU 也增加了设备的成本和功耗[3]。
通过软件编程的方法实现HDLC 协议的转换最为灵活,仅通过配置就能转换为多种接口,适应多种应用场景。
随着ARM 处理器的性能不断提升,使用软件方法实现的HDLC 协议已经能够满足民航空管系统雷达信号转换的要求。
而且ARM 处理器的外围电路简单、成本低廉,加之开发、调试的难度远小于专用
芯片和FPGA 的实现方式,因此,笔者选择使用嵌入式ARM 处理器来实现适用于民航系统雷达信号的HDLC 数据转换。
2 HDLC 协议通信控制器的设计
笔者针对HDLC 同步比特数据帧设计了可以全双工工作的输入、输出两个信道。
为满足HDLC 同步比特数据与多种数据传输接口之间相互转换的要求,设计了针对不同设备类型的块数据接口和字节流数据接口,每种接口都有独立的缓冲区,在实际使用时可以根据外部设备的类型进行配置。
HDLC 协议通信控制器信道处理流程如图1
所示。
图1 HDLC 协议通信控制器信道处理流程示意图
对于输入信道,每次采样将重复多次,从而减少因为电平不稳定而造成的误码。
Bit 流输入缓存是一个16位的移位寄
存器,用于暂存输入的Bit 流。
每输入1位数据,帧标志检测器就会检查Bit 流输入缓存器的状态,其输出结果如表2所示。
表2 帧标志检测器的检测结果
高字节低字节状态后续动作
备注
0x7E -检测到帧头再次读入8位数据并进行插入“0”检测
“-”表示除0x7E 外的任意数据
-0x7E 检测到帧尾再次读入8位数据并完成帧检测
--数据部分进行插入“0”检测
0x7E
0x7E
信道空闲
再次读入8位数据并再次进行帧标志检测
插入“0”检测器会对Bit 流输入缓存的高字节进行插入“0”检查,如果是则删除插入“0”并再次读入1位数据充满Bit 流缓存,随后再将Bit 流缓存的高字节写入字节流缓存和帧缓存。
字节流缓存是一个固定长度的FIFO 字节队列。
字节流输出设备接口将定期检查字节流缓存是否为空,如果非空则将数据取出并写入对应的字节流设备。
帧缓存是一个固定长度FIFO 数据块队列,每1帧数据作为一个数据块加入队列中。
每完成1帧数据缓存,帧缓存器都将对该数据帧进行CRC 校验,并丢弃CRC 校验错误的数据帧。
块输出设备接口将定期检查帧缓存是否为空,如果非空则将数据取出并写入对应的块设备,对于可以使用DMA 方式进行传输的块设备,将使用DMA 方式进行数据传输,以提高ARM 处理器的工作效率。
对于输出信道,无论是字节流设备还是块设备最终都要将输入的数据转换成字节流存入字节流缓存器中。
对于块设
备输入的数据,将首先在帧缓存中组成帧并进行CRC 校验,之后再写入字节流缓存以便统一处理。
字节流缓存中的数据经过插入“0”处理后写入Bit 流输出缓存,Bit 流输出缓存同样是一个16位的移位寄存器。
当1帧数据输出完成时会输出1个帧分割标志。
当字节流缓存中的数据为空时也将输出1个帧分割标志,用于填充空闲信道。
3 HDLC 多协议转换器的实现
在具体实现上,笔者从性能、易用性、成本、片上资源等多个方面进行综合考虑,选用了ST 公司生产的STM32F103RCT6处理器作为MCU 。
围绕该处理器,实现的HDLC 协议通信控制器硬件主要包括:1片STM32F103RCT6作为MCU ;2片MAX3232芯片用于RS232电平到TTL 电平的转换;选用1片CH340G 芯片,用于USART 接口到
(下转第79页)
2019年第16期
信息与电脑
China Computer & Communication
软件开发与应用
制,可以尽量减小周围环境中不必要的噪声,创造一个安静的环境,提高系统识别率。
大量实验证明,提高识别率和稳定的系统性能是开发应用系统的必要条件。
语音识别系统的基础研究,包括广泛深入学习理论知识和识别软件使用方法,是实现研究和创新的必要条件。
4 结 语
根据实验结果,残疾人辅助交互系统的识别率在噪音环境中达到85%左右。
语法XML文件在本系统中的应用提高了系统识别能力,只要XML文件识别规则足够完备,标准测试环境下,识别效果相对较好[4]。
此外,通过减噪或“训练配置文件”激励系统形成用户语音模型,可以提高系统识别率。
本系统的设计识别率有待提高,导致识别率降低的原因如下。
第一,端点检测不稳定。
语音参数不稳定可能导致端点检测出现错误。
第二,环境噪声影响较大。
嘈杂环境下,语音识别难度大大提高,同时,说话人易出现发音失真、音调改变等问题。
第三,汉语的复杂性。
汉语发音规则比较复杂,大量同音不同字增加了语音识别难度,对环境的依赖性强,一般要求训练环境与测试环境一致,否则将严重影响识别效果。
参考文献
[1]陈景帅,周风余.基于Speech SDK的机器人语音交互系统设计[J].北京联合大学学报(自然科学版),2010,24(1): 25-29.
[2]韩纪庆.语音信号处理[M].北京:清华大学出版社,2004:46.
[3]孙玲.汉语数字语音识别技术与实现方法研究[D].武汉:华中科技大学,2004:65.
[4]李禹材,左友东,郑秀清,等.基于Speech SDK的语音控制应用程序的设计与实现[J].计算机应用,2004,24(6): 114-116.
USB接口的转换;1片W5500硬件TCP/IP协议栈芯片通过SPI接口将MCU连接至以太网,提供HDLC到TCP和UDP 协议的转换。
实际工作过程简述为:接收数据时,在RxC端口上升沿时采集RxD端口上的电平,获取Bit流并记录在Bit流输入缓存中,每读入1位数据就进行一次帧标志检测和插入“0”检测。
每检测到1个字节的数据就存入输入字节流缓存中,每检测到1个帧结束,就把1帧数据存入输出帧缓存中,并对其进行CRC校验,最终根据输出设备类型调用相应的接口进行数据输出。
在发送数据时,每检测到TxC端口上的下降沿就输出Bit流输出缓存中的1位数据到TxD端口上。
若Bit流输出缓存为空,输出帧分割标志直到Bit流输出缓存有数据为止插入“0”检测、帧标志生成及检测、Bit流输入输出接口、字节流输入输出接口、块数据输入输出接口和CRC计算等功能则完全使用软件编程实现。
在进行块数据发送时,笔者使用STM32F103RCT6的硬件DMA向SPI接口写入数据,从而提高处理器的运行效率。
笔者还利用ARM处理器提供的可编程硬件时钟输出了一路时钟信号作为内部时钟源,可以选择输出到RxC或TxC端口上,以便同时给外部设备提供时钟信号。
采用软件编程方式实现时,在同一时间只能有输入信道处理程序或输出信道处理程序中的一个占用MCU。
因此,当HDLC协议转换器在全双工模式下工作时,采用了时钟上升沿触发HDLC数据发送处理过程、下降沿触发HDLC数据接收处理过程的方式,用分时处理的方法在一个时钟周期内处理收发两个信道的数据。
4 结 语
本文实现方案均采用主流IC,硬件成本远低于使用专用HDLC协议处理芯片的方案,采用软件实现信号转换,使用更加灵活。
经过测试,HDLC协议通信控制器可以实现HDLC数据以128 kbit/s的速率输入和64 kbit/s的速率输出,其性能均高于民航空管系统雷达信号的传输速率。
本文实现的协议转换器已在实际工作中得到应用。
参考文献
[1]应三丛,张行.基于FPGA的HDLC协议控制器[J].四川大学学报:工程科学版,2008,40(3):116-120.
[2]黄国强,秦传波,江太辉.HDLC协议的FPGA实现及其在通信系统的应用[J].五邑大学学报:自然科学版,2008,22(1):40-44.
[3]邓凤军,张龙,王益忠.基于PCI总线的HDLC通信卡的设计与实现[J].电子技术应用,2012,38(8):30-32,36.
(上接第76页)。