就基于FPGA的智能DAQ硬件而言,其真正的优势是能够定制各类定时和触发,并在硬件中进行信号处理和决策。 现在让我们了解一下:针对某类自定义应用,需对模拟输入触发做出哪些修改。 若我们希望在2路模拟输入通道的某路电压超过指定范围时便触发采集,又该如何修改呢? 借助NI LabVIEW FPGA,此类任务的执行易如反掌。
图 3. 通过智能DAQ和NI LabVIEW FPGA实现的自定义触发式模拟输入
这里,我们已经为程序框图添加了第2个I/O节点和第2个比较函数,以及1个布尔“或”函数。 智能DAQ硬件为所有的模拟输入通道提供专用ADC,因而2路通道能够接受同步采样;同时,只要任何1路通道的电压超过了指定范围,条件结构便会执行 “真”条件,并开始以10 µs时间精度进行采样。 请记住:缺少智能DAQ便不可能生成类似的触发;在其他DAQ硬件上应用时,触发需要具有更高延迟的软件定时来实现。 如果此后我们希望通过扩展将监控范围从2路通道延伸至全部8路通道,甚至希望添加数字触发,就需要简化自定义代码。 添加预触发扫描后,用户便可对输入通道不断进行采样并将数据传送至FIFO缓冲器。 触发器一旦接受读取,FIFO缓冲器和此后的采样便可经由DMA通道,被传送至主机。
如果我们希望借助NI-DAQmx驱动,对第2模拟输入通道进行采样,则该程序框图与图1所示的内容相差无几。然而限制依然存在,因为2路通道均被迫引用 相同的触发器并以相同的时钟频率进行采样。 现在我们来看看:智能DAQ和NI LabVIEW FPGA帮助实现的各类多通道采样。
图4. 通过智能DAQ实现的触发式同步模拟输入
图4(上图)展现了:如何基于模拟输入通道0中的模拟触发器,对2路不同的模拟输入通道进行同步采样。由于智能DAQ设备均配有独立的ADC,在同一 I/O节点中的2路通道可在完全相同的时刻接受采样。 典型的多功能DAQ设备可通过一个ADC多路复用所有通道,因此,各路通道必须共享相同的采样时钟和触发线。 图5(下图)展现了:智能DAQ硬件其实能够以独立的速率,对不同的模拟输入通道进行采样。 在独立回路中放置模拟输入I/O节点后,每路通道会以完全不同的速率进行采样,然后各自通过2条DMA通道读写硬盘。
图5. 通过智能DAQ实现的触发式多速率模拟输入
最后需指出的是,我们若是希望2路通道具有相互独立的采样率和开始触发,则可参照图6,将所有I/O节点都部署在并行循环结构中。该方式充分利用了FPGA的并行性,确保了各项任务能够使用专用资源并在执行时完全独立于其他采集任务。
图6. 通过智能DAQ实现的独立触发式多速率模拟输入
同步
DAQmx驱动程序提供多种同步选择,帮助建立输入和输出的时间相关性。 在下方的程序框图中,模拟输入通道和模拟输出通道借助数字触发实现同步;过程中,需对模拟输入指定数字触发,并使用模拟输入的触发器信号触发产生模拟输出。
图7. 通过NI-DAQmx实现的同步模拟输入和输出
用户可通过智能DAQ硬件轻而易举地执行同步任务,而无需借助任务ID和板载信号路由。 本处即显示了NI LabVIEW FPGA中的内容。
图8. 通过智能DAQ实现的同步模拟输入和输出
此处,我们再次通过条件结构在FPGA芯片上执行硬件触发,而数字通道0上的上升沿则启用了真条件中的代码。 在顺序结构中,模拟输入与输出的节点在同时接受调用的过程中,几乎没有任何抖动;而我们只要简单地在各个独立的While循环内嵌入模拟I/O节点,即可 令其拥有独立的采样速率。 另外值得注意的是: 程序框图中显示的正弦发生器函数是1个Express VI,可帮助用户在查找表(LUT)中交互式地配置正弦值。