module aaa(clk,clr,din,dout);
input wire clk,clr,din;
output reg [7:0] dout;
always@(posedge clk) begin
if(clr) dout <= 8'b0;
else begin
dout <= dout<<1;
dout[0] <= din;
end
end
endmodule
例子很简单,主要想总结两个语言语法问题:
1.dout <= dout<<1;移位操作常见但不常用,这里用到了,移位之后还需要自赋值;
2.Verilog语法中对同一个信号重复赋值,最后一次赋值有效。
dout[0]在dout <= dout<<1; dout[0] <= din;这两句中都被赋值,最后一次有效。