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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于CPCI系统的高速数字通信接口电路设计与应用相关的知识,希望对你有一定的参考价值。

参考技术A

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

  在CPCI系统环境下高速数字通信AFDX协议端系统接口的电路设计与功能实现。采用Verilog编程实现基于FPGA的硬件设计部分,采用C编程实现基于MicroBlaze的嵌入式软件设计。

  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网络协议的重要组成部分,为航空电子系统提供了安全可靠的数据交换服务接口,今后必会得到更加广泛的应用。

;

以上是关于基于CPCI系统的高速数字通信接口电路设计与应用的主要内容,如果未能解决你的问题,请参考以下文章

FPGA和DSP间基于SRIO的高速通信系统设计

cameralink 怎么当串口使用

fpga和上位机通信用啥接口

期刊文章基于Zabbix的分布式数字化监控系统设计 与实现

基于Quartus II软件FPGA与PC之间的串行通信系统开发(9000+字)

基于FPGA的双口RAM实现及应用怎么用