本人学习NI CompactRIO自定义I/O模块开发一个月左右,由于自定义开发的I/O模块使用FPGA芯片控制,最近经常容易和Labview FPGA编程的概念混淆。在此本人在参考学习别人的资料上进行了一点个人的总结理解。
对于通常说的NI CompactRIO中Labview FPGA程序编译下载是指将Labview FPGA程序编译下载到NI CompactRIO机箱背板上的可重配置FPGA芯片中,因为背板机箱中的可重配置FPGA芯片是在RT系统的控制下提供大量的I/O口用于与可热插拔的I/O模块进行通信等功能的,通过这些I/O实现对热插拔I/O模块功能的操作控制,如图1。即 Labview FPGA是对机箱背板的FPGA进行编程。
图1 CompactRIO机箱背板FPGA引脚
对于自带有FPGA芯片的I/O模块,购买的第三方自带FPGA芯片的模块的编程我们不用管,相关厂家已将FPGA芯片的编程处理实现功能下载存储到模块中,我们只要知道它的I/O口是干什么的就好,因为只有它的I/O口被机箱背板上的FPGA通过Labview FPGA编程操作控制,对于模块自身的功能我们是已知的。对于自定义开发的带FPGA芯片的I/O模块,因为我们要对自定义开发I/O模块编写相应的开发模块驱动程序,而实际上这个过程就是对FPGA芯片进行相应的编程以定义实现我们所想要模块达到的功能。最终这些驱动程序的作用对象是这个模块的FPGA是只存储在该I/O模块中的,与Labview FPGA开发编译下载的程序是没有任何关系的。换句话说就是,模块I/O中的FPGA芯片编程是在使用模块前就已经存在于模块的相应存储设备中,是实现模块功能的定义,而Labview FPGA的程序编译是实现背板上FPGA与模块I/O的通信,作用对象是机箱背板的FPGA。我们最终在NI CompactRIO机箱中使用的只是热插拔I/O模块的I/O口,是通过Labview FPGA对机箱背板的FPGA进行编程实现I/O模块的操作。