APP下载

基于CPCI系统的高速数字通信接口电路设计与应用

2016-07-09李国达

现代电子技术 2016年7期
关键词:端系统嵌入式软件

李国达

摘 要: 随着航空电子系统的迅速发展,系统间频繁的信息交换和共享对数据传输实时性和可靠性的要求日益提高。针对这一要求,提出了一种基于CPCI系统下实现AFDX协议端系统接口功能的方法,为通用信号处理平台与AFDX网络的连接提供接口,实现AFDX协议数据的高速、可靠性传输。给出了采用FPGA实现该功能的整体方案,详细描述了基于FPGA硬件开发的各个模块的设计,介绍了基于MicroBlaze的嵌入式软件设计方法,在EDK中采用C语言实现AFDX协议IP层以上的封装和解封装。最后经过仿真验证和测试,验证了设计的正确性。

关键词: CPCI; 航空全双工以太网; 端系统; FPGA; 嵌入式软件

中图分类号: TN914.3?34; TM417 文献标识码: A 文章编号: 1004?373X(2016)07?0075?04

Abstract: In recent years, with the rapid development of avionics system, the requirements of frequent information exchange and sharing among system to real?time and reliable data transmission are increasingly increased. For this issue, a method based on CPCI system to implement the end system interface function of AFDX protocol is proposed, which can provide the interface to connect the general signal processing platform and AFDX network, and realize the high?speed and reliable transmission of AFDX protocol data. The overall plan of using FPGA to implement the function is given, in which the design of each module developed by FPGA hardware is described in detail, and the embedded software design method based on MicroBlaze is introduced. The C language is used to realize the capsulation and decapsulation above IP layer of the AFDX protocol in EDK. The correctness of the design was verified by simulation and test.

Keywords: CPCI; AFDX; end system; FPGA; embedded software

0 引 言

随着通信技术的高速发展,嵌入式系统对数据传输速率的要求更高。在航空等军用电子设备中,实现信号处理算法的数字信号处理机,起着至关重要的作用。CPCI总线技术有效解决了高速互联问题。

20世纪90年代,PCI总线技术被广泛应用,但是它可靠性较低,无法满足对正常运行时间要求较高的高可用性系统。加之其主板连接器可靠性低,更换时易被损坏。CPCI的高带宽特点,决定了其适用于高速数据通信场合。随着国外著名计算机系统公司基于CPCI产品和方案的推广及PICMG/PRC对CPCI技术的宣传,我国工业控制领域越来越多地把CPCI应用于高性能嵌入式系统之中。本文研究了在CPCI系统环境下高速数字通信AFDX协议端系统接口的电路设计与功能实现。采用Verilog编程实现基于FPGA的硬件设计部分,采用C编程实现基于MicroBlaze的嵌入式软件设计。

1 基于FPGA的硬件设计

1.1 MAC模块、FIFO模块和MII模块

FIFO模块分为接收FIFO和发送FIFO,通过调用IP核来实现。本文所设计的MAC模块和FIFO模块的基本结构如图1所示。MAC核通过MII接口和PHY芯片进行外部通信,通过发送FIFO和接收FIFO进行FPGA内部数据的通信。

1.2 CRC模块

CRC模块通过检验数据的CRC值,判决接收的数据的正确性和有效性。在数据包被发送后,紧接着该数据包的4 B CRC也会被发送。接收者通过数据包和CRC数据就可以得出新的CRC值。若新CRC值为0,表明接收和发送的数据不一致,crc_error将会置1。其管脚定义如表2所示。

1.3 规整模块和冗余管理模块

规整模块根据每条VL的BAG,Lmax值,对其数据流进行规整。具体方式为:当该VL的BAG时间达到,且Jitter在最大抖动的范围内、帧长小于Lmax,则置FTT标识有效,此时多路复用器模块会申请对该VL进行调度;反之,不能对该VL进行调度。将固定带宽分配给每个VL,等价于把接收端与发送端之间的数据传输限制在一个BAG内,即在一个BAG内只有一次数据传输,如果数据包过大,将其分为多个帧进行发送,也将会在各自的BAG内进行发送。所以,为了保证任意时间段使用的带宽都是可以被确定的,必须把一个时间段合理地分配给不同的终端系统使用,规整器的输入输出示意图如图3所示。

