找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3482|回復: 0
打印 上一主題 下一主題
收起左側(cè)

阻塞(=)與非阻塞(<=)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:51024 發(fā)表于 2014-7-30 14:38 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
                         阻塞賦值操作符用等號(即 =)表示。“阻塞”是指在進程語句(initial和always)中,當前的賦值語句阻斷了其后的語句,也就是說后面的語句必須等到當前的賦值語句執(zhí)行完畢才能執(zhí)行。而且阻塞賦值可以看成是一步完成的,即:計算等號右邊的值并同時賦給左邊變量。從理論上講,它與后面的賦值語句只有概念上的先后,而無實質(zhì)上的延遲。若在RHS 加上延遲,則在延遲期間會阻止賦值語句的執(zhí)行,延遲后才執(zhí)行賦值,這種賦值語句是不可綜合的,在需要綜合的模塊設(shè)計中不可使用這種風格的代碼。

非阻塞賦值操作符用小于等于號(即 <=)表示!胺亲枞笔侵冈谶M程語句(initial和always)中,當前的賦值語句不會阻斷其后的語句。非阻塞語句可以認為是分為兩個步驟進行的:

①計算等號右邊的表達式的值,(我的理解是:在進入進程后,所有的非阻塞語句的右端表達式同時計算,賦值動作只發(fā)生在順序執(zhí)行到當前非阻塞語句那一刻)。

②在本條賦值語句結(jié)束時,將等號右邊的值賦給等號左邊的變量。

非阻塞賦值操作只能用于對寄存器類型變量進行賦值,因此只能用在"initial"塊和"always"塊等過程塊中。非阻塞賦值不允許用于連續(xù)賦值。



掌握可綜合風格的Verilog模塊編程的八個原則會有很大的幫助。在編寫時牢記這八個要點可以為絕大多數(shù)的Verilog用戶解決在綜合后仿真中出現(xiàn)的90-100%的冒險競爭問題。

1)時序電路建模時,用非阻塞賦值。

2)鎖存器電路建模時,用非阻塞賦值。

3)用always塊建立組合邏輯模型時,用阻塞賦值。

4)在同一個always塊中建立時序和組合邏輯電路時,用非阻塞賦值。

5)在同一個always塊中不要既用非阻塞賦值又用阻塞賦值。

6)不要在一個以上的always塊中為同一個變量賦值。

7)用$strobe系統(tǒng)任務(wù)來顯示用非阻塞賦值的變量值

8) 在賦值時不要使用 #0延遲






分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表