使用配置对话框底部的示意图查看DSP48E或DSP48E1函数内部的数据路径延迟。这些延迟为数据从输入接线端流动至输出接线端所需的时钟周期数。例如,ap为1个数据路径,bp为另一个数据路径。在数据路径中每个添加的寄存器会为该数据路径增加一个时钟周期,但不会影响其他数据路径的延迟。因此,数据路径延迟在配置函数时会出现不平衡。

该不平衡是否可被接受取决于用户使用函数的方式。某些应用不需要具有平衡数据延迟的数据路径。例如,如果连线一个函数至另一个函数,每个函数内部的不平衡可被其他函数内的相等但相反的路径抵消。但某些应用需要具有平衡数据延迟的数据路径。下列范例显示了需要平衡的数据路径的情况。

假设函数被配置为乘法器,p = a 2。也就是连线相同的值到函数的ab输入接线端。该值由0开始,每个时钟周期增加1。DSP48E函数包含下列数据路径:

在该示意图中,a–>p数据路径包含下列寄存器:

  • a寄存器2
  • m register
  • p

因为该数据路径包含3个寄存器,所以数据路径的延迟为3个时钟周期。但b–>p数据路径仅包含2个寄存器,因此延迟为2个时钟周期。延迟不平衡意味着:

  • 对于a–>p数据路径,第n个时钟周期使用第(n – 3)个时钟周期的值a
  • 对于b–>p数据路径,第n个时钟周期使用第(n – 2)个时钟周期的值a

由于该不平衡,无法实现计算p = a 2的操作。下表显示了函数的前8个时钟周期内的输入和输出:

时钟周期 a的值 P的值 说明
1 0 N/A 在此时钟周期,没有数据路径产生值。
2 1 N/A
3 2 0 函数乘以第二个寄存器的初始化值和0(来自第一个时钟周期的a值)。
4 3 0 函数乘以0(来自第一个时钟周期的a值)和1(来自第二个时钟周期的a值)。
5 4 2 函数乘以1(来自第二个时钟周期的a值)和2(来自第三个时钟周期的a值)。
6 5 6 函数乘以2(来自第三个时钟周期的a值)和3(来自第四个时钟周期的a值)。
7 6 12 函数乘以3(来自第四个时钟周期的a值)和4(来自第五个时钟周期的a值)。
8 7 20 函数乘以4(来自第五个时钟周期的a值)和5(来自第六个时钟周期的a值)。

在该应用中,延迟的不平衡将导致错误的计算结果。此时,通过寄存器页面添加另一个寄存器至b–>p数据路径。此时示意图显示如下:

在上图中,请注意2个数据路径均带有3个寄存器。即相对于双方数据路径,第n个时钟周期均使用(n – 3)个时钟周期的a值。

下表显示了函数的前8个时钟周期内的输入和输出:

时钟周期 a的值 P的值 说明
1 0 N/A 在此时钟周期,没有数据路径产生值。
2 1 N/A
3 2 N/A
4 3 0 函数乘以0和0(来自第一个时钟周期的a值)
5 4 1 函数乘以1和1(来自第二个时钟周期的a值)
6 5 4 函数乘以2和2(来自第三个时钟周期的a值)
7 6 9 函数乘以3和3(来自第四个时钟周期的a值)
8 7 16 函数乘以4和4(来自第五个时钟周期的a值)

当前数据路径的延迟是平衡的。DSP48E函数能够正确计算p = a 2