查看DSP48E和DSP48E1函数的数据路径延迟
- 更新时间2025-05-20
- 阅读时长4分钟
使用配置对话框底部的示意图查看DSP48E或DSP48E1函数内部的数据路径延迟。这些延迟为数据从输入接线端流动至输出接线端所需的时钟周期数。例如,a到p为1个数据路径,b到p为另一个数据路径。在数据路径中每个添加的寄存器会为该数据路径增加一个时钟周期,但不会影响其他数据路径的延迟。因此,数据路径延迟在配置函数时会出现不平衡。
该不平衡是否可被接受取决于用户使用函数的方式。某些应用不需要具有平衡数据延迟的数据路径。例如,如果连线一个函数至另一个函数,每个函数内部的不平衡可被其他函数内的相等但相反的路径抵消。但某些应用需要具有平衡数据延迟的数据路径。下列范例显示了需要平衡的数据路径的情况。
假设函数被配置为乘法器,p = a 2。也就是连线相同的值到函数的a和b输入接线端。该值由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。