專利名稱:一種實(shí)現(xiàn)i2c總線控制的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及因特爾集成電路(I2C, Inter-Integrated Circuit)總線技術(shù),尤其涉 及一種利用復(fù)雜可編程邏輯器件(CPLD)實(shí)現(xiàn)I2C總線控制的系統(tǒng)及方法。
背景技術(shù):
I2C總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其 外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理 中使用,其中包括單個組件狀態(tài)的通信。例如管理員可對各個組件進(jìn)行查詢,以管理系統(tǒng)的 配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇。可隨時監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等 多個參數(shù),增加了系統(tǒng)的安全性,方便了管理。 在現(xiàn)有的以太網(wǎng)交換機(jī)、路由器等設(shè)備中,經(jīng)常會使用12C總線來控制整個系統(tǒng) 的溫度傳感器、電源管理模塊、電可擦可編程只讀存儲器(E2PR0M,Electrically Erasable Programmable Read-0nly Memory)等多個設(shè)備。這些設(shè)備將分布在整個系統(tǒng)中,統(tǒng)一管理 時,由于走線太長、設(shè)備太多等等原因,可能造成信號質(zhì)量太差,從而引起設(shè)備訪問不正常。
現(xiàn)有一些專門的I2C總線驅(qū)動芯片,比如緩沖器(buffer)或者集線器(hub)等可 以解決這個對12C總線控制的問題,但是,由于12C總線驅(qū)動芯片是一種硬件實(shí)現(xiàn),因此,采 用這種I2C總線驅(qū)動芯片會額外增加制造成本;而且在一些高密度單板上,也沒有額外的 空間來放置這些I2C總線驅(qū)動芯片,如果硬性要放置這些I2C總線驅(qū)動芯片,則會增加單板 的設(shè)計復(fù)雜度。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種實(shí)現(xiàn)I2C總線控制的系統(tǒng)及方法,通 過CPLD來實(shí)現(xiàn)I2C總線控制,能降低成本和單板的設(shè)計復(fù)雜度。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 —種實(shí)現(xiàn)I2C總線控制的系統(tǒng),該系統(tǒng)包括復(fù)雜可編程邏輯器件(CPLD),用于將 采集自主設(shè)備的因特爾集成電路(I2C)總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總 線上;在采集自主設(shè)備的12C總線的SDA信號與從設(shè)備的12C總線的SDA信號之間,判斷當(dāng) 前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向。 其中,所述CPLD進(jìn)一步包括信號采集模塊、時鐘分發(fā)模塊和方向控制模塊;其 中, 信號采集模塊,用于采用高頻率的時鐘信號采集主設(shè)備的I2C總線的SCL信號和 SDA信號; 時鐘分發(fā)模塊,用于將主設(shè)備的I2C總線的SCL信號擴(kuò)展到下級多路從設(shè)備的I2C 總線的SCL信號上; 方向控制模塊,用于通過判斷主設(shè)備與下級多路從設(shè)備的I2C總線上的當(dāng)前數(shù)據(jù) 狀態(tài),確定出當(dāng)前SDA信號的方向。
其中,所述當(dāng)前數(shù)據(jù)狀態(tài)為SDA_DIR = 0時,所述當(dāng)前SDA信號的方向具體為由主設(shè)備到從設(shè)備的方向; 或者,所述當(dāng)前數(shù)據(jù)狀態(tài)為SDA_DIR = 1時,所述當(dāng)前SDA信號的方向具體為由從設(shè)備到主設(shè)備的方向。 其中,所述CPLD進(jìn)一步包括數(shù)據(jù)控制模塊,用于根據(jù)方向控制模塊的信號,選擇SDA信號的方向。 其中,所述CPLD進(jìn)一步包括防掛死模塊,用于在系統(tǒng)啟動或者復(fù)位過程中向各個下級從設(shè)備分發(fā)時鐘,使各個下級從設(shè)備釋放I2C總線。
—種實(shí)現(xiàn)I2C總線控制的方法,該方法包括 將采集自主設(shè)備的I2C總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總線上;
在采集自主設(shè)備的12C總線的SDA信號與從設(shè)備的12C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向。 其中,所述采集具體包括信號采集模塊采用高頻率的時鐘信號采集主設(shè)備的I2C總線的SCL信號和SDA信號。 其中,將所述SCL信號分成多路并擴(kuò)展到從設(shè)備的12C總線上具體包括時鐘分發(fā)模塊將主設(shè)備的I2C總線的SCL信號擴(kuò)展到下級多路從設(shè)備的I2C總線的SCL信號上。
其中,在所述SDA信號與從設(shè)備的I2C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向具體包括方向控制模塊通過判斷主設(shè)備與下級多路從設(shè)備的I2C總線上的當(dāng)前數(shù)據(jù)狀態(tài),確定出當(dāng)前SDA信號的方向;其中, 所述當(dāng)前數(shù)據(jù)狀態(tài)為SDA_DIR = 0時,所述當(dāng)前SDA信號的方向具體為由主設(shè)備到從設(shè)備的方向;或者,所述當(dāng)前數(shù)據(jù)狀態(tài)為SDA_DIR = 1時,所述當(dāng)前SDA信號的方向具體為由從設(shè)備到主設(shè)備的方向。 其中,該方法還包括防掛死模塊在系統(tǒng)啟動或者復(fù)位過程中向各個下級從設(shè)備分發(fā)時鐘,使各個下級從設(shè)備釋放I2C總線。 本發(fā)明的CPLD用于將采集自主設(shè)備的I2C總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總線上;在采集自主設(shè)備的I2C總線的SDA信號與從設(shè)備的I2C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向。 由于本發(fā)明的CPLD是一種軟件實(shí)現(xiàn),因此,區(qū)別于現(xiàn)有技術(shù)采用I2C總線驅(qū)動芯片的硬件實(shí)現(xiàn),采用本發(fā)明,無需額外增加制造成本,能降低成本和單板的設(shè)計復(fù)雜度。并且,由于分發(fā)出的12C設(shè)備是一一對應(yīng)的,信號質(zhì)量也會有很大的提高。
圖1為本發(fā)明系統(tǒng)實(shí)施例的組成結(jié)構(gòu)示意 圖2為本發(fā)明I2C總線開始、停止?fàn)顟B(tài)示意 圖3為本發(fā)明I2C總線完整的時序圖。
具體實(shí)施例方式
本發(fā)明的基本思想是通過CPLD實(shí)現(xiàn)對I2C總線的控制,并將采集自主設(shè)備的I2C總線的SCL信號分成多路并擴(kuò)展到從設(shè)備 I2C總線上;在采集自主設(shè)備的I2C總線的SDA信號與從設(shè)備的I2C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信 號的方向。 下面結(jié)合附圖對技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。 —種實(shí)現(xiàn)12C總線控制的系統(tǒng),該系統(tǒng)包括CPLD, CPLD用于將采集自主設(shè)備的 I2C總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總線上;在采集自主設(shè)備的I2C總線 的SDA信號與從設(shè)備的I2C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信 號的方向。 這里,CPLD進(jìn)一步包括信號采集模塊、時鐘分發(fā)模塊和方向控制模塊。其中,信 號采集模塊,用于采用高頻率的時鐘信號采集主設(shè)備的I2C總線的SCL信號和SDA信號。時 鐘分發(fā)模塊,用于將主設(shè)備的I2C總線的SCL信號擴(kuò)展到下級多路從設(shè)備的I2C總線的SCL 信號上。方向控制模塊,用于通過判斷主設(shè)備與下級多路從設(shè)備的I2C總線上的當(dāng)前數(shù)據(jù) 狀態(tài),確定出當(dāng)前SDA信號的方向。 這里,當(dāng)前數(shù)據(jù)狀態(tài)為SDA_DIR = 0時,當(dāng)前SDA信號的方向具體為由主設(shè)備到 從設(shè)備的方向;或者,當(dāng)前數(shù)據(jù)狀態(tài)為SDA—DIR二1時,當(dāng)前SDA信號的方向具體為由從設(shè) 備到主設(shè)備的方向。 這里,CPLD進(jìn)一步包括數(shù)據(jù)控制模塊,用于根據(jù)方向控制模塊的信號,選擇SDA 信號的方向。 這里,CPLD進(jìn)一步包括防掛死模塊,用于在系統(tǒng)啟動或者復(fù)位過程中向各個下 級從設(shè)備分發(fā)時鐘,使各個下級從設(shè)備釋放I2C總線。 綜上所述,本發(fā)明用CPLD實(shí)現(xiàn)I2C總線控制,是一樣軟件實(shí)現(xiàn),相對于現(xiàn)有技術(shù)的 硬件實(shí)現(xiàn)而言,這種CPLD實(shí)現(xiàn)的I2C總線控制也可以理解為通過CPLD實(shí)現(xiàn)I2C透明橋, CPLD也可以稱為12C透明橋。針對12C透明橋而言,由于在使用的時候和直接連接到主設(shè) 備一樣,就使用者來說,相當(dāng)于沒有這個CPLD,因此,可以理解為CPLD為I2C透明橋。
采用本發(fā)明,可以節(jié)約I2C總線驅(qū)動芯片,降低制造成本,提供單板的密度,降低 單板的設(shè)計復(fù)雜度,并且采用CPLD這種軟件實(shí)現(xiàn)的控制,相比于現(xiàn)有技術(shù)采用硬件實(shí)現(xiàn)的 控制,能大大提高對I2C總線控制的可靠性。 本發(fā)明的方案主要是利用I2C時序的變化規(guī)律,在CPLD中通過邏輯組合電路來
判斷SDA的方向,從而實(shí)現(xiàn)I2C的透明橋功能。此外,還提供I2C的防掛死功能。 具體來說,本發(fā)明主要包括以下內(nèi)容 通過CPLD實(shí)現(xiàn)的I2C透明橋,包含下列模塊 信號采集模塊,利用一個高頻率的時鐘信號采集I2C總線的SCL信號和SDA信號。 其中,高頻率的時鐘信號采用的頻率是相對于I2C總線SCL信號的頻率而言的。
時鐘分發(fā)模塊,將I2C總線上主設(shè)備(master)的SCL信號擴(kuò)展到下級各路I2C的 SCL信號上。其中,master的SCL信號指上級I2C總線的SCL信號。 方向控制模塊,通過判斷上、下級12C總線上的當(dāng)前數(shù)據(jù)狀態(tài),確定SDA信號的方 向。也就是說,判斷SDA信號的方向是上級讀下級I2C設(shè)備的方向,還是上級寫下級I2C設(shè) 備的方向。 數(shù)據(jù)控制模i央,根據(jù)方向控制模塊的信號,即SDA DIR,來選擇SDA信號的方向。這 里,所選擇的SDA信號的方向是指數(shù)據(jù)線上的方向,因?yàn)樵谶B接到CPLD的SDA信號都是雙向的,但是在某一個特定時間點(diǎn)上,對CPLD來說,它的方向只能是固定的,所以CPLD要確定 此時的SDA信號到底是輸入方向還是輸出方向。 防掛死模塊,在復(fù)位系統(tǒng)的過程中,向各個下級12C設(shè)備分發(fā)時鐘,從而使其釋放 12C總線,達(dá)到防止I2C總線掛死的目的。也就是說,防掛死模塊主要起復(fù)位作用。針對復(fù) 位作用而言,在單板初始化或者復(fù)位操作的時候,CPLD會對從設(shè)備的SCL上分發(fā)時鐘信號, 以便釋放到各個從設(shè)備對I2C總線的占用。
以下對本發(fā)明進(jìn)行舉例闡述。
系統(tǒng)實(shí)施例 如圖1所示為本發(fā)明系統(tǒng)實(shí)施例的組成結(jié)構(gòu)示意圖,也可以理解為CPLD實(shí)現(xiàn)I2C 透明橋的組成結(jié)構(gòu)示意圖。圖1中,主設(shè)備發(fā)出的12C總線(SCL M, SDA M)經(jīng)過CPLD的 12C透明橋處理后,可以分發(fā)多路I2C總線(SCL S l,SDA S 1 ;SCL S 2, SDA S 2 ;SCL S N, SDA S N),在這里可以根據(jù)實(shí)際需要選擇I2C的路數(shù)。 圖1中,CPLD主要包括信號采集模塊、時鐘分發(fā)模塊、方向控制模塊、數(shù)據(jù)控制模 塊和防掛死模塊,下面分別說明各個模塊的具體功能。 信號采集模塊,利用一個高頻率的時鐘信號,即相對于I2C總線SCL信號的頻率的 時鐘信號,采集I2C總線的SCL和SDA。利用高頻信號采集低頻信號,可以通過判斷兩個采 樣點(diǎn)是否電平一樣,采集到SCL和SDA線上的上升邊沿和下降邊沿。 時鐘分發(fā)模塊,將I2C總線上master的SCL信號,即上級I2C總線的SCL信號擴(kuò) 展到下級各路I2C的SCL上。由于SCL信號是由主設(shè)備發(fā)送至所有從設(shè)備的單向信號,因 此,在12C總線正常響應(yīng)的時候,只要將主設(shè)備的SCL M信號擴(kuò)展為多路,然后分發(fā)給各個 從設(shè)備的SCL S即可。 方向控制模塊,通過判斷上下級12C總線上的當(dāng)前數(shù)據(jù)狀態(tài),確定SDA信號的方 向,是上級讀下級I2C設(shè)備的方向,還是上級寫下級I2C設(shè)備的方向。這里,12C總線的狀 態(tài)包括開始(START)、結(jié)束(ST0P)、讀操作(READ)、寫操作(WRITE)和應(yīng)答(ACK)等狀態(tài)。 其中,SDA信號的方向可以用參數(shù)SDA—DIR表示,SDA_DIR為0時,即主設(shè)備要寫從設(shè)備時, 表示主設(shè)備到從設(shè)備的方向;SDA—DIR為1時,即主設(shè)備要讀從設(shè)備時,表示從設(shè)備到主設(shè) 備的方向。 數(shù)據(jù)控制模塊,根據(jù)方向控制模塊的信號SDA—DIR,來選擇SDA信號的方向。例如, 當(dāng)主設(shè)備SDA_M要寫從設(shè)備的SDA_S_1時,此時SDA_DIR = 0,則SDA信號的方向?yàn)? :SDA_ M為輸出,即CPLD I/O管腳方向,SDA—SJ為輸入,即CPLD I/O管腳方向。當(dāng)主設(shè)備SDA_M 要讀從設(shè)備的SDA_S_1時,此時SDA_DIR = l,則SDA信號的方向?yàn)镾DA—M為輸入,即CPLD 1/0管腳方向,SDA_S_1為輸出,即CPLD 1/0管腳方向。 防掛死模塊,在復(fù)位系統(tǒng)的過程中,向各個下級12C設(shè)備分發(fā)時鐘,從而使其釋放 12C總線,達(dá)到防止I2C總線掛死的目的。在主設(shè)備重啟等異常操作時,通過系統(tǒng)產(chǎn)生一個 時鐘,分發(fā)給各個從設(shè)備的SCL—S,從而可以使各個從設(shè)備的I2C時序完成,釋放I2C總線。 這樣,當(dāng)主設(shè)備起來以后,也不會因?yàn)閽呙鐸2C設(shè)備,得到錯誤的應(yīng)答而引起I2C設(shè)備掛死。
對I2C總線的控制中,由于SCL信號都是由主設(shè)備發(fā)往從設(shè)備,僅僅涉及將主設(shè)備 發(fā)來的SCL信號分成多路SCL信號的問題;而SDA信號則不然,可能由主設(shè)備發(fā)往從設(shè)備, 也可能由從設(shè)備發(fā)往主設(shè)備,因此,對于SDA信號還需要判斷SDA信號的方向。I2C總線的
6開始、停止?fàn)顟B(tài)如圖2所示;I2C總線完整的時序如圖3所示;I2C總線的讀寫操作格式如以下表1、表2所示。 以下表1為I2C總線寫操作的格式,表2為I2C總線讀操作的格式。
Write Byte FormatSADDRESSWRACKCOMMANDACKDATAACKP
7 bits8 bits8 bits
Slave Address: equivalent to chip-select line of a 3-wire interfaceCommand Byte: selects which register you are writing toData Byte: data goes into the register set by the command byte (to set thresholds, configuration asks, and sampling rate) 表1
Read Byte FormatSADDRESSWRACKCOMMANDACKSADDRESSRDACKDATA八CK〃/P
7 bits8 bits7 bits8 bits
Slave Address: equivalent to chip-select lineCommand Byte: selects which register you are reading fromSlave Address: repeated due to change in dataflow directionData Byte: reads from the register set by the command byte 表2 利用CPLD的軟件實(shí)現(xiàn),將主設(shè)備的SCL信號分成多路SCL信號比較易于實(shí)現(xiàn),而判斷SDA信號的方向相對復(fù)雜些,因此,這里僅對本發(fā)明用于判斷SDA信號的方向的方向控制模塊進(jìn)行具體闡述,下面詳細(xì)介紹該方向控制模塊內(nèi)部的具體實(shí)現(xiàn)流程,包括以下步驟 第一步,設(shè)置默認(rèn)狀態(tài)SDA_DIR為0。 第二步,當(dāng)I2C總線開始信號(START)后,設(shè)置一個計數(shù)器C0,開始對SCL信號的上升沿觸發(fā)計數(shù),在計數(shù)到8時,如果當(dāng)前SDA信號的值為0,則判斷I2C總線處于寫操作過程中;如果當(dāng)前SDA信號的值為l,則判斷I2C總線處于讀操作過程中。
第三步,如果I2C總線處于寫操作過程中,則當(dāng)CO計數(shù)到9時,將SDA—DIR設(shè)置為1,表示SDA方向?yàn)閺脑O(shè)備到到設(shè)備,并保持一個SCL時鐘周期,接受從設(shè)備發(fā)送端ACK信號,然后恢復(fù)SDA_DIR = 0, CO = 1。 第四步,如果12C總線處于讀操作過程中,則當(dāng)再次檢測到12C總線開始信號(START)后,設(shè)置SDA_DIR = 1,設(shè)置一個計數(shù)器Cl,開始對SCL信號的上升沿觸發(fā)計數(shù),當(dāng)CI計數(shù)到9時,將SDA_DIR設(shè)置為O,表示SDA方向?yàn)橹髟O(shè)備到從設(shè)備,并保持一個SCL時鐘周期,接受主設(shè)備發(fā)送端ACK信號,然后恢復(fù)SDA—DIR二 1, Cl = 1。
第五步,當(dāng)檢測到I2C總線結(jié)束信號(STOP)時,設(shè)置默認(rèn)狀態(tài)SDA_DIR為0,清計數(shù)器C0、C1為0。 —種實(shí)現(xiàn)I2C總線控制的方法,該方法包括以下步驟 步驟101、將采集自主設(shè)備的12C總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C 總線上。 步驟102、在采集自主設(shè)備的I2C總線的SDA信號與從設(shè)備的I2C總線的SDA信號 之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向。 針對以上由步驟101 102所構(gòu)成的技術(shù)方案而言,采集具體包括信號采集模塊 采用高頻率的時鐘信號采集主設(shè)備的I2C總線的SCL信號和SDA信號。
步驟101的具體處理過程為時鐘分發(fā)模塊將主設(shè)備的I2C總線的SCL信號擴(kuò)展 到下級多路從設(shè)備的I2C總線的SCL信號上。 步驟102的具體處理過程為方向控制模塊通過判斷主設(shè)備與下級多路從設(shè)備的 I2C總線上的當(dāng)前數(shù)據(jù)狀態(tài),確定出當(dāng)前SDA信號的方向。 其中,當(dāng)前數(shù)據(jù)狀態(tài)為SDA—DIR二 O時,所述當(dāng)前SDA信號的方向具體為由主設(shè) 備到從設(shè)備的方向;或者,當(dāng)前數(shù)據(jù)狀態(tài)為SDA—DIR二1時,當(dāng)前SDA信號的方向具體為由 從設(shè)備到主設(shè)備的方向。 這里,該方法除了步驟101和步驟102,還包括防掛死模塊在系統(tǒng)啟動或者復(fù)位
過程中向各個下級從設(shè)備分發(fā)時鐘,使各個下級從設(shè)備釋放I2C總線。 以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
8
權(quán)利要求
一種實(shí)現(xiàn)I2C總線控制的系統(tǒng),其特征在于,該系統(tǒng)包括復(fù)雜可編程邏輯器件(CPLD),用于將采集自主設(shè)備的因特爾集成電路(I2C)總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總線上;在采集自主設(shè)備的I2C總線的SDA信號與從設(shè)備的I2C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向。
2. 根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述CPLD進(jìn)一步包括信號采集模塊、時鐘分發(fā)模塊和方向控制模塊;其中,信號采集模塊,用于采用高頻率的時鐘信號采集主設(shè)備的I2C總線的SCL信號和SDA信號;時鐘分發(fā)模塊,用于將主設(shè)備的I2C總線的SCL信號擴(kuò)展到下級多路從設(shè)備的I2C總線的SCL信號上;方向控制模塊,用于通過判斷主設(shè)備與下級多路從設(shè)備的I2C總線上的當(dāng)前數(shù)據(jù)狀態(tài),確定出當(dāng)前SDA信號的方向。
3. 根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述當(dāng)前數(shù)據(jù)狀態(tài)為SDA_DIR = 0時,所述當(dāng)前SDA信號的方向具體為由主設(shè)備到從設(shè)備的方向;或者,所述當(dāng)前數(shù)據(jù)狀態(tài)為SDA_DIR= 1時,所述當(dāng)前SDA信號的方向具體為由從設(shè)備到主設(shè)備的方向。
4. 根據(jù)權(quán)利要求2或3所述的系統(tǒng),其特征在于,所述CPLD進(jìn)一步包括數(shù)據(jù)控制模塊,用于根據(jù)方向控制模塊的信號,選擇SDA信號的方向。
5. 根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述CPLD進(jìn)一步包括防掛死模塊,用于在系統(tǒng)啟動或者復(fù)位過程中向各個下級從設(shè)備分發(fā)時鐘,使各個下級從設(shè)備釋放I2C總線。
6. —種實(shí)現(xiàn)I2C總線控制的方法,其特征在于,該方法包括將采集自主設(shè)備的I2C總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總線上;在采集自主設(shè)備的I2C總線的SDA信號與從設(shè)備的I2C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述采集具體包括信號采集模塊采用高頻率的時鐘信號采集主設(shè)備的I2C總線的SCL信號和SDA信號。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,將所述SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總線上具體包括時鐘分發(fā)模塊將主設(shè)備的I2C總線的SCL信號擴(kuò)展到下級多路從設(shè)備的I2C總線的SCL信號上。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,在所述SDA信號與從設(shè)備的12C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向具體包括方向控制模塊通過判斷主設(shè)備與下級多路從設(shè)備的I2C總線上的當(dāng)前數(shù)據(jù)狀態(tài),確定出當(dāng)前SDA信號的方向;其中,所述當(dāng)前數(shù)據(jù)狀態(tài)為SDA_DIR = 0時,所述當(dāng)前SDA信號的方向具體為由主設(shè)備到從設(shè)備的方向;或者,所述當(dāng)前數(shù)據(jù)狀態(tài)為SDA—DIR二 1時,所述當(dāng)前SDA信號的方向具體為由從設(shè)備到主設(shè)備的方向。
10. 根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的方法,其特征在于,該方法還包括防掛死模塊在系統(tǒng)啟動或者復(fù)位過程中向各個下級從設(shè)備分發(fā)時鐘,使各個下級從設(shè)備釋放I2C總線。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)I2C總線控制的系統(tǒng),該系統(tǒng)中,復(fù)雜可編程邏輯器件(CPLD)用于將采集自主設(shè)備的因特爾集成電路(I2C)總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總線上;在采集自主設(shè)備的I2C總線的SDA信號與從設(shè)備的I2C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向。本發(fā)明還公開了一種實(shí)現(xiàn)I2C總線控制的方法,該方法包括將采集自主設(shè)備的I2C總線的SCL信號分成多路并擴(kuò)展到從設(shè)備的I2C總線上;在主設(shè)備與從設(shè)備的I2C總線的SDA信號之間,判斷當(dāng)前數(shù)據(jù)狀態(tài)并確定出當(dāng)前SDA信號的方向。采用本發(fā)明的方法及系統(tǒng),能降低成本和單板的設(shè)計復(fù)雜度。
文檔編號G06F13/38GK101763331SQ20101003425
公開日2010年6月30日 申請日期2010年1月18日 優(yōu)先權(quán)日2010年1月18日
發(fā)明者高洪 申請人:中興通訊股份有限公司