从图3可看出,两个数据帧之间的长度大于BAG,那么正常接收;当两个数据帧之间的长度小于一个BAG,就将后一个数据帧移动到第二个BAG的起始位置。

在AFDX网络中,通过不同的AFDX网络交换机将两个互为冗余的帧传递到同一个目的端系统。只要交换机输出端口的输入流量大于输出流量,就必定会产生交换延迟。因为不同的交换机的交换延迟不是确定值,所以两个互为冗余的帧到达目的端的时间间隔也是不确定的。设计时,将SkewMax(最大偏斜)用于AFDX的接收冗余管理中以便对冗余帧的接收时间进行限制。冗余管理模块的功能是对接收帧的有效性进行验证,并将重复的有效帧进行消除。冗余管理模块的框图如图4所示。

1.4 发送和接收模块

发送数据的基本过程如下:要发送数据时,将待发送数据传输到MAC的发送缓存中,发送缓存接收到的数据达到设定值时,数据发送模块开始进行帧间隔计时;发送帧的前导码;发送帧起始定界符;帧长计数、CRC校验和计算,同时将数据按半位元组(4 b)发送给MII接口;在发送过程中,如果MAC检测到该帧的长度小于最小帧长(64 B),则进行数据填充达到64 B为止。

AFDX发送部分的状态机如图6所示,发送数据主要包括等待、数据长度检测、插入前导码和帧起始界定符、数据发送以及CRC校验结果状态。系统在工作的时候,一直处于wait状态,当需要发送数据的时候,状态机将进入下一个状态从而开始数据的发送。

接收为发送的反过程,首先对接收到的4位信息进行帧检测,当检测到前导码和帧起始定界符的时候,则认为一帧数据接收到了,然后开始对数据帧进行解析,得到帧数据中的各类数据信息。

AFDX接收过程如下:数据通过PHY芯片解码后进入到MAC 核,然后进入接收FIFO。当MAC接收到数据有效后,从MII接口读入数据后检测前导码和帧起始定界符,当检测到有效的帧起始定界符,就会开始对帧长进行计数。接收模块在接收数据的过程中将已接收到的帧的前导域,SFD域,CRC域和PAD域进行剥离。

2 基于MicroBlaze的软件设计

2.1 设计说明

在MicroBlaze中将主要完成AFDX协议栈中UDP层和IP层的数据发送和接收部分,对数据进行封装、解析和控制。发送部分主要完成以下几个工作:当一个帧数据进入AFDX端口时,发送部分就开始对该帧数据进行封装,其中UDP层将对数据添加UDP头,包括源和目标UDP端口号。IP层将UDP层处理完的数据添加IP 包头和以太网头,然后送入虚链路层并添加序列号。接收部分主要完成如下几个工作:当一个帧信号通过PHY解码送入MAC后,通过接收FIFO送入AFDX接收模块,那么接收过程开始。在链路层首先对该帧信号进行完整性检测和冗余管理,然后进入IP层,进行IP 校验和检查,然后送入UDP层,通过多路分配器后将对应的帧数据发送出去,实现数据的解封装功能。

2.2 设计流程

基于MicroBlaze的系统设计需要分别对系统的硬件和软件进行协同编译。完成MicroBlaze的软件设计之后,将MicroBlaze作为ISE工程下的一个子模块进行调用。为了验证程序的正确性,利用ISE调用ModelSim对其进行仿真。具体做法是在ISE工程中添加一个以MicroBlaze处理器为基础的IP核,并编写测试文件,为处理器的输入信号提供激励,输出信号提供端口。

3 测试与验证

两个MAC核的仿真意义是相同的,所以针对第一个MAC核的仿真波形进行说明。mii_tx_en_0为帧使能信号,当MAC核正常工作时,有数据发送的时候该信号为1;当发送为0的时候,该信号使能为0,mii_txd_0为发送的数据。当有接收信号进入MAC核时,mii_rx_dv_0为高电平,对应的数据为接收的数据;当接收的数据发生错误时,mii_rx_er_0会出现高电平,如果接收到的数据没有发生错误,那么该信号为低电平。

在接收端,判断接收数据的CRC计算结果是否为0,如果为1,则表明接收过程中有CRC校验错误。CRC 校验模块的仿真结果如图11所示。由图11可以看出,对接收到的数据以及发送过来的这些数据的CRC 校验值(d19167bc)一起计算,计算出来的校验值为0,证明接收的数据没有问题。

