一个移位寄存器的小栗子

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;这两句中都被赋值,最后一次有效。

你可能感兴趣的:(Verilog)