第1章>>1.3:NI公司为什么要做LabVIEW FPGA工具包?《LabVIEW ZYNQ FPGA宝典》

        介绍完LabVIEW和FPGA之后,我们脑海里面会出现一个问号,NI公司为什么要开发LabVIEW FPGA软件工具包呢?为什么不用传统的VHDL或者Verilog语言来开发FPGA呢?要回答这个问题,我想可以从以下6点进行探讨。

  1. FPGA软件开发门槛高、周期长、调试困难:VHDL/Verilog。
  2. FPGA嵌入式工程师难寻,招人成本高:人才高手难觅。
  3. FPGA开发与维护成本高,交接成本高:离职交接成本太高。
  4. FPGA软件IP受限于巨头,高级功能需要付费:生态圈不完善。
  5. FPGA应用场合受限制,没有更多实际案例,尤其是工业自动化、图像处理等领域。
  6. 为什么高职、大专之类的工程师就不能开发FPGA呢?门槛高(解决这个问题)。

        下面我们来分析一下。

        首先,传统的FPGA开发模式是利用文本编程语言VHDL或者Verilog进行代码编写,然而FPGA的原语要比MCU复杂一些,面向的是更为底层的硬件描述语言,很多软件工程师在学习和开发过程中非常痛苦,毕竟VHDL要比C语言复杂一些;这样一来,就会导致开发周期比传统的C语言开发时间还要长,而且FPGA调试非常的麻烦,远没有C语言简单,一般需要借助额外的调试软件,例如Chipscope,关键是还要自己编写测试脚本,工作量可想而知。所以能用MCU实现的功能就尽量不要用FPGA去实现,毕竟FPGA的软件开发人力成本太高。

        其次,在市场上招聘一名有经验的FPGA软件工程师非常难,这是因为这类FPGA工程师通常需要一定年限的项目或者产品开发经验积累才能胜任复杂的FPGA应用。高手更是难以寻觅,由此带来的人员流动和项目交接维护成本的风险也会急速上升,很多公司都在想尽办法留住自己培养的FPGA工程师。

        然后就是很多FPGA IP核都是由几个FPGA芯片巨头自己提供的,高级功能需要付费购买才能使用,这在一定程度上限制了很多低成本应用的边界。毕竟FPGA不像Linux那样有完善的开源生态圈,门槛比较高,所以迫切需要一家公司自己能够研发出来更多易用的、功能强大的IP核,能够一定程度上摆脱对Xilinx、Altera软件IP的依赖。

        最后就是FPGA的拓展应用,对于很多工业控制、自动化生产、数据采集、边缘计算、人工智能、机器学习、医疗器械、仪器仪表等领域的工程师来说,他们非常想把FPGA直接用到自己的项目或者产品里面去,但是受限于FPGA这方面的案例太少,VHDL门槛过高,行业特色IP缺乏导致这类工程师望而却步。而NI公司正好就是提供这些行业解决方案的企业,对这些行业和领域非常了解,所以NI可以非常快速将FPGA融合到自己的领域中来,让大家都能得到普惠。

        正是基于以上种种原因,NI公司5年磨一剑,终于研发出来一款具有划时代意义的LabVIEW FPGA工具包,让我们通过一个简单的例子对比来了解一下这个工具包的强大之处,如图1-6所示。将复杂问题简单化也是我们人类一直追求的极致

http://www.ni.com/cms/images/devzone/pub/framxaln14330.gif

图1-6:传统的VHDL文本编程VS. LabVIEW FPGA编程

        LabVIEW FPGANI所有软件工具包里面花费时间最长,投入资金最多,产品线最丰富、也是NI核心竞争力的一个重要方向。从1999~2003年,NI与Xilinx合作开发出了第一代LabVIEW FPGA软件工具包,借助Xilinx ISE编译器,围绕着FPGA,NI发布了一系列RIO硬件开发平台,有单纯的R系列板卡,也有很多CPU+FPGA或者ARM+FPGA架构的板卡和控制器。因为,LabVIEW之父Jeff Kodosky多次强调:任何一门编程语言的生命周期是50年,并行的LabVIEW与并行的FPGA的结合将是推动LabVIEW未来的发展

        现在NI公司每年都会推出新的FPGA硬件和软件IP核以及案例,包括最新5G算法、雷达仿真、神经网络CNN等。FPGA工具包里面也集成了Xilinx最新的Vivado编译器,这样就可以支持Xilinx最新的7系列及其以后的FPGA芯片了,比如Spartan7、ARTIX7、KINTEX7、Virtex7、KU、VU、KU+、VU+、ZYNQ、MPSOC等等。可以说,LabVIEW FPGA是NI和Xilinx两家巨头公司共同合作的产物,具有划时代意义的一个软件代表。

        现在越来越多的用户使用Xilinx的ZYNQ家族芯片进行产品开发,但是遗憾的是,目前NI推出的LabVIEW FPGA硬件产品里面却没有用到这款性价比极高的ZYNQ7020芯片,图1-7列举了NI公司90%的RIO硬件平台里面所用到的FPGA芯片型号。为了满足市场对ZYNQ7000系列芯片的LabVIEW开发需求,我们(神电测控)专门开发了一个针对ZYNQ7000的通用型LabVIEW My FPGA工具包,来弥补NI的不足,并且编撰了这本专门讲解如何使用LabVIEW开发ZYNQ7000系列FPGA芯片的宝典。

        比如本书配套的板子是性价比超高的正点原子ZYNQ7020领航者开发板,主芯片就是大家熟知的XC7Z020,之所以选择这个开发板,除了价格因素外,更重要的是原子在对PS(ARM)和PL(FPGA)引脚进行设计和布局的时候,考虑的十分合理和周到。

