已解决! 转到解答。
CRIO编程包括三部分:上位机、RT控制器和FPGA三部分,对于简单波形,比如正弦、方波等可以在FPGA程序中直接实现,对于复杂的波形,一个完整的波形周期可能需要很多点来描述,所以波形数据的产生只能在RT或者上位机产生,RT通过DMA传送数据到FPGA。
如果是上位机产生波形数据,则必须通过共享变量、TCP/IP或者其它通讯方法把波形数据先传送的RT,由RT再传送到FPGA。
CSXCS_366给出了很好的回答,但是有两个地方需要澄清:
1. CSXCS_366建议: 对于复杂的波形,一个完整的波形周期可能需要很多点来描述,所以波形数据的产生只能在RT或者上位机产生,RT通过DMA传送数据到FPGA。
这个方案用9004的控制器是不可实现的。9004只支持从FPGA到控制器的DMA,不支持控制器到FPGA的DMA,也就是DMA是单向的。9012或者9014支持双向DMA。如果
2. CSXCS_366建议:如果是上位机产生波形数据,则必须通过共享变量、TCP/IP或者其它通讯方法把波形数据先传送的RT,由RT再传送到FPGA。
这个方案实际也很难实现。RT只能支持最多1KHz的loop rate,而9104FPGA上的loop rate最多可以达到40MHz。 绝大多数情况下,信号发生器的频率要远高于1K,在这个条件下该方案也是不可实现的。
所以最后可行的方案是直接在FPGA上编程产生信号(除非你换成9014或者9012控制器,这样你就可以使用方案1)。