我目前工作的一个项目,我想找到哪种算法更好的芯片级设计实现时和时间复杂度比较时间。我将这些推送到我的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实现相同的功能并使用综合报告时,我得到了不同的结果。
是否有软件可以计算功耗和最坏情况下的时间?或者任何人都可以向我指出一些可以帮助我的文章?
谢谢。这很有道理。出于好奇,你提到了添加管道阶段。在Verilog中如何实现这样的事情?仅仅是通过将组件分成不同的模块?或者有其他的程序吗? – 2013-02-19 02:07:36
有没有一种真正的通用方式来添加流水线阶段,本质上你只需要分离你的逻辑,以便在时钟边缘可以捕获中间词条。如果你只是给verilog一个像'a * b'这样的通用语句,那么可能没有办法来管理它,但是如果你把乘法分解成更小的工作块,那么你可以在中间产品之间插入翻转阶段。由于乘法运算是一种常见操作,因此您的综合工具可能已经有一种方法可以为您提供流水线乘法器,但这是针对您的工具的。 – Tim 2013-02-19 02:19:35