zoukankan      html  css  js  c++  java
  • module介面訊號的收斂與發散的思考

    在離散數學課程中,曾學到如何把一個發散的數學式子轉換到收斂的數學式子;其做法是把原來式子做整理(積分或是微分的處理),重新寫出新的數學式子,這樣子才可能把發散的條件轉換到收斂的條件,然後才能得到我們想要的結果。

    同理,一個控制流程的很好的module(模組),它在介面訊號上,也會是一個收斂的。如何確保你的module是一個收斂的介面module。

    第一步: 選擇一個clock為主要的clock domain,所有的控制訊號都是在這個主要的clock domain下被控制、操作。

    第二步: 把所有不同步的控制訊號處理同步到主clock domain。這種做法就是把原來發散條件轉換到收斂條件。以下是示意圖。

    以下的波形圖是用來解釋上面圖形的。從波形圖中clockA有一個需求reqA,向clockBmodule提出。因為不相同頻率的訊號直接使用,會有meta stable問題,所以reqB_syn1就是來解決meta stable。之後再拿reqB_syn2reqB_syn3來操作,得到一個需求訊號reqB_getModule B用這個reqB_get是安全的。然後再產生reqB_clr去回覆module A 的需求。reqB_clr一樣,也是經過一連串的同步處理,最後,module A得到在clockA domain reqA_clrmodule AreqA_clr清除reqA訊號,這也是安全的。以下是波形圖。

    這樣子的做法,可解決大部份介面訊號發散的情況,也可以運用到所有的控制訊號的處理。目前我唯一遇過比較不同的是DDR PHY的控制訊號處理,它沒有辦法把所有的訊號線同步到相同的clock domain,而這是因為DDR PHY的設計上比較講究latency的長短以及它本身是clock的上升緣及下降緣都是資料處理的時間點,所以做法上更複雜,但是其基本精神也是沒有脫離上述的觀念。

    在設計一個模組時,一定都要隨時隨地保有發散、收斂的觀念在心中,並確保每個控制訊號都是收斂的環境下操作,這樣子才可以確保每個IP都是收斂且穩定高的module。 

  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    block的是发送信号的线程,又不是处理槽函数的线程
  • 原文地址:https://www.cnblogs.com/orchid123/p/3635169.html
Copyright © 2011-2022 走看看