提升功耗的编码方式
提升功耗的编码方式包括:
门控时钟或数据路径
对时钟或数据路径实施门控是当不使用路径结果时用来停止跳变的常用技术。门控时钟能停止所有同步负载并防止数
据路径信号开关和毛刺继续传输。
功耗优化 ( power_opt_design ) 能自动生成会减少开关活动的门控逻辑信号 (signal gating logic) 。然而就应用、数据
流和相关性而言,有些内容该工具没有提供,而且只能由用户来指定。
使门控元件数量最大化
最大限度地增加受门控信号影响的元件数量。例如,在驱动源位置对时钟域进行门控比用时钟使能信号控制每个负载
更能节省功耗。
使用专用时钟缓存的时钟使能引脚
当对时钟实施门控或多路复用以最大限度降低活跃度或时钟树使用量时,应采用专用时钟缓存的时钟使能端口。插入
LUT 或使用其它关闭时钟信号的方法在功耗和时序上效率不高。
当不需要优先编码器时使用 Case 块
当不需要优先编码器时,应使用 case 块,而不是如果 - 则 - 否则 (if-then-else) 块或三元运算符。
低效率编码实例
if (reg1)
val = reg_in1;
else if (reg2)
val = reg_in2;
else if (reg3)
val = reg_in3;
else val = reg_in4;
正确编码实例
(* parallel_case *) casex ({reg1, reg2, reg3})
1xx: val = reg_in1 ;
01x: val = reg_in2 ;
001: val = reg_in3 ;
default: val = reg_in4 ;
endcase