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之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論