最近在寫verilog**,距離上次寫大的verilog **已經是一年之前了。再次寫,生疏了很多。遇到一些問題,看了一些資料,在這裡記錄一下。
這裡僅做學習總結用,如有侵權,聯絡立刪。
1.if…else語句或者case語句中所列條件不完整,綜合時,會產生鎖存器。
example:
always @ ( en ) begin
if ( en ) dout = 1'b1;
end
當en=0的時候,預設dout的數值保持不變,這個時候就會產生鎖存器。
修改1(壞笑):
always @ ( en ) begin
if ( en ) dout = 1'b1;
else dout = dout;
end
這準確說不能作為修改,因為還是保持原有數值不變,所以還是會有鎖存器。
修改2:
always @ ( en ) begin
if ( en ) dout = 1'b1;
else dout = 1'b0;
end
修改3:
always @ ( posedge clk ) begin
if ( en ) dout = 1'b1;
else dout = 1'b0;
end
修改4:
always @ ( posedge clk ) begin
if ( en ) dout = 1'b1;
else dout = dout;
end
修改5:
always @ ( posedge clk ) begin
if ( en ) dout = 1'b1;
end
上面是缺少else或者default導致分支不完整的情況,還有一種分支不完整容易被忽略,那就是:當使用if-else語句和case語句時,有多個輸出,但在每個分支中只對其中的乙個或者幾個進行賦值,而不是對所有的輸出都有明確的指定。
2.組合邏輯程序中不能直接或者間接出現自己賦值給自己的情況。
example:
always @ ( * ) begin
if ( !rst ) cnt = 8'b0;
else ( !rst ) cnt = cnt + 8'b1;
end
在時序邏輯中這是常用的計數器,就沒有引入鎖存器的現象。
3.組合邏輯的敏感列表不能少
對於always塊中的輸入,在其敏感列表中一定要引入。
不要鎖存器的原因有二:
1、鎖存器容易產生毛刺
2、鎖存器在asic(專用積體電路)設計中應該說比ff(觸發器)要簡單,但是在fpga的資源中,大部分器件沒有鎖存器這個東西,所以需要用乙個邏輯門和ff來組成鎖存器,這樣就浪費了資源。(用cpld(複雜可程式設計邏輯器件)和fpga(現場可程式設計邏輯陣列)來進行asic設計是最為流行的方式之一)
3.靜態時序分析比較複雜
優點:面積小。鎖存器比ff快,所以用在位址鎖存是很合適的,不過一定要保證所有的latch訊號源的質量,鎖存器在cpu設計中很常見,正是由於它的應用使得cpu的速度比外部io部件邏輯快許多。latch完成同乙個功能所需要的門較觸發器要少,所以在asic中用的較多。
一般的設計規則是:在絕大多數設計中避免產生latch。它會讓設計的時序十分困難,並且它的隱蔽性很強,非老手不能查出。latch最大的危害在於不能過濾毛刺。這對於下一級電路是極其危險的。所以,只要能用d觸發器的地方,就不用latch。
有些地方沒有時鐘,也只能用latch了。比如現在用乙個clk接到latch的使能端(假設是高電平使能),這樣需要的setup時間,就是資料在時鐘的下降沿之前需要的時間,但是如果是乙個dff,那麼setup時間就是在時鐘的上公升沿需要的時間。這就說明如果資料晚於控制訊號的情況下,只能用latch,這種情況就是,前面所提到的latch timing borrow。基本上相當於借了乙個高電平時間。也就是說,latch借的時間也是有限的。
Oracle 什麼時候會觸發DBWR
checkpoint會觸發dbwr寫髒塊時是根據checkpoint queue來的,而lru w是負責dbwr的其他寫出條件的觸發。dbwr作為乙個後台程序,只有在某些條件滿足了才會觸發。這些條件包括 當程序在輔助lru鍊錶和主lru鍊錶上掃瞄以查詢可以覆蓋的buffer header時,如果已經...
Log物件什麼時候會更新LEO
leo全程log end offset,就是log最後一條記錄下一條的offset值.log物件初始化的時候,需要建立乙個新的leo物件,並對其進行初始化。寫入新訊息的時候,當不斷向log物件插入訊息時,leo會向指標一樣,不斷的增加。log物件發生日誌切分的時候,當前日誌段物件已滿的時候,會關閉當...
androidid什麼時候會變 什麼是柴犬尷尬期?
一直以來,都能在網上看到很多養柴犬新手家長說自己家的狗子血統不純,越長越難看,然後跑到各種平台上發 詢問等等。最後得出的結論就是幼年柴犬進入了尷尬期,血統還是很純潔的,讓很多家長都虛驚一場。那麼什麼是尷尬期,為什麼會讓眾多新手家長如此擔心呢?今天我們就來聊一聊吧。尷尬期一般是指柴犬在4 8個月大的時...