基于Zynq7000 FPGA的高速信号采集处理平台

作者:李正轩,费树岷 东南大学自动化学院

摘要: 基于Xilinx Zynq7000系列FPGA,搭建了速度等级在100 Msps的高速信号采集处理平台。平台包含了高速信号采集、高速数据存储以及数字信号处理,在成本、采样速度、数据量、数据处理、稳定性以及可扩展性上都能满足嵌入式高速信号采集处理的需求。详细地介绍了平台的设计、搭建以及后续拓展。

引言
随着技术的发展,在检测系统,特别是实时检测系统中,嵌入式高速信号采集处理系统的应用越来越广泛,相对PC采集处理系统更加轻便灵活。

在高速信号采集及处理系统中,需要解决高速应用、高速缓存、大数据存储、高速处理以及通信这几项问题。

在嵌入式平台上,一般采用高速A/D转换器及DDR搭建高速采集与存储模块,对处理器有比较高的要求:一是速度上要满足A/D转换器采样速率,在100 Msps的采样速度下,往往只有FPGA或高档的DSP能满足要求;二是对于DDR的控制比较繁杂,这对于大部分处理器而言将耗去不少的资源;三是高速数据处理需要使用ARM或DSP作为计算核心,采用FPGA则要面对算法对Verilog/VHDL语言移植的问题。

因此,市面上更多的采用FPGA+ARM/DSP处理器架构,但其在成本、通信设计和扩展性上都不尽如人意。而Xilinx公司推出的Zynq7000系列FPGA集成了两个CortexA9 MPCore 处理器,打破了传统的FPGA+ARM/DSP核架构,提供了单CPU、多处理核的新型解决方案。

1平台设计
1.1Xilinx Zynq7000系列FPGA
Xilinx Zynq7000系列FPGA,继承了两个1 GHz 的ARM CortexA9内核,打破了传统的FPGA+ARM/DSP的架构,使用单片FPGA就能很好地完成工作。FPGA和ARM通过高达100 Gbps的内部高速总线通信,比FPGA+ARM/DSP外部通信的架构更加迅速而且更加可靠。

Zynq7000系列FPGA带有DDR控制器硬核,支持1 GB多种数据位的地址宽度,在ARM(PS)端有64位的数据通道,最高支持1 066 MT/s的速度,其在速度、稳定性和泛用性上都非常优秀,特别适用于做系统的高速存储。

1.2MicroZed评估板
MicroZed评估板是Xilinx公司基于Zynq7000系列FPGA的开发评估板,其基本特征如下。
① 采用Xilinx Zynq7010CLG400 FPGA其存储容量如下:256M×32位(1 GB)DDR3,128M QSPI Flash和4 GB MicroSD卡。
② 接口配置如下,具有:Xilinx JTAG编程器,可同时对逻辑部分(PL)和ARM部分(PS)进行编成与仿真,10/100/1000M以太网接口,USB2.0接口,microSD 卡读写器和USB2.0UART全速串口驱动。

可以说MicroZed评估版包含了高速数据采样处理系统中的采集控制器、高速数据存储以及数据处理器,后面将使用MicroZed评估版对平台进行搭建。

1.3平台整体构架
在MicroZed平台上构建高速信号采样处理平台,其处理平台整体架构如图1所示。

图1 高速信号采样的处理平台整体架构

图1 高速信号采样的处理平台整体架构

高速数据通过A/D转换器采样,经过FPGA送到DDR实现高速缓存,ARM从DDR获取数据、进行处理,并对外部接口进行控制与通信。

2平台搭建
2.1高速采样
高速采样部分选用Analog Devices公司的A/D芯片AD9214系列,其基本特征如下:
◆ 10位65/80/105 Msps三种速度等级;
◆ 信噪比为57 dB @39 MHz模拟输入;
◆ 300 MHz模拟带宽;
◆ 3.3 V单电源供电,模拟输入最大为2Vpp;
◆ 数字输入与时钟输入TTL/CMOS兼容;
◆ 功耗小于285 mW@105 Msps。

AD9214速度与精度能广泛地满足高速信号的采样要求,其TTL/CMOS兼容的电平模式与MicroZed评估板能无缝结合,控制简单。市面上同等级的A/D芯片往往采用BGA或者带背部金属盘(PAD)的封装,但AD9214采用的是常用的双侧引脚扁平封装(SOP)封装,这将为中小规模的研发节省巨大的焊接成本。

图2 为AD9214驱动原理图,信号采样有两种方式可选:一是采用ADT11射频隔离器进行隔离驱动,二是采用AD8138单端转差分运放对A/D芯片进行驱动,时钟线和数据线可与MicroZed直接相连。由于信号频率相对较高,在布线时需主要考虑信号完整性,数据线和时钟线尽量走等长。

