引用了Xilinx大学计划中关于程序优劣指标的描述
Verilog HDL 程序设计首要指标是功能的完备性,达到设计要求,这是任何设计都必须完成的。其次,还包括“面积”、“速度”和功耗指标,是设计的深层次要求。从实用角度来讲,后者的重要性并不亚于功能完整性。在设计中,“面积”、“速度”和功耗之间并不是相互独立的,可以相互转换。下面对上述三个指标进行简单介绍。
1.面积性能
这里的“面积”主要是指设计所占用的 FPGA 逻辑资源数目,利用所消耗的触发器(FF)、查找(LUT)以及各类嵌入式硬核来衡量。由于 FPGA 芯片的逻辑资源数量是有限的,只有设计所需的各类逻辑资源都小于芯片的最大值,才能将其运行在 FPGA 芯片中。因此,面积性能是 FPGA 设计的最基本指标。
2.时序性能
“速度”是指在芯片上稳定运行时所能够达到的最高频率。不同设计在同一芯片上所能运行的最高频率是不一样的。面积和速度是一对对立和统一的矛盾体。一方面,要提高速度,就需要消耗更多的资源,即需要更大的面积;另一方面,为了减少面积,就需要降低处理速度。所以既要提高速度,又要减少面积,是不可能同时实现的。但在实际中,总是存在二者之间的平衡,也意味着二者可以互换。面积和速度互换的具体操作很多,比如模块复用、乒乓操作、串并变换以及流水线操作。在 Xilinx 公司的设计软中,提供了多类辅助工具来帮助用户在面积和速度之间达到最佳的平衡。面积和速度这两个指标始终贯穿着 FPGA 的设计,是评价设计质量的最终标准
3.功耗性能
设计的功耗由两部分组成:静态功耗和动态功耗。前者是由静态电流引起的;后者是电路工作时消耗的功率。其中,静态功耗主要由晶体管的泄漏电流引起,即晶体管即使在逻辑上被关断时,也会从源极“泄漏”到漏极或通过栅氧“泄漏”的小电流。这与设计代码无关,主要取决于芯片型号。动态功耗是电路工作功耗,是当电路中的电压由于激励信号发生变化时消耗的功率,可分为两部分:翻转功耗和内部功耗。翻转功耗是指一个驱动元件在对负载电容进行充放电时消耗的功率,电路电压翻转越频繁,功耗就越大;内部功耗是在芯片内部晶体管电压发生翻转时由于瞬间导通而产生的功率,对于翻转率较慢的电路,这部分功耗会很显著。动态功耗估算的基本方法是
:
(1)计算每个设计单元的功耗。
(2)累加各个设计单元的功耗,常用以下计算公式:
P
=
∑
C
×
V
2
×
E
×
f
×
1000
\mathbf{P} = \sum\mathrm{C}\times\mathrm{V^2}\times\mathrm{E}\times\mathrm{f}\times1000
P=∑C×V2×E×f×1000
式中,P 表示功耗,单位是 mW;C 表示电容,单位是 F;V 表示电压,单位是 V;E 表示翻转频率,指每个时钟周期的翻转次数;f 表示工作频率,单位是 Hz。可以看出工作频率越高,设计所造成的功耗就越大。