1. 布景及意图
在FPGA代码中,会遇到将守时循环嵌入非守时循环的状况,此刻守时循环将重复发动和中止。这个守时循环的时刻开支怎么,需求测验验证。
守时循环的时刻开支应包括两个方面:1.守时循环的发动开支,2.守时循环的运转开支。
关于第1点,现在没有找到FPGA的详细阐明信息,并且这个时刻开支应该和详细的时钟装备相关。
关于第2点,FPGA编译保证了每遍运转时刻严厉依照指守时钟周期运转。
所以,能够编写简略程序测验FPGA守时循环的发动时刻开支。
2. 测验办法
软硬件环境:LabVIEW 2011,LabVIEW FPGA 2011
NI PXI-7851
测验装备及代码:
1.FPGA Target下新建多个时钟
2.FPGA Target的top-level clock装备为80MHz时钟
3.FPGA代码中对不同时钟运转指定次数进行计时
4.Host端指定循环次数,并读取每次的计时成果
3. 测验成果
因为Top-Level clock是80MHz,所以一切计时器的1个Tick代表的是80MHz时钟的1周期,
在160M时钟下,守时循环的发动时刻开支约10个Tick,运转时刻是每遍循环0.5个Tick;
在80M时钟下,守时循环的发动时刻开支约1个Tick,运转时刻是每遍循环1个Tick;
在40M时钟下,守时循环的发动时刻开支约为28个Tick,运转时刻是每遍循环2个Tick;
在20M时钟下,守时循环的发动时刻开支约为48个Tick,运转时刻是每遍循环4个Tick。
成果表明:
与Top-Level Clock 相同时钟驱动的守时循环的发动时刻开支大大小于其他时钟下的守时循环。
在非Top-Level Clock状况下,守时循环的时钟频率越低,发动时刻越长。
4. 定论
在FPGA代码中,
-
尽量防止循环的嵌套。尽量让最外层循环为守时循环。
-
守时循环的发动有时刻开支。如果在非守时循环中重复运转守时循环,需求考虑守时循环的发动开支。
-
尽量让非守时循环中的守时循环作业在Top-Level Clock下,此刻的发动开支为1个Tick。