2.2高速存储
MicroZed评估板上使用两片Micron公司的DDR3内存MT41K256M16HA -125:E,形成了256M×32位宽的存储结构。

图2 AD9214驱动原理图width="600">

图2 AD9214驱动原理图

通过FPGA搭建A/D数据高速缓存机制,A/D数据经过FPGA的片上缓存,写入DDR A/D数据区,作为高速缓存,DDR其他空间作为ARM控制系统的运行程序,与A/D转换器进行数据交互。数据存储结构图如图3所示。

图3 数据存储结构图

图3 数据存储结构图

对于设定的10位100 Msps的A/D转换器,数据在片上缓存按16位读取,片上缓存到DDR按64位读取,配置DDR控制时钟为533 MHz,可计算得存储速度约为采样速率的40倍,这将大大地保证采样数据的有效存储,而且保证了DDR有足够的时间与控制系统进行数据交互。

2.3数据处理
ARM CortexA9核的运算能力,基本能满足日常的各种数据处理需求,在搭建的平台上有两种可选的数据处理方案。

第一种方案是在Linux系统下的数据处理。Xilinx提供了MicroZed上精简的Linux系统,由于添加了A/D转换器外设,仍然需要对系统的内核和设备树作一些修改,Xilinx SDK上提供了相关的工具,在Xilinx wiki和Xilinx github上也提供了完备的教程与资源,使得Linux系统的搭建相对比较轻松。系统搭建完成后,可在Linux下进行算法的编写或移植。

第二种方案是在Zynq7000上进行数据处理。注意有别于在其他ARM上进行数据处理的方案,因为Zynq7000是FPGA内嵌ARM的架构,所有数据的处理可以是FPGA和ARM部分共同完成的。Xilinx提供的SDK工具支持C++对ARM编程,使得算法的移植比较简捷。Xilinx还提供了高层次综合工具(HLS),可以使用C和C++对FPGA进行IP核编写与封装,通过这些工具可以使得ARM和FPGA共同完成数据处理过程,这将比ARM单独完成在速度上有不少优化。

第一种方案具有更高的普遍性与可扩展性,算法的移植要比第二种方案简单,后续系统的搭建与研发都在Linux平台上进行。但是Linux系统将失去更多的系统资源,在数据处理速度上会慢于方案二。方案二最大的特点是使用ARM+FPGA架构对算法进行优化提速,但其可扩展性低,要求设计人员对并行计算有一定的了解。因此,方案二适用于单一算法的优化处理,或是对算法速度和实时性要求比较高的场合,而且其系统稳定性会高于方案一。

2.4平台实现
根据设计的平台架构,在Vivado上搭建系统,图 4 为Vivado上框图(Block Diagram)。PS核通过AXI总线对FPGA上的IP核进行控制和交互。

图4 Vivado 框图

图4 Vivado 框图

A/D转换器控制IP包括A/D差分数据读入、片上高速缓存及DDR写入控制。外设都通过AXI总线控制器访问及控制,综合后得到图5所示的资源消耗统计图,可见主要消耗的LUT(逻辑单元表)资源在1/3左右,仍然有很多扩展的余量,MMCM为Xilinx的混合模式时钟管理器,片上共2个,使用了1个,所以消耗占50%。

2.5运行情况
图6为在Vivado上捕捉的A/D数据,数据源为20 MHz的方波信号。测试信号只通过射频隔离器进入A/D转换器,所以波形有轻度失真,后续可根据具体信号的频率与特征对输入运放进行调试,可获得更好的采样效果。

图5 资源消耗统计图

图5 资源消耗统计图

图6 Vivdo Hardware Manager上捕捉的20 MHz方波

图6 Vivdo Hardware Manager上捕捉的20 MHz方波

为对平台运算能力进行评估,在ARM核上对50 000个采样点进行了3层小波分解算法,结果耗时约500 ms,同样的算法在Matlab软件上耗时约200 ms,可见本平台的数据运算能力相当优秀。

为后续扩展,修改了MicroZed的Linux内核,加入了常用的系统工具,如gcc编译器、文本编辑器等,系统启动时间在40 s左右,在可接受范围。图7为在MicroZed的Linux系统上挂载SD卡,编译并运行的SD卡上的Hello World程序。

图7 MicroZed上的Linux系统操作

图7 MicroZed上的Linux系统操作

结语
基于Zynq7000的高速信号采集处理平台,为当今的高速信号采集需求提供了更高效、更节省的解决方案。平台整体成本在2 000元人民币以内,有优秀的采集能力、存储能力以及运算能力,在图像处理、线路故障检测和嵌入式信号处理等领域中成为核心的组成部分。

文章来源:单片机与嵌入式系统应用