设计不符合时间的一个可能原因是它与其他组合逻辑在系列中包含一个或多个桶形移位器。每当移位操作员使用可变的岪档时,例如:"a = b << c;"Nios® II C2H 生成桶形逻辑。C2H 生成的桶形逻辑实现了大量组合多路复用器,这些多路复用器会显著影响设计的计时。 以下两个示例显示可能导致桶形变换导致时序下降的源代码。
组合移输入:
以下是将输入到桶移位器的组合移入桶移位器可能导致时序下降的示例。
int a, b, c, d, result, shift_distance;
result = (a b c d) >> shift_distance;
附加结果被用作移位操作员的移位符,因此在其中一个添加输入和"结果"之间创建一条较长的时序路径。为了增加管道的量,为添加结果分配一个临时变量,如下所示:
int a, b, c, d, addition_result, shift_distance;
addition_result = a b c d;
result = addition_result >> shift_distance;
组合移输出:
以下是桶移器的组合移输出的一个示例,该输出可能导致时序下降。
int a, b, c, d, result, shift_distance;
result = (a >> shift_distance) b c d;
移位结果被用作附加操作员的并行,因此在"a"和"结果"之间创建一条较长的时序路径。为了增加管道的量,将移位结果分配为以下所示的变量:
int a, b, c, d, result, shift_result, shift_distance;
shift_result = a >> shift_distance;
result = shift_result b c d;