第1章>>1.5:神电测控为什么开发LabVIEW ZYNQ FPGA软件工具包?(ZYNQ芯片的特点与优势)《LabVIEW ZYNQ FPGA宝典》

       首先,我们得了解清楚ZYNQ芯片跟以往我们使用的纯FPGA芯片有哪些不同之处,有什么特点,有哪些优势,开发难度在哪?然后得出之所以开发LabVIEW My FPGA ZYNQ工具包的结论。

1.5.1:ZYNQ 芯片简介

        ZYNQ是赛灵思公司(Xilinx)推出的新一代全可编程片上系统(APSoC,All-Programmable SoC),它将处理器的软件可编程性与FPGA的硬件可编程性进行完美整合,以提供无与伦比的系统性能、灵活性与可扩展性。

        Zynq-7000系列是Xilinx于2010年4月推出的行业第一个可扩展处理平台,旨在为视频监视、汽车驾驶员辅助、工厂自动化、医疗器械等高端嵌入式应用提供所需的处理能力与计算性能。这款基于ARM处理器的SoC可满足复杂嵌入式系统的高性能、低功耗和多核处理能力等要求。

        ZYNQ芯片的本质特征,是它组合了1个双核ARM Cortex-A9处理器和1个传统的现场可编程门阵列(FPGA)逻辑部件。由于该新型器件的可编程逻辑部分,也就是PL部分,是基于赛灵思28nm工艺的7系列FPGA,典型的就是Artix7和Kintex7,因此,很多时候也称之为ZYNQ7000系列FPGA芯片。

        提醒:其中ZYNQ7020及以下的芯片内置的是Artix7 FPGA芯片,高于ZYNQ7020的内置的是Kintex7 FPGA,另外还有单核ARM的带S后缀的系列,具体参数如表1所示。

1Xilinx ZYNQ芯片种类与内部参数

        ZYNQ主要是由两个部分组成的:一是由双核ARM Cortex-A9为核心构成的处理系统(PS,Processing System),另一部分等价于一片FPGA的可编程逻辑(PL,Programmable Logic),ZYNQ架构的简化模型,如图1-16所示。

图1-16:ZYNQ芯片架构简化模型

        在上图中,PS具有固定的架构,包含了处理器和系统的存储器;而PL完全是灵活的,给了设计者一块“空白画布”来创建定制的外设。

        在ZYNQ上,ARM Cortex-A9是一个应用级的处理器,能运行像Linux这样的操作系统,而可编程逻辑是基于Xilinx 7系列的FPGA架构。ZYNQ架构实现了工业标准的AXI接口,PS与PL之间实现了高带宽、低延迟的连接。这意味着处理器PS和逻辑PL部分各自都可以发挥最佳的用途和性能,而不会产生在两个分立器件之间的接口开销。与此同时,系统被简化为单一芯片所带来的Layout好处,包括物理尺寸和整体成本的降低。

1.5.2:ZYNQ 芯片里面的PS(ARM)部分简介

        ZYNQ实际上是一个以处理器为核心的系统,PL只是它的一个外设。Zynq-7000系列的亮点在于它包含了完整的ARM处理器系统,且处理器系统中集成了内存控制器和大量的外设,使Cortex-A9处理器可以完全独立于可编程逻辑单元。而且实际上在ZYNQ中,PL和PS两部分的供电电路是独立的,这样PS或PL部分不被使用的话就可以被断电。

        玩过传统纯FPGA的用户知道,其实FPGA也可以用来搭建嵌入式处理器,像Xilinx 的MicroBlaze 处理器或者Altera的Nios II处理器。像这种使用FPGA的可编程逻辑资源搭建的处理器我们称之为“软核”处理器,它的优势在于处理器的数量以及实现方式的灵活性。

        而ZYNQ中集成的是一颗“硬核”处理器,它是硅芯片上专用且经过优化的硬件电路,硬核处理器的优势是它可以获得相对较高的性能。另外,ZYNQ中的硬件处理器和软核处理器并不冲突,我们完全可以使用PL的逻辑资源搭建一个Microblaze 软核处理器,来和ARM硬核处理器协同工作。

        需要注意的是,Zynq处理器系统里并非只有ARM处理器,还有一组相关的处理资源,形成了一个应用处理器单元(Application Processing Unit,APU),另外还有扩展外设接口、cache存储器、存储器接口、互联接口和时钟发生电路等。

        ZYNQ处理器系统(PS)示意图如图1-17所示,其中红色高亮区域为APU。

图1-17:ZYNQ芯片里面的PS(ARM)部分系统示意图

