谈论卫星通信数据传输程序设计

时间:2022-06-19 11:03:00

谈论卫星通信数据传输程序设计

1概述

随着卫星通信的高速发展,星载数据的种类和数量不断增加,这就对高速海量星载数据的传输、接收和处理技术提出了新的要求。卫星下发大容量高速数据经地面站解调后,经由光纤以数字基带信号的形式传递给本地接收端,地面应用系统要采用高性能的接收处理设备,以达到对数据的实时接收、存储和处理。PCIExpress总线作为第3代I/O总线以其明显的优势,成为目前高速传输的主流平台。文献[1]以XC5VFX130T芯片为硬件核心,分析PCIExpress协议原理和内嵌硬核模块的结构,实现了具有PCIExpress系统主机接口的单通道FC总线接口板卡。文献[2]在XC5VLX30T器件中,设计实现PCIExpress总线接口,同时在接口内部设计直接存储器存储(DirectMemoryAccess,DMA)控制器。本文基于Xilinx公司的Virtex-5现场可编程门阵列(FieldProgrammableGataArray,FPGA)设计高速数据传输系统。该系统采用PCIExpress高速串行总线和基于Aurora协议的光纤通信模块,双单工同时收发。其中发送端和接收端分别包括上位机、驱动和端点设备,本文着重介绍端点设备设计。

2高速数据传输系统的工作原理

Xilinx公司的Virtex-5芯片的PCIExpress端点模块IP核,为用户提供了2种类型的数据通信:程控输入/输出(ProgrammedInput/Output,PIO)方式和总线主控存储器直接存储(Bus-masteringDMA,BMD)方式[3]。PCIExpress设备与系统存储器之间的数据通信可以用PIO方式,但一般采用效率较高的BMD方式。在BMD通信方式下,端点设备变成了一个总线主控设备,负责发起DMA读写操作。当设备要获取系统存储器的内容时,发起指向系统存储器的存储器读操作;当设备向系统存储器传送数据时,发起指向系统存储器的存储器写操作[4-5]。DMA控制器代替CPU发起传输事务,减轻了处理器的压力,而且在数据传送过程中允许其他处理行为发生。在降低CPU使用率的同时,带来较高的吞吐率和性能。基于上述理论的卫星通信星地链路的组成结构如图1所示。该传输系统功能主要由PCIExpress通信模块和光纤通信模块来完成。PCIExpress通信模块采用了总线主控DMA方式进行数据的传输。端点设备中设计了DMA控制器,负责控制数据的发送(存储器写)和从系统内存获得数据(存储器读)。在开始DMA传输之前需要一些初始业务信息,这些信息包括DMA读存储器地址、写存储器地址和传输的数据大小等,由系统软件产生的指向DMA控制/状态寄存器的PIO方式的存储器写包为其传送[6]。光纤通信模块采用了Aurora协议,该协议是为专有上层协议提供透明接口的串行互连协议[7],它可用于高速线性通路之间的点到点串行数据传输,同时其可扩展的带宽,为系统设计人员提供了所需的灵活性。Aurora链路层协议在物理层采用千兆位串行技术,每条物理通道的传输比特率可从622Mb/s扩展到3.125Gb/s。对于发送方,PCIExpress通信模块接收到数据后传输给以AuroraIPCore为核心的自定义的光纤通信模块,该模块通过RocketI/O端口发送给SFP光电转换模块,SFP模块将电信号转换为光信号发送到光纤信道上。对于接收方,数据的接收是一个逆过程。

3高速数据传输系统设计

根据实际实验条件和应用需求,本文设计的高速传输系统由2台PC机模拟卫星和地面站的数据传输。PCIExpress通信模块,选择为x8通道、工作频率250MHz。光纤通信模块工作频率为125MHz,采用8位并行数据传输模式[3,7-8]。高速数据传输系统结构如图2所示。其中,数据存储模块选用了位宽为32bit的RAM。在光纤通信模块中加入32bit/8bit模块和8bit/32bit模块,完成PCIExpress数据和光纤通信数据的传输转换。图2高速数据传输系统结构模拟卫星下发数据的应用软件在准备好待发送的数据后,将文件长度信息及相关命令经由驱动发送给端点设备,设备接到命令信息后启动DMA控制器中的DMA读操作。之后设备将从系统存储器读取的数据通过光纤通信模块发送给地面站。设备每次读取数据的间隔由光口传输速率决定,在不丢失数据的前提下,尽量提高信道的利用率。在模拟地面站接受数据的过程中,首先驱动将接收端系统存储器的目的地址信息发给端点设备,设备的DMA控制器接收到光纤通信模块的数据后启动存储器写操作,将有效数据分批次加载进指向系统存储器的存储器写TLP包中,发送到目的地址。

3.1光纤通信模块

