Verilog HDL的賦值語句分為阻塞賦值和非阻塞賦值兩種。阻塞賦值是指在當前賦值完成前阻塞其他類型的賦值任務,阻塞賦值由=來完成;非阻塞賦值在賦值的同時,其他非阻塞賦值可以同時被執行,非阻塞賦值由《=來完成。
(1)組合邏輯中的阻塞和非阻塞
eg.
always@(a or b or c or d)
begin
t1 = a & b;
t2 = c & d;
out = t1 | t2;
end
當abcd均由0變為1時,采用阻塞賦值語句時:t1=1,t2=1,out=1;
采用非阻塞賦值語句時:t1=1,t2=1,out=0。非阻塞賦值每一條語句執行不會阻止其他非阻塞語句的同時執行,故此時的t1和t2還未更新,所以out的值不變。
(2)時序邏輯中的阻塞和非阻塞
eg.實現D觸發器
always@(posedge clk)
begin
q1 《= d;
q2 《= q1;
end
采用非阻塞賦值時,q1=d,q2=q1;采用阻塞賦值時q1=q2=d,不符合D觸發器的要求。
綜述:對于組合邏輯(always模塊敏感列表為電平觸發),采用阻塞賦值(=);對于非阻塞邏輯(always模塊敏感列表為邊沿觸發),采用非阻塞賦值(《=)。
原文標題:阻塞賦值與非阻塞賦值
文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
-
觸發器
+關注
關注
14文章
2003瀏覽量
61347 -
時序邏輯
+關注
關注
0文章
39瀏覽量
9194 -
非阻塞
+關注
關注
0文章
13瀏覽量
2194
原文標題:阻塞賦值與非阻塞賦值
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
Verilog語言中阻塞和非阻塞賦值的不同
verilog中阻塞賦值和非阻塞賦值
VerilogHDL語言:清阻塞賦值和非阻塞賦值
簡述阻塞賦值和非阻塞賦值的可綜合性
![簡述<b class='flag-5'>阻塞</b>賦值和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b>賦值的可綜合性](https://file.elecfans.com/web1/M00/EE/89/o4YBAGCbM_aAAAV7AAALikTCF3Q696.png)
簡述Verilog HDL中阻塞語句和非阻塞語句的區別
![簡述Verilog HDL<b class='flag-5'>中</b><b class='flag-5'>阻塞</b>語句和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b>語句的區別](https://file.elecfans.com/web2/M00/22/C9/pYYBAGGonvGACTBfAAAJubJ91YY261.jpg)
評論