0

希望就以下 Verilog 移位寄存器代码寻求帮助。以下代码提供给我,我的任务是将其转换为示意图形式。

module shift_register(
  output reg [9:0] out_q,
  input clk,
  input reset,
  input test,
  input in_cg,
  input in_sr);

always @(posedge clk or negedge reset) begin
  if (reset ==0) begin
    out_q <= 10'd0;
    end
  else if (test == 0) begin
    out_q <= {out_q[8:0], in_cg};
  end
  else begin
    out_q<={out_q[8:0],in_sr};
  end
end //end always

endmodule  //endmodule

我已经草拟了我的原理图,并附在此处作为ShiftRegister。请有人帮忙验证这是从 Verilog RTL 代码手动“合成”的正确原理图吗?谢谢。

4

1 回答 1

-1

您应该将“end else if”替换为“end else begin if”

always @(posedge clk or negedge reset) begin
    if (reset ==0) begin
        out_q <= 10'd0;
    end else begin
        if (test == 0) begin
            out_q <= {out_q[8:0], in_cg};
        end else begin
            out_q<={out_q[8:0],in_sr};
        end
    end
end //end always
于 2016-12-22T10:44:34.550 回答