專利名稱::擴展內(nèi)部集成電路總線的方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及電子系統(tǒng)應用設(shè)計
技術(shù)領(lǐng)域:
,尤其涉及一種擴展內(nèi)部集成電路(Inter-IntegratedCircuit,I2C)總線的方法及裝置。技術(shù)背景總線(Bus)指通過分時復用的方式,將信息從一個或多個源部件傳送到一個或多個目的部件的一組傳輸線。按照傳輸數(shù)據(jù)的方式劃分,可以分為串行總線和并行總線。串行總線中,二進制數(shù)據(jù)逐位通過一根數(shù)據(jù)線發(fā)送到目的器件;并行總線的數(shù)據(jù)線通常超過2根。I2C總線是由Philips開發(fā)的一種簡單的雙向兩線串行總線,用來實現(xiàn)有效的微型電子器件或部件之間的控制。每個連接到I2C總線的器件都可通過硬件設(shè)定的唯一地址和一直存在的簡單的主機/從器件關(guān)系軟件設(shè)定地址。連接到I2C總線的器件中,初始化發(fā)送、產(chǎn)生時鐘信號和終止發(fā)送的器件為主機;被主機尋址的器件為從器件。由于發(fā)送數(shù)據(jù)到總線的器件為發(fā)送器,從總線接收數(shù)據(jù)的器件為接收器,因此,主機既可以作為主機發(fā)送器也可以作為主機接收器。I2C總線包括串行數(shù)據(jù)線SDA和串行時鐘線SCL。I2C總線傳輸數(shù)據(jù)的示意圖如圖1所示。主機在起始位或起始條件S后發(fā)送了一個從器件地址,這個地址共有7位。緊接著的第8位是數(shù)據(jù)方向位R/W,O表示發(fā)送即寫數(shù)據(jù),1表示請求即讀數(shù)據(jù)。被尋址的從器件接收到這個命令后,回復給主機一個確認響應(ACK)。如果當前數(shù)據(jù)傳輸周期是發(fā)送,則主機在接收到確認ACK后把數(shù)據(jù)以字節(jié)(8bit數(shù)據(jù))為單位串行的送上數(shù)據(jù)總線;如果當前數(shù)據(jù)傳輸周期是請求數(shù)據(jù),則從器件在發(fā)送確認ACK后把數(shù)據(jù)以字節(jié)(8bit數(shù)據(jù))為單位串行的送上總線;接收器在接收到數(shù)據(jù)后,必須給出確認ACK;發(fā)送器在收到ACK確認后可以繼續(xù)發(fā)送下一組數(shù)據(jù)。數(shù)據(jù)傳輸一般由主機產(chǎn)生的停止位P終止。I2C總線在板級連接的應用中,很多用到I2C總線的電子系統(tǒng)都使用模塊化設(shè)計。如圖2所示,這種電子系統(tǒng)往往由一個母板21和許多設(shè)置有從器件的子板(或子卡)24組成。母板21上提供許多子卡接插件接口26,選配各種子卡24插入母板21的子卡接插件接口26即構(gòu)成了一個完整的電子系統(tǒng)。每個母板的接插件接口26往往支持不同種類型的子卡。因此,在模塊化電子系統(tǒng)啟動時,母板21必須掃描各個接口確認是否有子卡存在,并判斷子卡的具體類型并初始化子卡。從成本和實用方面考慮,電子系統(tǒng)在子卡24上放置一個掉電后數(shù)據(jù)不丟失的存儲芯片,即I2C電可擦可編程只讀存儲器(EEPROM)(例如24c02)25。EEPROM25內(nèi)存儲一組約定的子卡信息。當系統(tǒng)啟動時,母板21上的系統(tǒng)控制器CPU22通過I2C總線23讀取EEPROM25內(nèi)的約定信息,根據(jù)讀取的信息判斷子卡24的存在和類型,而后完成相應的初始化工作。根據(jù)Philips給I2CEEPROM器件分配的地址段1010000~1010111,其中前高四位固定為1010,后三位為用戶配置。這樣一條fc總線最多可連接8個fCEEPROM器件,也就是說,模塊化電子系統(tǒng)的母板21上最多只能掛接8個子卡24,導致電子系統(tǒng)的擴展受限。一條I2C總線及其連接的8個從器件統(tǒng)稱為板級I2C器件。板級I2C器件設(shè)置于母板上?,F(xiàn)有技術(shù)中,為了解決這個問題,采用I2C多路復用器(multiplexer)或fc擴展器件對fc總線進行擴展。其中,多路復用器通過使不同的輸入信號線可以連通到一個輸出信號線的器件實現(xiàn)對I2C總線的擴展。如申請?zhí)枮?00710145378.0的中國申請"用可編程器件實現(xiàn)訪問多個I2C從器件的方法及裝置",使用I2CmultiplexerPCA954X進行12(2總線擴展。如圖3、圖4所示,PCA9548將一個上行通道(Upstream)SCL/SDA通道擴展為多個下行(Downstream)的I2C(SCx/SDx,x=0,1,2…7)通道,利用命令選擇下行通道SCx/SDx中的一個與上行通道直接連通,同時保證上行通道與其他下行通道斷開。PCA9548有8個下行通道,而每個^C下行通道可以掛接8個EEPROM器件,因此,PCA9548通過下行通道SCx/SDx可以同時掛接64個EEPROM器件。利用產(chǎn)C命令選擇,上行通道可以分別訪問64個EEPROM器件,大大擴展了I2C總線,保證了I2C總線在模塊化電子系統(tǒng)應用中得以滿足。雖然采用I2Cmultiplexer對I2C總線擴展可以滿足模塊化系統(tǒng)的應用要求,但是fCmultiplexer價格昂貴,不適合對成本控制嚴格的環(huán)境。并且,這種擴展方法把總線的兩位信號都通過擴展芯片切換,造成印刷電路板(PCB)走線較多,占用PCB面積。專利號為200410009102.0的專利《在通信設(shè)備中操作多個I2C從器件的裝置及其方法》采用邏輯器件代替I力multiplexer擴展I2C總線。邏輯器件包括一時鐘寄存器與多個數(shù)據(jù)寄存器。時鐘寄存器的輸出端連接至時鐘線管腳。每個數(shù)據(jù)寄存器的輸出端與數(shù)據(jù)線管腳之間均設(shè)置一電子開關(guān),其輸出端連接至數(shù)據(jù)線管腳,分別與多個從器件的I2C接口的串行數(shù)據(jù)線對應,并通過一輸入輸出寄存器控制該電子開關(guān)的閉合和斷開。每個從器件的fc接口的串行時鐘線均與邏輯器件的同一個時鐘線管腳連接;每個從器件的I2C接口的串行數(shù)據(jù)線均與邏輯器件的對應的不同的數(shù)據(jù)線管腳連接??刂破魍ㄟ^訪問邏輯器件內(nèi)部對應的寄存器來實現(xiàn)對一個或多個I2C從器件的操作。采用邏輯器件擴展I2C總線的缺陷在于由于從器件的I2C接口的串行時鐘線都與邏輯器件的同一個時鐘線管腳連接,而每個器件的引腳都有一定的電容性阻抗(一般在10pF左右),當從器件較多時(超過8個),一方面時鐘信號線的電容性負載將增大到較大的值,由于容性負載有阻止電平跳變的作用,這將阻止電平發(fā)送快速跳變,當信號電平從0到1跳變時,這個跳變沿(上升沿)將變成很緩慢;另一方面器件增多,當信號電平跳變時,多個從器件會同時對跳變信號發(fā)生多重反射,把原本已經(jīng)緩慢上升的信號又拉回較低的電平。這兩個方面的作用導致信號上升沿上產(chǎn)生回溝5,如圖5A、圖5B所示。這個信號失真(Distortion)有可能使接收器數(shù)據(jù)采樣出錯,這是由于時鐘沿上有回溝,接收器可能誤判為兩個時鐘上升沿,而從器件采樣數(shù)據(jù)是在時鐘的上升沿采樣數(shù)據(jù),因此從器件會重復采樣數(shù)據(jù),導致I2C通信錯誤,造成不可預知后果。
發(fā)明內(nèi)容本發(fā)明的目的在于提出一種擴展內(nèi)部集成電路總線的方法及裝置,以降低I2C總線擴展的成本。為實現(xiàn)上述目的,本發(fā)明提供了一種擴展內(nèi)部集成電路總線的方法,包括通過選通復用器將內(nèi)部集成電路I2C總線的串行時鐘線擴展為多個串行時鐘線;將所述多個串行時鐘線連接到各從器件;將所述I2C總線的串行數(shù)據(jù)線直接與所述各從器件連接。本發(fā)明還提供了一種擴展內(nèi)部集成電路總線的裝置,包括選通復用器,所述選通復用器通過PIO線及I2C總線的串行時鐘線與控制器連接;所述選通復用器通過擴展的串行時鐘線與各從器件連接;所述控制器通過所述I2C總線的串行數(shù)據(jù)線直接與所述各從器件連接。上述方案通過簡單的邏輯器件選通復用器實現(xiàn)I2C總線在模塊化設(shè)計系統(tǒng)中的擴展,避免了昂貴的可編程12(:擴展器件的使用,大大降低了I2C總線擴展成本以及模塊化設(shè)計系統(tǒng)的成本,適合于對成本控制嚴格的環(huán)境。下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。圖1為I2C總線傳輸凝:據(jù)的示意圖2為I2C總線在板級連接的應用示意圖;圖3為PCA9548原理框圖;圖4為PCA9548應用原理示意圖;圖5A為正常的上升沿信號示意圖;圖5B為失真的上升沿信號示意圖;圖6為本發(fā)明擴展內(nèi)部集成電路總線的方法實施例的流程圖;圖7為本發(fā)明擴展內(nèi)部集成電路總線的裝置實施例一的結(jié)構(gòu)示意圖;圖8為本發(fā)明擴展內(nèi)部集成電路總線的裝置實施例二的結(jié)構(gòu)示意圖;圖9為本發(fā)明擴展內(nèi)部集成電路總線的裝置實施例二中SN74CBTD3126的原理框圖;圖IO為本發(fā)明擴展內(nèi)部集成電路總線的裝置實施例二中SN74CBTD3126的連接示意圖;圖11為本發(fā)明擴展內(nèi)部集成電路總線的裝置實施例二中74FST3251的原理框圖;圖12為本發(fā)明擴展內(nèi)部集成電路總線的裝置實施例二中74FST3251的連接示意圖。具體實施方式圖6為本發(fā)明擴展內(nèi)部集成電路總線的方法實施例的流程圖,包括步驟61、通過選通復用器將I2C總線的串行時鐘線(SCL)擴展為多個串行時鐘線;一個選通復用器可將一個I2C總線的串行時鐘線擴展為多個12(:總線的串行時鐘線;當有多個12(:總線時,可使用與12(:總線相同數(shù)量的選通復用器,——對應,擴展各I2C總線的SCL。選通復用器可由控制器的可編程輸入/輸出(PIO)接口信號控制擴展前后SCL的選通,詳見裝置實施例二中的說明。步驟62、將所述多個串行時鐘線連接到各從器件;其中,各從器件為待連接到i2c總線的器件。步驟63、將所述12(:總線的串行數(shù)據(jù)線直接與所述各從器件連接,完成i2c總線的擴展。當待連接到12C總線的器件較多時,選通復用器擴展之前,可通過總線開關(guān)擴展,對擴展得到的一條i2c總線再通過選通復用器進行擴展,對擴展得到的另一條i2c總線連接板級i2c器件。這樣就實現(xiàn)了i2c總線的進一步擴展。并且,總線開關(guān)的切換使得電子系統(tǒng)在選通一條擴展得到的i2c總線同時,斷開另一條擴展得到的12(]總線,大大減少了連接的器件數(shù)量,避免了器件數(shù)量過多帶來的信號失真問題,提高了具有較多從器件的電子系統(tǒng)中12(:總線工作的可靠性。總線開關(guān)的切換可由控制器輸出的pio信號進行控制,詳見裝置實施例二的說明。上述方法實施例通過將使用選通復用器擴展i2c總線,大大降低了擴展成本。圖7為本發(fā)明擴展內(nèi)部集成電路總線的裝置實施例一的結(jié)構(gòu)示意圖。擴展i2c總線的裝置78包括選通復用器76,選通復用器76通過pio線72及i2c總線73的串行時鐘線74與控制器71連接;控制器71通過pio線72向選通復用器76發(fā)送pi0信號,控制選通復用器76從擴展的串行時鐘線77中選擇一條,與擴展前的串行時鐘線74連通。選通復用器76通過擴展的串行時鐘線77與各從器件即子卡79連接;控制器71通過i2c總線73的串行數(shù)據(jù)線75直接與各子卡79連接。其中,控制器71即芯片級的計算機,通過將計算機的cpu、ram、r0m、定時數(shù)器和多種1/0接口集成在一片芯片上形成,為不同的應用場合做不同組合控制。pio—般指控制器上的可編程i/0接口,可用于外圍器件的控制或狀態(tài)監(jiān)控。擴展i2c總線的裝置還可包括總線開關(guān),對控制器引出的i2c總線進行第一級擴展,將擴展得到的i2c總線的串行時鐘線通過選通復用器進行擴展,實現(xiàn)i2c總線的第二級擴展圖8為本發(fā)明擴展內(nèi)部集成電路總線的裝置實施例二的結(jié)構(gòu)示意圖。本實施例擴展I2C總線的裝置與裝置實施例一的不同之處在于還包括總線開關(guān)808及板級I2C器件810。總線開關(guān)808對I2C總線805進行第一級擴展,將I2C總線805擴展為第一I2C總線806和第二I2C總線807;選通復用器809對第一I2C總線806進行擴展,擴展方式同裝置實施例一。板級I2C器件810為現(xiàn)有的板級I2C器件,即一條I力總線連接8個從器件,可與控制器801設(shè)置在同一塊電路板上,換句話說,板級lt器件810設(shè)置于電子系統(tǒng)的母板上。板級I2C器件810與選通復用器809共同實現(xiàn)了對I2C總線805的第二次擴展,保證了擴展I2C總線的裝置在子卡811較多的情況下,仍能滿足電子系統(tǒng)對It總線的需求。本實施例中,總線開關(guān)808可為SN74CBTD3126,選通復用器809可為74FST3251。如圖9所示,當OEn(n=l,2,3,4,下同)為邏輯電平T,且OEn驅(qū)動的開關(guān)打通,數(shù)據(jù)線nA和nB導通相連,nA的信息直接傳輸?shù)絥B。當使用SN74CBTD3126進行第一級擴展時,如圖10所示。控制器801通過第一組PIO線803連接SN74CBTD3126。第一組PIO線803包括兩個PIO線PIOl和PI02。使用控制器的PIOl和PI024巴I2C總線805切換連接到I2C總線806或I2C總線807。其中,控制器801的PIOl連接到總線開關(guān)(BusSwitch)SN74CBTD3126的OE1和OE2,控制器801的PI02連接到BusSwitchSN74CBTD3126的OE3和OE4。I2C總線805的SCL0連接到SN74CBTD3126的1A和3A輸入端,SDAO連接到SN74CBTD3126的2A和4A輸入端,SN74CBTD3126的輸出端1B、2B、3B、4B分別連接到第一I2C總線806的SCL1、SDA1,第二I2C總線807的SCL2、SDA2。當控制器801的PIOl輸出為邏輯電平"1",PI02輸出為邏輯電平"0"時,即當BusSwitchSN74CBTD3126的0E1和OE2的輸入為邏輯電平"1",OE3和OE4的輸入為邏輯電平"0"時,SN74CBTD3126的內(nèi)部開關(guān)1A-1B、2A-2B導通。即,從控制器801到BusSwitchSN74CBTD3126的TC總線805(SCL0/SDA0)直接連通到第一I2C總線806(SCL1/SDA1),而第二TC總線807(SCL2/SDA2)則處于不連通的狀態(tài);當控制器801的PI01輸出為邏輯電平"0",PI02輸出為邏輯電平"1"時,即當BusSwitchSN74CBTD3126的0E1和0E2的輸入為邏輯電平"0",0E3和0E4的輸入為邏輯電平T時,BusSwitchSN74CBTD3126的內(nèi)部開關(guān)3A-3B、4A-4B導通,即從控制器801到BusSwitchSN74CBTD3126的I2C總線805(SCL0/S副)直接連通到第二I2C總線807(SCL2/SDA2),而第一I2C總線806(SCL1/SDA1)則處于不連通的狀態(tài)。為了保證擴展得到的I2C總線在不連通時處于穩(wěn)定狀態(tài),可用上拉電阻把SCL1/SDA1和SCL2/SDA2置于穩(wěn)定的邏輯電平"1"狀態(tài),以避免出現(xiàn)不穩(wěn)定狀態(tài)。如圖11所示,選通復選器74FST3251由信號線S0、Sl、S2控制A端連通到Bn(n-O,1,2...7,下同)端。信號線S0、Sl、S2邏輯電平的取值控制的A到Bn的連通關(guān)系如表1所示。表1A與Bn的導通關(guān)系表<table>tableseeoriginaldocumentpage10</column></row><table>OE信號全局控制信號A到信號Bn的導通。當OE為邏輯電平"0"時,信號A依據(jù)S0、Sl、S2的邏輯電平值的組合關(guān)系導通到Bn;當0E為邏輯電平"1",信號線A與Bn都不連通。當通過74FST3251對I2C總線805進行第二級擴展時,如圖12所示??刂破?01的第二組PIO線804連接到74FST3251的S0、Sl、S2。第二組PIO線804包括三個PIO線PI03、PI04及PI05。PI03連接到SO,PI04連接到Sl,PI05連接到S2。第一I2C總線806的SCL2信號線連接到74FST3251的輸入端A,74FST3251的輸出端Bl~B8分別連接到擴展后的I2C總線821~I2C總線828的SCL3~SCL11。另外,74FST3251的0E輸入引腳直接連接到邏輯地,即OE的輸入為邏輯電平"0",保證74FST3251始終可以正常工作??刂破?01輸出的信號PI03、PI04、PI05作為74FST3251的輸入信號S0、Sl、S2,即,PI03、PI04、PI05輸出的組合邏輯作為S0、Sl、S2的輸入組合邏輯,控制74FST3251的輸入A切換連通到輸出端Bn,從而控制I2C總線805的SCL1連通到TC總線821~I2C總線828的SCL(SCL3~SCL11)。連通控制關(guān)系如表2所示。表2SCL1與SCL3~SCL11連通信息輸入端信號功《匕fi匕<table>tableseeoriginaldocumentpage11</column></row><table>類似地,為了保證擴展到的rc總線821I2C總線828在不連通時處于穩(wěn)定狀態(tài),可用上拉電阻把SCL3-SCL11置于穩(wěn)定的邏輯電平"1"狀態(tài),避免出現(xiàn)不穩(wěn)定狀態(tài)。當控制器801訪問母板上的板級I2C器件810時,在第一級擴展時,通過使pioi等于邏輯電平"r、pio2等于邏輯電平"o",把i2c總線805切換到第二I2C總線807。I2C總線805和第一I2C總線806不連接,可依靠上拉電阻使第一I2C總線806處于總線靜止狀態(tài),即,第二I2C總線8Q6上沒有信息傳輸。當控制器801訪問子卡811上的I2C器件時,通過使PIOl等于邏輯電平"0"、PI02等于邏輯電平"1",把I2C總線805切換到第一rc總線806,再通過置PI03、PI04、PI05為確定的邏輯電平值,把第一I2C總線806的SCL切換到對應需要訪問的子卡的I2CSCL,切換控制如表2所示。這樣,被訪問的子卡的I2C總線通過切換機制與TC總線805連通,實現(xiàn)總線連通,從而控制器801訪問子卡。而不被訪問的I2C總線的SCL通過上拉電阻處于高電平,即處于靜止狀態(tài)。當子卡較少時,可以去掉第一級擴展,直接采用第二級擴展。如圖7中,控制器與選通復用器直接相連。當子卡較多時,即需要連接的從器件較多時,通過總線開關(guān)的第一級擴展,能夠在選通12(:總線擴展的一條分支電路的同時,斷開12(:總線805擴展的另一條分支電路,從而大大減少了電連接的器件的數(shù)量,從而降低了It總線的電容性負載,避免了對跳變信號的阻止產(chǎn)生的回溝等信號失真問題,保證了"C總線工作的可靠性。最后應說明的是以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。權(quán)利要求1、一種擴展內(nèi)部集成電路總線的方法,其特征在于,包括通過選通復用器將內(nèi)部集成電路I2C總線的串行時鐘線擴展為多個串行時鐘線;將所述多個串行時鐘線連接到各從器件;將所述I2C總線的串行數(shù)據(jù)線直接與所述各從器件連接。2、根據(jù)權(quán)利要求1所述的擴展內(nèi)部集成電路總線的方法,其特征在于,所述選通復用器在可編程輸入輸出PIO信號控制下切換所述多條串行時鐘線。3、根據(jù)權(quán)利要求1所述的擴展內(nèi)部集成電路總線的方法,其特征在于,還包括所述I2C總線通過總線開關(guān)擴展得到。4、根據(jù)權(quán)利要求3所述的擴展內(nèi)部集成電路總線的方法,其特征在于,所述總線開關(guān)在可編程輸入輸出PIO信號控制下選通所述"C總線。5、一種擴展內(nèi)部集成電路總線的裝置,其特征在于,包括選通復用器,所述選通復用器通過PIO線及I2C總線的串行時鐘線與控制器連接;所述選通復用器通過擴展的串行時鐘線與各從器件連接;所述控制器通過所述I2C總線的串行數(shù)據(jù)線直接與所述各從器件連接。6、根據(jù)權(quán)利要求5所述的擴展內(nèi)部集成電路總線的裝置,其特征在于,所述控制器與選通復用器之間設(shè)置有連接板級I2C器件的總線開關(guān);所述總線開關(guān)與所述控制器之間通過P10線及一條TC總線連接;所述總線開關(guān)與所述選通復用器之間通過擴展得到的一條i2c總線的串行時鐘線連接。全文摘要本發(fā)明涉及一種擴展內(nèi)部集成電路總線的方法及裝置,方法包括通過選通復用器將內(nèi)部集成電路I<sup>2</sup>C總線的串行時鐘線擴展為多個串行時鐘線;將所述多個串行時鐘線連接到各從器件;將所述I<sup>2</sup>C總線的串行數(shù)據(jù)線直接與所述各從器件連接。裝置包括選通復用器,所述選通復用器通過PIO線及I<sup>2</sup>C總線的串行時鐘線與控制器連接;所述選通復用器通過擴展的串行時鐘線與各從器件連接;所述控制器通過所述I<sup>2</sup>C總線的串行數(shù)據(jù)線直接與所述各從器件連接。通過簡單的邏輯器件選通復用器實現(xiàn)I<sup>2</sup>C總線在模塊化設(shè)計系統(tǒng)中的擴展,避免了昂貴的可編程I<sup>2</sup>C擴展器件的使用,大大降低了I<sup>2</sup>C總線擴展成本以及模塊化設(shè)計系統(tǒng)的成本,適合于對成本控制嚴格的環(huán)境。文檔編號G06F13/40GK101398801SQ200810224519公開日2009年4月1日申請日期2008年10月17日優(yōu)先權(quán)日2008年10月17日發(fā)明者黃金燦申請人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司