2013-02-18 121 views
1

我目前工作的一个项目,我想找到哪种算法更好的芯片级​​设计实现时和时间复杂度比较时间。我将这些推送到我的FPGA板上。我正在Verilog中编写代码。 我需要的是一个专栏来比较2个功能通过算法的计算机运算

一)时间复杂度。

b)中最坏情况的定时

c)中功率消耗

对于例如

方法1:PROD = MULT1 * MULT2;

其中mult1和mult2是两个8位输入。

方法2:PROD =((MULT1 + mult2-100)* 100)+((100-MULT1)*(100-MULT2))

凡MULT1和MULT2两个8位输入。

所以我想知道它需要对芯片计算产品,从2个输入传入的时间的总时间,并计算产品。

我正在处理的算法都是O(n)。所以我知道渐进式并不重要。但是,我有兴趣了解在FPGA或ASIC板上实现的确切较差的情况时序,以便我可以尝试改进功能。我也明白,这些计算需要纳秒来计算,但是,这正是我想要改进的。

我看到一些期刊出版物声称有更快的算法。但是,当我使用Xilinx实现相同的功能并使用综合报告时,我得到了不同的结果。

是否有软件可以计算功耗和最坏情况下的时间?或者任何人都可以向我指出一些可以帮助我的文章?

回答

3

关于时间复杂度和最坏情况下的时间,这将取决于你究竟是如何写的算法,你正在使用的目标FPGA。

要理解执行计算所需的时间长度,这取决于FPGA的时钟频率以及执行算法所需的时钟周期数。如果您的乘法算法是单周期的,那么计算所花费的时间将仅仅是fpga的时钟周期。大乘法电路通常不是单周期的,但由于其复杂性。具体取决于您的输入代码,合成器以及您正在使用的fpga类型。

通常情况下,您的FPGA综合工具可以告诉您合成后报告中设计的最坏情况时机。如果你想改善最坏情况下的时序,那么你可以在乘法中增加流水线阶段来分解工作并增加时钟频率。

测量功耗也将严重依赖于您使用的fpga和您正在加载的综合网表。 AlteraXilinx为其fpgas(可能还有其他供应商)提供功率估算器,但我不确定是否有任何供应商无关的功率估算器。长期以来,为了获得所需的指标,您需要使用您计划使用的FPGA的综合工具。

+0

谢谢。这很有道理。出于好奇,你提到了添加管道阶段。在Verilog中如何实现这样的事情?仅仅是通过将组件分成不同的模块?或者有其他的程序吗? – 2013-02-19 02:07:36

+1

有没有一种真正的通用方式来添加流水线阶段,本质上你只需要分离你的逻辑,以便在时钟边缘可以捕获中间词条。如果你只是给verilog一个像'a * b'这样的通用语句,那么可能没有办法来管理它,但是如果你把乘法分解成更小的工作块,那么你可以在中间产品之间插入翻转阶段。由于乘法运算是一种常见操作,因此您的综合工具可能已经有一种方法可以为您提供流水线乘法器,但这是针对您的工具的。 – Tim 2013-02-19 02:19:35