Note: I2C Bus

許久沒有接觸I2C了, 最近因為某些事情又回來碰, 結果遇到某些大公司出來的RD真的是規格書都看不懂, 全部都是胡亂弄, 年紀大了, 心境現在也平和, 隨便人弄了, 公司內部的政治問題, 真的比技術問題複雜與困難很多

明明就是 I2C 的Device 只有 7/10 bits之分, 而接下來的Command 也只有 1 byte or 2bytes 之分, 但是偏偏有人要拿EAPI 設計的參數說要放4byte 當buffer 這真的是淨信書不如無書, 更糟的是明明EAPI的規格裡有12 種傳輸型態需求, 都把bit/byte stream描述出來了

另外一件更好玩的是本來說要用WMI當作OS 與BIOS/ACPI 的界面, 結果說啥資料量太大不合適, 但是我剛剛一查明明MOF 資料就有Array/Object 的方式傳遞, 資料塊的大小不是問題呀, 又再一次證明在公司溝通敢講才是王道. 反正事情能作就好

 

廣告

Setup & Hold Time in Digital Circuit

今天看到幾個問題

  • Hold Time 為啥會有負值?
  • 在Multicycle 時,為啥hold time 不是 (setup time – 1)
  • 為啥Hold time與 Clock 週期無關? (可能是可以改變 Clock Pulse 的 Hi-Low 比例達到要求)

這幾個問題我都沒搞清楚過 >_<

理論上
Hold time 是 一個input 要求需要保持資料狀態的時間,不然會產生 metastable現象
Setup time 則是要求在Input 的Trigger edge到達前,資料狀態就需要穩定的時間,不然會發生不知道Trigger 時的取樣資料處於哪一個狀態。
所以 hold time 為負值不知道有啥意義應該說為0還有可能,當Clock Edge 的瞬間取樣就可以了吧?
還是 latch 本身結構的關係? 這可能要在深入研究 Logic Gate 構成latch時,看看Circuit Delay 有啥影響吧?
不過 Setup & Hold Time 的長短跟輸出Current Driver 與輸入的 Load Capacitor 有直接關聯性。

Update: Hold time 為負值的原因有可能是 FPGA or IC 內部的 Routing 關係造成信號延遲, 所以當Hold time 為負值或是0時表示外部信號能與 clcok同步時, 取樣一定成功