低功耗编码之“总线一”

文章讨论了在数据总线和控制总线设计中使用无复位寄存器的原则,以减少静态功耗。优化后的代码减少了控制总线的复位,导致动态功耗降低。然而,静态功耗未如预期降低,可能与工具使用有关,寻求进一步解释。
摘要由CSDN通过智能技术生成

原则一:数据总线打拍建议使用无复位寄存器,可以减少静态功耗。

使用数据总线须在控制总线有效,因此数据总线需要打拍使用的情况下,无需复位。

原则二:控制总线打拍严禁使用无复位寄存器。

总线使用冗余代码:

module bus_power #(
    parameter  WIDTH = 8
)
(
    input                       clk         ,
    input                       rst_n       ,
    input                       vld_in      ,
    input       [WIDTH-1:0]     data_in     ,
    output reg  [WIDTH-1:0]     data_out
);

reg [WIDTH-1:0] data_in_ff;
reg             vld_in_ff ;

/*data_in_ff复位时冗余的,会带来多余的静态功耗*/
always @ (posedge clk or negedge rst_n) begin
    if (rst_n == 1'b0) begin
        vld_in_ff <= 1'b0;
        data_in_ff <= {WIDTH{1'b0}};
    end
    else begin
        vld_in_ff <= vld_in;
        data_in_ff <= data_in;
    end
end

always @ (posedge clk or negedge rst_n) begin
    if (rst_n == 1'b0) begin
        data_out <= {WIDTH{1'b0}};
    end
    else if (vld_in_ff == 1'b1) begin
        data_out <= data_in_ff;
    end
    else;
end

endmodule

优化后代码:

module bus_power #(
    parameter  WIDTH = 8
)
(
    input                       clk         ,
    input                       rst_n       ,
    input                       vld_in      ,
    input       [WIDTH-1:0]     data_in     ,
    output reg  [WIDTH-1:0]     data_out
);

reg [WIDTH-1:0] data_in_ff;
reg             vld_in_ff ;

/*原则1:数据总线打拍建议使用无复位寄存器,可以减少静态功耗*/
always @ (posedge clk) begin
    data_in_ff <= data_in;
end

/*原则2:控制总线打拍严禁使用无复位寄存器*/
always @ (posedge clk or negedge rst_n) begin
    if (rst_n == 1'b0) begin
        vld_in_ff <= 1'b0;
    end
    else begin
        vld_in_ff <= vld_in;
    end
end

always @ (posedge clk or negedge rst_n) begin
    if (rst_n == 1'b0) begin
        data_out <= {WIDTH{1'b0}};
    end
    else if (vld_in_ff == 1'b1) begin
        data_out <= data_in_ff;
    end
    else;
end

endmodule

使用Vivado以上两段代码综合,查看二者功耗。

优化前功耗

优化后功耗

二者功耗比较,静态功耗没有差异,动态功耗有差异且优化后功耗降低。

静态功耗结果不符合预期,可能是由于工具的原因。

有知道的朋友可以帮忙解答一下原因......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值