重启cRIO-9068或者myRIO时会重置和清除FPGA



硬件: CompactRIO>>Controllers>>cRIO-9068

问题: 当我重启cRIO-9068或者myRIO控制器时,FPGA被重置和清除,而且I/O状态返回到默认值。为什么会这样?我怎样做才能让控制器的I/O在控制器重启后处于非默认的状态?

解答: cRIO-9068和myRIO控制器使用一块 Xilinx Zynq 系统级芯片 (SOC),它在同一块晶片上包含了处理器和FPGA结构。这就意味着,当你的实时处理器重启时,FPGA不得不被重置并且清空。如果你使用控制器上的重启键重启,在实时VI中使用看门狗重置或者从MAX中重启控制器,都会导致FPGA被重置清空。

这就意味着,如果你希望在停止实时可执行程序之后依然保持FPGA运行,就需要在不重启控制器的前提下停止可执行程序。既然cRIO-9068和myRIO控制器都运行NI Linux 实时系统,你可以在实时VI中调用脚本,从而实现很多功能,包括终止当前的实时可执行程序,然后重新启动它。VxWorks或者Pharlap CompactRIO的一个重要原因就是如果你的高优先级CPU占用率高到一定程序,你的终端设备就会脱离网络,或者在一段时间内无法执行低优先级的进程。但是在使用 NI Linux 实时终端时,在它离线时,你不需要重启控制器,只需要简单地终止和重启实时可执行程序,从而降低CPU占用率。

如果你在使用一个实时看门狗或者FPGA看门狗,你可能需要优化你的可执行程序序列。大多数实时看门狗代码使用 RT Watchdog VIs。如果你需要关闭实时可执行程序而不重启控制器,或者在关闭一个进程时依然运行FPGA代码,你需要建立你的 Watchdog Configure VI ,在看门狗计数器到达预设值时,置一个事件,而不是重启控制器。当你的事件被激发,你可以控制你的实时可执行程序进入终止流程。

类似地,如果你的FPGA代码正在写入数据到你机箱上的 系统重置,你需要注意,当你将数据写入到该节点之后,你的FPGA代码会停止执行。如果需要执行一个终止序列,请在写数据到系统重置之前。

如果你希望你的FPGA 比特文件在重启后自动加载和运行,你可以使用 RIO Device Setup utility,如 this KnowledgeBase article on running your FPGA VI at Boot中所示。一旦发生重启进程,你的FPGA会自动运行。这个过程会导致几秒钟的暂停,在此期间,FPGA I/O 处于默认状态。我们已经测量过这个时间,大概是1.8秒,但是具体的时间取决于您的终端设备种类以及使用的软件。

当FPGA被清除,您的C系列模块会进入休眠模式,输出默认值,对于数字输出模块,通常是高阻状态。如果你需要你的数字输出口在实时终端重启时输出一个不同的状态,你需要使用一个上拉或者下拉电阻来将该线拉到已知的状态。请确保您的电阻足够大,不会从您的C模块中吸走过多的电流。模拟输出模块有多种上电输出状态选项。可以参考C系列模块产品手册来获取更多关于C模块上电输出状态和最大电流输出的信息。

相关链接: KnowledgeBase 4P7IJ4MO: How Can I Have My FPGA VI Run At Boot?
KnowledgeBase 6B8EQEW5: Serial Port Behaviors on the NI myRIO and CompactRIO-9068 Controllers During FPGA Reconfiguration
LabVIEW Help: RT Watchdog VIs
LabVIEW Help: Watchdog Configure VI
LabVIEW Help: Occurrences Functions
External Link: Zynq-7000 All Programmable SoC

附件:





报告日期: 08/02/2013
最近更新: 03/02/2014
文档编号: 6C1CTQVQ