接下来,我看看ZYNQ芯片的外部接口资源。

        如上图所示,Zynq PS实现了众多接口,既有PS和PL之间的,也有PS和外部部件之间的。PS和外部接口之间的通信主要是通过复用的输入/输出(Multiplexed Input/Output, MIO)实现的,它提供了可以灵活配置的54个引脚,这表明外部设备和引脚之间的映射是可以按需定义的。当需要扩展超过54个引脚的时候可以通过扩展MIO(Extended MIO,EMIO)来实现,EMIO并不是PS和外部连接之间的直接通路,而是通过共用了PL的I/O资源来实现的。

        PS中可用的I/O包括标准通信接口和通用输入/输出(General Purpose Input/Output,GPIO),GPIO可以用做各种用途,包括简单的按钮、开关和LED。 如下图1-18所示。

图1-18:PS端的外部接口

最后,我们看看PSPL之间的互联接口。

        ZYNQ将高性能ARM Cotex-A系列处理器与高性能FPGA在单芯片内紧密结合,为设计带来了如减小体积和功耗、降低设计风险,增加设计灵活性等诸多优点。在将不同工艺特征的处理器与FPGA融合在一个芯片上之后,片内处理器与FPGA之间的互联通路就成了ZYNQ芯片设计的重中之重。如果Cotex-A9与FPGA之间的数据交互成为瓶颈,那么处理器与FPGA结合的性能优势就不能发挥出来。

        Xilinx从Spartan6和Virtex6系列开始使用AXI协议来连接IP核。在7系列和ZYNQ-7000 SoC器件中,Xilinx在IP核中继续使用AXI协议。AXI的英文全称是Advanced eXtensible Interface,即高级可扩展接口,是ARM公司所提出的 AMBA(Advanced Microcontroller Bus Architecture)协议的一部分。

        AXI协议是一种高性能、高带宽、低延迟的片内总线,在PS和PL之间的主要连接是通过一组9个AXI接口,每个接口有多个通道组成。这些形成了PS内部的互联以及与 PL的连接, 如下图1-19所示。

图1-19:PS与PL芯片内部AXI互联

1.5.3:ZYNQ 芯片里面的PL(FPGA)部分简介

        ZYNQ PL部分等价于Xilinx 7系列FPGA,因此我们将首先介绍 FPGA 的架构。简化的FPGA基本结构由6部分组成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等,FPGA基本结构,如图1-20所示。

图1-20:PL(FPGA)芯片基本结构

下面简单介绍一下每个单元的基本概念。

1)可编程输入/输出单元

        输入/输出(Input/Ouput)单元简称I/O单元,它们是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配需求,为了使FPGA具有更灵活的应用,目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可以适配不同的电气标准与I/O物理特性;可以调整匹配阻抗特性、上下拉电阻、以及调整驱动电流的大小等。

2)基本可编程逻辑单元

        基本可编程逻辑单元是可编程逻辑的主体,可以根据设计灵活地改变其内部连接与配置,完成不同的逻辑功能。FPGA一般是基于SRAM工艺的,其基本可编程逻辑单元几乎都是由查找表(LUT,Look UpTable)和寄存器(Register)组成。Xilinx 7系列FPGA内部查找表为 6 输入,查找表一般完成纯组合逻辑功能。FPGA内部寄存器结构相当灵活,可以配置为带同步/异步复位或置位,时钟使能的触发器,也可以配置成锁存器, FPGA 依赖寄存器完成同步时序逻辑设计。

3)嵌入式块Block RAM(简称BRAM)

        目前大多数FPGA都有内嵌的块RAM(Block RAM),FPGA 内部嵌入可编程RAM模块,大大地拓展了FPGA的应用范围和使用灵活性。不同器件商或不同器件族的内嵌块 RAM的结构不同,Lattice 常用的块RAM大小是9Kbit;Altera的块RAM最灵活,一些高端器件内部同时含有3种块RAM结构,分别是M512 RAM,M4K RAM,M9K RAM。

        Zynq-7000里的块RAM和Xilinx 7列FPGA里的那些块RAM是等同的,它们可以实现RAM、ROM和先入先出(First In First Out,FIFO)缓冲器。每个块RAM可以存储最多 36KB的信息,并且可以被配置为一个36KB的RAM或两个独立的18KB RAM。默认的字宽是18位,这样的配置下每个RAM含有2048个存储单元。RAM 还可以被“重塑” 来包含更多更小的单元(比如4096个单元x9位,或8192x4位),或是另外做成更少更长的单元(如1024单元x36位512x72位)。把两个或多个块RAM组合起来可以形成更大的存储容量。PL中的块RAM示意图如1-21下所示

图1-21:PL(FPGA)中的Block RAM

        注意:除了块BRAM,还可以灵活地将LUT配置成RAM,ROM,FIFO等存储结构,这种技术被称为分布式RAM。根据设计需求,块RAM的数量和配置方式也是器件选型的一个重要标准。

4)丰富的布线资源

        布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,这些布线资源根据工艺、长度、宽度和分布位置的不同而划分