光纤通信模块通过定制XilinxIP核来完成,由于实际需求,在光纤通信模块中要加入数据位转换模块,用来进行PCIExpress模块和光纤模块数据的转换。定制的光纤通信IP核,选择8bit/10bit编码和CRC校验,选用K28.1作为控制字串,当传送控制字串时,由RocketI/O模块的控制字标志输入管脚TX_CHARISK指定该字为控制字串。8bit/10bit编码可以避免数据流中出现连0、连1的情况,便于时钟恢复。在发送端CRC校验码被插入到待发送的并行数据中,数据经过8bit/10bit编码后,被写入发送端FIFO,经过串行化输出接口将并行数据转换成串行差分数据发送出去。接收端在收到的串行差分信号后,通过芯片内部的锁相环从中提取时钟,再按此同步时钟来采样数据,通过解串器将串行数据转换为并行数据,然后经过8bit/10bit解码,并将其写入接收端弹性缓冲器,CRC校验后并行输出。

3.2PCIExpress通信模块

3.2.1发送模块

发送模块流程如图3所示。图3发送模块流程DMA控制器中的发送模块主要完成3个功能:(1)在接收到指向DMA控制/状态寄存器的存储器读包后,通过发送CPLD包将DMA控制/状态寄存器中的信息发送给应用软件。在发送完一个CPLD包后进入等待状态,当确认发送成功后返回当前状态,继续发送CPLD包。这样保证了CPLD包的可靠传输。(2)卫星下发数据时,DMA控制器收到DMA读操作指示后,根据DMA控制/状态寄存器中读数据的大小,确定读操作次数及每次读取数据的大小。并按所确定的信息发送相应地址的存储器读包。(3)模拟地面站接收到数据后主动发起DMA写操作。读取数据存储模块中的数据,按存储器写包的格式(本设计中存储器写TLP包的有效数据载荷为32DW),将数据发送到指定系统存储器单元。传输完毕后,DMA控制器产生写完成中断信号,驱动收到中断后认为一次DMA传输结束,通知应用软件从系统存储器中读取数据。数据提取完毕后,驱动产生中断响应信号给端点设备,表明可以开始下一个DMA传输。

3.2.2接收模块

接收模块主要接收和处理IP核交付的存储器读包、存储器写包、CPL包和CPLD包。接收模块流程如图4所示。图4接收模块流程接收模块检测到的指向DMA控制/状态寄存器的存储器写包是携带有DMA控制器中控制/状态寄存器所需信息的PIO方式的存储器写包。接收模块负责将存储器写包携带的信息写入相应的控制/状态寄存器中。在之后检测到指向DMA控制/状态寄存器的存储器读包后,解析存储器读包的信息,获得要读取的DMA控制/状态寄存器的地址和内容后传输给发送模块,通知发送模块将应用软件预读取地址的数据以CPLD包的格式发送给应用软件。CPLD包是DMA传输中读操作后所收到的相应从系统存储器读取的数据。发送模块启动DMA读操作后,系统存储器的数据通过以CPLD包的格式发送给DMA控制器的接收模块。接收模块将有效数据传输给数据存储单元。接收完一次DMA读操作的数据后,设备产生中断信号通知驱动程序接收完毕,同时驱动产生中断应答信号,等待下一次的DMA传输。

4系统调试结果

在Xilinx公司提供的Virtex-5DMA测试底层驱动基础之上,添加了本传输系统所需的功能,作为所设计高速传输系统所使用的驱动程序。应用程序在VS2005环境下开发,实现对FPGA的初始化复位、配置寄存器信息、大容量数据的发送/接收控制等。本文选用ISEChipscope12.2工具对所设计系统进行调试。图5为发送方Chipscope局部放大图。可以看出,当发送方启动DMA读操作后,DMA控制器先发送存储器读包到trn_td_c接口上,之后trn_rd_c接收到带数据的完成包,如图所示接收的第一个32bit数据的16进制表示为30784142。当接收完毕后表明DMA读操作完毕,发送中断信号。数据存储模块将接收到的数据发送给光纤通信模块,经过32bit转8bit模块后,最终tile0_txdata0_i上的数据经过SFP转换模块发送到光纤信道上。该过程模拟了卫星发送大容量的高速数据。图5发送方Chipscope局部放大图图6为接收方Chipscope局部放大图。可以看出,光纤接收的数据tile0_rxdata1_i经由8bit/32bit转换后给DMA控制器,此时DMA控制器启动DMA写操作后,将接收到的数据打包成存储器写包trn_td_c给PCIExpressIP核,如图所示向PC机发送的第1个32bit数据的16进制表示为30784142。当发送完毕后产生中断信号,表明DMA写操作完毕。仿真结果表明,接收方可以实时有效地将光纤数据传输给系统存储器。实现对数据的接收和存储。

5结束语

本文介绍基于XilinxVirtex-5FPGA设计的高速传输系统中PCIExpress通信模块和光纤通信模块的基本工作原理,设计一种可用于系统存储器与PCIExpress端点设备间传输数据的DMA控制器以及光纤通信模块,实现了2个设备间大容量数据的高速传输,传输速率可达到1.25Gb/s。系统调试结果表明,该传输系统满足卫星通信中大容量高速数据的传输要求,有效地模拟了卫星与地面站间数据的交互,可作为高速通信的信源和信宿,为后续卫星通信系统性能的研究奠定了基础。