基于Zynq
扫描二维码
随时随地手机看文章
引言
随着数字信号处理技术的日益蓬勃发展,在雷达信号处理、航测等诸多领域,日益扩张的原始数据、更加复杂和不断增加的算法都对接口的传输速度提出了更高的要求,高速、稳定、安全的传输接口往往成为整个项目的技术关键。千兆以太网从以太网基础上发展而来,具有高效、高速、高性能等特点,同时还可以实现完全的电气隔离,是能够适用于诸多领域的优秀数据传输方式。本文基于xilinx的高性能Zynq-7000全可编程片上系统,利用其ARM+FPGA架构,实现了千兆以太网的高速传输,一方面将嵌入式系统简单化、小型化,另一方面鉴于FPGA的特性,为整个模块提供了可观的扩展空间,方便功能的扩展和算法模块的搭建。
1平台设计
1.1Zynq-7000系列
本文使用的硬件平台核心为xilinx公司出品的Zynq-7000系列FPGA,其集成了处理系统(ProceSSingSyStem,PS)和可编程逻辑(ProgramableLogic,PL)两大部分。PS部分包括最高可运行1GHz的双核ARMCortex-A9多核处理器:PL部分即xilinxFPGA,包括可配置逻辑块(ConfigurableLogicBlock,CLB)、36kB容量的BRAM、数字信号处理DSP48E1、时钟管理单元、可配置I/o、模数转换器(xADC)等资源。Zynq-7000系列中的PS部分与PL部分之间包含3000个内部互联,处理器系统和可编程逻辑紧密结合,内部接口可以达到100Gbit/S以上的吞吐量,其性能完全不逊于FPGA+ARM的传统组合,再加上FPGA的可反复编程特性,使得Zynq-7000系列芯片成为很多高标准平台的选择,使传输方案具备更好的扩展性和灵活性。
l.2PS-PL接口设计
本文使用32bit位宽的AxI-HP高性能端口,利用AxIDMA模式进行数据交互。在Zynq-7000的PL中,利用AxIDMA方式和AxI数据BRAM,通过AxI-Lite总线处理器进行数据建立和连续传输。
根据设计的平台方案,在Vivado上搭建系统,PS与PL间为一个深度充裕的BRAM,约定一个地址作为总线状态地址。命令字由PS至PL下发时,PS端将命令字存到BRAM固定地址,并将总线状态写为命令状态,PL端检测到命令状态时开始对BRAM进行读操作,读取约定长度的命令字数据。当数据从PL至PS上传时,PL端首先对总线状态地址进行监测,检测到总线状态为忙状态时,则不进行数据上传:检测到总线状态为非忙状态时,PL端开始对BRAM进行写操作,将固定长度的数据写入BRAM中,同时向PS端发送一个F2P的中断,PS端检测到中断后开始对BRAM进行读操作,将固定长度的数据读出并做下一步处理,处理完成后将总线状态写为闲状态,PL端检测到总线状态重新变为闲时开始下一次数据写入。利用上述的握手机制,可以保证上下行数据高速连续地传输,避免出现因PS端处理速度造成的丢包现象。
1.3模块整体架构
模块整体架构设计如图1所示。
上行数据通过在RAM进行缓存后,通过PS-PL接口传送至ARM进行打包处理,利用UDP协议通过AR8035芯片和网口发送到通用计算机:下行命令字通过千兆网口传送到ARM进行打包,然后通过PS-PL接口传送至PL侧FPGA中的RAM进行缓存,向下发送。
1.4程序设计
1.4.1FPGA程序设计
FPGA程序使用VHDL语言编写,数据帧的形式如图2所示。
为了提高数据上传效率,每次AxIDMA传输上传10帧数据。FPGA接到底层传输上来的数据后,将数据存入一个上行缓存RAM,当检测到总线状态为闲状态并且缓存RAM中数据满10帧时,启动上传使能,将10帧数据通过120MHz时钟以32位宽的形式存入总线BRAM中的约定地址并发送中断信号。然后不断监控状态地址,当总线状态完成一次由闲变忙再变闲后,开始下一次BRAM的写操作。
当命令数据下行,FPGA检测到总线状态为命令状态时,开始对总线BRAM进行读操作,读取约定地址上的1024字节的命令数据存入下行的缓存RAM,通过RAM转换成适合下层使用的位宽后向下发送。
1.4.2ARM程序设计
ARM程序使用C语言编写,当检测到F2P中断时开始数据上传流程,将状态置为忙,从BRAM中读取数据,将数据拆分为10帧,分别判断帧头,将正确的帧头通过UDP协议上传,并设置状态为闲:当接收到上位机命令时,将帧头正确的命令数据写入BRAM,并设置状态为命令状态,提醒FPGA接收。数据上行程序流程如图3所示。
2模块测试
完成软硬件设计后,对模块进行功能和稳定性测试。测试命令下行时,使用网口调试助手下发正确格式的命令包,通过VivadoHardware观察接收的命令是否正确:测试数据上行时,使用wireShark抓取数据包,观察数据帧头流水号是否连续,若连续则说明传输正常不丢包,若不连续则证明传输不正确。
经过测试,数据上行和命令下行功能正常,传输不丢包,且速度高达640MbpS,满足高速、稳定的要求。
3结语
本文基于Zynq-7000全可编程片上系统的硬、软件相结合的设计,成功搭建了千兆以太网传输模块,与通用计算机互联传输高速、稳定,使用UDP协议传输速度达到640MbpS。模块使用高性能Zynq-7000系列芯片,将嵌入式系统和可编程逻辑器件紧密结合,架构灵活且方便扩展,为多种领域的数据传输提供了一个高速、稳定、低成本的解决方案。