C
Chris Hinsley
Guest
Folks, is this a reasonable and correct way to express a pipeline ? I'm
deliberating on things like the use of = or <= in the loop. Advise
would be welcome.
localparam DEPTH = 4;
reg [(REG_WIDTH - 1):0] o_wb;
reg [(REG_SEL_BITS - 1):0] o_wbr;
reg [(DEPTH - 1):0] [(REG_WIDTH - 1):0] pipe_wb;
reg [(DEPTH - 1):0] [(REG_SEL_BITS - 1):0] pipe_wbr;
always @(posedge i_clk or negedge i_rst)
begin
if (!i_rst)
begin
pipe_wb <= 0;
pipe_wbr <= 0;
o_wb <= 0;
o_wbr <= 0;
end
else
begin
integer i;
for (i = 0; i < DEPTH; i++)
begin
if (i == (DEPTH - 1))
begin
pipe_wb = wb;
pipe_wbr = wbr;
end
else
begin
pipe_wb = pipe_wb[i + 1];
pipe_wbr = pipe_wbr[i + 1];
end
end
o_wb <= pipe_wb[0];
o_wbr <= pipe_wbr[0];
end
end
deliberating on things like the use of = or <= in the loop. Advise
would be welcome.
localparam DEPTH = 4;
reg [(REG_WIDTH - 1):0] o_wb;
reg [(REG_SEL_BITS - 1):0] o_wbr;
reg [(DEPTH - 1):0] [(REG_WIDTH - 1):0] pipe_wb;
reg [(DEPTH - 1):0] [(REG_SEL_BITS - 1):0] pipe_wbr;
always @(posedge i_clk or negedge i_rst)
begin
if (!i_rst)
begin
pipe_wb <= 0;
pipe_wbr <= 0;
o_wb <= 0;
o_wbr <= 0;
end
else
begin
integer i;
for (i = 0; i < DEPTH; i++)
begin
if (i == (DEPTH - 1))
begin
pipe_wb = wb;
pipe_wbr = wbr;
end
else
begin
pipe_wb = pipe_wb[i + 1];
pipe_wbr = pipe_wbr[i + 1];
end
end
o_wb <= pipe_wb[0];
o_wbr <= pipe_wbr[0];
end
end