为4类不同的类别:

        第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;

        第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号布线;

        第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;

        第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。

        在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有直接的关系。

5)底层嵌入功能单元

        底层嵌入功能单元的概念比较笼统,这里我们指的是那些通用程度较高的嵌入式功能模块,比如PLL(Phase Locked Loop)、DLL(Delay Locked Loop)、DSP、CPU等。随着 FPGA的发展,这些模块被越来越多地嵌入到FPGA的内部,以满足不同场合的需求。

        目前大多数FPGA厂商都在FPGA内部集成了DLL或者PLL硬件电路,用以完成时钟的高精度、低抖动的倍频、分频、占空比调整、相移等功能。目前,高端FPGA产品集成的DLL和PLL资源越来越丰富,功能越来越复杂,精度越来越高。

        另外,越来越多的高端FPGA产品将包含DSP或CPU等硬核,从而FPGA将由传统的硬件设计手段逐步过渡到系统级设计平台。例如Altera的Stratix IV、Stratix V等器件内部集成了DSP核;Xilinx的Virtes II和Virtex II pro系列FPGA内部集成了Power PC450的处理器。FPGA内部嵌入DSP或CPU等处理器,使FPGA在一定程度上具备了实现软硬件联合系统的能力,FPGA正逐步成为SOPC的高效设计平台。

6)内嵌专用硬核

        这里的内嵌专用硬核与前面的底层嵌入单元是有区分的,这里讲的内嵌专用硬核主要指那些通用性相对较弱,不是所有 FPGA 器件都包含硬核。

        在ZYNQ的PL端有一个数模混合模块-XADC,它就是一个硬核。XADC 包含两个模数转换器(ADC),一个模拟多路复用器,片上温度和片上电压传感器等。我们可以利用这个模块监测芯片温度和供电电压,也可以用来测量外部的模拟电压信号。

1.5.4:总结

        通过上面的介绍,可以发现:有些对实时性要求不高的算法和总线通信,比如Modbus通信、MQTTWiFiTCPUDP、高斯拟合、多项式拟合、互相关、不限制点数的FFT频谱变换、不限制点数的滤波器、机器学习、Python脚本、甚至AI算法、双精度浮点数计算都可以放在PS端也就是ARM里面跑,这样可以极大节省FPGA宝贵的资源;而对于实时性要求很高或者需要对某些算法进行加速,可以放在PL端也就是FPGA里面跑,比如高速ADC采集、DAC输出、快速FFT傅里叶变换、高吞吐率滤波器、高吞吐率锁相环PLL、图像处理、矩阵计算、多线程并行计算等,当然了,FPGA里面我们也封装好了千兆和万兆TCPUDP功能。

        因此,有了ZYNQ之后,我们能做的项目和产品复杂度和灵活性也更高了,甚至有一种感觉,那就是上手兵器多了,都不知道用哪个好了!加上ZYNQPS端可以运行Linux RT系统,这个Linux OS又极大的拓展和丰富了用户的想象力,可以实现以前纯FPGA不好实现的项目和产品,降本增效,妙哉!!!

        了解清楚了ZYNQ芯片的架构和开发门槛和开发工作量之后,就会发现传统的ZYNQ开发之路是多么的困难和痛苦,有没有一种软件能同时解决PSPL开发难度大这个痛点呢?我想答案是肯定的,图形化的LabVIEW无疑是解决这个问题的最佳工具软件,毕竟NImyRIO卖的还是非常火的,就是因为支持LabVIEW编程,让原本难上加难的ZYNQ芯片开发变得简单傻瓜化,极大的降低了开发门槛和调试工作量。

        但是NImyRIO/sbRIO/cRIO价格太贵了,市面上基于ZYNQ芯片的硬件和板子太多了,都是白菜价了,便宜的一两百的都有,所以为了让我们广大爱好者和工程师们还有创业者们都能享受到ZYNQ芯片带来的福利,我们神电测控专门花费了2年时间攻克了历史上最难的ZYNQ架构的芯片,彻底打通了ZYNQ芯片里面的PSARM)跟PLFPGA)之间的各种通信方式,有低速的Reg寄存器和Memory存储器访问,也有高速的AXI DMA FIFO传输互联,满足各类应用场景,取之不尽用之不竭!

        我们花费了半年时间,将PSARM)里面运行的Linux RT环境下所需要的驱动和动态库和PLFPGA)端的子VI函数全部封装到了LabVIEW My FPGA ZYNQ工具包里面来了,方便用户统一安装使用。有了我们这个My FPGA ZYNQ工具包之后,用户就能像开发NI myRIOsbRIO或者cRIO那样简单的方式来开发市面上任意一款ZYNQ板子了,包括用户自己做的硬件,这样才能最大程度的降低客户的硬件成本。真正让每个客户都能将ZYNQ用到自己的项目和产品里面去,发挥最大价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值