对fpga开发中使用低电平复位 和高电平复位消耗的资源情况进行对比测试。
测试代码
c
module reg_test(
input wire clk ,
input wire rst_n ,
input wire [3:0] in ,
input wire [1:0] load ,
output wire [3:0] out
);
gnrl_dfflr #(1) u_gnrl_dfflr (load[0],in[0],out[0],clk,rst_n);
gnrl_dfflrs #(1) u_gnrl_dfflrs(load[1],in[1],out[1],clk,rst_n);
gnrl_dffr #(1) u_gnrl_dffr (in[2],out[2],clk,rst_n);
gnrl_dffrs #(1) u_gnrl_dffrs (in[3],out[3],clk,rst_n);
endmodule
gnrl_dff * 寄存器模块来自蜂鸟e203项目,gnrl_dfflrs.v如下:
verilog
module gnrl_dfflrs # (
parameter DW = 32
) (
input lden,
input [DW-1:0] dnxt,
output [DW-1:0] qout,
input clk,
input rst_n
);
reg [DW-1:0] qout_r;
// always @(posedge clk or negedge rst_n) begin : DFFLRS_PROC
always @(posedge clk ) begin
// if (rst_n == 1'b0) // 低电平复位
if (rst_n == 1'b1) // 高电平复位
qout_r <= {DW{1'b1}};
else if (lden == 1'b1)
qout_r <= dnxt;
end
assign qout = qout_r;
endmodule
资源消耗
低电平复位

高电平复位
