## 同步電路 (大部分的數位晶片) 優點: 1. 時序清洗,便於EDA工具延時的分析和計算 缺點: 1. 高功耗、延展性差 ## 非同步電路 優點: 1. 訊號之間透過"handshake"完成,沒有時脈約束,每一個邏輯電路都是獨立的可以分別優化達到最好的效能,可以避免glitch (由於非同步電路沒有時脈切換過程中的邏輯翻轉,因此能有效減少時脈驅動電路中常見的 glitch 現象,進而提升穩定性和功耗效率) 缺點: 1. EDA 無法單獨優化,相鄰的gate會互相影響,時序複雜,因此無法做大 # Metastable 訊號在不同時序間傳遞,違反set time and hold time constrain, 造成一些不穩定狀態,無法輸出正確的邏輯電位,可能造成電路錯誤,因此需要儘量的檢測CDC的問題,<font color="#1936C9">**任何設計都不能完全的消除metastable**</font> - 邏輯功能錯誤 - 資料錯誤 EX data-bus, memory的值發生錯誤 - 發生錯誤的時間隨機 - 難以修復,即使修復也要犧牲效能和功耗 # fix Metastable ## single bit level ### Synchronizer = 2flop synchronizer 使用double syn不能完全消除metastable,但發生的機率會減少非常多 若是clock frequency upupup 那就變成3個syn 基本就可以搞定 **三個edge的要求,否則 syn 無法使用**  如何達到呢? 將adata訊號延長,例如DFF ### Pulse Synchronizer aclk higher than bclk, and adata only up "one" aclk ``` 1. 將aclk的pulse轉換為一個level 2. 將2-flop syn 同步信號 3. 在bclk將同步過來的訊號轉為pulse ``` ``` pulse轉換成為了level,這個level訊號直到下一個pulse來之前都是穩定的 ``` #### pulse syn 侷限: 將pulse syn 變成level,若這個level 無法滿足bclk的3 edge 要求,就無法同步 #### 要如何解決: pulse syn 回饋大法 aclk訊號同步至bclk,在同步回aclk,只有看到同步回aclk的數值才可以更改狀態 ## 多 bit level #### 大多數的情況不能利用2ff 同步一個多bit訊號 - NDFF_BUS with Gray Code(多dff) - MUX_NDFF/MUX_PULSE for Data Path(快到慢會miss) - Handshake(latency 大, 面積小) - Asynchronous FIFO > Convergence  造成以下情況  ## Handshake  ## <font color="#f00">Asynchronous FIFO (非常重要)</font> 讀fifo之前必須先了解 **Gray code** ### Gray Code #### 1. 兩個相鄰的編碼只會有一個bit的變動,這麼做的原因是什麼? Muti-bit在一個是買若有多個bit同時變動,在訊號穩定之前(經過2個flop(2flop synchronizer)這中間的訊號變化),可能會出現錯誤的值,因此使用Gray Code 相鄰訊號之間只會有1bit的變化,其他bit都是穩定的,<font color="#1936C9">**只要有變化就是新的值,不會出現不該出現的值**</font>  #### 2. Fifo 的 Gray Code 必須用 n+1 bit 表示 2^n 的entry fifo,為什麼要這樣設定呢? <font color="#1936C9">**用最高bit來判定FIFO是否為滿**</font> ``` fifo 深度為 8 -> 2^3 Gray Code (FIFO) -> 4 bit = 3+1 bit ``` ``` fifo_reg 只能暫時儲存 8 個值 假設fifo 一直寫都不讀,將 8 個值寫滿(full) ======================= wrt ptr -> 4'b1000 (8) read ptr -> 4'b0000 (0) 相差最高 bit , 相差8筆值 ======================= wrt ptr -> 4'b1011 (11) read ptr -> 4'b0011 (3) 相差最高 bit , 相差8筆值 ======================= ```  ## reference **老李CDC系列 - 上述CDC部分皆為老李筆記** (1) https://mp.weixin.qq.com/s/FOadtqFgp7oehvpb5VZs7g (2) https://mp.weixin.qq.com/s/p8z-XBwOwylaR39K1cKr6A (3) https://mp.weixin.qq.com/s/ThzV5dvRhq8NsscFkQ6oQg (4) https://mp.weixin.qq.com/s/396trM4O6mgh5WqilW_vPA (5) https://mp.weixin.qq.com/s/ayQjYuXu7jX8_em-Zxm2HA (6) https://mp.weixin.qq.com/s?__biz=MzI3NjI5MjU3OQ==&mid=2247483733&idx=1&sn=cfae57541c0b2ca656ab263fa67b1d54&chksm=eb76f7d9dc017ecf44905a8e4344f58009cd522b49f827de94e4f12241fd66c90e0200b3110f&scene=21#wechat_redirect https://mp.weixin.qq.com/s/b8R_66zBkQyif7K685U22A **DCARD 上面試題目** https://www.dcard.tw/f/tech_job/p/256229458 **其他** 1. https://hackmd.io/@TRChen/S1DOZOOS6 2. https://blog.csdn.net/weixin_45857247/article/details/128051768
×
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