如何实现多个C模块的同步?
主要软件: LabVIEW Modules>>LabVIEW FPGA Module
主要软件版本: 2011
主要软件修正版本: N/A
次要软件: Driver Software>>NI-RIO
问题:
之前在KB中有提到过FPGA项目中C模块的onboard clock如何导出并且共享给其他C模块,从而在同步中发挥其共享一个时钟的作用。本篇文档则是详细的验证此方法的同步性,为了更好的说明共享onboard clock的性能改善,同时验证了共享和不共享onboard clock的结果,并且对最后的结果进行了一定的分析。
解答: 首先,下图中是FPGA项目浏览器,硬件方面使用cRIO 9014和9104,模块则使用了两块9234和一块9225,其中9225用来导出onboard clock。
图1 Project explorer
然后是FPGA程序,主要功能是设置两块9234的采样率,并且保证两个模块同时开始采集波形,被测波形是1KHz的正弦波,最后FPGA程序将数据存到FIFO中,如下图:

图2 FPGA程序框图
最后是RT主机程序,用来读取FIFO中的数据,对两个模块采集的数据进行显示和相位分析:
图3 RT Host程序框图
三.实验结果及分析
经过一些实验的验证,得到结果如下,在两块9234都是用9225的onboard clock情况下,测得两模块采集到的波形非常吻合,其相位差稳定在0.006度左右。
图4 50K vs 50K
但是当两模块的采样率设置为不一样的时候,他们的相位差不再为0,下面的图片将给出不同情况下的结果:
图5 50K vs 25K
图6 50K vs 12.5K
图7 50K vs 10K
从上面的结果可以看到,共享onboard clock的情况下,固定某个模块的采样率,而设置另外一个模块为不同的采样率,delay开始发生变化,模块间产生相位差,但是相位差的值非常稳定,我们可以通过观察上面图片下方的Delay Results得到这个结论。而如果不使用共享onboard clock的方法,我们使用同样的程序来运行,得到结果如下:
图8 51.2K vs 51.2K
图9 51.2K vs 25.6K
我们可以从图下方的Delay Results中发现,和共享时钟的情况不同,两个模块之间不但有相位差,而且相位差处于一个逐渐递增的状态。相位差的不同表现情况说明,共享时钟的效果是非常好的。但是对于稳定的相位差,我们也需要找寻其原因,通过查找9234的规格说明,我们找到下面的一个参数:
其中fs是指模块的采样率,这个计算公式表明,因为fs的不一样会导致两个模块的input delay的不同,从而也就解释了为什么在不同采样率下,两个模块采集的数据相位差不为0。我们可以进行如下计算,当fs 1为50K,则input delay 1为38.4/50K+3.2us=771.2us,而fs 2为25K,则input delay为38.4/25K+3.2us=1539.2us,然后可以计算量模块间的time delay为1539.2us-771.2us=768us,这是通过公示计算得到的理论值,而实际情况呢,我们从上面的图中可以看到,这种情况下的相位差为47.8度,而被测波形频率为1KHz,所以两个模块间的time delay为47.8/360*1000=133us,理论值和实际值并不符合。所以,接着我们以相同方法计算其他情况下的理论值和实际值,如下表:
fs1(Hz)
|
fs 2(Hz)
|
delay理论值(us)
|
delay实际值(us)
|
理论值\实际值
|
50K
|
50K
|
0
|
0.017
|
0
|
50K
|
25K
|
768
|
133
|
5.8
|
50K
|
12.5K
|
2304
|
397
|
5.8
|
50K
|
10K
|
3072
|
528
|
5.8
|
25K
|
25K
|
0
|
0.017
|
0
|
25K
|
12.5K
|
1536
|
265
|
5.8
|
表格1 不同采样率下delay值
从表格中发现在不同采样率下,实际值和理论值都是不符合的。但是,同时我们发现一个规律,那就是在采样率不同的情况下,理论值和实际值的比值是恒定的5.8。这个不会是一个巧合,我们如果把上面提到的Input delay公式改为 6.65/fs+3.2us,则实际值将和理论值完全符合。
相关链接:
附件:
cRIO 9225+9234+9234.zip
报告日期: 08/13/2012
最近更新: 08/13/2012
文档编号: 60C2JQ54
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.