”=“阻塞賦值與”<=“非阻塞賦值是verilog語言中的兩種不同的賦值方式,下面將對兩種賦值方式進(jìn)行比較。方便進(jìn)行理解和使用。
阻塞賦值:=阻塞賦值為執(zhí)行完一條賦值語句之后再執(zhí)行下一條,可以理解為順序執(zhí)行,而且賦值是立即執(zhí)行;
非阻塞賦值:<=可以理解為并行執(zhí)行,不考慮順序,在always塊語句執(zhí)行完成之后才進(jìn)行賦值。
下面提供一段黑金官方的仿真程序,各位可以自行進(jìn)行仿真對比:
(源程序)
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ū)別:

注意 :一般情況下,在時序邏輯電路中使用非阻塞賦值,可以避免仿真時出現(xiàn)競爭冒險現(xiàn)象;在組合邏輯中使用阻塞賦值,執(zhí)行賦值語句之后立即改變;在assign語句中必須使用阻塞賦值。
審核編輯:湯梓紅
-
RTL
+關(guān)注
關(guān)注
1文章
388瀏覽量
60518 -
時序邏輯電路
+關(guān)注
關(guān)注
2文章
94瀏覽量
16726 -
阻塞賦值
+關(guān)注
關(guān)注
0文章
10瀏覽量
9214 -
非阻塞賦值
+關(guān)注
關(guān)注
0文章
11瀏覽量
10055
發(fā)布評論請先 登錄
相關(guān)推薦
在testbench中如何使用阻塞賦值和非阻塞賦值

【FPGA開源教程連載】第六章 阻塞賦值與非阻塞賦值
Verilog中阻塞賦值和非阻塞賦值的正確使用
verilog中阻塞賦值和非阻塞賦值
veriolg中阻塞賦值與非阻塞賦值區(qū)別
FPGA學(xué)習(xí)系列:5.阻塞賦值與非阻塞賦值

阻塞賦值和非阻塞賦值的用法一篇文章就夠了
IEEE Verilog阻塞賦值和非阻塞賦值的區(qū)別

VerilogHDL語言:清阻塞賦值和非阻塞賦值
基于阻塞賦值和非阻塞賦值的多級觸發(fā)器級聯(lián)實(shí)例

評論