Xilinx Zynq-7000 全可编程 SoC (AP SoC) 系列集成 ARM处理器的软件可编程性与 FPGA 的硬件可编程性,不仅可实现重要分析与硬件加速,同时还在单个器件上高度集成 CPU、DSP、ASSP 以及混合信号功能。Zynq-7000 器件配备双核ARM Cortex-A9 处理器,该处理器与基于 28nm Artix-7 或 Kintex-7 的可编程逻辑集成,可实现优异的性能功耗比和最大的设计灵活性。这种集成在一起的CPU与FPGA之间的通讯总线,通讯速度更快,信息传递结构更简单。简单来说,就是Xilinx的这款芯片既能节省成本又能提高性能,还有这种好事?还真有,下面我来举个例子。
鼎阳(SIGLENT)SDS1000X-E系列以及电商专供SDS1000X-C系列超级荧光示波器
2/4通道,最高带宽200MHz
图1 SDS1000X-E(X-C)中集成了Zynq-7000
SDS1000X-E(X-C)中采用的XC7Z020 SoC芯片,具有双核ARM Cortex-A9处理器(PS)+基于Artix-7架构的FPGA(PL),其中处理器部分支持的最高主频为866MHz,FPGA部分则包含85k逻辑单元、4.9Mb Block RAM和220个DSP Slice,并提供对常用外部存储器如DDR2/DDR3的支持,非常契合数字示波器中对数据进行采集、存储和数字信号处理的需求。同时,Zynq-7000的PS(处理器系统)和PL(可编程逻辑)部分之间通过AXI高速总线互连,可以有效解决传统数字存储示波器中CPU与FPGA间数据传输的带宽瓶颈问题,有利于降低数字示波器的死区时间,提高波形捕获率。用单片SoC芯片替代传统的CPU+FPGA的分立方案,也可以减少硬件布板面积,有利于将高性能处理系统向紧凑型的入门级示波器中集成。
数据采集与存储图2 用Zynq-7000构架的SPO引擎
SDS1000X-E(X-C)中采用的高速模-数转换(ADC)芯片,其数据接口为LVDS差分对形式,每对LVDS的速率为1Gbps。采用的Zynq-7000芯片,其可编程IO的LVDS最高速率可达1.25 Gbps,可以保证稳定可靠地接收ADC采样到的数据。同时,FPGA接收到的高速ADC数据需要实时地写入到存储器中,以8-bit,1GSa/s的ADC为例,其输出数据的吞吐率为1GByte/s。Zynq-7000支持常用的DDR2、DDR3等低成本存储器,最高DDR3接口速率可达1066MT/s,因此,使用单片DDR3即可满足实时存储上述ADC输出数据的要求。而且,Zynq-7000支持PL共享PS的存储器,只要给PS部分预留足够的存储器带宽,剩余带宽用于存储ADC数据,无须在PL部分再外挂存储器,降低了成本。
更为重要的是,基于Zynq-7000中丰富的可编程逻辑资源(XC7Z020中为85k等效逻辑单元),SDS1000X-E(X-C)集成高灵敏度、低抖动、零温漂的数字触发系统,使得其触发更为准确;各种智能触发功能如斜率、脉宽、视频、超时、欠幅、码型等,能帮助用户更精确地隔离出感兴趣的波形;总线协议触发甚至能直接用符合条件的总线事件(如I2C总线的起始位,或UART的特定数据)作为触发条件,极大地方便调试。
图3 模拟触发系统与数字触发系统的触发抖动对比
数据交互
随着数字示波器设计复杂性的增加和处理器处理能力的提升,总线结构日益成为系统性能的瓶颈。传统的入门级数字示波器,采用低成本的嵌入式处理器作为控制和处理核心,采用低成本的FPGA实现数据采集和存储,二者之间通过并行的本地总线互连,处理器作为主设备,FPGA作为从设备;总线上同时还连接其他处理器外设,如FLASH、USB控制器等,如图4所示。
图4 传统架构的嵌入式处理器与FPGA互连
这种互连方式的最大问题是数据吞吐率低,一是因为本地总线一般是异步总线,理想的情况下一个读/写访问最少需要3个周期(1个setup周期,1个access周期和1个hold周期)。以16-bit位宽,外部总线频率100MHz的本地总线为例,其理想的最高总线访问吞吐率为66MB/s;二是因为读、写操作共用一套地址、数据总线,属于半双工操作;三是多个从设备会竞争总线,从而降低每个从设备的有效数据吞吐率。以1GSa/s采样率的数字示波器为例,其采样10M点的时间仅为10ms,但用于传输10M点的时间(以理想的66MB/s总线吞吐率为例)至少要150ms,是数据采样时间的15倍。换一种说法,即使不考虑数据处理的时间,死区时间也达到了15/16 = 93.75%。
SDS1000X-E(X-C)采用Zynq SoC架构,处理器(PS)和FPGA(PL)之间采用高速AXI总线互连,可以有效地解决二者间数据传输的带宽瓶颈问题,大大提高数据吞吐率,降低示波器的死区时间。Zynq-7000中采用的4个AXI-HP端口,每个端口支持最大64-bit位宽,最高250MHz时钟频率;同时读、写通道分开,可执行全双工操作;PS和PL之间属于点到点传输,不存在与其它设备的总线竞争。使用单个HP端口传输数据,其吞吐率都可以轻易达到双向各1GB/s的速度,4个端口总共可达到的读、写速率一共超过8GB/s,远远大于本地总线的传输速率。
图5 Zynq SoC中处理器与可编程逻辑的互连
数字信号处理
SDS1000X-E(X-C)中配备了很多实用性高、性能强大的数字信号处理功能,如支持1M点运算的FFT、增强分辨率(Eres模式,仅SDS1000X-E支持)、14M 全采样点的串行协议解码、14M 全采样点的多种测量以及数学运算等,大大提高了入门级数字示波器的数字信号处理能力。
Zynq-7000丰富的硬件资源,为SDS1000X-E(X-C)的数字信号处理功能提供了强大的支撑。SDS1000X-E(X-C)中采用的XC7Z020 SoC芯片,PS部分具有双核ARM Cortex-A9处理器,最高主频为866MHz,并行协处理器NEON可以在软件层面执行数字信号处理;PL部分具有220个DSP Slice和4.9Mb Block RAM;加上PS和PL之间数据接口极高的吞吐率,使得我们可以灵活地为不同的数字信号处理配置不同的硬件资源。
运算指令复杂、适合软件实现的功能,可以在PS侧实现,如信号上升沿的测量;需要使用大量乘累加运算,对硬件资源依赖度较高的功能,可以在PL侧实现,如示波器中常用的插值滤波。
有些复杂的功能,则可以利用PS和PL间的高数据带宽进行协同处理,例如FFT运算,在PL侧利用丰富的DSP Slice和Block RAM资源构建协处理器对基本FFT运算进行硬件加速,PS侧则实现复杂的窗函数计算、绘图、UI等操作。基于这种协同处理的架构,SDS1000X-E(X-C)上的FFT支持高达1M点的FFT,在获得极高的频谱分辨率的同时,还能大大加快频谱的刷新速度。图6显示了在SDS1000X-E(X-C)上分别进行16k点和1M点FFT的频谱分辨率对比。此例中我们给示波器输入了一个双音信号,其频率为100MHz和100.05MHz,从16k点FFT获得的频谱图中我们无法分辨如此靠近的两个正弦信号,信号被作为一个频率显示出来;而1M点FFT的频谱图有着明显更细致的频谱以及信号处理增益,从水平100倍展开的图中可以看出,两个相距50kHz的正弦型号能够被很好地区分开。
图6 1M点FFT获得极高的频谱分辨率
类似的,在SDS1000X-E(X-C)还有诸多这种PS和PL间相互协同处理而获得的高性能数字信号处理。例如,SDS1000X-E(X-C)可以对14M 全采样点进行多种测量和串行协议解码,而这是在许多中、高端示波器中都做不到的。图7中,上方两图为某主流中端示波器对10ns上升沿的测量结果,下方两图为SDS1000X-E(X-C)对相同信号的测量结果。可以看到,在小时基下,二者的测量结果都较为精确,与实际上升时间相差不大,但在大时基下,右上图显示该示波器在100us/div下只能显示"< 48ns"的测量结果,注意此时它的原始采样率仍然有1GSa/s,这说明此时它的测量对象并不是原始波形数据,而是经过压缩后映射到屏幕上的数据。右下图显示SDS1000X-E(X-C)在1ms/div的时基下的测量结果,注意此时的采样率同样为1GSa/s,但显示的测量精度仍然达到了1ns,能够较为真实地反映信号的参数。
SDS1000X-E(X-C)基于全采样点的数字信号处理以及高达14M点的存储深度,允许用户在大时基下观察信号整体的同时,仍然能获得细节上的处理结果;同时由于其基于Zynq架构的处理方式,使得信号处理的性能和速度达到最优,具备更好的实时性和灵活性。
图7 压缩点测量与全采样点测量精度对比
综上,这个例子说明了一点,就是在原本解决方案里就采用ARM+FPGA的产品里,使用zynq不仅能降低成本,还可以大幅度提高性能。这就使得在这款市场定位于入门级示波器的SDS1000X-E(X-C)上,就能够体现到一些中、高端数字示波器才具有的指标和功能。
-
Kintex-7
+关注
关注
1文章
27浏览量
16004
原文标题:浅谈Xilinx ZYNQ-7000平台的应用【文尾有福利】
文章出处:【微信号:Hardware_10W,微信公众号:硬件十万个为什么】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论