找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4679|回復(fù): 0
收起左側(cè)

Verilog中,順序執(zhí)行與非阻塞賦值

[復(fù)制鏈接]
ID:86860 發(fā)表于 2015-7-26 02:08 | 顯示全部樓層 |閱讀模式
順序語(yǔ)句是執(zhí)行完一句再執(zhí)行下一句,如果有非阻塞就要按照并行處理,再說(shuō)幾個(gè)概念:
并行,順序:verilog主要的模塊之間都是并行執(zhí)行的,例如各個(gè)always之間、always與assign之間、assign之間,如果你在一個(gè)always中要對(duì)a賦值,而在另一個(gè)always中要使用a的值,這時(shí)候就要注意了,兩者并行的,處理先后不能確定。你當(dāng)前處理的a,是這個(gè)時(shí)鐘被賦值的還是上一時(shí)鐘被賦值的,意義可能完全不同,這就是并行需要考慮的問(wèn)題。
而在always內(nèi)部,一般使用了begin...end。這里面的內(nèi)容都是順序執(zhí)行的,比如b=a; c=b,先執(zhí)行一條,再執(zhí)行下一條,那就是c=a了如果里面有兩組if/else,就是先執(zhí)行前一組,再執(zhí)行后一組。但是如果是非阻塞,那就要特殊對(duì)待,多個(gè)非阻塞賦值是在一個(gè)塊結(jié)束時(shí)一起執(zhí)行的,比如b<=a; c<=b,那就跟之前不同了,當(dāng)執(zhí)行c<=b 時(shí)b還沒(méi)有變化成a的值,因此這個(gè)賦值的結(jié)果是b被賦值前的值,這兩條語(yǔ)句其實(shí)是獨(dú)立的、并行的。好處是放得先后順序沒(méi)關(guān)系,只要在一個(gè)塊內(nèi),隨便寫(xiě)。這個(gè)不是很好理解,怎么說(shuō)了begin...end之間是順序,到了非阻塞就又變成并行執(zhí)行的呢。不好理解也沒(méi)辦法, verilog就是這樣,先告訴你是這樣的,然后又告訴你這樣行不通,習(xí)慣就好了,另外掌握幾條原則:組合邏輯用阻塞賦值,時(shí)序邏輯用非阻塞賦值,同一個(gè)模塊中不要既用阻塞又用非阻塞...

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表