非阻塞賦值操作符用小于等于號(即 <=)表示。“非阻塞”是指在進程語句(initial和always)中,當前的賦值語句不會阻斷其后的語句。非阻塞語句可以認為是分為兩個步驟進行的:
①計算等號右邊的表達式的值,(我的理解是:在進入進程后,所有的非阻塞語句的右端表達式同時計算,賦值動作只發生在順序執行到當前非阻塞語句那一刻)。
②在本條賦值語句結束時,將等號右邊的值賦給等號左邊的變量。
非阻塞賦值操作只能用于對寄存器類型變量進行賦值,因此只能用在"initial"塊和"always"塊等過程塊中。非阻塞賦值不允許用于連續賦值。
掌握可綜合風格的Verilog模塊編程的八個原則會有很大的幫助。在編寫時牢記這八個要點可以為絕大多數的Verilog用戶解決在綜合后仿真中出現的90-100%的冒險競爭問題。
1)時序電路建模時,用非阻塞賦值。
2)鎖存器電路建模時,用非阻塞賦值。
3)用always塊建立組合邏輯模型時,用阻塞賦值。
4)在同一個always塊中建立時序和組合邏輯電路時,用非阻塞賦值。
5)在同一個always塊中不要既用非阻塞賦值又用阻塞賦值。
6)不要在一個以上的always塊中為同一個變量賦值。
7)用$strobe系統任務來顯示用非阻塞賦值的變量值
8) 在賦值時不要使用 #0延遲
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |