問題描述:
I2C 控制器規(guī)范 v2.1 規(guī)定了濾除快速工作模式下 SDA 和 SCL 線路上最大間距為 50ns 的毛刺。
Zynq-7000 AP SoCs PS7 中的 I2C 控制器沒有實現(xiàn)這些毛刺的濾波電路。
SDA 或 SCL 線路上的毛刺會導(dǎo)致信號線路的瞬間錯誤觸發(fā)。
SDA 上的毛刺會導(dǎo)致錯誤 START 條件或錯誤 STOP 條件的識別,從而破壞總線協(xié)議。
SCL 上的毛刺會導(dǎo)致錯誤的數(shù)據(jù)傳輸,也會破壞總線協(xié)議。
兩種情況下,數(shù)據(jù)傳輸都會受到破壞,并且總線可以掛起。
為了避免這種情況,用戶需要實現(xiàn)一個電路從 SDA 和 SCL 線路中濾除毛刺。
解決方案
在將信號送到控制器之前,用戶需要在外部利用電路濾除 SCL 和 SDA 上的毛刺。
解決方法:
用戶可在 Zynq 的可編程邏輯部分或外部可編程器件(例如 CPLD)中采取如下解決辦法。
毛刺濾波器電路由 SDA 和 SCL 信號的亞穩(wěn)態(tài)觸發(fā)器和去除抖動器邏輯組成。
邏輯電路在更快的時鐘域上工作,能夠采樣在 SDA 和 SCL 信號上出現(xiàn)的毛刺。
SDA 和 SCL 信號穿過一個三級同步器以消除亞穩(wěn)態(tài)。
邏輯電路需要更快速的時鐘來濾除毛刺,且時鐘頻率至少應(yīng)為 40 MHz。
不過,由于亞穩(wěn)態(tài)觸發(fā)器的存在,使用該更快頻率的時鐘源無需大量濾除毛刺。
推薦的時鐘頻率為 100 MHz。
毛刺濾除過程:
1. 檢測 SDA 或 SCL 信號上的轉(zhuǎn)變。用戶需要為 SDA 和 SCL 實現(xiàn)獨立的毛刺濾波電路。
2. 當(dāng)檢測到時鐘邊沿時,加載計數(shù)器,計數(shù)值應(yīng)為需要去除抖動的時鐘周期的數(shù)量(應(yīng)可去除SDA 和 SCL 信號的 50ns 抖動)。將計數(shù)器遞減。
3. 當(dāng)計數(shù)器遞減到 0 時,在輸出線路斷言之前的總線狀態(tài)。如果信號值又發(fā)生變化,復(fù)位計數(shù)器,且不改變信號值。這樣能消除任何毛刺。
4. 在計數(shù)器遞減到 0 時,如果信號沒有變化,那么在輸出信號上分配新的 SCL 和 SDA 值。
注意: SCL 和 SDA 信號都需要去除 50ns 的抖動,以便讓 SCL 和 SDA 的時序關(guān)系保持不變。
-
電路
+關(guān)注
關(guān)注
173文章
6026瀏覽量
174967 -
SDA
+關(guān)注
關(guān)注
0文章
125瀏覽量
28801 -
SCL
+關(guān)注
關(guān)注
1文章
243瀏覽量
17547
發(fā)布評論請先 登錄
在tpl0102的使用過程中,如果SCL,SDA,沒有接上拉電阻,直接連接到了P1.6 P1.7上,會造成什么后果?
FPGA設(shè)計中毛刺產(chǎn)生原因及消除
哪里可以找到主控和從模塊的scl,sda信號的合適引腳?
IIC線路串單向二極管對IIC通訊有影響嗎?
怎樣去設(shè)計一個使用時序邏輯對單bit信號進行毛刺濾除操作的電路
I2C半雙工通信時鐘線SCL與數(shù)據(jù)線SDA介紹
SCL線(時鐘線)與SDA(數(shù)據(jù)線)解析
FPGA | 競爭冒險和毛刺問題
組合邏輯中的競爭與冒險及毛刺的處理方法

密封橡膠圈毛刺缺陷檢測方法的研究
基于FPGA的毛刺問題及解決方法
如何通過兩條線SDA和SCL解決總線傳輸和地址區(qū)分及熱插拔問題

評論