1. 程式人生 > 其它 >verilog中=和<=的區別(轉)

verilog中=和<=的區別(轉)

轉自:https://www.cnblogs.com/rednodel/p/4103987.html

一般情況下使用<=,組合邏輯使用=賦值,時序邏輯使用<=賦值:

舉個例子:初始化m=1,n=2,p=3;分別執行以下語句

1、begin

m=n;n=p;p=m;

end

2、begin

m<=n; n<=p; p<=m;

end

結果分別是:1、m=2,n=3,p=2;(在給p賦值時m=2已經生效)

2、m=2,n=3,p=1;(在begin-end過程中,m=2一直無效而是在整體執行完後才生效)

這兩種賦值“=”用於阻塞式賦值;“<=”用於非阻塞式賦值中。

阻塞賦值:阻塞賦值語句是在這句之後所有語句執行之前執行的,即後邊的語句必須在這句執行完畢才能執行,所以稱為阻塞,實際上就是順序執行。

非阻塞賦值:非阻塞賦值就是與後邊相關語句同時執行,即就是並行執行。

所以一般時序電路使用非阻塞賦值,assign語句一般使用=阻塞賦值;

組合邏輯電路使用阻塞賦值;

PS:模擬是initial中用=,always中用<=