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

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

評(píng)論