如循环中的请求方在转换为访问方时由于一个或多个其他请求方引起的资源冲突发生延迟,将会产生抖动且延时随每个循环改变。例如,假设有一个执行以固定频率采样模拟输入信号的定时While循环的应用程序。每次FPGA I/O节点执行时,节点发出模拟输入资源请求后立即成为访问方。如添加一个采样同一个模拟输入资源的While循环,这两个FPGA I/O节点可能同时请求访问模拟输入资源。此时判定器会延时其中一个访问方,并允许另一个请求方成为访问方。由于资源访问不能立即响应发出的请求,所以此延时将引入抖动。

为避免抖动,设计FPGA VI程序框图时应确保请求方不会在共享资源不可用时访问共享资源。并确保两个请求不会在同一个时钟周期内发生。在VI的两个独立部分使用共享子VI或通过并行循环访问资源接口时经常产生抖动,如下列程序框图所示。

上面程序框图中的VI包含并行的While循环,两个循环均写入存储器块1。根据每个循环中剩余代码需要的执行时间,两个存储器方法节点可能同时发出访问存储器块1的请求,导致两个循环均产生抖动并产生数据不确定性。在上述范例中,计数1计数2间隔10~15个时钟滴答时产生抖动。

对单个资源的访问数越多,产生抖动的可能性越大。但如果能避免同时发出请求,无论潜在的访问方数量多少,判定器的延时均为常量。为避免上述范例中的多个访问方,可创建另一个存储器项并写入至底层While循环,如下列程序框图所示。