簡體   English   中英

在 Verilog 中將信號視為時鍾

[英]Treat signal as a clock in Verilog

例如,這是我想問的上一個問題的圖表。

在此處輸入圖像描述

如果我像這里的圖一樣對待一個數據,並且把它寫成Verilog代碼,這里有什么缺點。 感謝回答。

也許我們在使用的工具中綜合或者實現的時候會遇到一些問題? 但實際上,當我將上面的代碼編程到我的 FPGA 中時,它在這里工作正常。

簡答
不可靠的偶發行為!

長答案
FPGA 和 ASIC 設計使用有時稱為同步設計方法的方法。 基本思想是時鍾引腳始終由時鍾驅動。 這使得綜合工具能夠執行稱為“靜態時序”的分析,從而在一定程度上確信設計將正常運行,因為所有延遲都已被分析為在設計人員的限制范圍內。

在所示的設計中,第一級Q output 的延遲將是電路正確運行的決定性因素。 設計人員希望減少對延遲的依賴,從而減少對 static 時序分析可以執行的關注。

顯示的樣式在較早的參考資料中使用(我 90 年代的大學數字設計教科書有這些)並且有時是所謂的“紋波計數器”的一部分。 在 FPGA 和 ASIC 流行之前,這是一種流行的數字設計方法。 在那些日子里,數字電路是在印刷電路板上使用分立邏輯完成的,設計關注點不同。

很難找到有關此主題的信息。 這篇文章討論了一些相同的主題,但沒有深入討論要點 go 。
https://electronics.stackexchange.com/questions/115967/what-is-a-ripple-clock
很難找到信息的一個原因是術語“異步設計”具有不同的含義,而更普遍的含義與使用圍繞組合邏輯的反饋的數字電路設計有關。 邏輯穩定或“鎖存”到穩定的 state。這不同於主要思想是“始終用時鍾驅動時鍾引腳”的討論

異步設計的另一個不良做法是使用觸發器的異步復位引腳作為控制邏輯。 在同步設計中,異步復位引腳通常不被使用,當它被使用時,它異步置位、同步置低並且主要用於全局上電復位。 這是對 Xilinx 問答論壇上討論的類似問題的回復。 https://support.xilinx.com/s/question/0D52E0000757EsGSAU/that-dangerous-asynchronous-reset?language=en_US
作者(Xilinx 工程師 Ken Chapman)在回答中使用了短語“不可靠的零星行為”。

另一個(好的)同步設計實踐是使用非常低偏移的時鍾資源來分配時鍾,這樣時鍾就可以有效地同時在物理部分的任何地方發生變化。

使用同步設計技術和 static 時序作為驗證的一部分,並為更重要的問題節省調試工作。

“同步設計”這個詞自 90 年代以來就被遺忘了並且沒有被廣泛使用,它只是設計的方式。 谷歌搜索“靜態計時”將有助於理解這些概念。 “什么是 static 時序分析”的完整答案超出了這個問題的 scope。

執行以下操作作為同步設計的基礎:

  • 用時鍾驅動時鍾引腳
  • 使用時鍾緩沖區或時鍾樹來分配時鍾
  • 每個時鍾都有相應的復位
  • 不要使用異步復位引腳作為控制
  • 了解如何跨時鍾域
  • 為每個時鍾指定時序約束
  • 進行static時序分析,了解結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM