相關(guān)申請的交叉引用
本申請要求于2014年10月29日在美國專利商標(biāo)局提交的臨時(shí)專利申請no.62/072,395以及于2015年10月28日在美國專利商標(biāo)局提交的非臨時(shí)專利申請no.14/925,612的優(yōu)先權(quán)和權(quán)益,其全部內(nèi)容通過援引納入于此。
領(lǐng)域
本公開涉及在共享總線上實(shí)現(xiàn)高效操作,且更具體地涉及促成i2c設(shè)備連同采用三進(jìn)制碼元編碼的設(shè)備在同一共享總線上的共存。
背景技術(shù):
i2c(也稱為i2c)是被用于將低速外圍設(shè)備附連至母板、嵌入式系統(tǒng)、蜂窩電話或其他電子設(shè)備的多主控串行單端總線。i2c總線是包括具有7比特尋址的時(shí)鐘線(scl)和數(shù)據(jù)線(sda)的雙線總線。該總線具有兩個(gè)給設(shè)備的角色:主控方和從動方。主控設(shè)備是生成時(shí)鐘并發(fā)起與從動設(shè)備的通信的設(shè)備。兼容i2c的從動設(shè)備是接收時(shí)鐘并在被主控方尋址時(shí)進(jìn)行響應(yīng)的設(shè)備。i2c總線是多主控總線,這意味著可以有任何數(shù)目的主控設(shè)備在場。另外,主控角色和從動角色可以在消息之間(在stop(停止)被發(fā)送之后)被改變。i2c定義了基本的消息類型,其中每種消息類型始于start(開始)并結(jié)束于stop。
在第二操作模式中,同一雙線總線可在通過在這兩條線上傳送三進(jìn)制編碼的碼元以及將時(shí)鐘嵌入在受保障的碼元到碼元轉(zhuǎn)變中時(shí)被重用于數(shù)據(jù)傳輸。在某些條件下,三進(jìn)制編碼碼元的傳輸可能由i2c設(shè)備錯誤地檢測為i2c碼。
因此,需要準(zhǔn)許i2c設(shè)備和三進(jìn)制碼元編碼設(shè)備在共享總線上共存的解決方案。
概述
以下給出一個(gè)或多個(gè)方面的簡要概述以提供對這些方面的基本理解。此概述不是所有構(gòu)想到的方面的詳盡綜覽,并且既非旨在標(biāo)識出所有方面的關(guān)鍵性或決定性要素亦非試圖界定任何或所有方面的范圍。其唯一的目的是要以簡化形式給出一個(gè)或多個(gè)方面的一些概念以作為稍后給出的更加詳細(xì)的描述之序。
根據(jù)一方面,提供了一種設(shè)備,該設(shè)備包括共享總線(包含第一線和第二線)、耦合至該共享總線的第一設(shè)備子集、和耦合至該共享總線的第二設(shè)備子集。第一設(shè)備子集可被配置成根據(jù)第一協(xié)議模式在共享總線上操作。類似地,第二設(shè)備子集可被配置成根據(jù)第二協(xié)議模式在共享總線上操作,其中第二協(xié)議模式不同于第一協(xié)議模式。第一設(shè)備子集內(nèi)的第一設(shè)備可包括接收機(jī)電路,該接收機(jī)電路被適配成調(diào)整在第二線處于第一邏輯狀態(tài)時(shí)發(fā)生在第一線上的信號轉(zhuǎn)變,使得信號轉(zhuǎn)變改為發(fā)生在第二線處于與第一邏輯狀態(tài)相對的第二邏輯狀態(tài)時(shí)。信號轉(zhuǎn)變可只有當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整。如果第一線上的信號轉(zhuǎn)變在第二線處于第二邏輯狀態(tài)時(shí)自第二線上的第二轉(zhuǎn)變大于閾值時(shí)間量而發(fā)生,則接收機(jī)電路被進(jìn)一步適配成維持在第二線處于第二邏輯狀態(tài)時(shí)第一線上的信號轉(zhuǎn)變。
接收機(jī)電路可包括組合邏輯電路和被適配成在第一線上提供第一信號的第一經(jīng)延遲信號和在第二線上提供第二信號的第二經(jīng)延遲信號的一個(gè)或多個(gè)線延遲。第一信號或第二信號中的至少一者可以是由第二設(shè)備子集中的訪問共享總線的一個(gè)或多個(gè)設(shè)備生成的信號。例如,第一信號或第二信號中的至少一者可以是當(dāng)共享總線正根據(jù)第二協(xié)議模式操作時(shí)生成的信號。
當(dāng)?shù)诙€處于第一邏輯狀態(tài)時(shí)第一線上的信號轉(zhuǎn)變可被解釋為第一協(xié)議模式內(nèi)的開始或停止?fàn)顩r,如果該轉(zhuǎn)變發(fā)生自第二線上的第二轉(zhuǎn)變大于閾值時(shí)間量而發(fā)生的話。
在一個(gè)示例中,在第一協(xié)議模式中,第一線被用于數(shù)據(jù)傳輸且第二線被用于傳送時(shí)鐘信號。在第二協(xié)議模式中,第一線和第二線兩者都被用于編碼在碼元內(nèi)的數(shù)據(jù)傳輸,而時(shí)鐘信號被嵌入在碼元到碼元轉(zhuǎn)變中。
第一設(shè)備子集可在第二協(xié)議模式被用在共享總線上時(shí)在共享總線上進(jìn)行監(jiān)聽。
在一個(gè)示例中,第一設(shè)備子集可包括兼容i2c的設(shè)備。
在另一示例中,第二設(shè)備子集內(nèi)的第二設(shè)備被適配成:(a)將數(shù)據(jù)比特序列轉(zhuǎn)換成多個(gè)(m個(gè))轉(zhuǎn)變數(shù);(b)將每一轉(zhuǎn)變數(shù)轉(zhuǎn)換成來自順序數(shù)集合的順序數(shù);(c)將順序數(shù)轉(zhuǎn)換成原始碼元;和/或(d)經(jīng)由多個(gè)差分驅(qū)動器且散布在第一線和第二線上傳送原始碼元,其中時(shí)鐘信號被有效地嵌入在原始碼元的傳輸中,因?yàn)閺霓D(zhuǎn)變數(shù)至順序數(shù)的轉(zhuǎn)換保證沒有兩個(gè)連貫原始碼元是相同的。
另一方面提供了一種在一設(shè)備中操作的用于促成多??偩€操作同時(shí)抑制無意命令被識別的方法。提供包括第一線和第二線的共享總線。第一設(shè)備子集耦合到共享總線,其中第一設(shè)備子集中的各設(shè)備被配置成根據(jù)第一協(xié)議模式在共享總線上操作。類似地,第二設(shè)備子集耦合到共享總線,其中第二設(shè)備子集中的各設(shè)備被配置成根據(jù)第二協(xié)議模式在共享總線上操作,其中第二協(xié)議模式不同于第一協(xié)議模式。第一設(shè)備子集內(nèi)的第一設(shè)備可被置備有接收機(jī)電路,該接收機(jī)電路被適配成調(diào)整當(dāng)?shù)诙€處于第一邏輯狀態(tài)時(shí)發(fā)生在第一線上的信號轉(zhuǎn)變,使得信號轉(zhuǎn)變改為發(fā)生在第二線處于與第一邏輯狀態(tài)相對的第二邏輯狀態(tài)時(shí),其中信號轉(zhuǎn)變只當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整。
另一示例提供了一種接收機(jī)設(shè)備,包括第一線、第二線、以及組合邏輯電路。第一線延遲可耦合到共享總線的第一線以延遲第一信號。第二線延遲可耦合到共享總線的第二線以延遲第二信號,其中第二線延遲長于第一線延遲。組合邏輯電路可被適配成:(a)接收來自第一線延遲的第一經(jīng)延遲信號和來自第二線延遲的第二經(jīng)延遲信號;和/或(b)調(diào)整當(dāng)?shù)诙€處于第一邏輯狀態(tài)時(shí)在第一線上發(fā)生的信號轉(zhuǎn)變,使得該信號轉(zhuǎn)變改為發(fā)生在第二線處于第二邏輯狀態(tài)時(shí),其中該信號轉(zhuǎn)變只有當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整。
如果信號轉(zhuǎn)變發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)且第二線處于第一邏輯狀態(tài),則組合邏輯電路可被適配成在第一輸出線上提供第一輸出信號,其中信號轉(zhuǎn)變在第二輸出線上的第二輸出信號處于第二邏輯狀態(tài)時(shí)發(fā)生。
如果第一線上的信號轉(zhuǎn)變在第二線處于第二邏輯狀態(tài)時(shí)自第二線上的第二轉(zhuǎn)變大于閾值時(shí)間量而發(fā)生,則組合邏輯電路被進(jìn)一步適配成維持在第二線處于第二邏輯狀態(tài)時(shí)第一線上的信號轉(zhuǎn)變。
提供了一種在接收機(jī)設(shè)備上操作的用于促成多??偩€操作同時(shí)抑制無意命令被識別的方法。第一經(jīng)延遲信號可以從耦合到第一線的第一線延遲接收且第二經(jīng)延遲信號可以從耦合到第二線的第二線延遲接收,其中第二線延遲長于第一線延遲。在第二線處于第一邏輯狀態(tài)時(shí)發(fā)生在第一線上的信號轉(zhuǎn)變被調(diào)整,使得信號轉(zhuǎn)變改為發(fā)生在第二線處于與第一邏輯狀態(tài)相對的第二邏輯狀態(tài)時(shí)。信號轉(zhuǎn)變只有當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整。
在第一協(xié)議模式中,第一線可被用于數(shù)據(jù)傳輸且第二線被用于傳送時(shí)鐘信號,并且在第二協(xié)議模式中,第一線和第二線兩者都被用于編碼在碼元內(nèi)的數(shù)據(jù)傳輸而時(shí)鐘信號被嵌入在碼元到碼元轉(zhuǎn)變中。
附圖
在結(jié)合附圖理解下面闡述的詳細(xì)描述時(shí),各種特征、本質(zhì)、和優(yōu)點(diǎn)會變得明顯,在附圖中,相像的附圖標(biāo)記貫穿始終作相應(yīng)標(biāo)識。
圖1是解說具有多模共享數(shù)據(jù)總線108的設(shè)備102的框圖。
圖2解說了時(shí)鐘可如何在三進(jìn)制模式中被嵌入在碼元到碼元轉(zhuǎn)變內(nèi),由此允許將i2c總線中的兩條線(即,sda線和scl線)用于數(shù)據(jù)傳輸。
圖3是解說用于在發(fā)射機(jī)處將數(shù)據(jù)比特轉(zhuǎn)碼成經(jīng)轉(zhuǎn)碼碼元以將時(shí)鐘信號嵌入在這些經(jīng)轉(zhuǎn)碼碼元內(nèi)的示例性方法的框圖。
圖4解說了轉(zhuǎn)變數(shù)與順序碼元之間的示例性轉(zhuǎn)換。
圖5解說了轉(zhuǎn)變數(shù)與順序碼元之間的轉(zhuǎn)換。
圖6解說了i2c一字節(jié)寫數(shù)據(jù)操作的示例性時(shí)序圖。
圖7解說了其中數(shù)據(jù)比特已被轉(zhuǎn)碼為十二個(gè)碼元以供在sda線和scl線上進(jìn)行傳輸?shù)氖纠匀M(jìn)制傳輸。
圖8是解說用于防止共享總線上的信號被誤讀為有效i2c信號的i2c設(shè)備的接收機(jī)電路的一部分的框圖。
圖9是解說圖8的接收機(jī)電路的一個(gè)示例的框圖。
圖10解說了圖9的組合電路。
圖11解說了用于實(shí)現(xiàn)圖10的組合邏輯電路的示例性verilog代碼。
圖12解說了在scl線為高時(shí)sda線轉(zhuǎn)變以及來自圖8的接收機(jī)電路的對應(yīng)輸出sdai和scli的第一時(shí)序圖。
圖13解說了在scl線為低時(shí)sda線轉(zhuǎn)變以及來自圖8的接收機(jī)電路的對應(yīng)輸出sdai和scli的第二時(shí)序圖。
圖14解說了包括sda線和scl線上的i2c開始(start)和/或停止(stop)狀況的第三時(shí)序圖。
圖15是解說配置成促成共享總線上的多模操作的示例性設(shè)備的框圖。
圖16解說用于促成共享總線上的多模操作的方法。
圖17是解說配置成動態(tài)地調(diào)整某些信號轉(zhuǎn)變以容適共享總線上的多模操作的示例性接收機(jī)的框圖。
圖18解說了在接收機(jī)設(shè)備上操作的示例性方法。
詳細(xì)描述
在以下描述中,給出了具體細(xì)節(jié)以提供對諸實(shí)施例的透徹理解。然而,本領(lǐng)域普通技術(shù)人員將理解,沒有這些具體細(xì)節(jié)也可實(shí)踐這些實(shí)施例。例如,電路可能用框圖示出以免使這些實(shí)施例混淆在不必要的細(xì)節(jié)中。在其他實(shí)例中,公知的電路、結(jié)構(gòu)、和技術(shù)可能不被詳細(xì)示出以免使這些實(shí)施例不明朗。
概覽
根據(jù)一個(gè)方面,共享總線可以在第一模式(例如,i2c模式)和第二模式(例如,三進(jìn)制模式)之間動態(tài)地切換以支持不同類型的設(shè)備。當(dāng)該總線在第二模式中操作時(shí),耦合到共享總線的兼容i2c的設(shè)備監(jiān)聽/接收來自該共享總線的信號。當(dāng)在三進(jìn)制模式中時(shí),大多數(shù)信號被兼容i2c的設(shè)備忽略。然而,由于共享總線的兩條線的同時(shí)翻轉(zhuǎn)以及傳播延遲,存在三進(jìn)制模式中的某些信號可能被兼容i2c的設(shè)備誤解釋為有效i2c信號的可能性。
為防止兼容i2c的設(shè)備錯誤地檢測共享總線上的開始/停止?fàn)顩r,提供包括延遲線和組合邏輯電路的接收機(jī)電路。第一線延遲可用于接收第一線上的第一信號并輸出第一經(jīng)延遲信號。第二線延遲可用于接收第二線上的第二信號并輸出第二經(jīng)延遲信號。組合邏輯電路可被適配成:(a)接收來自第一線延遲的第一經(jīng)延遲信號和來自第二線延遲的第二經(jīng)延遲信號,和/或(b)調(diào)整當(dāng)?shù)诙€為高時(shí)在第一線上發(fā)生的信號轉(zhuǎn)變,使得信號轉(zhuǎn)變改為發(fā)生在第二線為低時(shí),其中信號轉(zhuǎn)變只有當(dāng)它發(fā)生在自第二線上的從高到低或低到高轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整。注意,高和低描述了線的兩個(gè)不同狀態(tài)或電平。
如果信號轉(zhuǎn)變自第二線上的從高到低轉(zhuǎn)變或低到高大于閾值時(shí)間量而發(fā)生,則組合邏輯電路可被進(jìn)一步適配成將第一線上的信號轉(zhuǎn)變維持在與它在第二線上原本發(fā)生的相同狀態(tài)內(nèi)。例如,如果第一線(sda)在相對于第二線(scl)的翻轉(zhuǎn)的閾值時(shí)間量之外翻轉(zhuǎn),則組合電路保留這兩個(gè)信號之間的時(shí)間關(guān)系。即,如果sda線在scl線為低時(shí)翻轉(zhuǎn),則sda線上的所得的翻轉(zhuǎn)將停留在scl線為低時(shí)的相同時(shí)段。并且對稱地,如果sda線在scl線為高時(shí)翻轉(zhuǎn),則sda線的所得的轉(zhuǎn)變將保持在scl線的高時(shí)段內(nèi)。
示例性操作環(huán)境
圖1是解說具有多模共享數(shù)據(jù)總線108的設(shè)備102的框圖。在一個(gè)示例中,共享數(shù)據(jù)總線108可以是i2c總線,其包括兩條線:時(shí)鐘線(scl)和串行數(shù)據(jù)線(sda)。在i2c模式中,時(shí)鐘線scl可被用來發(fā)送被用于同步i2c總線(共享數(shù)據(jù)總線108)上的所有數(shù)據(jù)傳輸?shù)臅r(shí)鐘。數(shù)據(jù)線sda和時(shí)鐘線scl耦合至i2c總線(共享數(shù)據(jù)總線108)上的所有設(shè)備。在這一示例中,數(shù)據(jù)可以經(jīng)由共享數(shù)據(jù)總線108在主控設(shè)備112與多個(gè)i2c從動設(shè)備122和/或124之間交換。
根據(jù)一個(gè)方面,可以在多模共享數(shù)據(jù)總線108上實(shí)現(xiàn)改進(jìn)的操作模式(例如,大于1mhz的共享數(shù)據(jù)總線108傳輸頻率)。i2c總線上的這一經(jīng)改進(jìn)的操作模式可被稱為三進(jìn)制模式。在三進(jìn)制模式中,scl線和sda線兩者均可用于傳送數(shù)據(jù),而時(shí)鐘被嵌入在這兩條線上的碼元到碼元轉(zhuǎn)變內(nèi)。在這一示例中,主控設(shè)備112和從動設(shè)備114和/或118可根據(jù)三進(jìn)制模式在共享數(shù)據(jù)總線108上操作,而不影響其它從動設(shè)備122和/或124的正確操作。根據(jù)一個(gè)方面,共享數(shù)據(jù)總線108上的這種改進(jìn)模式可在無需三進(jìn)制設(shè)備與i2c從動設(shè)備之間有任何橋接設(shè)備的情況下來實(shí)現(xiàn)。
提供了準(zhǔn)許兼容i2c的設(shè)備114和118以及兼容三進(jìn)制的設(shè)備122和124并發(fā)地耦合至共享數(shù)據(jù)總線108的協(xié)議。共享數(shù)據(jù)總線108可動態(tài)地在根據(jù)不同通信協(xié)議(例如,i2c模式和三進(jìn)制模式)操作之間切換。如先前提及的,多模主控設(shè)備112可管理對共享數(shù)據(jù)總線108的通信和/或訪問。主控設(shè)備112傳送進(jìn)入調(diào)用以指示共享數(shù)據(jù)總線108要將其通信協(xié)議從第一協(xié)議模式(例如,i2c模式)切換到第二協(xié)議模式(例如,三進(jìn)制模式)。類似地,主控設(shè)備112傳送退出調(diào)用以指示共享數(shù)據(jù)總線108要將其通信協(xié)議從第二協(xié)議模式(例如,三進(jìn)制模式)切換到第一協(xié)議模式(例如,i2c模式)。耦合至共享總線108的從動設(shè)備114、118、122、124監(jiān)視這些進(jìn)入和退出調(diào)用以查明它們何時(shí)可在共享總線108上操作。
示例性三進(jìn)制編碼技術(shù)
圖2解說了時(shí)鐘可如何在三進(jìn)制模式中被嵌入在碼元到碼元轉(zhuǎn)變內(nèi),由此允許將i2c總線中的兩條線(即,sda線和scl線)用于數(shù)據(jù)傳輸。在一個(gè)示例中,對時(shí)鐘的這種嵌入可以通過轉(zhuǎn)變時(shí)鐘轉(zhuǎn)碼來達(dá)成。例如,要在物理鏈路(導(dǎo)線)上傳送的數(shù)據(jù)204被轉(zhuǎn)碼,從而保證所傳送碼元在所傳送碼元206的每個(gè)碼元循環(huán)或轉(zhuǎn)變處改變狀態(tài)。在一個(gè)示例中,比特序列被轉(zhuǎn)換成三進(jìn)制數(shù),并且該三進(jìn)制數(shù)的每一數(shù)位被轉(zhuǎn)換成碼元以供傳輸。即使在三進(jìn)制數(shù)的兩個(gè)順序數(shù)位相同的情況下,也保證順序碼元是不同的。因此,原始時(shí)鐘202可被嵌入在每個(gè)碼元循環(huán)的碼元狀態(tài)改變中。接收機(jī)從(所傳送碼元206中的)每個(gè)碼元處的狀態(tài)轉(zhuǎn)變來恢復(fù)時(shí)鐘信息208并且隨后反轉(zhuǎn)對所傳送碼元206的轉(zhuǎn)碼以獲得原始數(shù)據(jù)210。在一個(gè)示例中,每個(gè)碼元被轉(zhuǎn)換成一數(shù)位,多個(gè)數(shù)位構(gòu)成三進(jìn)制數(shù),其中該三進(jìn)制數(shù)隨后被轉(zhuǎn)換成多個(gè)比特。因此,原始時(shí)鐘202可被嵌入在每個(gè)碼元循環(huán)的碼元狀態(tài)改變中。這允許i2c總線的這兩條導(dǎo)線(圖1中的共享數(shù)據(jù)總線108,sda線和scl線)被用于發(fā)送數(shù)據(jù)信息。另外,碼元速率可得以加倍,因?yàn)椴辉傩枰跁r(shí)鐘信號與數(shù)據(jù)信號之間具有建立和保持時(shí)間。
圖3是解說用于在發(fā)射機(jī)處將數(shù)據(jù)比特轉(zhuǎn)碼成經(jīng)轉(zhuǎn)碼碼元以將時(shí)鐘信號嵌入在這些經(jīng)轉(zhuǎn)碼碼元內(nèi)的示例性方法的框圖。在發(fā)射機(jī)302處,數(shù)據(jù)比特序列304被轉(zhuǎn)換成三進(jìn)制(基數(shù)為3)數(shù)(即,“轉(zhuǎn)變數(shù)”),并且這些三進(jìn)制數(shù)隨后被轉(zhuǎn)換成在時(shí)鐘線scl312和數(shù)據(jù)線sda314上傳送的(順序)碼元。
在一個(gè)示例中,原始的20比特二進(jìn)制數(shù)據(jù)被輸入到比特至轉(zhuǎn)變數(shù)轉(zhuǎn)換器塊308以轉(zhuǎn)換成12數(shù)位三進(jìn)制數(shù)。該12數(shù)位三進(jìn)制數(shù)的每一數(shù)位表示“轉(zhuǎn)變數(shù)”。兩個(gè)連貫轉(zhuǎn)變數(shù)可具有相同的數(shù)字(即,三進(jìn)制數(shù)的連貫數(shù)位可以是相同的)。每個(gè)轉(zhuǎn)變數(shù)在轉(zhuǎn)變至碼元塊310處被轉(zhuǎn)換成順序碼元以使得任何兩個(gè)連貫的順序碼元不具有相同值。由于在每個(gè)順序碼元處保證有轉(zhuǎn)變,因而此類順序碼元轉(zhuǎn)變可用于嵌入時(shí)鐘信號。每個(gè)順序碼元316隨后在雙導(dǎo)線物理鏈路(例如,包括scl線312和sda線314的i2c總線)上被發(fā)送。
圖4解說了轉(zhuǎn)變數(shù)402與順序碼元404之間的示例性轉(zhuǎn)換。三進(jìn)制數(shù)(基數(shù)為3的數(shù))的個(gè)體數(shù)位(也被稱為轉(zhuǎn)變數(shù))可具有三(3)個(gè)可能數(shù)位或狀態(tài)0、1或2之一。雖然在三進(jìn)制數(shù)的兩個(gè)連貫數(shù)位中可能出現(xiàn)相同值,但沒有任何兩個(gè)連貫順序碼元具有相同值。轉(zhuǎn)變數(shù)和順序碼元之間的轉(zhuǎn)換保證即使在連貫的轉(zhuǎn)變數(shù)是相同的情況下順序碼元也總是改變(從順序碼元到順序碼元)。
圖5中解說性地闡述了轉(zhuǎn)換功能。在發(fā)射機(jī)側(cè)(tx:t到s)502,轉(zhuǎn)變數(shù)(t)可被轉(zhuǎn)換成順序碼元(s)。例如,當(dāng)前順序碼元(cs)可基于先前順序碼元(ps)和作為當(dāng)前轉(zhuǎn)變數(shù)(t)的函數(shù)的臨時(shí)轉(zhuǎn)變數(shù)(ttmp)來獲得。臨時(shí)轉(zhuǎn)變數(shù)(ttmp)可通過將當(dāng)前轉(zhuǎn)變數(shù)t與0進(jìn)行比較來獲得,并且當(dāng)t=0時(shí),臨時(shí)轉(zhuǎn)變數(shù)(ttmp)變成等于3,否則(當(dāng)t不等于0時(shí))ttmp變成等于t(即,ttmp=t=0?3:t)。當(dāng)前順序碼元可以作為當(dāng)前順序碼元(cs)加先前順序碼元(ps)加臨時(shí)轉(zhuǎn)變數(shù)(ttmp)的總和(即,cs=ps+ttmp)來獲得。
在接收機(jī)側(cè)(rx:s到t)504,轉(zhuǎn)換操作被反轉(zhuǎn)以從當(dāng)前順序碼元(cs)和先前順序碼元(ps)獲得轉(zhuǎn)變數(shù)。臨時(shí)轉(zhuǎn)變數(shù)(ttmp)可以作為當(dāng)前順序碼元(cs)加4減去先前碼元(ps)的總和(即,ttmp=cs+4-ps)來獲得。當(dāng)前轉(zhuǎn)變數(shù)(t)等于臨時(shí)轉(zhuǎn)變數(shù)(ttmp),但是臨時(shí)轉(zhuǎn)變數(shù)(ttmp)與三(3)進(jìn)行比較,并且當(dāng)ttmp=3,臨時(shí)轉(zhuǎn)變數(shù)(ttmp)變成等于零(0),否則(當(dāng)ttmp不等于3時(shí))t變成等于ttmp(即,t=ttmp=3?0:t)。
表506解說了轉(zhuǎn)變數(shù)與順序碼元之間的轉(zhuǎn)換。
再次參照圖4,本文解說了轉(zhuǎn)變數(shù)與順序碼元之間的轉(zhuǎn)換的示例。例如,在第一循環(huán)406中,當(dāng)前轉(zhuǎn)變數(shù)(ta)為2,所以ttmp也為2,并且在先前順序碼元ps為1的情況下,新的當(dāng)前順序碼元cs現(xiàn)在為3。
在第二循環(huán)408中,轉(zhuǎn)變數(shù)(tb)為1。由于轉(zhuǎn)變數(shù)(tb)不等于0,所以臨時(shí)轉(zhuǎn)變數(shù)ttmp等于為1的轉(zhuǎn)變數(shù)(tb)值。通過將先前順序碼元(ps)值3與為1的臨時(shí)轉(zhuǎn)變數(shù)ttmp相加來獲得當(dāng)前順序碼元(cs)。由于該加法運(yùn)算的結(jié)果等于4,即大于3,因而翻轉(zhuǎn)數(shù)0變成當(dāng)前順序碼元(cs)。
在第三循環(huán)410中,當(dāng)前轉(zhuǎn)變數(shù)(t)為1。因?yàn)檗D(zhuǎn)變數(shù)t為1,所以臨時(shí)轉(zhuǎn)變數(shù)ttmp也為1。通過將先前順序碼元(ps)值0與為1的臨時(shí)轉(zhuǎn)變數(shù)ttmp相加來獲得當(dāng)前順序碼元(cs)。由于加法運(yùn)算的結(jié)果等于1,即不大于3,因而當(dāng)前碼元(cs)等于1。
在第四循環(huán)412中,當(dāng)前轉(zhuǎn)變數(shù)(t)為0。因?yàn)檗D(zhuǎn)變數(shù)t為0,所以臨時(shí)轉(zhuǎn)變數(shù)ttmp為3。
通過將先前順序碼元(ps)值1與為3的臨時(shí)轉(zhuǎn)變數(shù)ttmp相加來獲得當(dāng)前順序碼元(cs)。由于該加法運(yùn)算的結(jié)果為4,即大于3,因而翻轉(zhuǎn)數(shù)0變成當(dāng)前順序碼元(cs)。
注意,即使兩個(gè)連貫的三進(jìn)制數(shù)位tb和tc具有相同數(shù)字,該轉(zhuǎn)換也保證了兩個(gè)連貫順序碼元具有不同狀態(tài)值。正因如此,順序碼元404中的保證轉(zhuǎn)變可以用于嵌入時(shí)鐘信號,由此釋放i2c總線中的時(shí)鐘線scl以用于數(shù)據(jù)傳輸。
再次參照圖3,在接收機(jī)320處,該過程被反轉(zhuǎn)以將經(jīng)轉(zhuǎn)碼碼元轉(zhuǎn)換回比特,并且在該過程中,從碼元轉(zhuǎn)變中提取時(shí)鐘信號。接收機(jī)320在雙導(dǎo)線物理鏈路(例如,包括scl線324和sda線326的i2c總線)上接收順序碼元序列322。所接收的順序碼元322被輸入到時(shí)鐘數(shù)據(jù)恢復(fù)(cdr)塊328中以恢復(fù)時(shí)鐘定時(shí)并采樣經(jīng)轉(zhuǎn)碼碼元(s)。碼元至轉(zhuǎn)變數(shù)轉(zhuǎn)換器塊330隨后將經(jīng)轉(zhuǎn)碼(順序)碼元轉(zhuǎn)換成轉(zhuǎn)變數(shù)(即,一個(gè)三進(jìn)制數(shù)位數(shù))。接著,轉(zhuǎn)變數(shù)至比特轉(zhuǎn)換器332轉(zhuǎn)換12個(gè)轉(zhuǎn)變數(shù)以從12數(shù)位三進(jìn)制數(shù)復(fù)原20比特原始數(shù)據(jù)。
圖3和4中針對雙導(dǎo)線總線和12個(gè)轉(zhuǎn)變數(shù)解說的示例可被一般化為n導(dǎo)線系統(tǒng)和m個(gè)轉(zhuǎn)變數(shù)。如果每一個(gè)t(t0到tm-1)有r個(gè)可能的碼元轉(zhuǎn)變狀態(tài),那么m個(gè)轉(zhuǎn)變可發(fā)送rm個(gè)不同狀態(tài)(即,r=2n-1)。因此,轉(zhuǎn)變t0…tm-1包含可具有(2n-1)m個(gè)不同狀態(tài)的數(shù)據(jù)。
本文解說的此技術(shù)可被用來提高共享數(shù)據(jù)總線108(圖1)的鏈路速率,以超出i2c標(biāo)準(zhǔn)總線所提供的鏈路速率,并且于此被稱為三進(jìn)制模式。在一個(gè)示例中,耦合至共享數(shù)據(jù)總線108的主控設(shè)備和/或從動設(shè)備可實(shí)現(xiàn)在碼元傳輸內(nèi)嵌入時(shí)鐘信號的發(fā)射機(jī)和/或接收機(jī)(如圖2、3、4和5中所解說的),以在相同共享數(shù)據(jù)總線上達(dá)成比使用標(biāo)準(zhǔn)i2c總線可能達(dá)成的更高比特率。
共享總線上的示例性i2c傳輸、三進(jìn)制傳輸
圖6解說了i2c一字節(jié)寫數(shù)據(jù)操作的示例性時(shí)序圖。在該示例中,共享控制數(shù)據(jù)總線108(圖1)包括串行數(shù)據(jù)線sda602和串行時(shí)鐘線scl604。圖6中解說的傳輸方案可被稱為“i2c模式”。scl線604被用于從主控設(shè)備向所有從動設(shè)備發(fā)送時(shí)鐘,而sda線602傳送數(shù)據(jù)比特。i2c主控設(shè)備在sda線602中發(fā)送7比特從動方id608以指示主控設(shè)備希望接入i2c總線上的哪個(gè)從動設(shè)備,然后發(fā)送指示寫操作的1比特。只有其id與該7比特從動方id608相匹配的從動設(shè)備才能導(dǎo)致預(yù)期動作。為了使i2c從動設(shè)備檢測其自己的id,主控設(shè)備必須在sda線上發(fā)送至少8比特(或者在scl線604上發(fā)送8個(gè)時(shí)鐘脈沖)。
i2c標(biāo)準(zhǔn)要求所有i2c兼容從動設(shè)備在接收到start(開始)狀況606(例如,由scl線為高時(shí)在sda線上的高到低轉(zhuǎn)變來指示)之際使其總線邏輯復(fù)位。
三進(jìn)制協(xié)議將sda線602和scl線604兩者用于數(shù)據(jù)傳輸,同時(shí)將時(shí)鐘信號嵌入在數(shù)據(jù)傳輸內(nèi)。例如,數(shù)據(jù)比特可被轉(zhuǎn)碼成隨后在諸線上傳送的多個(gè)碼元。通過將時(shí)鐘信號(圖6中的i2c總線的scl線)嵌入在碼元轉(zhuǎn)變內(nèi),sda線602和scl線604兩者均可被用于數(shù)據(jù)傳輸。
圖7解說了其中數(shù)據(jù)比特已被轉(zhuǎn)碼為十二個(gè)碼元以供在sda線702和scl線704上進(jìn)行傳輸?shù)氖纠匀M(jìn)制傳輸。圖7中解說的傳輸方案可被稱為“三進(jìn)制模式”。三進(jìn)制模式是源同步的,由推挽式驅(qū)動器來驅(qū)動。在共享控制數(shù)據(jù)總線上發(fā)出數(shù)據(jù)的任何設(shè)備也發(fā)出嵌入在數(shù)據(jù)中(例如,嵌入在碼元到碼元轉(zhuǎn)變內(nèi))的時(shí)鐘信息。因此,在任一時(shí)間控制數(shù)據(jù)總線上的僅一個(gè)設(shè)備被允許驅(qū)動共享控制數(shù)據(jù)總線。
為了在同一條總線上支持舊式i2c設(shè)備和三進(jìn)制設(shè)備兩者,三進(jìn)制模式操作使用相同的start(開始)狀況706、708、710,這防止舊式i2c從動設(shè)備對任何三進(jìn)制操作作出反應(yīng)(例如,三進(jìn)制模式期間的開始狀況使舊式i2c從動設(shè)備復(fù)位)。在此示例中,在傳送完整從動方id(即,完整7比特)之前檢測start狀況706、708、710(即,由在scl線704為高時(shí)在sda線702上的高到低轉(zhuǎn)變來指示),因此這是不完整的從動方id(少于7比特)。如果主控設(shè)備發(fā)送6個(gè)scl脈沖隨后發(fā)布start狀況706、708、710,則所有舊式i2c從動設(shè)備在它們將該數(shù)據(jù)識別為i2c從動方id之前使其總線邏輯復(fù)位。由于這些6比特序列(例如,對應(yīng)于每兩個(gè)碼元)是在兩個(gè)start狀況706、708、710之間發(fā)送的,因而這些6比特序列不被任何i2c從動設(shè)備解碼為有效的從動方id。因此,舊式i2c從動設(shè)備將不會對不完整的從動方id采取動作。
示例性i2c接收機(jī)電路
在i2c模式中,在scl線為高時(shí)sda線上的轉(zhuǎn)變(例如,低到高或高到低)被理解為是控制信號。在scl線為低時(shí)sda線上的轉(zhuǎn)變被忽略。在scl線穩(wěn)定為高且sda線穩(wěn)定為低或高時(shí),數(shù)據(jù)被讀取。為避免i2c設(shè)備對共享總線的行為變化,有必要避免不想要的總線管理控制狀態(tài),即在scl線為高時(shí)sda線變化。
當(dāng)在三進(jìn)制模式中操作時(shí),存在三進(jìn)制設(shè)備可同時(shí)翻轉(zhuǎn)一條或兩條線的可能性。在物理實(shí)現(xiàn)上,各線的同時(shí)翻轉(zhuǎn)可在稍微不同的時(shí)刻到達(dá)共享總線上的i2c設(shè)備,使得它們可被解釋為當(dāng)scl線為高時(shí)sda線翻轉(zhuǎn)。這一特定情況在三進(jìn)制協(xié)議中必須被避免以防止i2c設(shè)備將它們解釋成i2c信號。
圖8是解說用于防止共享總線上的信號被誤讀為有效i2c信號的i2c設(shè)備的接收機(jī)電路802的一部分的框圖。共享數(shù)據(jù)總線的sda線806可耦合到第一延遲電路810,且信號sda和sdad兩者被發(fā)送到組合邏輯電路804。類似地,共享數(shù)據(jù)總線的scl線808可耦合到第二延遲電路812,且信號scl和scld兩者被發(fā)送到組合邏輯電路804。第二延遲電路812可以實(shí)現(xiàn)比第一延遲電路810更長的延遲。組合邏輯電路804可被配置成通過延遲并過濾sda線806和/或scl線808上的信號以防止i2c設(shè)備對其上的信號的誤讀來在無需外部時(shí)鐘的情況下進(jìn)行操作。組合邏輯電路804的輸出sdai814和scli816可被發(fā)送給接收機(jī)電路802所耦合到的i2c設(shè)備。
注意,圖8指示第一延遲電路810的示例性第一延遲τ和第二延遲電路的第二延遲2τ。然而,這些時(shí)間延遲可針對每一特定實(shí)現(xiàn)來調(diào)整和修改。
圖9是解說圖8的接收機(jī)電路802的一個(gè)示例的框圖。在這一示例中,解說了組合電路904的一個(gè)示例。
圖10解說了圖9的組合電路904。sda線806耦合到xor(異或)門1004和第一復(fù)用器1010。sdad線818耦合到xor門1004和第二復(fù)用器1008。scl線808耦合到第一and(與)門1006和第二and門1012。scld線820耦合到第一and門1006和第二and門1012。
xor門1004的輸出用作第二復(fù)用器1008的輸入。and門1006的輸出用于選擇第一復(fù)用器1010和第二復(fù)用器1008。第二復(fù)用器1008的輸出用作第一復(fù)用器1010的輸入。第一復(fù)用器1010的輸出sdai814用作對應(yīng)i2c設(shè)備的輸入。第二and門1012的輸出scli816也用作對應(yīng)i2c設(shè)備的輸入。
圖11解說了用于實(shí)現(xiàn)圖10的組合邏輯電路1604的示例性verilog代碼。
圖12解說了在scl線808為高時(shí)sda線806轉(zhuǎn)變以及來自圖8的接收機(jī)電路的對應(yīng)輸出sdai814和scli816的第一時(shí)序圖1200。在這一示例中,(sda線806上的)第一信號1206具有當(dāng)scl線808上的第二信號1204處于第二邏輯狀態(tài)(例如,高)時(shí)sda線806上發(fā)生的第一轉(zhuǎn)變1202(例如,從第一邏輯狀態(tài)到第二邏輯狀態(tài),或從高到低)。這一第一轉(zhuǎn)變發(fā)生在scl線808上的高到低第二轉(zhuǎn)變1203之前的時(shí)間t1。這一時(shí)間t1可小于被用來確定是否相對于第二轉(zhuǎn)變1203來調(diào)整第一轉(zhuǎn)變1202的閾值時(shí)間t0。例如,如果時(shí)間t1小于閾值時(shí)間量t0(如圖12所解說的),則第一轉(zhuǎn)變1202被調(diào)整,使得它發(fā)生在第二轉(zhuǎn)變1203之后(例如,線sdai814上的經(jīng)調(diào)整第一轉(zhuǎn)變1202’發(fā)生在線scli816上的經(jīng)延遲第二轉(zhuǎn)變1203’之后)。另一方面,如果第一轉(zhuǎn)變發(fā)生在第二轉(zhuǎn)變1203之前(例如,圖14中解說的示例)或在第二轉(zhuǎn)變之后(例如,圖13中解說的示例)大于閾值時(shí)間量t0,則第一轉(zhuǎn)變被分別維持在相對于第二轉(zhuǎn)變之前或之后。
注意,閾值時(shí)間量t0可由例如線延遲810、812和/或組合電路804/904來定義。
在一個(gè)示例中,第一轉(zhuǎn)變1202可以只在共享總線被用于與容納接收機(jī)電路的設(shè)備所使用的第一協(xié)議不同的第二協(xié)議時(shí)才由該接收機(jī)電路調(diào)整。在其他實(shí)現(xiàn)中,接收機(jī)電路可以在第一和第二協(xié)議兩者中操作。
如可感知的,第一延遲電路810(圖8)產(chǎn)生第一經(jīng)延遲信號sdad1208,而第二延遲電路812(圖8)產(chǎn)生第二經(jīng)延遲信號scld1210。組合電路904(圖9)產(chǎn)生第一輸出信號sdai1212和第二輸出信號scli1214。
重要的是,第一輸出信號sdai1212在第二輸出信號scli1214處于第二邏輯狀態(tài)(例如,高)時(shí)沒有轉(zhuǎn)變。即,兼容i2c的設(shè)備可以將當(dāng)scl線808處于高狀態(tài)時(shí)的第一轉(zhuǎn)變1202解釋為i2c命令/指令(例如,開始或停止?fàn)顩r)。當(dāng)共享總線(sda線和scl線)在這樣的第一轉(zhuǎn)變1202發(fā)生時(shí)被用于非i2c協(xié)議(例如,三進(jìn)制協(xié)議)時(shí),第一轉(zhuǎn)變1202可造成在共享總線上進(jìn)行監(jiān)聽/接收的i2c設(shè)備的不合需要的狀態(tài)變化。因此,通過使用組合邏輯904和/或延遲線/電路810/814,i2c設(shè)備改為接收第一輸出信號sdai1212和第二輸出信號scli1214并且不識別共享總線各線上的任何i2c命令。
圖13解說了在scl線808為低時(shí)sda線806轉(zhuǎn)變以及來自圖8的接收機(jī)電路的對應(yīng)輸出sdai814和scli816的第二時(shí)序圖1300。在這一示例中,第一信號1306具有當(dāng)scl線808上的第二信號1304為低時(shí)sda線806上發(fā)生的第一轉(zhuǎn)變1302。這一第一轉(zhuǎn)變1302發(fā)生在scl線808上的高到低第二轉(zhuǎn)變1303之后的時(shí)間t2。因?yàn)榈谝晦D(zhuǎn)變1302發(fā)生在第二轉(zhuǎn)變1303之后,所以經(jīng)延遲第一轉(zhuǎn)變1302’被維持在經(jīng)延遲第二轉(zhuǎn)變1303’之后。
如可感知的,第一延遲電路810(圖8)產(chǎn)生第一經(jīng)延遲信號sdad1308,而第二延遲電路812(圖8)產(chǎn)生第二經(jīng)延遲信號scld1310。組合電路904(圖9)產(chǎn)生第一輸出信號sdai1312和第二輸出信號scli1314。重要的是,第一輸出信號sdai1312在第二輸出信號scli1314為高(例如,第二邏輯狀態(tài))時(shí)沒有轉(zhuǎn)變。因此,接收第一輸出信號sdai1312和第二輸出信號scli1314的i2c設(shè)備不識別共享總線各線上的任何i2c命令。
有效i2c協(xié)議開始和停止?fàn)顩r可被用在三進(jìn)制模式內(nèi)以間或地將各i2c設(shè)備復(fù)位。這樣的開始和停止?fàn)顩r可由例如當(dāng)scl線為高時(shí)sda線上的高到低轉(zhuǎn)變來定義。因此,組合電路904(圖9)應(yīng)當(dāng)準(zhǔn)許有效開始和/或停止?fàn)顩r信號到達(dá)i2c設(shè)備。
圖14解說了包括sda線806和scl線808上的i2c開始和/或停止?fàn)顩r的第三時(shí)序圖1400。在這一示例中,第一信號1406具有當(dāng)scl線808上的第二信號1404為低時(shí)sda線806上發(fā)生的第一轉(zhuǎn)變1402。如可感知的,第一延遲電路810(圖8)產(chǎn)生第一經(jīng)延遲信號sdad1408,而第二延遲電路812(圖8)產(chǎn)生第二經(jīng)延遲信號scld1410。通過與圖12的第一轉(zhuǎn)變1202相比較,圖14中的第一轉(zhuǎn)變1402相對于scl線808上的高到低轉(zhuǎn)變1203/1403發(fā)生得遠(yuǎn)早于第一轉(zhuǎn)變1202(圖12)。即,高到低第一轉(zhuǎn)變1402與第二轉(zhuǎn)變1403之間的時(shí)間t3長于圖12中的類似時(shí)間t1。事實(shí)上,在這一示例中,時(shí)間t3大于閾值時(shí)間t0。
例如,因?yàn)榈谝晦D(zhuǎn)變1402在第二轉(zhuǎn)變1403之前大于閾值時(shí)間量t0而發(fā)生,所以線sdai814上的經(jīng)延遲第一轉(zhuǎn)變1402’被維持在線scli816上的經(jīng)延遲第二轉(zhuǎn)變1403’之前或之后。
組合電路904(圖9)產(chǎn)生第一輸出信號sdai1412和第二輸出信號scli1414。重要的是,第一輸出信號sdai1412具有在第二輸出信號scli1414為高(例如,處于第二邏輯狀態(tài)且在經(jīng)延遲第二轉(zhuǎn)變1403’之前)時(shí)發(fā)生的經(jīng)延遲第一轉(zhuǎn)變1402’。因此,接收第一輸出信號sdai1412和第二輸出信號scli1414的i2c設(shè)備將這識別為共享總線各線上的i2c開始/停止命令。
在一個(gè)示例性實(shí)現(xiàn)中,提供了一種設(shè)備,該設(shè)備包括包含第一線和第二線的共享總線、耦合至該共享總線的第一設(shè)備子集、和/或耦合至該共享總線的第二設(shè)備子集。第一設(shè)備子集可被配置成根據(jù)第一協(xié)議模式在共享總線上操作。第二設(shè)備子集可被配置成根據(jù)第二協(xié)議模式在共享總線上操作,其中第二協(xié)議模式不同于第一協(xié)議模式。
第一設(shè)備子集內(nèi)的第一設(shè)備可包括具有線延遲和組合邏輯電路的接收機(jī)電路。組合邏輯電路可被適配成調(diào)整當(dāng)?shù)诙€為高時(shí)在第一線上發(fā)生的信號轉(zhuǎn)變,使得信號轉(zhuǎn)變改為發(fā)生在第二線為低時(shí),其中信號轉(zhuǎn)變只有當(dāng)它發(fā)生在自第二線上的從高到低轉(zhuǎn)變的閾值時(shí)間量t0內(nèi)的情況下才被調(diào)整。在一個(gè)示例中,第一設(shè)備子集包括兼容i2c的設(shè)備。
組合邏輯電路可被進(jìn)一步適配成在第一線上提供第一信號的第一經(jīng)延遲信號以及在第二線上提供第二信號的第二經(jīng)延遲信號。
第一信號或第二信號中的至少一者是由第二設(shè)備子集中的訪問共享總線的一個(gè)或多個(gè)設(shè)備生成的信號。
如果信號轉(zhuǎn)變在第二線上的高到低或低到高轉(zhuǎn)變之前大于閾值時(shí)間量而發(fā)生(如圖14中解說的),則組合邏輯電路被進(jìn)一步適配成維持當(dāng)?shù)诙€為高(或第二邏輯狀態(tài))時(shí)第一線上的信號轉(zhuǎn)變。
當(dāng)?shù)诙€為高時(shí)第一線上的信號轉(zhuǎn)變被解釋為第一協(xié)議模式內(nèi)的開始或停止?fàn)顩r。
在一個(gè)示例中,在第一協(xié)議模式中,第一線被用于數(shù)據(jù)傳輸且第二線被用于傳送時(shí)鐘信號。在第二協(xié)議模式中,第一線和第二線兩者都被用于編碼在碼元內(nèi)的數(shù)據(jù)傳輸,而時(shí)鐘信號被嵌入在碼元到碼元轉(zhuǎn)變中。第一設(shè)備子集在第二協(xié)議模式被用在共享總線上時(shí)在共享總線上進(jìn)行監(jiān)聽。
第二設(shè)備子集內(nèi)的第二設(shè)備可被適配成:(a)將數(shù)據(jù)比特序列轉(zhuǎn)換成多個(gè)(m個(gè))轉(zhuǎn)變數(shù);(b)將每一轉(zhuǎn)變數(shù)轉(zhuǎn)換成來自順序數(shù)集合的順序數(shù);(c)將所述順序數(shù)轉(zhuǎn)換成原始碼元;和/或(d)經(jīng)由多個(gè)差分驅(qū)動器且散布在第一線和第二線上傳送所述原始碼元,其中時(shí)鐘信號被有效地嵌入在所述原始碼元的傳輸中,因?yàn)閺霓D(zhuǎn)變數(shù)至順序數(shù)的所述轉(zhuǎn)換保證沒有兩個(gè)連貫原始碼元是相同的。
兼容i2c的設(shè)備可包括第一線延遲、第二線延遲以及組合邏輯電路。第一線延遲耦合到共享總線的第一線以延遲第一信號。第二線延遲耦合到共享總線的第二線以延遲第二信號,其中第二線延遲長于第一線延遲。組合邏輯電路可被適配成:(a)接收來自第一線延遲的第一經(jīng)延遲信號和來自第二線延遲的第二經(jīng)延遲信號;和/或(b)調(diào)整當(dāng)?shù)诙€為高時(shí)在第一線上發(fā)生的信號轉(zhuǎn)變,使得信號轉(zhuǎn)變改為發(fā)生在第二線為低時(shí),其中信號轉(zhuǎn)變只有當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變(即,高到低或低到高轉(zhuǎn)變)的閾值時(shí)間量內(nèi)的情況下才被調(diào)整。
如果信號轉(zhuǎn)變發(fā)生在自第二線上的第二轉(zhuǎn)變(即,高到低或低到高轉(zhuǎn)變)的閾值時(shí)間量內(nèi),則組合邏輯電路可被適配成在第一輸出線上提供第一輸出信號,其中信號轉(zhuǎn)變發(fā)生在第二輸出線上的第二輸出信號為低時(shí)。
如果信號轉(zhuǎn)變在當(dāng)?shù)诙€處于第一狀態(tài)(例如,低或高)時(shí)在第二線上的第二轉(zhuǎn)變(即,高到低或低到高轉(zhuǎn)變)之前大于閾值時(shí)間量而發(fā)生,則組合邏輯電路可被進(jìn)一步適配成在第一輸出線上提供第一輸出信號,其中信號轉(zhuǎn)變在第二輸出線上的第二輸出信號處于第一狀態(tài)時(shí)發(fā)生。例如,如果第一線(sda)在相對于第二線(scl)的翻轉(zhuǎn)的閾值時(shí)間量之外翻轉(zhuǎn)或轉(zhuǎn)變,則組合電路保留這兩個(gè)信號之間的時(shí)間關(guān)系。即,如果sda線在scl線為低時(shí)翻轉(zhuǎn)或轉(zhuǎn)變(例如,高到低或低到高),則sda線的相同翻轉(zhuǎn)或轉(zhuǎn)變(例如,在輸出sdai814處)將停留在scl線為低時(shí)的相同時(shí)段。同樣,如果sda線在scl線為高時(shí)翻轉(zhuǎn)或轉(zhuǎn)變(例如,高到低或低到高),則sda線的相同轉(zhuǎn)變將保持在scl線的高時(shí)段內(nèi)。
設(shè)備可根據(jù)兼容i2c的通信協(xié)議來進(jìn)行傳送和/或接收。
在一個(gè)示例中,設(shè)備根據(jù)第一協(xié)議模式在共享總線上操作,其中第一線被用于數(shù)據(jù)傳輸且第二線被用于傳送時(shí)鐘信號。當(dāng)?shù)诙€為高時(shí)第一線上的信號轉(zhuǎn)變被解釋為第一協(xié)議模式中的開始或停止?fàn)顩r。開始和停止?fàn)顩r是第一線(即sda線)在第二線(即scl線)為高時(shí)的轉(zhuǎn)變。如果轉(zhuǎn)變在第二線(scl)為高時(shí)發(fā)生但在閾值時(shí)間量之外,更確切地是在scl高時(shí)段內(nèi)部,則圖8-10中的電路保留這些狀況。類似地,圖8-10中的電路不影響scl為低的情況下sda變化與scl狀態(tài)之間的時(shí)間關(guān)系。作為結(jié)果,該電路保留設(shè)備的i2c功能性,同時(shí)避免兩條線彼此過近地(即,在閾值時(shí)間量窗口內(nèi))切換的不想要和不可控狀況。
其它設(shè)備可耦合至共享總線。這些其他設(shè)備可根據(jù)第二協(xié)議模式操作,其中第一線和第二線兩者都被用于編碼在碼元內(nèi)的數(shù)據(jù)傳輸,而時(shí)鐘信號被嵌入在碼元到碼元轉(zhuǎn)變中。第一信號或第二信號中的至少一者可以是由根據(jù)第二協(xié)議模式在共享總線上操作的一個(gè)或多個(gè)設(shè)備生成的信號。該設(shè)備可在根據(jù)第二協(xié)議模式操作的其他設(shè)備在共享總線上進(jìn)行傳送時(shí)在共享總線上進(jìn)行監(jiān)聽或接收。
用于促成共享總線上的多模操作的示例性設(shè)備和在其中操作的方法
圖15是解說配置成促成共享總線上的多模操作的示例性設(shè)備1502的框圖。在一個(gè)示例中,設(shè)備1502可包括共享總線1504(包括第一線和第二線),第一設(shè)備子集1506、1508以及1510,以及第二設(shè)備子集1506、1518、1520以及1516。第一設(shè)備子集1506、1508以及1510可耦合到共享總線1504并被配置成根據(jù)第一協(xié)議模式(例如,模式a、i2c模式,等等)在共享總線1504上操作。第二設(shè)備子集1506、1518、1520以及1516也可耦合到共享總線1504并被配置成根據(jù)第二協(xié)議模式(例如,模式b、三進(jìn)制模式,等等)在共享總線1504上操作,其中第二協(xié)議模式不同于第一協(xié)議模式。
在這一示例性實(shí)現(xiàn)中,主控設(shè)備1506可根據(jù)第一協(xié)議模式(例如,模式a、i2c協(xié)議模式,等等)以及第二協(xié)議模式(例如,模式b、三進(jìn)制模式,等等)進(jìn)行操作。
第一設(shè)備子集可在第二協(xié)議模式被用在共享總線上時(shí)在共享總線上進(jìn)行監(jiān)聽。
第一設(shè)備子集內(nèi)的第一設(shè)備1508可包括實(shí)現(xiàn)發(fā)射機(jī)電路(根據(jù)第一協(xié)議模式或模式a)和具有一個(gè)或多個(gè)線延遲和組合邏輯/電路的接收機(jī)電路1524(根據(jù)第一協(xié)議模式或模式a)的總線通信接口電路1520。
類似地,第二設(shè)備1518可包括實(shí)現(xiàn)發(fā)射機(jī)電路(根據(jù)第二協(xié)議模式或模式b)和接收機(jī)電路(根據(jù)第二協(xié)議模式或模式b)的總線通信接口電路。
第一設(shè)備子集內(nèi)的第一設(shè)備1508或1510可包括接收機(jī)電路,該接收機(jī)電路被適配成調(diào)整當(dāng)?shù)诙€處于第一邏輯狀態(tài)(例如,高或1)時(shí)發(fā)生在第一線上的信號轉(zhuǎn)變,使得信號轉(zhuǎn)變改為發(fā)生在第二線處于與第一邏輯狀態(tài)相對的第二邏輯狀態(tài)(例如,低或0)時(shí),其中信號轉(zhuǎn)變只當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整。注意,信號轉(zhuǎn)變可以在共享總線正根據(jù)第二協(xié)議模式被使用時(shí)發(fā)生(例如,信號轉(zhuǎn)變可作為用于第二協(xié)議模式的信號的一部分來發(fā)生)。
在一個(gè)示例中,接收機(jī)電路可包括組合邏輯電路和適配成在第一線上提供一信號的第一經(jīng)延遲信號和在第二線上提供第二信號的第二經(jīng)延遲信號的一個(gè)或多個(gè)線延遲。第一信號或第二信號中的至少一者是由第二設(shè)備子集中的訪問共享總線的一個(gè)或多個(gè)設(shè)備生成的信號。
如果第一線上的信號轉(zhuǎn)變在第二線處于第一狀態(tài)時(shí)自第二線上的第二轉(zhuǎn)變大于閾值時(shí)間量而發(fā)生,則接收機(jī)電路被進(jìn)一步適配成維持在第二線處于第一狀態(tài)時(shí)第一線上的信號轉(zhuǎn)變。
在一個(gè)示例中,當(dāng)?shù)诙€處于第一邏輯狀態(tài)時(shí)第一線上的信號轉(zhuǎn)變可被解釋為第一協(xié)議模式內(nèi)的開始或停止?fàn)顩r,如果該轉(zhuǎn)變自第二線上的第二轉(zhuǎn)變大于閾值時(shí)間量而發(fā)生的話。
在一個(gè)示例中,在第一協(xié)議模式中,第一線被用于數(shù)據(jù)傳輸且第二線被用于傳送時(shí)鐘信號。在第二協(xié)議模式中,第一線和第二線兩者都可被用于編碼在碼元內(nèi)的數(shù)據(jù)傳輸,而時(shí)鐘信號被嵌入在碼元到碼元轉(zhuǎn)變中。
第一設(shè)備子集可包括兼容i2c的設(shè)備。在一個(gè)示例中,第二設(shè)備子集內(nèi)的第二設(shè)備被適配成:(a)將數(shù)據(jù)比特序列轉(zhuǎn)換成多個(gè)(m個(gè))轉(zhuǎn)變數(shù);(b)將每一轉(zhuǎn)變數(shù)轉(zhuǎn)換成來自順序數(shù)集合的順序數(shù);(c)將所述順序數(shù)轉(zhuǎn)換成原始碼元;和/或(d)經(jīng)由多個(gè)差分驅(qū)動器且散布在第一線和第二線上傳送所述原始碼元,其中時(shí)鐘信號被有效地嵌入在所述原始碼元的傳輸中,因?yàn)閺霓D(zhuǎn)變數(shù)至順序數(shù)的所述轉(zhuǎn)換保證沒有兩個(gè)連貫原始碼元是相同的。
圖16解說用于促成共享總線上的多模操作的方法。包括第一線和第二線的共享總線被置備或提供(1602)。
第一設(shè)備子集耦合到共享總線,其中第一設(shè)備子集中的各設(shè)備被配置成根據(jù)第一協(xié)議模式在共享總線上操作(1604)。
第二設(shè)備子集耦合到共享總線,其中第二設(shè)備子集中的各設(shè)備被配置成根據(jù)第二協(xié)議模式在共享總線上操作,其中第二協(xié)議模式不同于第一協(xié)議模式(1606)。
第一設(shè)備子集內(nèi)的第一設(shè)備被置備有或包括接收機(jī)電路,該接收機(jī)電路被適配成調(diào)整當(dāng)?shù)诙€處于第一邏輯狀態(tài)時(shí)發(fā)生在第一線上的信號轉(zhuǎn)變,使得信號轉(zhuǎn)變改為發(fā)生在第二線處于與第一邏輯狀態(tài)相對的第二邏輯狀態(tài)時(shí),其中信號轉(zhuǎn)變只當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整(1608)。
示例性接收機(jī)電路和其中可操作的方法
圖17是解說配置成動態(tài)地調(diào)整某些信號轉(zhuǎn)變以容適共享總線上的多模操作的示例性接收機(jī)的框圖。
設(shè)備1702可包括耦合到總線通信接口電路1706的處理/控制電路或邏輯1702??偩€通信接口電路1706可包括根據(jù)第一操作模式(例如,模式a或兼容i2c的模式)操作的發(fā)射機(jī)1710和接收機(jī)1712。
接收機(jī)1712可包括第一線延遲以耦合到共享總線的第一線以延遲第一信號。接收機(jī)還可包括第二線延遲以耦合到共享總線的第二線以延遲第二信號,其中第二線延遲長于第一線延遲。
接收機(jī)1712內(nèi)的組合邏輯電路1718可被適配成:(a)接收來自第一線延遲的第一經(jīng)延遲信號和來自第二線延遲的第二經(jīng)延遲信號;和/或(b)調(diào)整當(dāng)?shù)诙€處于第一邏輯狀態(tài)時(shí)在第一線上發(fā)生的信號轉(zhuǎn)變,使得信號轉(zhuǎn)變改為發(fā)生在第二線處于第二邏輯狀態(tài)時(shí),其中信號轉(zhuǎn)變只有當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整。
如果信號轉(zhuǎn)變發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)且第二線處于第一邏輯狀態(tài),則組合邏輯電路可被適配成在第一輸出線上提供第一輸出信號,其中信號轉(zhuǎn)變在第二輸出線上的第二輸出信號處于第二邏輯狀態(tài)時(shí)發(fā)生。
如果第一線上的信號轉(zhuǎn)變在第二線處于第一狀態(tài)時(shí)自第二線上的第二轉(zhuǎn)變大于閾值時(shí)間量而發(fā)生,則組合邏輯電路被進(jìn)一步適配成維持在第二線處于第一狀態(tài)時(shí)第一線上的信號轉(zhuǎn)變。
該設(shè)備可根據(jù)第一協(xié)議模式在共享總線上操作,其中第一線被用于數(shù)據(jù)傳輸且第二線被用于傳送時(shí)鐘信號。
當(dāng)?shù)诙€處于第一邏輯狀態(tài)時(shí)第一線上的信號轉(zhuǎn)變被解釋為第一協(xié)議模式內(nèi)的開始或停止?fàn)顩r,如果該轉(zhuǎn)變自第二線上的第二轉(zhuǎn)變大于閾值時(shí)間量而發(fā)生的話。
耦合到共享總線的其他設(shè)備可根據(jù)第二協(xié)議模式操作,其中第一線和第二線兩者都被用于編碼在碼元內(nèi)的數(shù)據(jù)傳輸,而時(shí)鐘信號被嵌入在碼元到碼元轉(zhuǎn)變中。
第一信號或第二信號中的至少一者是由根據(jù)第二協(xié)議模式在共享總線上操作的一個(gè)或多個(gè)設(shè)備生成的信號。
該設(shè)備在根據(jù)第二協(xié)議模式操作的其他設(shè)備于共享總線上進(jìn)行傳送時(shí)在共享總線上進(jìn)行監(jiān)聽。
該設(shè)備根據(jù)兼容i2c的通信協(xié)議來進(jìn)行傳送和接收。
圖18解說了在接收機(jī)設(shè)備上操作的示例性方法。第一經(jīng)延遲信號可以從耦合到第一線的第一線延遲接收且第二經(jīng)延遲信號可以從耦合到第二線的第二線延遲接收,其中第二線延遲長于第一線延遲(1802)。
當(dāng)?shù)诙€處于第一邏輯狀態(tài)時(shí)在第一線上發(fā)生的信號轉(zhuǎn)變可被調(diào)整,使得信號轉(zhuǎn)變改為發(fā)生在第二線處于與第一邏輯狀態(tài)相對的第二邏輯狀態(tài)時(shí),其中信號轉(zhuǎn)變只有當(dāng)它發(fā)生在自第二線上的第二轉(zhuǎn)變的閾值時(shí)間量內(nèi)的情況下才被調(diào)整(1804)。
在第一協(xié)議模式中,第一線被用于數(shù)據(jù)傳輸且第二線被用于傳送時(shí)鐘信號,并且在第二協(xié)議模式中,第一線和第二線兩者都被用于編碼在碼元內(nèi)的數(shù)據(jù)傳輸而時(shí)鐘信號被嵌入在碼元到碼元轉(zhuǎn)變中。
附圖中解說的組件、步驟、特征、和/或功能之中的一個(gè)或多個(gè)可以被重新編排和/或組合成單個(gè)組件、步驟、特征、或功能,或可以實(shí)施在數(shù)個(gè)組件、步驟或功能中。還可添加附加的元件、組件、步驟、和/或功能而不會脫離本文中所公開的新穎特征。附圖中所解說的裝置、設(shè)備和/或組件可以被配置成執(zhí)行在這些附圖中所描述的方法、特征、或步驟中的一個(gè)或多個(gè)。本文中描述的新穎算法還可以高效地實(shí)現(xiàn)在軟件中和/或嵌入到硬件中。
另外應(yīng)注意,這些實(shí)施例可能是作為被描繪為流程圖、流圖、結(jié)構(gòu)圖、或框圖的過程來描述的。盡管流程圖可能會把諸操作描述為順序過程,但是這些操作中有許多操作能夠并行或并發(fā)地執(zhí)行。另外,這些操作的次序可被重新安排。過程在其操作完成時(shí)終止。過程可對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等。當(dāng)過程對應(yīng)于函數(shù)時(shí),它的終止對應(yīng)于該函數(shù)返回調(diào)用方函數(shù)或主函數(shù)。
此外,存儲介質(zhì)可以代表用于存儲數(shù)據(jù)的一個(gè)或多個(gè)設(shè)備,包括只讀存儲器(rom)、隨機(jī)存取存儲器(ram)、磁盤存儲介質(zhì)、光學(xué)存儲介質(zhì)、閃存設(shè)備、和/或其他用于存儲信息的機(jī)器可讀介質(zhì)。術(shù)語“機(jī)器可讀介質(zhì)”包括但不限于:便攜或固定的存儲設(shè)備、光學(xué)存儲設(shè)備、無線信道以及能夠存儲、包含、或承載指令和/或數(shù)據(jù)的各種其它介質(zhì)。
此外,諸實(shí)施例可以由硬件、軟件、固件、中間件、微代碼、或其任何組合來實(shí)現(xiàn)。當(dāng)在軟件、固件、中間件、或微碼中實(shí)現(xiàn)時(shí),執(zhí)行必要任務(wù)的程序代碼或代碼段可被存儲在諸如存儲介質(zhì)之類的機(jī)器可讀介質(zhì)或其它存儲中。處理器可以執(zhí)行這些必要的任務(wù)。代碼段可表示規(guī)程、函數(shù)、子程序、程序、例程、子例程、模塊、軟件包、類,或是指令、數(shù)據(jù)結(jié)構(gòu)、或程序語句的任何組合。通過傳遞和/或接收信息、數(shù)據(jù)、自變量、參數(shù)、或存儲器內(nèi)容,一代碼段可被耦合至另一代碼段或硬件電路。信息、自變量、參數(shù)、數(shù)據(jù)等可以經(jīng)由包括存儲器共享、消息傳遞、令牌傳遞、網(wǎng)絡(luò)傳輸?shù)鹊娜魏魏线m的手段被傳遞、轉(zhuǎn)發(fā)、或傳輸。
結(jié)合本文中公開的示例描述的各個(gè)解說性邏輯塊、模塊、電路、元件和/或組件可用設(shè)計(jì)成執(zhí)行本文中描述的功能的通用處理器、數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)或其他可編程邏輯組件、分立的門或晶體管邏輯、分立的硬件組件、或其任何組合來實(shí)現(xiàn)或執(zhí)行。通用處理器可以是微處理器,但在替換方案中,該處理器可以是任何常規(guī)的處理器、控制器、微控制器、或狀態(tài)機(jī)。處理器還可以實(shí)現(xiàn)為計(jì)算組件的組合,例如dsp與微處理器的組合、數(shù)個(gè)微處理器、與dsp核心協(xié)作的一個(gè)或多個(gè)微處理器、或任何其他此類配置。
結(jié)合本文中公開的示例描述的方法或算法可直接在硬件中、在能由處理器執(zhí)行的軟件模塊中、或在這兩者的組合中以處理單元、編程指令、或其他指示的形式實(shí)施,并且可包含在單個(gè)設(shè)備中或跨多個(gè)設(shè)備分布。軟件模塊可駐留在ram存儲器、閃存、rom存儲器、eprom存儲器、eeprom存儲器、寄存器、硬盤、可移動盤、cd-rom、或本領(lǐng)域中所知的任何其他形式的存儲介質(zhì)中。存儲介質(zhì)可耦合至處理器以使得該處理器能從/向該存儲介質(zhì)讀寫信息。在替換方案中,存儲介質(zhì)可以被整合到處理器。
本領(lǐng)域技術(shù)人員將可進(jìn)一步領(lǐng)會,結(jié)合本文中公開的實(shí)施例描述的各種解說性邏輯塊、模塊、電路、和算法步驟可被實(shí)現(xiàn)為電子硬件、計(jì)算機(jī)軟件、或兩者的組合。為清楚地解說硬件與軟件的這一可互換性,各種解說性組件、塊、模塊、電路、以及步驟在上面是以其功能性的形式作一般化描述的。此類功能性是被實(shí)現(xiàn)為硬件還是軟件取決于具體應(yīng)用和施加于整體系統(tǒng)的設(shè)計(jì)約束。
本文所述的本發(fā)明的各種特征可實(shí)現(xiàn)在不同系統(tǒng)中而不脫離本發(fā)明。應(yīng)注意,以上實(shí)施例僅是示例,且不應(yīng)被解釋成限定本發(fā)明。這些實(shí)施例的描述旨在是說明性的,而并非旨在限定權(quán)利要求的范圍。由此,本發(fā)明的教導(dǎo)可以現(xiàn)成地應(yīng)用于其他類型的裝置,并且許多替換、修改和變形對于本領(lǐng)域技術(shù)人員將是顯而易見的。