(1)门控
1.1 时钟门控
EN就是门控时钟信号,只有在EN为1时,才提供时钟,但此时容易产生毛刺
1.2 模块级门控
当load_op有效,但sel_in无效时,即load_out无效,此时operation1、operation2为无效操作。
当load_op和sel_in有效,输出load_out有效,operation1、operation2有效,否则不进行operation1、operation2操作。
(2)并行操作
1.1 RAM的读写
4K RAM的地址总线为12bit,每次读写都需要操作12bit地址,而将其划分为两块2K的RAM,0~2k-1地址数据存入RAM0,2k~4k-1地址数据存入RAM1,此时操作地址为11bit,当对RAM0操作时,关闭RAM1的时钟,此时的访问功耗仅为原来的0.5倍
1.2 拓展数据位宽
输入连续8bit数据,如果每次将输入数据都存入RAM,此时RAM保持一直写状态。而将两拍数据合并成一拍,数据位宽增加为16bit,此时写RAM频率为原来一半,功耗降低。
(3)代码共享
当一段逻辑中存在可以复用的逻辑,则可以将其设置为共享资源,便于重复使用。
原代码,使用6个比较器,而优化后的代码,仅使用一个2个比较器,节省逻辑判断,减少功耗。
(4)操作数隔离
1.1 减少未被采样的逻辑运算,可以减少功耗
如上图所示,当SEL_0 = 1 & SEL_1 = 0时,DATA数据才能被采用使用,其他情况应该禁止DATA逻辑运算。
当SEL_0 = 1 & SEL_1 = 0时,允许DATA数据正常操作;
其他情况,Add_0输入为0,不工作,降低功耗。