私はHDL言語に非常に慣れていません。シフトレジスタのプログラム方法について質問があります。(私は私が他の方向にシフトすることを知っています)。なぜ本は使うのwire[N-1:0] r_next
ですか?私の実装の欠点は何ですか?ありがとう
私の最初の試みは次のとおりです
module lesson04#(parameter N=8)(
input wire clk, reset,
input wire data,
output wire out
);
reg [N-1: 0] r_reg;
always @(posedge clk or negedge reset)
begin
if(!reset)
r_reg =0;
else
r_reg[0]=data;
r_reg = r_reg<<1;
end
assign out =r_reg[N-1];
endmodule
しかし、本は次のように述べています。
module lesson04#(parameter N=8)(
input wire clk, reset,
input wire data,
output wire out
);
reg [N-1: 0] r_reg;
wire[N-1:0] r_next;
always @(posedge clk or negedge reset)
begin
if(!reset)
r_reg =0;
else
r_reg <= r_next;
end
assign r_next= {data, r_reg[N-1:1]};
assign out =r_reg[N-1];
endmodule