第1章:LabVIEW FPGA前世今生《LabVIEW ZYNQ FPGA宝典》

        说到图形化的LabVIEW直接开发FPGA芯片,很多非圈内人士估计不是很了解,其实这个技术已经发展近20年,用过LabVIEW的客户都很清楚这个FPGA工具包的强大与不完美的地方。本章我们就为大家重点讲清楚以下4个方面的问题:LabVIEW是什么?FPGA又是什么?NI公司当年为什么要开发LabVIEW FPGA软件工具包?我们(神电测控)为何要投入人力物力开发新的、通用的、更加开放的LabVIEW My FPGA工具包呢?

       1.1:LabVIEW是什么?

        要想搞清楚LabVIEW是如何开发FPGA的,就需要先了解LabVIEW这款通用的图形化编程软件的本质与核心。首先需要说明的是LabVIEW这款图形化编程软件并非是组态软件,它是真正意义上的,类似C语言一样的编程语言,俗称G语言,也就是Graph图形化编程语言。之所以说它是通用的,是因为LabVIEW可以实现像C一样的面向对象编程,还有就是LabVIEW可以自己开发自己,这一点非常重要。正是因为LabVIEW本质是类似C一样的语言,所以不仅可以在windows、linux和mac OS上开发程序,也能直接编写传统的嵌入式芯片程序,比如单片机、DSP、ARM、FPGA等。原理很简单,LabVIEW程序框图很容易转换为文本代码,然后借助不同厂家的编译器Compiler进行编译就可以下载到不同的芯片里面去运行了。图1-1显示的是LabVIEW可以直接运行的几种硬件平台,不管是PC桌面系统或是RT实时系统,还是传统的嵌入式芯片(ARM、DSP、FPGA),都可以利用LabVIEW直接编程。