图1-7:NI公司RIO产品里面用到的Xilinx FPGA芯片型号

        详细的芯片对照列表还可以参考下面的链接:                           

        http://www.ni.com/product-documentation/54514/en/?OpenDocument

        通过上面的列表,可以看到早期高端一点的R系列或者FlexRIO板卡里面用到的都是以Virtex系列为主,比如V5、V6、V7等等。当然最近几年推出的很多高端一点的RIO硬件,里面用到的都是Xilinx的KINTEX7和KU甚至越来越多的KU+系列,例如,带FPGA的可编程高速示波器板卡。而对于一些早期推出的中低端cRIO和sbRIO产品来说,里面用到的一般都是Spartan6和Spartan3。追求低成本的控制器和机箱里面用到了Xilinx SoC架构的ZYNQ芯片,就是把双核ARMARTIX7或者KINTEX7系列FPGA整合到一个片子里面的芯片。包括NI针对院校推出的myRIO里面用到的也是ZYNQ系列,这个系列主打的不是FPGA而是双核ARM,可以运行linux RT,对硬件成本有严格控制的项目和产品来说,ZYNQ无疑是一个最佳选择。因此,我们可以得出结论,NI不仅仅研发了一款LabVIEW FPGA软件工具包,还开发了基本覆盖Xilinx所有FPGA家族的硬件,从低端Spartan系列到高端的KINTEX系列,应有尽有。这些复杂的FPGA硬件在LabVIEW面前变得简单了许多,再也不需要VHDL或者Verilog去开发了,可以帮助用户快速实现产品开发和原型验证。

        前面我们介绍的这些FPGA硬件还可以通过下面几幅图片展示给大家。图1-8显示的是NI公司里面含有FPGA芯片的几类硬件开发平台;图1-9显示的是NI公司最高性能的FPGA产品FlexRIO,这类板子里面用的都是高端FPGA,可以实现非常复杂的算法,比如图像处理、高速采集、RF射频、5G模拟算法等等;图1-10显示的NI公司自己的FlexRIO前端适配器模块,分为数字和模拟两大类;图1-11是NI第三方partner联盟商开发的Adapter适配器模块。

图1-8:NI公司RIO产品线划分

图1-9:NI公司最高性能的RIO产品-FlexRIO架构

图1-10:NI公司自己针对FlexRIO开发的Adapter适配器模块

图1-11:第三方Partner针对FlexRIO开发的Adapter适配器模块

        介绍了这么多NI公司的FPGA硬件之后,下面我们来具体看看NI的LabVIEW FPGA软件工具包是如何实现对FPGA芯片的直接编程,也就是工作原理。图1-12很好的传达了LabVIEW FPGA的工作流程,当用户点击VI运行按钮之后,LabVIEW程序框图会直接转换成VHDL代码,然后传给Xilinx ISE或者Vivado编译器进行编译,最后生成bit位文件下载到FPGA芯片里面运行,整个过程都是在后台一气呵成自动完成的,用户不需要人为干预。与我们编写的另外一本书里面介绍的LabVIEW直接开发ARM是一样的。

图1-12:LabVIEW FPGA开发流程-工作原理

        下面通过一个简单的例子,更加形象地阐释为什么LabVIEWFPGA是相见恨晚的天生一对呢。如图1-13所示,我们需要实现两个互不相关的逻辑运算,利用的都是LabVIEW自带的布尔类型运算单元,编译之后下载到FPGA里面就是左边所呈现出来的效果,两段代码之间完全独立并行执行的,这一点与LabVIEW的数据流模型完全匹配。

图1-13:LabVIEW FPGA逻辑运算

        当然,除了简单的逻辑运算可以用LabVIEW轻松搞定外,还有很多经典的算法、控制策略和自定义功能也能轻松地利用LabVIEW快速编程实现,如图1-14所示。

图1-14:LabVIEW FPGA常见的编程模式

        最终LabVIEW编译出来的FPGA bit文件对应的FPGA芯片内部资源主要分为3类,也就是可编程互联单元、可重配置逻辑块单元和外部IO功能模块,如图1-15所示。

图1-15:LabVIEW FPGA最终生成的bit文件映射的资源占用情况

        因此,可以看出,LabVIEW FPGA本质上与文本编程类似,但是呈现的方式要简单的多,我们(神电测控)称之为“顶层设计、底层调用”。这个思想贯穿于LabVIEW整个生命周期,不可磨灭,从早期的dll到.net调用、从支持Matlab脚本到Python原语,LabVIEW始终秉承这一核心思想:兼容并包,为我所用,来者不拒,优势互补,取长补短。总之一句话就是前面总结的“顶层设计、底层调用”。

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值