人人范文网 范文大全

LabVIEW FPGA编程小结

发布时间:2020-03-03 04:03:18 来源:范文大全 收藏本文 下载本文 手机版

LabVIEW FPGA编程小结

NI PXI-7813R为FPGA卡,板卡上引出4个端口,每个端口有40路引脚,共160路DIO,使用LabVIEW FPGA模块进行编程控制。当FPGA程序复杂度变大或是使用的DIO端口数增多时,可能面临的主要问题包括FPGA空间不够用以及实际循环时间过长等。之前编写的 FPGA程序示意图如下,采集循环与输出循环独立,均采用控件形式与RT程序通讯,两块板卡均使用了近120路DIO口。基于7813R板卡编程实践及涉及到的几个瓶颈问题,简要做了一下总结:

1) 使用FIFO还是使用控件?

FPGA与RT通讯时,常用的方法是使用读写FIFO或是使用输入输出控件。这两者的特点是:

a) 两者在速度上无明显差别。这是建立在不使用For循环的基础上的,但实际中FIFO通常都要配合For循环来使用,For循环相当于串行操作,当同类端口较多时,使用for将导致循环时间变长,故运行速度上FIFO并没有多少优势。 b) FIFO使用合理时不丢数,而控件不能保证。

通过配置FPGA与RT中读写FIFO的超时以及FIFO大小,读写方式等手段,通常可保证FIFO传递数据不丢数(可能要经过多次尝试);而使用控件则可能会有丢数的情况。当不严格要求每次while循环都不丢数时,可考虑使用控件,例如对DO输出的配置,用户可能很久才会去配置一次,而且配置后不会要求马上生效,稍微晚几个循环周期(us级)再使配置生效也不会有很大影响,这种时候使用读取控件值是合理的。 c) FIFO可使用的数据类型有限,而控件几乎无限制。

就7813R而言,FIFO只能传递指定的几种类型的数据,而使用控件时,可使用包括簇数组在内的自定义控件。

所以,还是根据实际需要来选择吧,虽然这句话跟没说一样~ 2) 用不用For循环?

端口较多时,很容易就遇到连续几个都是要求采集脉宽的,而另外连续几个要求采集电平即可。这时候很自然想到使用For循环对多个端口一起进行操作,例如下图:

如上面所说,使用FOR循环相当于使端口操作(上图中所说的操作是指将采集到的布尔转成U32数值)变为串行;另外,要使用For,通常就得配合数组操作,例如上图中创建数组等,这样就更加导致循环时间变长。当发现循环时间不满足使用要求时,这种处理方法可能就不能使用了,每一路单独处理就省掉了创建数组及For,节省了循环时间,但这样又使重复代码变多,工作量加大。

3) 怎么使用子VI?

输出脉冲时,脉冲的产生可以封装成一个子VI,供多路端口进行使用;采集脉宽时,脉宽采集可以封装成一个子VI供多路端口进行调用。然而,默认情况下,子VI的执行是串行的(因为并没有设置VI属性为“可重入执行”),子VI在同一时间内只能被一路端口所占用,可能导致的结果是循环时间变长,精度降低。如果设置子VI为可重入执行,又可能导致FPGA空间占用率过高,编译无法通过。我想到的一种折中的办法是:使用几个程序框图一样的子VI(功能完全一样,将子VI多另存为几个所生成)来代替原先一个子VI,替换之后,相当于减少了串行运行的子VI数量,循环用时减少明显。下图中使用6个子VI A,如果用2个B与2个C替换其中的4个A,循环时间可能减少为原来的1/3。

While循环方式1:子VI A子VI A子VI A子VI A子VI A子VI AWhile循环方式2:子VI A子VI A子VI B子VI B子VI C子VI C

4) 精打细算

这一点可能只会在FPGA空间不够用时才会被重视,下图是逻辑片不够用时导致的FPGA编译失败错误:

因此,当资源有限时,尽量使用能满足使用要求的最小长度的数据类型来实现,能使用U16满足要求的坚决不用U32!另一方面,暂时还没有发现数据类型变长时对FPGA循环运行时间产生明显影响。

5) 循环延时考虑

脉冲输出及采集均需要根据实际循环时间来计算,若参与运算的值不是实际的循环时间,输出或采集的结果自然不会准确。例如可配置脉冲或电平输出的端口,若输出电平,其算法简单,所需时间较少,而配置为脉冲输出时,算法复杂。配置为单路脉冲输出可能不会有明显的影响循环时间,但当多路脉冲一起输出时,可能影响到循环时间增加1~2us甚至更长。故实际配置循环时间时,需按照可能的最复杂算法进行运行测试,并依此来设置循环时间,以保证循环时间的确定性已经算法运算的正确性。

总而言之,设计时还是应该根据实际需要,综合考虑数据完整性、FPGA板卡资源大小、循环时间等因素,已达到满意效果。

编程小结

编程题小结

编程小结3

编程小结1

GDI+编程小结(二)

数控编程课程设计小结

Fortran语言编程小结(材料)

[推荐]加工中心编程技巧小结

微机编程

学习编程

LabVIEW FPGA编程小结
《LabVIEW FPGA编程小结.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档