网站建设基本流程详细说明,北京建设监督网站,七台河新闻视频,廉江手机网站建设verilog典型电路设计之流水线结构
下图是一个4位的乘法器结构#xff0c;用verilog HDL 设计一个两级流水线加法器树4位乘法器 对于流水线结构 其实需要做的是在每级之间增加一个暂存的数据用来存储 我们得到的东西 我们一般来说会通过在每一级之间插入D触发器来保证数据的联…verilog典型电路设计之流水线结构
下图是一个4位的乘法器结构用verilog HDL 设计一个两级流水线加法器树4位乘法器 对于流水线结构 其实需要做的是在每级之间增加一个暂存的数据用来存储 我们得到的东西 我们一般来说会通过在每一级之间插入D触发器来保证数据的联通
通过在第一级和第二级第二级和第三级加法器之间插入D触发器组可以实现两级流水设计。 reg类型其实是用在always块中所以我们在其中引入always块 来保证reg 的使用 下面是两级 流水线的简单代码
module mul_addtree_2_stage(clk,clr,mul_a,mul_b,mul_out);input clk,clr;
input [3:0] mul_a,mul_b;
output [7:0] mul_out;
reg[7:0] add_tmp_1,add_tmp_2,mul_out;
wire [7:0] stored0,stored1,stored2,stored3;
assign
stored3mul_b[3]?{1b0,mul_a,3b0}:8b0;
assign
stored2mul_b[2]?{2b0,mul_a,2b0}:8b0;
assign stored1mul_b[1]?{3b0,mul_a,1b0}:8b0;
assign stored0mul_b[0]?{4b0,mul_a}:8b0;
always(posedge clk or negedge clr)
if(!clr) begin
add_tmp_18b0000_0000;
add_tmp_28b0000_0000;
mul_out8b0000_0000;
end
else begin
add_tmp_1stored3stored2;
add_tmp_2stored1stored0;
mul_outadd_tmp_1add_tmp_2;
end
end
endmodule下面是流水线结构的testbench
module mult addtree_2_stag_tb;
reg clk, clr;
reg [3:0]mult_a, mult b;
wire [7:0]mult_out;
mul_addtree_2_stage
U1(.mul_a(mult_a),..mul_b(mult_b),
.mul_out(mult_out),.clk(clk),.clr(clr));
initial
begin
clk0; clr0; mult_a1; mult_b1;
#5 clr1;
end
always #10 clk~clk;
initial
begin
repeat(5)
begin
#20 mult_amult_a1; mult_bmult_b1;
end
end
endmodule