### 這篇文章很清楚的比較出了為什麼 output logic 用循序邏輯的方式撰寫比較適合用來做合成  | 撰寫方式 | 是否有可能會產生Glitch | 消耗timing cycle? | | -------- | -------- | -------- | | 組合邏輯 | 有 | 會 ( 因為他是組合邏輯 ) | | 循序邏輯 | 否 | 不會 | 翻譯成中文的話也就是說,**這樣的設計方式是為了極大程度的簡化合成的難度**。 如果只是像之前使用Combinational Logic來進行Output logic的設計的話,可能會造成我們沒有辦法達到預設的Contraint,進而需要在「合成約束」這邊下更大的工夫去調整,顯然使用registered outputs來輸出我們的電路輸出是一種比較好的辦法。  上圖就是一個比較不好的例子,利用組合邏輯輸出,導致我們後續要接其他模組的時候,往往需要考慮不同的Constarint,這樣的案例在少Module的情況還好處理,但是萬一我們的電路數以萬計,顯然會產生相當大的問題,這就是我什麼我們要鼓吹Registered outputs的做法的原因。 ## BAD FSM STYLE( Outputs logic with combinational logic )  ## GOOD FSM STYLE( Registered Outputs )   ### 相較於使用組合邏輯作為Output的寫法,這樣的寫法既可以讓我們更容易符合Timing的設計,更可以降低有Glitch的風險,當然這邊我們也是採用熟悉的三段式的設計。 ## 總結:這些做法告訴我們只要把狀態機寫的清楚且乾淨,輸出也用循序邏輯輸出就不會有大問題了。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up