情况一
输入信号为8比特位宽流水线无符号加法器代码
module pipeline_adder_8bit(
IN1 ,
IN2 ,
CLK ,
OUT );
input [7:0] IN1, IN2;
input CLK;
output [4:0] OUT;
reg [7:0] in1_d1R, in2_d1R;
reg [4:0] adder_out, OUT;
always@(posedge CLK) begin // 生成D触发器的always块
in1_d1R <= IN1;
in2_d1R <= IN2;
OUT <= adder_out;
end
always@(in1_d1R or in2_d1R) begin // 生成组合逻辑的always 块
adder_out = in1_d1R + in2_d1R;
end
endmodule
输入信号为8比特位宽流水线无符号加法器时序仿真图
不带流水线的情况无符号加法器时序仿真图
通过上面两幅图片的对比发现:
输入信号为8比特位宽流水线无符号加法器信号输出延迟变长,同时有毛刺时间长度减小。
情况二
输入信号为8比特位宽的二级流水线无符号加法器代码
module pipeline2_adder(
IN1 ,
IN2 ,
CLK ,
OUT );
input [7:0] IN1, IN2;
input CLK;
output [4:0] OUT;
reg [7:0] in1_d1R, in2_d1R, in1_d2R,in2_d2R;
reg [4:0] adder_out, OUT;
always@(posedge CLK) begin // 生成D触发器的always块
in1_d1R <= IN1;
in1_d2R <= in1_d1R;
in2_d1R <= IN2;
in2_d2R <= in2_d1R;
OUT <= adder_out;
end
always@( in1_d2R or in2_d2R) begin // 生成组合逻辑的always 块
adder_out = in1_d2R + in2_d2R;
end
endmodule
输入信号为8比特位宽二级流水线无符号加法器RTL View
输入信号为8比特位宽二级流水线无符号加法器时序仿真图
通过观察上面两张时序仿真图可以发现:
增加一级流水线无符号信号加法器的信号输出延迟更长,同时毛刺存在的时间长度更小。