大家好,我用的是PXI 7953R板卡,适配器是NI 6583模块,我想要实现的功能是,同步采集8路脉冲信号,计算8路信号在特定时间(比如1s内)的脉冲数,并且多次测量,最后求出每个通道在1s内脉冲数的均值,然后传入主机,因为脉冲很窄,因此选用的是高速采集卡。我最大的困惑是怎么多次测量,还有因为是8路数据,所以要怎么通过FIFO传入主机。非常谢谢大家。
对于这种应用,可以在FPGA编程中使用单周期定时循环,在循环中对8路被测脉冲的上升沿进行计数,同时对循环周期进行计数,从而获得(假设板载时钟为40M,40M个循环对应1s)1s内被测脉冲的个数。然后每隔1s将8个通道的数据通过fifo传递到上位机。对于写入fifo的操作,可以每个周期写入一个通道的数据,分8次循环完成,直接将8个通道的数据写入fifo在一次单周期定时循环中可能实现不了。
你好,首先谢谢您的回答,我是这样做的:首先单周期定时循环采样信号,并且上升沿计数,然后在单周期定时循环外加for循环,每次循环把数据通过FIFO传入主机,这样循环10次,把数据求平均即可。8个通道的数据是通过捆绑成数组然后依次传入FIFO,这样只需占用一个DMA通道。
我现在有另一个需求:连续采集,每10微秒取出脉冲数,连续采集1秒。我的做法是单周期定时循环外另外加定时循环,循环周期为10微秒,并且通过局部变量,在每个定时循环内,把脉冲数取出并通过FIFO传入主机,因为单周期定时循环和FIFO传输是并行的,那么第一次传输的数据就是非有效数据,第二次传输的才是第一个10微秒采集的脉冲数,循环结束后,另外把最后一次的数据存入FIFO。
请问这样做可以吗?个人感觉每次循环会有几纳秒的偏差。谢谢!