光纤接口转为以太网接口数据传输系统的实现方法

网友投稿 490 2022-10-26

光纤接口转为以太网接口数据传输系统的实现方法

飞行试验获取合成孔径雷达( SAR )数据需要消耗大量资源,一般使用计算机实现与雷达系统的高速数据传输。雷达系统普遍使用光纤接口,而绝大部分计算机没有光纤接口,需要一种将光纤接口转为计算机通用接口的高速数据传输系统 。

1 系统设计

1.1 系统简介

数据传输系统使用 ZYNQ 单主控芯片实现, 有 2路光纤与 1 路千兆以太网接口,系统架构如图 1 所示。

图 1 光纤 - 以太网系统架构图

1.2 数据传输流程设计

1.2.1 光纤接口

图 2 Aurora IP 用户接口

1.2.2 AXI_HP 接口

AXI4 总线含有读地址通道、写地址通道、读数据通道、写数据通道、写应答通道和系统信号(总线时钟ACLK 、 总 线 复 位 ARESETN ), 其 中 多 个 通 道 有READY/VALID 握手机制,控制信号多,使用复杂。将AXI4 协议进行封装,只引出少数信号给用户,这样可以大幅缩短后期开发和维护周期。PL 为 AXI_HP 的主设备,模块命名为 AXI master 。AXI master 由有限状态机实现,状态转移图如图 3 所示。

图 3 AXI master 状态转移图

使用 AXI master 进行数据传输时,将 burst_req 置1 请求 AXI master 传输, 写入数据长度 len 和起始地址 addr ,判断 AXI master 输出 AXI 可写信号 burst_da-ta_req 为高时将光纤接口输入的数据拼接为 64 bit 写入数据总线,判断 AXI master 输出信号 burst_finish 为高后可进行下一次写请求。经封装后的 AXI4 协议对用户的接口只有写请求、数据可写、写完成、数据总线、 地址总 线和数据长 度, 极大简化 了 AXI4 的READY/VALID 握手机制。

1.2.3 内存映射

1.3 数据传输流程优化

1.3.1 控制策略优化

光纤数据速率高于以太网数据速率,为了避免缓冲区写溢出,保证数据正确,一般需要等待接收数据完毕后再发送下一包指令,但是这样串行的指令流程会造成一个周期内各个模块都有较长的空闲时间。 串行策略流程图如图 4 所示。

图 4 串行策略流程图

为提高速度,在 PL 写入 DDR3 、 Linux 读取 DDR3通过 TCP 发送和上位机接收数据写入磁盘三部分采用乒乓操作。DDR3 被分为高、低地址两部分,光纤数据被乒乓写入 2 块空间。Linux 将 2 块空间数据乒乓发送,读到低地址标识后读取低地址数据,同时发送高地址数据。上位机先发送 2 次传输指令,使发送传输指令与判断接收完成这 2 个操作错位以实现并行处理的优化方案。在开始传输后,上位机预先发送传输一包数据的指令给记录器, 再按照发一包指令、收一包数据的流水线处理,并且建立 2 条流水线以实现数据接收和数据落盘的乒乓操作,到最后一包时不发送指令,只接收数据。此方案在上位机接收数据时数据传输系统可以准备好下一包的数据等待上位机接收,在处理连续数据时可大幅提升传输速度。优化策略流程图如图 5 所示。

图 5 优化策略流程图

1.3.2 共享内存映射

使用 O_SYNC 进行内存映射时会严重浪费高速内核 Cache 的性能, 读写 mmap 映射的内存物理地址非常缓慢。本文在嵌入式 Linux 下分别测试用户空间、带 O_SYNC 参数 mmap 和不带 O_SYNC 参数 mmap 的内存拷贝速度,结果如表 1 所示。

表 1 内存拷贝速度对比

2 系统实现

2.1 嵌入式 Linux 移植

PS 需要从非易失性存储器中启动嵌入式 Linux系统和应用程序 ( APP )。ZYNQ 系列有 JTAG 、 SD 卡、QSPI Flash 和 NAND Flash 4 种启动方式。因为 SD 卡接插件难以满足可靠性要求, 且 ZYNQ 不支持 eMMC作为主启动设备,所以本系统采用 QSPI Flash 启动挂载 eMMC 作为外部存储的方案。

Xilinx 提供了 Linux 移植工具 petalinux ,可以很方便实现 Linux 的配置、裁剪。移植过程如下:

① 生成 bit 流文件。使用硬件描述语言完成 PL 部分逻辑功能, 并根据硬件平台管脚使用情况对 ZYNQIP 核进行配置,编译整个工程生成 bit 流文件。

② 导入 bit 流文件。在 Linux 虚拟机中依照 ZYNQLinux 模板生成工程,将 bit 流文件作为硬件描述信息导入工程, Linux 通过 bit 流文件实现部分自动设备树文件配置。

④ 打包 bin 文件。使用 petalinux 将 PL 部分配置文件 bit 流文件、 kernel 文件、第一阶段引导文件( FS-BL)和U-boot 打包生成 BOOT.bin 文件。

⑤ 固化 Flash 。将生成的 BOOT.bin 文件和 petal-inux 工具生成的 fsbl.elf 文件烧写进 Flash 中, 实现上电自启动嵌入式 Linux 操作系统。

2.2 PC 上位机

PC 上位机使用网线连接数据传输系统,异步 232串口连接信号源。上位机实现用户和界面交互,可设置串口号、传输数据包大小和文件大小。系统连接后,PC 上位机发送查询段地址指令建立 TCP 客户端连接数据传输系统,同时信号源会返回数据列表,然后选择兴趣数据段和文件存储路径后发送传输指令,最后接收数据传输系统的 TCP 数据并记录到本地磁盘。

3 系统测试

图 6 测试电路实物图

本文监测 Windows 网卡资源使用情况,发现数据传输过程中速率平稳,证明使用的三级乒乓和预发送指令错位判断策略可以有效减少流程中各模块的空闲时间。 经过多次测试,连续数据的传输速度保持在770 Mb/s 以上, 达到该链路物理带宽的 90.6% , 除去TCP 协议开销有效数据传输速度超过 86 MB/s 。测试传输 500 GB 数据,经软件校验数据无丢包无错误。

表 2 系统性能对比

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中常用的设计模式之工厂模式详解
下一篇:K8s 终将废弃 docker,TKE 早已支持 containerd
相关文章

 发表评论

暂时没有评论,来抢沙发吧~