”=“阻塞賦值與”<=“非阻塞賦值是verilog語言中的兩種不同的賦值方式,下面將對兩種賦值方式進行比較。方便進行理解和使用。
阻塞賦值:=阻塞賦值為執(zhí)行完一條賦值語句之后再執(zhí)行下一條,可以理解為順序執(zhí)行,而且賦值是立即執(zhí)行;
非阻塞賦值:<=可以理解為并行執(zhí)行,不考慮順序,在always塊語句執(zhí)行完成之后才進行賦值。
下面提供一段黑金官方的仿真程序,各位可以自行進行仿真對比:
(源程序)
module top (din , a , b , c , clk) ;
input din ;
input clk ;
output reg a, b, c;
always @ (posedge clk)
begin
a = din ;
b = a ;
c = b ;
end
endmodule
(激勵文件)
`timescale 1ns / 1ns
module top_tb () ;
reg din ;
reg clk ;
wire a, b, c ;
initial
begin
din = 0 ;
clk = 0 ;
forever
begin
#({$random}%100)
din = ~din ;
end
end
always #10 clk = ~clk ;
top
t0 (.din(din) , .a(a) , b(b) , .c(c) , .clk(clk)) ;
endmodule
同時也可以通過RTL圖的不同來發(fā)現(xiàn)兩者的區(qū)別:
![wKgaomT_A_OAMsk1AADZ_NFvZ2k301.png](https://file1.elecfans.com/web2/M00/A3/F2/wKgaomT_A_OAMsk1AADZ_NFvZ2k301.png)
注意 :一般情況下,在時序邏輯電路中使用非阻塞賦值,可以避免仿真時出現(xiàn)競爭冒險現(xiàn)象;在組合邏輯中使用阻塞賦值,執(zhí)行賦值語句之后立即改變;在assign語句中必須使用阻塞賦值。
審核編輯:湯梓紅
-
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59791 -
時序邏輯電路
+關(guān)注
關(guān)注
2文章
94瀏覽量
16546 -
阻塞賦值
+關(guān)注
關(guān)注
0文章
9瀏覽量
9159 -
非阻塞賦值
+關(guān)注
關(guān)注
0文章
10瀏覽量
10001
發(fā)布評論請先 登錄
相關(guān)推薦
【連載視頻教程(六)】小梅哥FPGA設(shè)計思想與驗證方法視頻教程之例解阻塞賦值與非阻塞賦值
Verilog中阻塞賦值和非阻塞賦值的正確使用
verilog中阻塞賦值和非阻塞賦值
veriolg中阻塞賦值與非阻塞賦值區(qū)別
FPGA學習系列:5.阻塞賦值與非阻塞賦值
![FPGA學習系列:5.<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>與<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>](https://file.elecfans.com/web1/M00/51/D6/o4YBAFsPcXSAdzEYAAAL4MjUOvE640.png)
阻塞賦值和非阻塞賦值的用法一篇文章就夠了
IEEE Verilog阻塞賦值和非阻塞賦值的區(qū)別
![IEEE Verilog<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>的區(qū)別](https://file.elecfans.com/web1/M00/BE/C9/o4YBAF7plAWARRatAACAOGjDFj8064.png)
VerilogHDL語言:清阻塞賦值和非阻塞賦值
基于阻塞賦值和非阻塞賦值的多級觸發(fā)器級聯(lián)實例
![基于<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>的多級觸發(fā)器級聯(lián)實例](https://file.elecfans.com/web1/M00/EE/72/pIYBAGCWNI-AKXz-AADOG74i4Xg491.jpg)
評論