專利名稱:使用狀態(tài)機(jī)增強(qiáng)i2c從/主接口的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及通信裝置和方法,并且更特別地,涉及使用狀 態(tài)機(jī)來增強(qiáng)12 C總線上的從/主接口的方法和設(shè)備。
背景技術(shù):
由Philips公司所開發(fā)的內(nèi)部集成電路(I2C)總線允許集成電路 經(jīng)由簡單的雙向兩線總線(加上電源和地)相互直接通信。裝置連接 至該總線上的兩條線中的每一條, 一條線是用于數(shù)據(jù)通信的串行數(shù)據(jù) 線(SDA),而另一條線是用于裝置間的數(shù)據(jù)通信的控制和同步的串行 時(shí)鐘線(SCL)。各裝置并聯(lián)連接至另一個(gè)裝置,并且每一條總線線路 (SDA禾Q SCL)用作該總線上的所有線的線與(wired-AND)。各裝 置的輸出被配置為集電極開路(open-collector ) /漏極開路(open-drain ) 裝置,并且,當(dāng)總線處于靜態(tài)時(shí), 一個(gè)或多個(gè)上拉電阻在總線上保持' 軟'高邏輯值。當(dāng)裝置要求訪問總線時(shí),該裝置經(jīng)由集電極開路/漏極開 路裝置將總線拉至邏輯低值,其中,該集電極開路/漏極開路裝置被置 于與地電位傳導(dǎo)的狀態(tài)下。
連接至I2C總線的各裝置可以通過地址而識(shí)別,且可作為發(fā)射器 或接收器或者兩者。使用主-從通信協(xié)議來實(shí)現(xiàn)數(shù)據(jù)傳送。主裝置啟動(dòng) 數(shù)據(jù)傳送并產(chǎn)生允許該傳送的時(shí)鐘信號;被尋址到的裝置被認(rèn)作是這 個(gè)傳送的從裝置。可以由主裝置啟動(dòng)數(shù)據(jù)傳送,或者是向從裝置發(fā)送 數(shù)據(jù)(此處稱之為寫入),或者是向該從裝置請求數(shù)據(jù)(此處稱之為讀 取)。例如,諸如顯示屏之類的輸出裝置典型地不能啟動(dòng)數(shù)據(jù)傳送,并 且因此將被配置為只能作為裝置。另一方面,視情況所需,微處理器 典型地將被配置作為主裝置或從裝置。
在靜態(tài)中,SDA和SCL總線線路兩者都處于高邏輯狀態(tài)(此處稱之為高或邏輯狀態(tài)l)。當(dāng)SCL線為高時(shí),通過斷定SDA線上的至 低邏輯狀態(tài)(此處稱之為低或邏輯狀態(tài)0)的轉(zhuǎn)換,主裝置啟動(dòng)數(shù)據(jù) 傳送;這被定義為"開始"條件。其后,主裝置切換SCL線,以控制 數(shù)據(jù)傳送的同步;當(dāng)SCL時(shí)鐘為低時(shí),在SDA線上出現(xiàn)數(shù)據(jù)值改變, 并且,只有當(dāng)SCL時(shí)鐘為高時(shí),SDA線的狀態(tài)才被視為有效。
可以斷定多個(gè)"開始",以在同一個(gè)傳送會(huì)話中實(shí)現(xiàn)一連串的數(shù) 據(jù)傳送。通常,各個(gè)數(shù)據(jù)傳送需要來自數(shù)據(jù)傳送的被尋址接受方的確 認(rèn)。為了終止該數(shù)據(jù)傳送,當(dāng)SCL時(shí)鐘為高時(shí),主機(jī)斷定SDA線上 的由低到高的轉(zhuǎn)換;這被定義為"停止"條件。其后,如上,通過斷 定SDA線上的由高到低的轉(zhuǎn)換,任何裝置都可以如主裝置那樣掌握總 線的控制。注意,為便于引用,術(shù)語斷定在此被用于實(shí)現(xiàn)或試圖實(shí)現(xiàn) 特定的邏輯狀態(tài)。在轉(zhuǎn)換至高邏輯狀態(tài)的例子中,典型地,這通過由 斷定裝置將總線從強(qiáng)制下拉狀態(tài)中釋放出來而得以提供。這個(gè)高邏輯 狀態(tài)的斷定允許總線上的上述上拉裝置使該總線進(jìn)入高邏輯狀態(tài),除 非另一個(gè)裝置也強(qiáng)制下拉狀態(tài)。
I2C數(shù)據(jù)傳送的通用格式包括形成I2C總線的SDA線和SCL線 上的信號。當(dāng)SCL線為高時(shí),"開始"條件對應(yīng)于在SCL信號為高的 同時(shí)SDA線上的信號由高到低的轉(zhuǎn)換;在該"開始"之后,主機(jī)傳送 地址,即7位,后面是讀取/寫入-非指示符。在傳送數(shù)據(jù)傳送(R7W-) 的地址和方向之后,主機(jī)釋放SDA線,允許它升至高邏輯電平。如果 從裝置識(shí)別出它的地址,則該從裝置通過將總線拉低來傳送確認(rèn)信號 (ACK)。因此,當(dāng)主機(jī)釋放SDA線時(shí)沒有低信號,則表示否定確認(rèn) (NAK)。如果經(jīng)由SDA處的低來確認(rèn)了地址,則發(fā)送裝置傳送數(shù)據(jù)。 如果數(shù)據(jù)傳送的方向相對于主機(jī)為"讀取",則從裝置為發(fā)送裝置;如 果數(shù)據(jù)傳送的方向相對于主機(jī)為"寫入",則主裝置為發(fā)送裝置。發(fā)送 裝置釋放SDA線的控制,而接受裝置通過斷定SDA線上的低邏輯值 來確認(rèn)數(shù)據(jù)的接收。如果數(shù)據(jù)被確認(rèn),則發(fā)射器發(fā)送附加的數(shù)據(jù)。這 個(gè)過程繼續(xù),直到數(shù)據(jù)全部通信完畢,或直到發(fā)送數(shù)據(jù)項(xiàng)被否定確認(rèn)。 隨后,主裝置可以重新斷定開始信號,并重復(fù)上面的過程,或者,可 以斷定停止信號(P),以終止這個(gè)數(shù)據(jù)傳送會(huì)話。
可以以各種方式來實(shí)現(xiàn)上述接口協(xié)議。為了將用于編程或設(shè)計(jì)
12C接口的開發(fā)時(shí)間最小化,已經(jīng)公開了多種通用接口方案。"Design Of A Behavioral (Register Transfer Level, RTL) Model Of The Inter-Integrated Circuit Or I2C-Bus Master-Slave Interface", Amrita Deshpande的碩士論文,University of New Mexico, 1999,公開了一種 旨在在I2C裝置中實(shí)施的I2C主接口和從接口 ,在此通過引用將其并 入。通過提供檢驗(yàn)的I2C接口,系統(tǒng)設(shè)計(jì)員不必糾纏于I2C規(guī)范和協(xié) 議的細(xì)節(jié)。這個(gè)論文的主接口和從接口都是基于狀態(tài)機(jī)的。US專利 6,799,233進(jìn)一步描述了基于狀態(tài)機(jī)的系統(tǒng)和方法,在此通過引用將其 并入。
發(fā)明內(nèi)容
以解決和克服上述問題的方式,本發(fā)明的各個(gè)方面涉及使用狀態(tài) 機(jī)來增強(qiáng)I2C接口的方法和設(shè)備。
根據(jù)一個(gè)示例性實(shí)施例,本發(fā)明涉及一種通信系統(tǒng)和/或方法,其 使用具有被用來實(shí)現(xiàn)通信協(xié)議的串行數(shù)據(jù)線和時(shí)鐘線的I2C串行數(shù)據(jù) 傳送總線。該通信系統(tǒng)包括響應(yīng)于時(shí)鐘信號的上升沿的第一和第二 狀態(tài)機(jī),以及響應(yīng)于時(shí)鐘信號的下降沿的第三狀態(tài)機(jī),第三狀態(tài)機(jī)與 第一和第二狀態(tài)機(jī)不同地進(jìn)行操作。第一狀態(tài)機(jī)和第二狀態(tài)機(jī)中的一 個(gè)遵循通信協(xié)議的寫入狀態(tài),而第一狀態(tài)機(jī)和第二狀態(tài)機(jī)中的另一個(gè) 遵循通信協(xié)議的讀取狀態(tài)。
本發(fā)明的上述概要信息并非要描述本發(fā)明的各實(shí)施例或每種實(shí) 現(xiàn)。通過參考下列詳細(xì)說明、權(quán)利要求以及附圖,本發(fā)明的優(yōu)點(diǎn)、成 就以及對本發(fā)明的更完全的理解將變得顯然和易于領(lǐng)會(huì)。
根據(jù)附圖,并參考下列本發(fā)明的各種實(shí)施例的詳細(xì)說明,可以更
完全地理解本發(fā)明,其中
圖1是根據(jù)本發(fā)明實(shí)施例的使用狀態(tài)機(jī)在12C總線上實(shí)現(xiàn)增強(qiáng)的 從/主接口的數(shù)據(jù)通信系統(tǒng)的框圖2是根據(jù)本發(fā)明實(shí)施例的用于使用狀態(tài)機(jī)在I2C總線上實(shí)現(xiàn)增 強(qiáng)的從/主接口的數(shù)據(jù)通信系統(tǒng)的狀態(tài)圖3是根據(jù)本發(fā)明實(shí)施例的用于使用狀態(tài)機(jī)在I2C總線上實(shí)現(xiàn)增 強(qiáng)的從/主接口的數(shù)據(jù)通信系統(tǒng)的另一個(gè)不同操作的狀態(tài)圖4到7示出根據(jù)本發(fā)明實(shí)施例的用于使用狀態(tài)機(jī)在I2C總線上 實(shí)現(xiàn)增強(qiáng)的從/主接口的數(shù)據(jù)通信方法的流程圖8是根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于使用狀態(tài)機(jī)在I2C總線上 實(shí)現(xiàn)增強(qiáng)的從/主接口的另一個(gè)方法的流程圖。
具體實(shí)施例方式
雖然對本發(fā)明可進(jìn)行各種修改和替換方式,但在附圖中還是示出 了特殊示例,下面將詳細(xì)描述之。然而,可以理解,所描述的具體實(shí) 施例不應(yīng)視作對本發(fā)明的限制。相反地,要涵蓋所有落入如權(quán)利要求 中所限定的本發(fā)明的范圍內(nèi)的修改、等價(jià)物和替換物。
本發(fā)明一般可適用于用于使用狀態(tài)機(jī)在I2C總線上增強(qiáng)從/主接 口的方法和設(shè)備。已經(jīng)發(fā)現(xiàn)本發(fā)明特別有利于內(nèi)部集成電路(I2C)串 行數(shù)據(jù)通信總線,但是也有利于其它總線和通信協(xié)議,例如系統(tǒng)管理 總線(SMBus)體系和/或協(xié)議或其它的串行數(shù)據(jù)通信系統(tǒng)。為了示出, 而不是為了限制,將在具有控制至從裝置的通信的主裝置的I2C總線 的上下文中描述本發(fā)明。
主裝置控制與I2C總線體系上的I2C從裝置的通信。I2C從裝置 可以應(yīng)用于許多領(lǐng)域,從蜂窩電話、PDA和智能電話到LCDTV、醫(yī) 療器械、游戲和其它應(yīng)用領(lǐng)域。I2C數(shù)據(jù)總線上的裝置的新特征給主 裝置和從裝置之間的通信帶來新的問題。根據(jù)本發(fā)明,多狀態(tài)機(jī)的并 發(fā)使用可以被用來解決由這些新特征所帶來的一些問題。這些狀態(tài)機(jī) 將用于數(shù)據(jù)傳送的控制信號的設(shè)計(jì)和產(chǎn)生流水線化,并消除"膠合 (glue)"邏輯的使用,以并入該附加的特征。
在本發(fā)明的具體實(shí)施例中,兩個(gè)狀態(tài)機(jī)運(yùn)行在從裝置的前臺(tái),取 決于SCL時(shí)鐘的上升沿, 一個(gè)狀態(tài)機(jī)運(yùn)行在后臺(tái),取決于SCL時(shí)鐘 的下降沿。為了為狀態(tài)機(jī)保持格雷碼,在前臺(tái)有兩個(gè)狀態(tài)機(jī),而不是
一個(gè)單獨(dú)的狀態(tài)機(jī)。對狀態(tài)機(jī)進(jìn)行格雷碼編碼消除了在基于狀態(tài)機(jī)的 狀態(tài)而產(chǎn)生的數(shù)據(jù)輸出上的假信號(glitch)。
如上所述,在后臺(tái)運(yùn)行有一個(gè)狀態(tài)機(jī),其取決于SCL時(shí)鐘的下降 沿。使前臺(tái)和后臺(tái)狀態(tài)機(jī)取決于時(shí)鐘的相反沿消除了針對后臺(tái)的狀態(tài) 機(jī)的輸入的競態(tài)條件。
根據(jù)一個(gè)示例性實(shí)施例,本發(fā)明涉及一種通信系統(tǒng),其使用具有被用來實(shí)現(xiàn)通信協(xié)議的串行數(shù)據(jù)線和時(shí)鐘線的I2C串行數(shù)據(jù)傳送總線。該通信系統(tǒng)包括響應(yīng)于時(shí)鐘信號的上升沿的第一和第二狀態(tài)機(jī), 以及響應(yīng)于時(shí)鐘信號的下降沿的第三狀態(tài)機(jī),第三狀態(tài)機(jī)與從第一和 第二狀態(tài)機(jī)不同地操作。第一狀態(tài)機(jī)和第二狀態(tài)機(jī)中的一個(gè)遵循通信 協(xié)議的寫入狀態(tài),而第一狀態(tài)機(jī)和第二狀態(tài)機(jī)中的另一個(gè)遵循通信協(xié) 議的讀取狀態(tài)。
圖1是根據(jù)本發(fā)明實(shí)施例的使用狀態(tài)機(jī)在I2C總線上實(shí)現(xiàn)增強(qiáng)的 從/主接口的數(shù)據(jù)通信系統(tǒng)100的框圖。SDA線110和SCL線120被 設(shè)置為I2C數(shù)據(jù)總線125。主裝置130和從裝置140附于I2C數(shù)據(jù)總 線125。使用分別電連接至SCL線120和SDA線110的時(shí)鐘連接134 和數(shù)據(jù)連接132,將主裝置130電連接至I2C數(shù)據(jù)總線125。
使用分別電連接至SCL線120和SDA線110的時(shí)鐘連接144和 數(shù)據(jù)連接142,將從裝置140電連接至I2C數(shù)據(jù)總線125。該從裝置包 括在前臺(tái)運(yùn)行的第一狀態(tài)機(jī)150和第二狀態(tài)機(jī)160。為了方便起見, 第一狀態(tài)機(jī)150被指定為12C狀態(tài)機(jī)-寫入(12CSM-W),而第二狀態(tài) 機(jī)160被指定為I2C狀態(tài)機(jī)-讀取(I2CSM-R)。 I2CSM-W和I2CSM-R 這兩個(gè)狀態(tài)機(jī)是在前臺(tái)運(yùn)行的狀態(tài)機(jī),并取決于SCL的上升沿。后 臺(tái)狀態(tài)機(jī)170 (圖4到7中示出了)被指定為DIA—ARA一SM,在后臺(tái) 運(yùn)行且取決于SCL的下降沿。
I2CSM-W和I2CSM-R狀態(tài)機(jī)由I2C總線激勵(lì)并解釋通信協(xié)議。 DIA一ARA—SM狀態(tài)機(jī)促進(jìn)新特征的實(shí)現(xiàn),例如,響應(yīng)device ID Address 和SM Bus Alert Response,這些將在下文作進(jìn)一步描述。
圖2是第一狀態(tài)機(jī)150的狀態(tài)圖。為說明而不是為限制,狀態(tài)機(jī) 作為I2C從裝置而示出,該I2C從裝置具有至標(biāo)準(zhǔn)I2C總線(例如,
SDA、 SCL、地(GND)、電源(VDD))和表示為INT存的中斷管腳 的連接。圖2中的各個(gè)圓圈對應(yīng)于單獨(dú)的狀態(tài),并由大寫字母來指定, 對應(yīng)于大寫字母下方所示出的4位二進(jìn)制編碼。下面是這些狀態(tài)的描
述
狀態(tài)Ah
這個(gè)狀態(tài)機(jī)根據(jù)停止和復(fù)位條件(二者為有效"高")異步地復(fù)位。
,它使用門控SCL時(shí)鐘。該SCL時(shí)鐘由狀態(tài)機(jī)的狀態(tài)門控。當(dāng) 該"寫入"狀態(tài)機(jī)或"讀取"狀態(tài)機(jī)處于它們各自的空閑狀態(tài)(Al和A2) 時(shí),該狀態(tài)機(jī)并不接收SCL。
狀態(tài)G1:
*依據(jù)開始條件,狀態(tài)機(jī)異步地進(jìn)入狀態(tài)G1。. *在下一個(gè)時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)B1,在狀態(tài)B1它準(zhǔn)備接收
從裝置地址。
狀態(tài)B1:
,如果斷定從裝置忙信號,則狀態(tài)機(jī)復(fù)位為狀態(tài)A1。
如果狀態(tài)機(jī)接收ALL CALL Address (ACA)并且如果這個(gè)特 征被禁止了,則狀態(tài)機(jī)復(fù)位為狀態(tài)A1。
如果狀態(tài)機(jī)接收SMBus Alert Response Address (ARA)并且如 果這個(gè)特征被禁止了,則狀態(tài)機(jī)復(fù)位為狀態(tài)Al。
如果狀態(tài)機(jī)接收Device ID Address (DIA)并且如果這個(gè)特征 被禁止了,則狀態(tài)機(jī)復(fù)位為狀態(tài)Al。
下面(由此點(diǎn)到狀態(tài)E)假定ACA、 ARA和DIA被啟用
如果狀態(tài)機(jī)接收具有讀取位的Slave Address (SA)或ACA, 則復(fù)位為狀態(tài)Al。
如果狀態(tài)機(jī)接收具有寫入位的Slave Address (SA)或ACA, 則進(jìn)入狀態(tài)E。
如果狀態(tài)機(jī)接收ARA和讀取位并且中斷為低,則復(fù)位為狀態(tài)Al。
如果狀態(tài)機(jī)接收ARA和讀取位并且中斷為高,則復(fù)位為狀態(tài)Al。
如果狀態(tài)機(jī)接收ARA和寫入位并且中斷為低,則復(fù)位為狀態(tài)
AK
如果狀態(tài)機(jī)接收ARA和寫入位并且中斷為高,則復(fù)位為狀態(tài)Al。
如果狀態(tài)機(jī)接收具有寫入位的DIA,則進(jìn)入狀態(tài)H。
如果狀態(tài)機(jī)接收具有讀取位的DIA,則復(fù)位為狀態(tài)Al。 4口果狀態(tài)機(jī)接收不同于SA或者ACA或者ARA或者DIA的任
何東西,則復(fù)位為狀態(tài)Al。
,如果狀態(tài)機(jī)并非上面所述情況,則停留在狀態(tài)B1,并接收從裝
置地址。
狀態(tài)E:
,在這個(gè)狀態(tài)里,狀態(tài)機(jī)發(fā)送確認(rèn)。
'在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)F3。 狀態(tài)F3:
,在狀態(tài)F3里,狀態(tài)機(jī)從串行數(shù)據(jù)線移入數(shù)據(jù)。
如果在移入數(shù)據(jù)的結(jié)尾處狀態(tài)機(jī)接收從裝置忙信號,則狀態(tài)機(jī)
回到狀態(tài)A1,或者,如果狀態(tài)機(jī)完成了數(shù)據(jù)移動(dòng)而沒有接收從裝置忙
信號,則回到狀態(tài)E。
只要狀態(tài)機(jī)正在移入八位,則狀態(tài)機(jī)就停留在狀態(tài)F3。 狀態(tài)H:
*在這個(gè)狀態(tài)里,狀態(tài)機(jī)發(fā)送確認(rèn)。 -在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)F1。 狀態(tài)F1:
在這個(gè)狀態(tài)里,狀態(tài)機(jī)接收DIA的第一位。
在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)F2。
這個(gè)狀態(tài)被添加用以保持狀態(tài)機(jī)的格雷碼編碼。 狀態(tài)F2:
,在這個(gè)狀態(tài)里,狀態(tài)機(jī)接收DIA的第二位。
在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)F3。
這個(gè)狀態(tài)被添加用以保持狀態(tài)機(jī)的格雷碼編碼。
圖3是用于根據(jù)本發(fā)明的實(shí)施例的第二前臺(tái)狀態(tài)機(jī)160的狀態(tài)
圖。圖3中所示的狀態(tài)遵循與圖2相同的設(shè)計(jì)協(xié)議。下面是這些狀態(tài)
的描述
狀態(tài)A2:
這個(gè)狀態(tài)機(jī)根據(jù)停止和復(fù)位條件(二者為有效"高")異步地復(fù)位。
"它使用門控SCL時(shí)鐘。該SCL時(shí)鐘由狀態(tài)機(jī)的狀態(tài)門控。當(dāng) 這個(gè)"寫入"狀態(tài)機(jī)或者"讀取"狀態(tài)機(jī)處于它們各自的空閑狀態(tài)(Al和 A2)時(shí),該狀態(tài)機(jī)并不接收SCL。 狀態(tài)G2:
*依據(jù)開始條件,狀態(tài)機(jī)異步地進(jìn)入狀態(tài)G2。 *在下一個(gè)時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)B2,在狀態(tài)B2它準(zhǔn)備接收
從裝置地址。
狀態(tài)B2:
,如果斷定從裝置忙信號,則狀態(tài)機(jī)復(fù)位為狀態(tài)A2。
如果狀態(tài)機(jī)接收All Call Address (ACA)并且如果這個(gè)特征被
禁止了,則狀態(tài)機(jī)復(fù)位為狀態(tài)A2。
如果狀態(tài)機(jī)接收SMBus Alter Response Address (ARA)并且如
果這個(gè)特征被禁止了,則狀態(tài)機(jī)復(fù)位為狀態(tài)A2。
如果狀態(tài)機(jī)接收Device ID Address (DIA)并且如果這個(gè)特征
被禁止了,則狀態(tài)機(jī)復(fù)位為狀態(tài)A2。
下面(由此點(diǎn)到狀態(tài)I)假定ACA、 ARA和DIA被啟用 如果狀態(tài)機(jī)接收具有讀取位的Slave Address (SA)或ACA,
則進(jìn)入狀態(tài)C。
如果狀態(tài)機(jī)接收具有讀取位的DIA,則進(jìn)入狀態(tài)J。
如果狀態(tài)機(jī)接收具有寫入位的Slave Address (SA)或ACA,
則復(fù)位為狀態(tài)A2。
如果狀態(tài)機(jī)接收ARA和讀取位并且中斷為低,則進(jìn)入狀態(tài)I。
如果狀態(tài)機(jī)接收ARA和讀取位并且中斷為高,則復(fù)位為狀態(tài)
A2。
如果狀態(tài)機(jī)接收ARA和寫入位并且中斷為低,則復(fù)位為狀態(tài)A2。
如果狀態(tài)機(jī)接收ARA和寫入位并且中斷為高,則復(fù)位為狀態(tài)A2。
如果狀態(tài)機(jī)接收具有寫入位的DIA,則復(fù)位為狀態(tài)A2。 '如果狀態(tài)機(jī)接收不同于SA或者ACA或者ARA或者DIA的任
何東西,則復(fù)位為狀態(tài)A2。
如果狀態(tài)機(jī)并非上面所述情況,則停留在狀態(tài)B2,并接收從裝
置地址。 狀態(tài)I:
在這個(gè)狀態(tài)里,狀態(tài)機(jī)發(fā)送確認(rèn)并用要發(fā)送的自己的地址來加 載移位寄存器。
.在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)D1。 狀態(tài)D1:
這個(gè)狀態(tài)被添加,僅僅是為了能夠用格雷碼對所有的狀態(tài)轉(zhuǎn)換 進(jìn)行編碼。
*在這個(gè)狀態(tài)里,從裝置地址的第一位被發(fā)送。
如果這里檢測到從裝置忙信號,則狀態(tài)機(jī)復(fù)位為狀態(tài)A2。 -在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)D4。 狀態(tài)D4:
'在這個(gè)狀態(tài)里,與R/W^立一起,狀態(tài)機(jī)發(fā)送從裝置地址的6 個(gè)剩余位。
如果這里檢測到從裝置忙信號,則狀態(tài)機(jī)復(fù)位為狀態(tài)A2。 ,在發(fā)送全部的8位以后,狀態(tài)機(jī)進(jìn)入狀態(tài)K。 狀態(tài)K:
這個(gè)狀態(tài)連同來自"dia—am—sm"的狀態(tài)一起產(chǎn)生控制信號,以 標(biāo)識(shí)報(bào)警響應(yīng)地址協(xié)議的結(jié)束。
在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)復(fù)位為狀態(tài)A2。 狀態(tài)C:
'在這個(gè)狀態(tài)里,狀態(tài)機(jī)發(fā)送確認(rèn),并把將要讀出的數(shù)據(jù)載入移 位寄存器。
'在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)D2。
狀態(tài)D2:
,在這個(gè)狀態(tài)里,狀態(tài)機(jī)發(fā)送數(shù)據(jù)到數(shù)據(jù)線上。它總共發(fā)送8位。 -在8個(gè)時(shí)鐘周期之后,如果在第8個(gè)時(shí)鐘周期之后接收到確認(rèn),
則狀態(tài)機(jī)回到狀態(tài)C。
如果在第8個(gè)時(shí)鐘周期之后接收到否定確認(rèn),則狀態(tài)機(jī)復(fù)位為
狀態(tài)A2。
如果狀態(tài)機(jī)檢測到從裝置忙信號,則復(fù)位為狀態(tài)A2。 狀態(tài)J:
在這個(gè)狀態(tài)里,狀態(tài)機(jī)發(fā)送確認(rèn)并用裝置ID字節(jié)來加載移位 寄存器。
.在下一個(gè)SCL時(shí)鐘上,狀態(tài)機(jī)進(jìn)入狀態(tài)D3。 狀態(tài)D3:
,在這個(gè)狀態(tài)里,狀態(tài)機(jī)發(fā)送數(shù)據(jù)到數(shù)據(jù)線上。它總共發(fā)送8位。 *在8個(gè)時(shí)鐘周期之后,如果在第8個(gè)時(shí)鐘周期之后接收到確認(rèn),
則狀態(tài)機(jī)回到狀態(tài)J。
如果在第8個(gè)時(shí)鐘周期之后接收到否定確認(rèn),則狀態(tài)機(jī)復(fù)位為
狀態(tài)A2。
如果狀態(tài)機(jī)檢測到從裝置忙信號,則復(fù)位為狀態(tài)A2。 圖4到7示出了后臺(tái)狀態(tài)機(jī)170的狀態(tài)圖,狀態(tài)機(jī)170被指定為 DIA—ARA一SM。在圖4中,連接器410被示出為圖形注解,表示圖4 的圖與圖5中所示出的連接器410之間的連接。在圖4中,連接器420 被示出為圖形注解,表示圖4的圖與圖6中所示出的連接器420之間 的連接。在圖5中,在圖5的左下角和右上角處,連接器430被示出 為圖形注解,表示圖5中所示出的流程圖的左下角和右上角之間的連 接。在圖6中,在圖6的左下角和右上角處,連接器440被示出為圖 形注解,表示圖6中所示出的流程圖的左下角和右上角之間的連接。 在圖6中,連接器450被示出為圖形注解,表示圖6的圖與圖7中所
示出的連接器450之間的連接。在圖7中,在圖7的左下角和右上角 處,連接器460被示出為圖形注解,表示圖7中所示出的流程圖的左
下角和右上角之間的連接。下面是這些狀態(tài)的描述 狀態(tài)IDLE—DIA—ARA:
狀態(tài)機(jī)根據(jù)"復(fù)位"條件或"停止"條件(二者為有效"低") 異步地進(jìn)入此狀態(tài)。
*如果狀態(tài)機(jī)檢測到I2CSM-W處于狀態(tài)H,則進(jìn)入狀態(tài) RCV一DIA—SA。
.否則,如果狀態(tài)機(jī)檢測到I2CSM-R處于狀態(tài)I,則進(jìn)入狀態(tài) SND—SA6。
否則狀態(tài)機(jī)停留在狀態(tài)IDLE_DIA—ARA。 狀態(tài)RCV—DIA_SA:
狀態(tài)機(jī)停留在這個(gè)狀態(tài),直到檢測到I2CSM-W處于狀態(tài)Fl、 F2或F3 。
'否則,當(dāng)狀態(tài)機(jī)檢測到I2CSM-W處于狀態(tài)E時(shí),則進(jìn)入狀態(tài) ACK—DIA—SA。
否則狀態(tài)機(jī)回到IDLE—DIA_ARA。 狀態(tài)ACK—DIA—SA:
'在這個(gè)狀態(tài)里,如果I2CSM-W處于Gl,則狀態(tài)機(jī)進(jìn)入狀態(tài) REP—S。
-否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA—ARA。 狀態(tài)REP一S:
'在這個(gè)狀態(tài)里,如果I2CSM-W處于Bl,則狀態(tài)機(jī)進(jìn)入狀態(tài) RCV—DIA一R。
-否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA—ARA。 狀態(tài)RCV—DIA—R:
只要I2CSM-W處于狀態(tài)B1,狀態(tài)機(jī)就停留在這個(gè)當(dāng)前狀態(tài)。 *否則,如果I2CSM-R處于狀態(tài)J,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài) PRE—SND—BYTE 1。
*否則,狀態(tài)機(jī)回到狀態(tài)IDLE—DIA—ARA。
狀態(tài)PRE—SND—BYTE1:
*在這個(gè)狀態(tài)里,產(chǎn)生控制信號,以把將要被發(fā)送的DEVICE ID BYTE1載入到I2C總線上。
'在這個(gè)狀態(tài)里,如果I2CSM-R處于狀態(tài)D3,則狀態(tài)機(jī)進(jìn)入狀 態(tài)SND一BYTE1。
*否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA一ARA。
狀態(tài)SND—BYTEh
只要I2CSM-R處于狀態(tài)D3,狀態(tài)機(jī)就停留在這個(gè)當(dāng)前狀態(tài)。
否則,如果I2CSM-R處于狀態(tài)J,則狀態(tài)機(jī)進(jìn)入狀態(tài) PRE—SND—BYTE2。
*否則,狀態(tài)機(jī)回到狀態(tài)IDLE—DIA—ARA。 狀態(tài)PRE—SND—BYTE2:
*在這個(gè)狀態(tài)里,產(chǎn)生控制信號,以把將要被發(fā)送的DEVICE ID BYTE2載入到I2C總線上。
-在這個(gè)狀態(tài)里,如果12CSM-R處于狀態(tài)D3,則狀態(tài)機(jī)進(jìn)入狀 態(tài)SND—BYTE2。
'否則,狀態(tài)機(jī)回到狀態(tài)IDLE—DIA—ARA。 狀態(tài)SND—BYTE2:
只要I2CSM-R處于狀態(tài)D3,狀態(tài)機(jī)就停留在這個(gè)當(dāng)前狀態(tài)。
否則,如果I2CSM-R處于狀態(tài)J,則狀態(tài)機(jī)進(jìn)入狀態(tài) PRE—SND一BYTE3 。
-否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA一ARA。 狀態(tài)PRE—SND—BYTE3:
'在這個(gè)狀態(tài)里,產(chǎn)生控制信號,以把將要被發(fā)送的DEVICE ID BYTE3載入到I2C總線上。
.在這個(gè)狀態(tài)里,如果12CSM-R處于狀態(tài)D3,則狀態(tài)機(jī)進(jìn)入狀 態(tài)SND一B YTE3 。
*否則,狀態(tài)機(jī)回到狀態(tài)IDLE—DIA—ARA。 狀態(tài)SND—BYTE3:
只要I2CSM-R處于狀態(tài)D3,狀態(tài)機(jī)就停留在這個(gè)當(dāng)前狀態(tài)。
否則,如果I2CSM-R處于狀態(tài)J,則狀態(tài)機(jī)進(jìn)入狀態(tài) PRE—SND—BYTE 1。
'否則,狀態(tài)機(jī)回到狀態(tài)IDLE—DIA—ARA。 狀態(tài)SND—SA6:
這個(gè)狀態(tài)被用來檢測從裝置地址的第6位是否被成功地發(fā)送到 I2C總線上。
如果I2CSM-R處于狀態(tài)D1,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài)SND—SA5。 *否則,狀態(tài)機(jī)回到狀態(tài)IDLE—DIA一ARA。 狀態(tài)SND—SA5:
這個(gè)狀態(tài)被用來檢測從裝置地址的第5位是否被成功地發(fā)送到 12C總線上。
如果I2CSM-R處于狀態(tài)D4,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài)SND—SA4。 '否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA—ARA。 狀態(tài)SND—SA4:
這個(gè)狀態(tài)被用來檢測從裝置地址的第4位是否被成功地發(fā)送到 I2C總線上。
如果I2CSM-R處于狀態(tài)D4,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài)SND—SA3。 '否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA—ARA。 狀態(tài)SND一SA3:
這個(gè)狀態(tài)被用來檢測從裝置地址的第3位是否被成功地發(fā)送到 I2C總線上。
如果I2CSM-R處于狀態(tài)D4,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài)SND—SA2。
否則,狀態(tài)機(jī)回到狀態(tài)IDLE—DIA—ARA 。 狀態(tài)SND—SA2:
這個(gè)狀態(tài)被用來檢測從裝置地址的第2位是否被成功地發(fā)送到 I2C總線上。
*如果I2CSM-R處于狀態(tài)D4,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài)SND—SA1 。 '否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA一ARA。 狀態(tài)SND—SA1:
這個(gè)狀態(tài)被用來檢測從裝置地址的第1位是否被成功地發(fā)送到
I2C總線上。
如果I2CSM-R處于狀態(tài)D4,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài)SND—SA0。 *否則,狀態(tài)機(jī)回到狀態(tài)IDLE—DL^ARA。 狀態(tài)SND一SA0:
這個(gè)狀態(tài)被用來檢測從裝置地址的第0位是否被成功地發(fā)送到 I2C總線上。
如果I2CSM-R處于狀態(tài)D4,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài) SND一R豐。
*否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA一ARA。 狀態(tài)SND—RWN:
這個(gè)狀態(tài)被用來檢測從裝置地址的R/W射立是否被成功地發(fā)送 到I2C總線上。
如果I2CSM-R處于狀態(tài)D4 ,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài) RCV一NACK。
*否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA—ARA。 狀態(tài)RCV一NACK:
如果I2CSM-R處于狀態(tài)K,則這個(gè)狀態(tài)機(jī)進(jìn)入狀態(tài) REL—INT一N。
*否則,狀態(tài)機(jī)回到狀態(tài)IDLE一DIA一ARA。 狀態(tài)REL—INT—N: 狀態(tài)機(jī)回到狀態(tài)IDLE一DIA一ARA。
圖8是根據(jù)本發(fā)明的另一個(gè)實(shí)施例的用于使用狀態(tài)機(jī)在I2C總線 上實(shí)現(xiàn)增強(qiáng)的從/主接口的方法800的流程圖。方法800包括在12C從 裝置的前臺(tái)運(yùn)行810第一狀態(tài)機(jī),以及在后臺(tái)運(yùn)行820第二狀態(tài)機(jī)。 將從裝置的操作控制從第一狀態(tài)機(jī)轉(zhuǎn)移830到第二狀態(tài)機(jī),以實(shí)現(xiàn)該 從裝置的特征。執(zhí)行該特征,例如,增強(qiáng)的操作840,并且,隨后將 操作控制轉(zhuǎn)移回850第一狀態(tài)機(jī)。參照圖8,術(shù)語第一狀態(tài)機(jī)可以包 括圖1到3中示出的第一和第二狀態(tài)機(jī)的單獨(dú)實(shí)施例。
在共同擁有的未決美國專利申請?zhí)?0/676,164和60/676,104 [代 理文獻(xiàn)號PH000772US1 and P11000771US1]中進(jìn)一步描述了增強(qiáng)的
特征,例如ALL CALL和Device ID,在此通過引用將其并入。
硬件、固件、軟件或它們的組合可以被用來執(zhí)行如此所述的各種 實(shí)施例,以增強(qiáng)使用狀態(tài)機(jī)的I2C總線上的從/主接口。如所述,連同 本發(fā)明一起使用的主裝置的功能可以駐留在I2C主裝置中,或者,替 代地,可以駐留在附于串行數(shù)據(jù)通信系統(tǒng)100的獨(dú)立計(jì)算機(jī)或網(wǎng)絡(luò)計(jì) 算機(jī)上。圖1中所示出的串行數(shù)據(jù)通信系統(tǒng)100是一個(gè)實(shí)例結(jié)構(gòu),其 可與這種通信系統(tǒng)、計(jì)算機(jī)或者計(jì)算機(jī)實(shí)現(xiàn)的其它裝置一起使用來執(zhí) 行本發(fā)明的操作。
圖1中所示出的實(shí)例主裝置130適合于根據(jù)本發(fā)明來控制I2C總 線上的I2C通信,典型地,主裝置130包括中央處理機(jī)(CPU),該 CPU與隨機(jī)存取存儲(chǔ)器(RAM)和/或一些變化的只讀存儲(chǔ)器(ROM) 耦合在一起。希望,該ROM可以是存儲(chǔ)程序的其它類型的存儲(chǔ)介質(zhì), 例如,可編程序只讀存儲(chǔ)器(PROM)、可擦除可編程只讀存儲(chǔ)器 (EPROM)等。該處理器可以通過輸入/輸出(I/O)電路和/或其它總
線與其它的內(nèi)部和外部組件進(jìn)行通信,以提供控制信號和通信信號等。 主裝置130也可以包括一個(gè)或多個(gè)數(shù)據(jù)存儲(chǔ)裝置,所述數(shù)據(jù)存儲(chǔ) 裝置包括硬盤和軟盤驅(qū)動(dòng)、CD-ROM驅(qū)動(dòng)及其它能夠讀取和/或存儲(chǔ) 信息的硬件,例如DVD等。在一個(gè)實(shí)施例中,用于使用狀態(tài)機(jī)在I2C 總線上增強(qiáng)從/主接口的軟件可以被存儲(chǔ)并分布于CD-ROM、磁盤或 能夠便攜地存儲(chǔ)信息的其它形式的介質(zhì)上。這些存儲(chǔ)介質(zhì)可能被插入 例如光盤驅(qū)動(dòng)和磁盤驅(qū)動(dòng)等的裝置,并由其讀取。該軟件也可以經(jīng)由 數(shù)據(jù)信號而被傳輸至計(jì)算設(shè)備,例如,經(jīng)由網(wǎng)絡(luò)(如互聯(lián)網(wǎng))而被電 子地下載。此外,如前所述,用于執(zhí)行與本發(fā)明相關(guān)聯(lián)的功能的軟件 可以替代地被保存在計(jì)算裝置的內(nèi)部存儲(chǔ)器(internal memory) /內(nèi)部 貯存器(internal storage)中,例如ROM。
得到的任何具有計(jì)算機(jī)可讀程序代碼的程序可以被包含在一個(gè) 或多個(gè)計(jì)算機(jī)可用介質(zhì)內(nèi)部,例如,在存儲(chǔ)裝置或者發(fā)送裝置內(nèi)部, 從而根據(jù)本發(fā)明制造計(jì)算機(jī)程序產(chǎn)品或制品。同樣地,術(shù)語"計(jì)算機(jī)可 讀介質(zhì)"、"制品"、"計(jì)算機(jī)程序產(chǎn)品"或這里所使用的其它相似的措辭 都被用來包括計(jì)算機(jī)程序,該計(jì)算機(jī)程序永久地、暫時(shí)地或瞬時(shí)地存
在于任何計(jì)算機(jī)可用介質(zhì)上,例如,在任何存儲(chǔ)裝置上或者在任何發(fā) 送裝置里。
除非特別聲明,否則本說明書(包括任何權(quán)利要求、摘要和附圖) 里所公開的各個(gè)特征都可由具有同樣的、等價(jià)的或者相似的目的的替 代特征所替換。因此,除非特別聲明,否則所公開的各個(gè)特征只是特 殊的一系列等價(jià)的或相似的特征的示例。
上述具體的實(shí)施例不應(yīng)視作對本發(fā)明的限制。各種修改、等價(jià)過 程及本發(fā)明可能適用的眾多結(jié)構(gòu)都落入本發(fā)明的范圍之內(nèi)。舉例來說, 可以使用相似構(gòu)造的單向或者雙向接口來實(shí)現(xiàn)根據(jù)本發(fā)明的使用狀態(tài) 機(jī)在I2C總線上增強(qiáng)的從/主接口的實(shí)施例,以用于公共總線(例如
SMBus或其它的總線設(shè)備)上多個(gè)裝置間的通信。這樣的變更可以被
視為所請求的發(fā)明的一部分,如在權(quán)利要求中清楚闡明的。
權(quán)利要求
1.一種數(shù)據(jù)通信系統(tǒng)(100),包括I2C串行數(shù)據(jù)傳送總線(125),用于實(shí)現(xiàn)通信協(xié)議,包括時(shí)鐘線(120),提供具有周期重復(fù)的上升沿和下降沿的時(shí)鐘信號(134);以及串行數(shù)據(jù)線(110);以及從裝置,包括響應(yīng)于時(shí)鐘信號的上升沿的第一和第二狀態(tài)機(jī)(150、160);以及響應(yīng)于時(shí)鐘信號的下降沿的第三狀態(tài)機(jī)(170),第三狀態(tài)機(jī)(170)與第一和第二狀態(tài)機(jī)不同地操作;其中,第一狀態(tài)機(jī)和第二狀態(tài)機(jī)中的一個(gè)遵循通信協(xié)議的寫入狀態(tài),而第一狀態(tài)機(jī)和第二狀態(tài)機(jī)中的另一個(gè)遵循通信協(xié)議的讀取狀態(tài)。
2. 如權(quán)利要求1所述的數(shù)據(jù)通信系統(tǒng),其中,第一和第二狀態(tài) 機(jī)在I2C停止條件或I2C復(fù)位或開始條件下異步地復(fù)位。
3. 如權(quán)利要求1所述的數(shù)據(jù)通信系統(tǒng),其中,在預(yù)定的條件下, 第一和第二狀態(tài)機(jī)把從裝置的操作控制轉(zhuǎn)移到第三狀態(tài)機(jī)。
4. 如權(quán)利要求1所述的數(shù)據(jù)通信系統(tǒng),其中,第一和第二狀態(tài) 機(jī)運(yùn)行在前臺(tái),掌控從裝置的操作控制,直到把從裝置的操作控制轉(zhuǎn) 移到第三狀態(tài)機(jī)。
全文摘要
根據(jù)一個(gè)實(shí)施例,使用具有被用于實(shí)現(xiàn)通信協(xié)議的串行數(shù)據(jù)線和時(shí)鐘線的串行數(shù)據(jù)傳送總線(125)的通信系統(tǒng)包括使用狀態(tài)機(jī)在I2C總線上的增強(qiáng)的從/主接口。該通信系統(tǒng)包括響應(yīng)于時(shí)鐘信號(134)的上升沿的第一和第二狀態(tài)機(jī)(150、160)和響應(yīng)于時(shí)鐘信號的下降沿的第三狀態(tài)機(jī),第三狀態(tài)機(jī)與第一和第二狀態(tài)機(jī)不同地操作。第一狀態(tài)機(jī)和第二狀態(tài)機(jī)中的一個(gè)遵循通信協(xié)議的寫入狀態(tài),而第一狀態(tài)機(jī)和第二狀態(tài)機(jī)中的另一個(gè)(170)遵循通信協(xié)議的讀取狀態(tài)。
文檔編號G06F13/38GK101208676SQ200680023204
公開日2008年6月25日 申請日期2006年5月1日 優(yōu)先權(quán)日2005年4月29日
發(fā)明者阿姆里塔·德什潘德 申請人:皇家飛利浦電子股份有限公司