如何编写VeriStand custom device/custom FPGA Target以及基本原理

在做HIL开发的时候用到了FPGA,对于Labview中可以很方便的使用FPGA,但是在用VeriStand 做模型仿真的时候,调用FPGA就没呢么方便了。感觉就是功能还没有完善。

如果想要在Labview中编译好的FPGA bit文件被VeriStand识别的话,就需要编写对应的配置文件。配置文件的作用就是告诉Veristand比特文件中有哪些输入输出,输入输出的数据类型是什么。和custom device是什么关系呢?刚开始接触的时候一直搞不懂custom device 到底是怎么一种原理,后来随着开发的深入,custom device 的自由度应该更高一些,也学要写定义文件,而淡出的custom FPGA则是在一套custom device 基础上去声明你的FPGA有什么输入输出端口。本质上还是custom device 只不过很多东西已经提前写好,可以理解为深度定制的custom device。实际上custom FPGA 要简单的多,NI提供了一套例子,help文档里也有比较详细的说明。仔细看一下基本就能编写了。

这里我提供一段非常简单的custom FPGA 配置文件代码,以及实现效果。这个比自带的模板还要简单。指示带四个接收PWM信号的功能,四个输入。




      2.0
      NIVeriStandFPGAI_PXI.lvbitx

      
          
              Input
              Description
              Default
              
                  PWMin
                  Category with Default Symbol contained in PWMin
                  Default
              
          
      

      
          2
          
          
              
                  PWM1
                  PWM1 channel
                  Input\PWMin
                  0
                  65536
                  0
                  Default
              

              
                  PWM2
                  PWM2 channel
                  Input\PWMin
                  0
                  65536
                  0
                  Default
              

              
                  PWM3
                  PWM3 channel
                  Input\PWMin
                  0
                  65536
                  0
                  Default
              

              
                  PWM4
                  PWM4 channel
                  Input\PWMin
                  0
                  65536
                  0
                  Default
              
          
          
      

      
          1
          
      

配置文件就是XML语言,我是零基础。但是这个很简单。

后面一点点分析



上面的代码里,基本内容固定。里面提到的两个文件是NI提供的其中的xsd文件是用来检查我们自己写好的XML配置文件的语法结构问题。xsl文件应该就是custom device生成的文件,这里已经提供,相当于custom FPGA就是custom device的一个模板。

      2.0
      NIVeriStandFPGAI_PXI.lvbitx

上面代码提到的文件就是编译好bit文件,需要手动复制并和配置文件放在一起。

      
          
              Input
              Description
              Default
              
                  PWMin
                  Category with Default Symbol contained in PWMin
                  Default
              
          
      

上面代码表示的是如何在Veristand中显示FPGA IO口目录。具体来说这里是建立了Input目录,Input下面又建立了PWMin的目录,其他Tag标记的意义可以参考Veristand的帮助文档。

     
          2
          
          
              
                  PWM1
                  PWM1 channel
                  Input\PWMin
                  0
                  65536
                  0
                  Default
              

上面就是具体对bit文件中的IO定义的部分了,表示有几个打包的数据,每个包数据长度是64位,我这里设置的PWM接收的数据类型是U16,也就是这一个包就可以装下这四个PWM的输入。《U16》说的是数据类型,如果是其他数据类型请参考帮助文档,比如I32。这里设置了名字是PWM1,目录是刚才定义的Input-->PWMin下面,可以设置初始值,以及范围。后面的内容同理。需要说明的是标签,因为这种数据传输是通过DMA FIFO传输的,在生成的bit文件的VI中有相应的FIFO,VI中接受到的PWM数值实际上是通过通过局部变量传输到DMA FIFO中,转到VeriStand中由VeriStand进行读取,所以这里是DMA_Read并且每一个Packet对应一个子vi,或者理解为是U64 类型的DMA FIFO被拆分成了几个Packet进行定义。具体只要看到NI提供的vi模板想必就会很清楚,后面还有DMA_Write可以定义写通道,从主机将数据传到FPGA,原理和DMA_Read相同,方向相反而已。

你可能感兴趣的:(多旋翼半物理实时仿真平台开发,custom,device,custom,FPGA,Labview,Veristand)