规整模块的仿真数据如图12所示。此处接收到的数据位1,2,3,4,…是不等间隔的,通过规整之后输出的数据1,2,3,4是等间隔的,这个模块的初始输出数据是错误的,所以会重复输出第一帧的数据,后面将输出正确的数据。

主机要发送数据时,首先给MAC的发送缓存中发送数据。发送缓存接收到的数据与设定值相符时,开始进行长度检测,检测完成后,数据发送模块开始进行帧间隔计时。根据帧计数器的值开始发送帧的前导码、帧起始定界符,将4位数据发送给MII接口,最后把数据从物理层发送到网络介质上。发送模块的仿真结果如图13所示。

此处仿真波形的信号i_start_or_not为高电平时,AFDX 发送模块开始工作,i_data为需要发送的数据,i_data_number为需要发送数据的个数,i_aim_address 为发送信号的目标地址,i_orig_address为发送的源地址,i_head_ip为发送信号的IP头,i_head_udp为发送信号。当发送开始时,系统首先检测需要发送的数据长度,如果数据长度大于64,则开始发送,如果发送数据长度小于64,那么进行填充,补充到64为止。通过AFDX发送模块,得到发送的帧数据o_AFDX_data以及帧信号对应的帧使能信号o_afdx_frame,完成了数据的正常发送。

接收模块的仿真结果如图14所示。当外部数据通过PHY解码后进入MAC核,接收端开始进入接收状态机,首先检测前导码和帧起始界定符。如果检测正确,那么系统进入下一个状态。从图14的仿真结果可以看出,当检测完前导码和帧起始界定符时,current_state将进入下一个状态。然后开始接收数据,o_data就为接收到的数据。

4 结 论

本文在对航空全双工以太网(AFDX)协议深入研究的基础上,介绍了一种通用信号处理平台中的一块AFDX接口板卡,该板卡扣在相应的XMC载卡上应用于CPCI系统中。该板卡XMC传输速率为3.125 Gb/s,可高速传输RapidIO协议数据,兼容32 b PCI接口和LINK口协议。由于该板卡支持多种接口模式的背板,为各种高速板卡之间的互联提供了平台。

基于AFDX接口板卡,采用FPGA设计了一种AFDX端系统接口功能的实现方法,该方法基于FPGA的硬件设计和基于MicroBlaze的嵌入式软件设计,采用FPGA和PHY芯片实现End System端的AFDX接口,完成传输层(UDP)、网络层(IP)、链路层(Virtual Link)及物理层(PHY)四层协议数据传输,使得该接口具备实时、可靠传输AFDX 数据的能力。由于该网络协议比较复杂,开发设计具有一定难度。本文的设计基本实现了AFDX端系统的接口发送和接收功能,基本达到了预期目标。AFDX端系统作为AFDX网络协议的重要组成部分,为航空电子系统提供了安全可靠的数据交换服务接口,今后必会得到更加广泛的应用。

参考文献

[1] 李亮.浅谈航空电子全双工交换式以太网:AFDX[J].飞机工程,2006(3):48?50.

[2] 沈磊.航空全双工以太网(AFDX)交换机关键技术研究与实现[D].西安:西安电子科技大学,2009.

[3] 林琳.基于FPGA的雷达信号处理板设计与实现[J].现代电子技术,2014,37(11):51?56.

[4] PCI Industrial Computer Manufacturers Group. Compact PCI specification: PICMG 2.0 revision 3.0 [R]. US: PCI Industrial Computer Manufacturers Group, 1999.

[5] ARINC. ARINC 664 part 7 specification: aircraft data network part 7 avionics full duplex switched Ethernet (AFDX) network [R]. US: ARINC, 2004.

[6] 田耘,徐文波.Xilinx FPGA开发实用教程[M].北京:清华大学出版社,2008.

[7] 夏宇闻.Verilog 数字系统设计教程[M].北京:北京航空航天大学出版社,2004.

猜你喜欢

端系统嵌入式软件
一种PCIe接口AFDX端系统的设计与实现
TTE时间触发以太网技术在国产化平台中的应用
冶金联合循环机组汽机冷端系统运行优化
实时嵌入式软件的测试技术
CentOS下AFDX端系统驱动设计与实现*
全景相机遥控器嵌入式软件V1.0 相关操作分析
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制