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 @(*)
begincase (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