图1-1:LabVIEW支持的硬件开发平台

        关于LabVIEW的定义,我想最权威的莫过于NI官方给出的说明,大家可以登录NI官网(ni.com),然后搜索关键字“LabVIEW”,就可以看到下面一段文字。

        “LabVIEW是专为工程师和科研人员设计的集成式开发环境。LabVIEW的本质是一种图形化编程语言(G),采用的是数据流模型,而不是顺序文本代码执行,使您能够根据思路以可视化的布局编写功能代码。这意味着您可以减少花在语句和语法的时间,而将更多的时间花在解决重要的问题上。”-NI官网

        这里面有几个重要的关键字,体现出了LabVIEW与文本编程语言最大的不同,就是数据流与可视化编程,不需要记忆太多语法,集中精力放在问题的解决上面。这一点对于传统嵌入式开发尤为重要,可以帮助客户节约大量的开发时间成本。因为传统嵌入式基本没有交互GUI,而LabVIEW可以做到边开发边实现GUI的功能。

        目前LabVIEW的版本非常多,有几个比较经典的版本:LabVIEW 8.6、LabVIEW 2011、LabVIEW 2015、LabVIEW 2018、LabVIEW2020、LabVIEW2023以及LabVIEW NXG。其中,NXG是NI主推的下一代版本的LabVIEW,底层采用微软的C#进行重构开发的,其余的版本都是基于传统的C语言开发的;当然了,NXG目前已经不更新了,LabVIEW 2023 Q3版本开始也支持程序框图缩放了。

        关于LabVIEW这门语言的具体使用方法,本书不做具体讲解,这里给用户推荐两本书:《LabVIEW宝典》和《我和LabVIEW》。对LabVIEW直接开发ARM芯片感兴趣的用户,还可以参考本书作者编写的另外一本由机械工业出版社出版的书籍:《STM32开发实战:LabVIEW卷》。

       1.2:FPGA是什么? (Xilinx与Altera)

        FPGA全称可编程门阵列(Field-Programmable Gate Array),它与传统的微控制器(MCU)和微处理器(MPU)最大的不同是:FPGA犹如一张白纸,用户可以根据自己的想法实现任何功能,就算是MCU和MPU本身也可以通过FPGA来实现。

        FPGA最大的特色应该是它可以实现真正意义上的并行执行,这一点是MCU和MPU无法做到的。两段没有任何关系的逻辑代码之间的执行是完全并行运行的,所以FPGA非常适合做高速并行处理。关于FPGA更多的介绍,大家可以参考百度或者本书第6章实验案例部分。

        世界上第一个发明FPGA芯片的厂商就是鼎鼎有名的赛灵思(Xilinx),它也是目前世界上FPGA芯片出货量最多,技术最为全面,占有率最高的厂商。除此之外,另外一个FPGA厂商Altera,也很不错,只可惜技术与工艺方面略微落后于Xilinx,虽然大学里面推广的很厉害,但是性能和稳定性方面不如Xilinx,因此对于很多中高端的用户来说,还是用Xilinx的FPGA比较多,比如研究所、军工单位、航空航天。Altera因为自身技术原因,现在已经被Intel收购了,成为其SoC产品线的一个分支。而Xilinx正好相反,产品种类越来越丰富,性能越来越强,下面着重介绍一下FPGA龙头企业Xilinx提供的FPGA家族产品。

        登录Xilinx官方网站(https://china.xilinx.com),可以看到Xilinx做的芯片种类非常多,在产品一栏里面找到FPGA可编程逻辑器件这个分支,可以看到Xilinx目前主推的FPGA芯片家族,如图1-2所示。

图1-2:Xilinx FPGA家族

        按照生产加工工艺可以分为4代,例如45nm工艺的6系列,28nm的7系列,20nm的UltraSCALE系列以及16nm的UltraSCALE+系列,当然还有更早以前的3、4、5代。其中,6系列里面的代表产品型号是Spartan6;7系列里面种类比较多,有Virtex7、KINTEX7、ARTIX7和Spartan7;UltraSCALE和UltraSCALE+系列属于Xilinx为高端的产品,价格非常贵。

        这里面值得关注的是Xilinx的Spartan6和Spartan7这两款芯片,它是Xilinx专门针对低成本、低功耗应用场合而设计的具备超高性价比的,完全可以实现批量应用的产品分支。其中Spartan6曾经在某个时间内出现供货异常,Xilinx准备打算停止更新和生产这种型号的FPGA了,后来在市场的反馈呼声中,又重新满血复活了,大家可以在Xilinx官网上看到,Spartan6的供货期至少延长到2030年,如图1-3所示。

图1-3:Spartan6生命周期

        为了弥补和降低生产成本,Xilinx现在主推的是Spartan7,期望用户能够逐步用Spartan7来取代Spartan6,因为工艺技术的进步,Spartan7在功耗和成本方面要优于Spartan6,并且软件开发方面,7系列以及往后的FPGA芯片都需要采用Xilinx最新的Vivado编译器来代替传统的ISE编译器,编译速度方面要快一些。这两类芯片目前的定位都是低端、对成本有严苛要求、走量的应用路线。大家可以在淘宝上搜索一下Spartan6和Spartan7的价格,最便宜的可以媲美STM32单片机了,只要30元左右,贵一点的也就一两百,因此,这类芯片非常适合那些工业自动化、电机运动控制、高速数据采集、自定义通信协议等方面的应用。但是就目前市场反应来说,Spartan7其实用的并不多,很多客户选择的还是Spartan6系列或者ARTIX7系列,可以说Spartan7被淘汰只是时间问题了。

      对于中高端的FPGA应用来说,可以选择Xilinx家族里面的Virtex7、KINTEX7、KU、VU、KU+和VU+系列,这几类芯片采用堆叠技术,可以在相同的面积上实现更多的逻辑门和slice资源,有的FPGA芯片本身都需要几千元不等,值得一提的是,目前这个堆叠技术实现了对Altera的秒杀。另外,Xilinx还推出了ZYNQ系列的FPGA,这类FPGA通常是将ARM内核整合在一个芯片中,实现了片上系统,也就是SoC。例如,Xilinx的ZYNQ7000系列,就是一个芯片内部同时集成了双核Cortex-A8(667MHz)/Cortex-A9(767MHz)的ARM外加一个ARTIX7或者KINTEX7系列的FPGA,这样可以非常方便的取代传统的外部DSP+FPGA或者外部ARM+FPGA的格局,简化了PCB版图的布局布线,降低了PCB layout开发成本,整体S0C成本也更低了。

        本书的重点就是给用户介绍如何使用LabVIEW开发带双核ARMZYNQ7000系列FPGA芯片。因为目前所有很多物联网、边缘计算、人工智能、机器学习、医疗设备等需要高速采集、数据传输以及协处理加速领域基本上都有ZYNQ的身影,由于Xilinx ZYNQ7000系列FPGA内部集成了高速双核ARM处理器,对于那些速度要求不高但是消耗FPGA资源多的通信协议、算法,放在ARM里面做再合适不过了,所以用起来很方便。

        但与此同时,由于工程师们要同时面对ARMFPGA双重开发,难度和工作量都是难以想象的,传统的ZYNQ芯片程序开发通常需要两个人协同开发:一人负责PSARM)裸机或者Linux程序开发;另一人负责纯逻辑PL也就是FPGA部分开发,人力成本极高。

        终极目标:希望大家通过本书的学习,能够掌握并精通使用LabVIEW对任意一款自己做的或者市面上任意第三方ZYNQ7000硬件,自己一个人就能同时完成对纯逻辑PLFPGA)和PSARM)裸机或者Linux RT程序开发;将LabVIEW ZYNQ FPGA核心技术应用到自己的项目和产品中去,学以致用,发光发热。

        关于不同型号FPGA的应用场合,Xilinx官网也做了一个简单的归类和划分,如图1-4所示。

图1-4:Xilinx FPGA芯片应用分类

        当然,除了前面介绍的这些FPGA之外,在页面的下方,还可以看到很早以前的FPGA芯片家族,例如大家非常熟悉的Spartan3、Spartan3E以及Virtex4/5/6等等。如图1-5所示,这些芯片都是Xilinx逐渐淘汰的产品,但是目前还是能够买得到的。毕竟很多应用和产品都是基于以前的芯片开发的,用户不希望改动太大。

图1-5:Xilinx早期的FPGA家族系列

        其中,有些还比较有特色,FPGA芯片内部集成了Flash,这样编译出来的bit文件就可以直接固化到FPGA芯片里面去了,类似我们传统的MCU,不需要外扩片外Flash存储芯片了;当然绝大多数FPGA芯片是不带这个功能的,因为FPGA面积有限,逻辑资源非常宝贵,所以基本上大家在开发产品的时候,都是采用外置Flash来存放bit文件这类方案。另外,FPGA芯片本身是有ID加密功能的,类似STM32芯片的激光光刻96位ID一样,Xilinx称之为FPGA DNA,7系列FPGA是57bit DNA,U系列和U+系列是96bit DNA,我们可以借助这个DNA实现FPGA bit文件加密,不需要外置DS2411这类加密芯片了。关于这个FPGA DNA ID号的获取,在我们研发的My FPGA工具包里面会免费提供给大家。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值