|
Verilog中有兩種為變量賦值的方法。一種叫做連續(xù)賦值,另一種叫做過程賦值。
過程賦值又分為阻塞賦值和非阻塞賦值。
阻塞性賦值使用“=”為變量賦值,在賦值結(jié)束前不可以進(jìn)行其他操作,在賦值結(jié)束之后繼續(xù)后面的操作。這個過程就好像阻斷了程序的運行。
非阻塞賦值使用“<=”為變量賦值,在執(zhí)行賦值語句時,僅僅對“<=”右邊的值進(jìn)行評估,但并不馬上執(zhí)行賦值,然后繼續(xù)執(zhí)行后面的操作。這個過程就好像沒有阻斷程序的運行。
多條阻塞賦值語句是順序執(zhí)行的,而多條非阻塞賦值是并行進(jìn)行的,這就是兩者的區(qū)別。
堅持做到以下列出的注意事項,就可以基本上避免使用阻塞賦值和非阻塞賦值不當(dāng)引起的錯誤。
1.在使用always塊描述組合邏輯時,使用阻塞賦值;在使用always塊描述時序邏輯時,使用費阻塞賦值。
2.不要在同一個always塊內(nèi)同時使用阻塞賦值和非阻塞賦值。
3.無論是使用阻塞賦值還是使用非阻塞賦值,不要再不同的always塊內(nèi)為同一個變量賦值。
4.在程序中不要使用0延時。
|
|