always和assign语法区别
always语句可以带时钟, 也可以不带时钟。
一,assign和always区别
assign 语句使用时不能带时钟。
assign a=1;
assign b=2;
在always不带时钟时,逻辑功能和assign完全一致,都是只产生组合逻辑。比较简单的组合逻辑推荐使用assign语句,比较复杂的组合逻辑推荐使用 always语句。
always @(*)
begin
a=1;
b=2;
end
二,带时钟的always和不带时钟的always 区别
在always不带时钟时,逻辑功能和assign完全一致,虽然产生的信号定义还是reg类型,但是该语句产生的还是组合逻辑。
reg [3:0] led;
always @(*)
begin
case (led_ctrl_cnt)
2'd0 : led = 4'b0001;
2'd1 : led = 4'b0010;
2'd2 : led = 4'b0100;
2'd3 : led = 4'b1000;
default : led = 4'b0000;
endcase
end