我想知道以下哪种设计更快,即可以在更高的 Fmax 下运行:
-- Pipelined
if crd_h = scan_end_h(vt)-1 then
rst_h <= '1';
end if;
if crd_v = scan_end_v(vt) then
rst_v <= '1';
end if;
if rst_h = '1' then
crd_h <= 0;
rst_h <= '0';
if rst_v = '1' then
crd_v <= 0;
rst_v <= '0';
else
crd_v <= crd_v + 1;
end if;
else
crd_h <= crd_h + 1;
end if;
在“前一个”循环中检查循环结束的位置,并通过第一个反馈信号在下面应用。
与较少流水线的方法相比:
-- NOT Pipelined
if crd_h = scan_end_h(vt) then
crd_h <= 0;
if crd_v = scan_end_v(vt) then
crd_v <= 0;
else
crd_v <= crd_v + 1;
end if;
else
crd_h <= crd_h + 1;
end if;
第一个实现的想法是不要让比较中的算术与增量中的算术相结合。然而,另一方面,在第二个实现中,两个操作可以并行完成,一个的结果将 MUX 另一个。这会和从前一个周期(在第一个实现中)准备好 MUX 控制位一样快吗?
谢谢!