在FPGA设计中,功率消耗是要考虑在内的一项重要内容。我们可以通过XPower来查看所消耗的功率。
功耗仿真器XPower是第一个用于可编程逻辑器件的功耗分析软件,可以分析FPGA和CPLD的整体以及特定网线的功耗。进行功耗分析时,XPower可以读入ModelSim生成的VCD文件,从而使功耗分析更快捷,准确。
至于生成VCD文件需在Testbench文件中加入适当语句,如下:
initial begin
//design.VCD表示将要生成的VCD文件名
$dumpfile("design.VCD");
//testbeach表示测试名称
$dumpvars(1,testbench.uut);
end
</pre><p></p><p>XPower功耗分析的基本方法是:计算每个设计单元的功耗,累加各个设计单元的功耗。</p><p></p><p>功耗包含两个因素:动态功耗和静态功耗。动态功耗是指对器件内的容性负载充放电所需的功耗,它很大程度上取决于频率,电压和负载。(动态功耗=电容*电压*电压*频率)。</p><p>静态功耗是指由器件中所有晶体管的泄露电流(源极到漏极以及栅极泄露,常常集中为静止电流)引起的功耗,以及任何其他恒定功率需求之和。泄漏电流很大程度取决于温度和晶体管的尺寸。</p><p></p><p>对于cpu流水线设计可看出有一些指令并未用到所有的流水线,</p><p>例如</p><p><img src="https://img-blog.csdn.net/20150210173816090?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTUhTTUlF/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>所以在设计过程中可以减少某些指令的流水线进程,例如对于Arithmetic Instruction MEM流程并未使用,所以可以将WB提前一个阶级</p><p></p><pre name="code" class="plain">
`define NOP 5'b00000
`define HALT 5'b00001
`define LOAD 5'b00010
`define STORE 5'b00011
`define LDIH 5'b10000
`define ADD 5'b01000
`define ADDI 5'b01001
`define ADDC 5'b10001
`define SUB 5'b01010
`define SUBI 5'b01011
`define SUBC 5'b10010
`define CMP 5'b01100
`define JUMP 5'b11000
`define JMPR 5'b11001
`define BZ 5'b11010
`define BNZ 5'b11011
`define BN 5'b11100
`define BNN 5'b11101
`define BC 5'b11110
`define BNC 5'b11111
`define AND 5'b01101
`define OR 5'b01110
`define XOR 5'b01111
`define SLL 5'b00100
`define SRL 5'b00110
`define SLA 5'b00101
`define SRA 5'b00111
`define gr0 3'b000
`define gr1 3'b001
`define gr2 3'b010
`define gr3 3'b011
`def