首页> 中国专利> 用于扩展双向数据通信总线的范围的系统和方法

用于扩展双向数据通信总线的范围的系统和方法

摘要

本发明提供了一种用于在第一装置与第二装置之间建立扩展的双向通信总线的通信系统、方法和程序产品。所述通信系统包括分解逻辑,用于将单线、双向数据通信总线分解为单向发送数据通信总线和单向接收数据通信总线。差分通信子系统被连接到所述两种单向总线,以便扩展它们的长度,并且重组电路被连接到所述差分通信子系统,用于重组所述扩展的单向发送数据通信总线和所述扩展的单向接收数据通信总线,以便重建所述单线、双向数据通信总线。所述分解逻辑、差分通信子系统以及重组电路的实现对所述第一装置和所述第二装置是透明的,并且不使用数据方向控制线。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-06-22

    未缴年费专利权终止 IPC(主分类):H04L12/40 授权公告日:20071121 终止日期:20100421 申请日:20050421

    专利权的终止

  • 2007-11-21

    授权

    授权

  • 2006-01-04

    实质审查的生效

    实质审查的生效

  • 2005-11-09

    公开

    公开

说明书

技术领域

本发明涉及数据通信,具体地说,涉及用于在两个装置之间提供扩展的双向通信总线的系统、方法和程序产品。本发明的诸实施例采用状态机设计,所述状态机设计可以例如使用离散逻辑或可编程逻辑器件来实现。

背景技术

如果不使用专用的方向控制信号,现有的复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)和专用集成电路(ASIC)技术将不直接支持内部双向信号的实现。当前的体系结构允许将I/O引脚配置为双向信号。但是,这些体系结构不允许将这些引脚中的两个引脚直接连接在一起,同时维持完全异步的双向数据路径。针对此特殊问题的唯一现有解决方案是引入数据方向控制信号,这使得异步双向通信成为不可能。

实现异步双向半双工通信链路的一种常用方法是在该通信链路(其具有到普通电压的上拉电阻)的每一端使用漏极开路或集电极开路驱动器和逻辑接收器。可以将多个装置连接到同一链路。在同一链路上具有多个装置的情况下,当一个装置通话时,网络上的所有其他装置都接收该消息。在这种情况下,使用一种约定的寻址方式以使预期接收者知道消息是发送给他的。有时需要或有必要在这样的链路上隔离某些装置。由于多个装置可能共享同一地址或者可能没有足够的地址来容纳这些数量的装置,可能会出现这种情况。或者可能需要将故障装置从链路隔离,以便该故障装置不会使链路无法工作。当需要能够廉价地路由和操纵此类通信链路时,会出现许多其它情况。通常,可以使用模拟开关来隔离、切换和路由漏极开路和集电极开路通信链路。模拟开关体积大而且昂贵,这限制了可以轻易地完成的切换的复杂性。因此,需要能够使用逻辑门(其可以存在于CPLD、FPGA、ASIC或其他高度集成的廉价装置中)来切换和路由此类信号。

作为进一步的问题,在单个传输线上实现的双向数据通信总线通常具有有限的数据通信范围,这是由于随着长度增加在传输线中产生的固有电容造成的。例如,内部集成电路(I2C)通信是用于半双工集电极开路通信的双向数据通信总线协议的一个实例。该协议定义了I2C通信的最大总线容性负载为400pF,并且数据信号的最大上升时间为1μS。这意味着I2C总线通过过长长度就会违反技术规范。许多系统设计者使用的经验法则是保持I2C总线长度小于1米。因此,本领域中需要一种方法,用于扩展诸如通过单个数据传输线实现的半双工集电极开路通信总线之类的双向数据通信总线的范围。

发明内容

通过用于在第一装置与第二装置之间扩展双向数据通信总线的范围的通信系统,克服了现有技术的不足之处并提供了其他优点。所述通信系统包括分解逻辑,用于将所述双向数据通信总线分解为单向发送数据通信总线和单向接收数据通信总线。差分通信子系统被连接到所述单向发送数据通信总线和所述单向接收数据通信总线以便提供扩展的单向总线,并且重组电路被连接到所述差分通信子系统,以便将所述扩展后的单向发送数据通信总线和所述扩展后的单向接收数据通信总线重新组合成所述双向数据通信总线。

在另一个方面,提供了一种系统,该系统包括具有双向第一输入/输出引脚的第一装置和具有双向第二输入/输出引脚的第二装置。所述系统进一步包括在其间没有数据方向控制线的情况下将所述双向第一输入/输出引脚与所述双向第二输入/输出引脚进行连接的通信系统。所述通信系统包括扩展范围的双向数据通信总线,其中所述双向数据通信总线的一部分被分解为单向发送和接收数据通信总线,所述总线采用差分通信子系统进行差分驱动。

在进一个方面,提供了一种用于在第一装置与第二装置之间扩展双向数据通信总线的范围的方法。所述方法包括:将所述双向数据通信总线分解为单向发送数据通信总线和单向接收数据通信总线;采用差分通信子系统来扩展所述单向发送数据通信总线的长度和所述单向接收数据通信总线的长度;以及通过重新组合所述扩展后的单向发送数据通信总线和所述扩展后的单向接收数据通信总线来重建所述双向数据通信总线。

在再一个方面,提供了至少一个计算机可读的、有形地体现至少一个可由所述计算机执行的指令程序的程序存储装置,以执行在第一装置与第二装置之间扩展双向数据通信总线的范围的方法。所述方法包括:将所述双向数据通信总线分解为单向发送数据通信总线和单向接收数据通信总线;采用差分通信子系统来扩展所述单向发送数据通信总线的长度和所述单向接收数据通信总线的长度;以及通过重新组合所述扩展后的单向发送数据通信总线和所述扩展后的单向接收数据总线来重建所述双向数据通信总线。

进而,通过本发明的技术实现了其他特性和优点。本发明的其他实施例和方面在此处进行了详细说明,并被视为要求保护的发明的一部分。

附图说明

在本说明书结尾处的权利要求书中特别指出并明确要求了被看作本发明的主题。通过以下结合附图的详细说明,本发明的上述和其他目标、特性和优点是显而易见的,这些附图是:

图1示出了两个装置之间的示例性双向通信系统;

图2A和2B示出了用于第一和第二收发机的异步编码器逻辑;

图3示出了所述编码器逻辑的卡诺图;

图4示出了图1的通信系统的示例性状态转换表;

图5示出了图1的通信系统的示例性状态图;

图6示出了示例性的事件序列和相应的状态转换;

图7是图1的通信系统提供的状态机的高级方块图;以及

图8是根据本发明的一个方面的、用于扩展双向数据通信总线的范围的通信系统的一个实施例的方块图。

具体实施方式

图1示出了在两个装置(显示为第一装置100和第二装置200)之间的示例性双向通信系统10。标号第一和第二仅用于标识目的。所述第一和第二标号并不表示某一装置对通信总线具有访问优先权或者控制两个装置之间的所有通信。每个装置100和200分别包括双向输入/输出(I/O)引脚102和202。所述输入/输出引脚分别由上拉电阻101和201上拉到逻辑高。

所述通信系统包括第一总线驱动器104和第二总线驱动器204。第一信号M被提供给输入缓冲器106,然后被提供给第一异步编码器逻辑108。第一异步编码器逻辑108接收第一信号M、当前第一状态A、当前第二状态B以及第二信号S并产生下一个第一状态X。所述下一个第一状态X被提供给门110(例如,D触发器),门110输出所述下一个第一状态X,作为状态机时钟上的当前第一状态。所述当前第一状态A作为输入被反馈到第一异步编码器逻辑108和第二异步编码器逻辑208。门110还生成被提供给第二总线驱动器204的反相后的第二驱动信号。第二总线驱动器204将输入/输出引脚202接地,并可以是诸如BJT(即,在集电极开路配置中)、FET(即,在漏极开路配置中)等的开关元件。所述第二驱动信号接通将输入/输出引脚202接地的第二总线驱动器204。如此处进一步详细说明的那样,这对应于向第二装置200发送逻辑低的第一装置100。

所述第二信号S被提供给输入缓冲器206,然后被提供给第二异步编码器逻辑208。第二异步编码器逻辑208接收第一信号M、当前第一状态A、当前第二状态B以及第二信号S并产生下一个第二状态Y。所述下一个第二状态Y被提供给门210(例如,D触发器),门210输出下一个第二状态Y,作为状态机时钟上的当前第二状态B。当前第二状态B作为输入被反馈到第一异步编码器逻辑108和第二异步编码器208。门210还生成被提供给第一总线驱动器104的反相后的第一驱动信号。第一总线驱动器104将输入/输出引脚102接地,并可以是诸如BJT(即,在集电极开路配置中)、FET(即,在漏极开路配置中)等的开关元件。所述第一驱动信号接通将输入/输出引脚102接地的第一总线驱动器104。如此处进一步详细说明的那样,这对应于向第一装置100发送逻辑低的第二装置200。

图2A示出了第一异步编码器逻辑108的一个示例性实施例。第一异步编码器逻辑108包括许多驱动下一个第一状态X的逻辑门。参考图5对各种状态和转换进行进一步详细说明。图2B示出了第二异步编码器逻辑208的一个示例性实施例。第二异步编码器逻辑208包括许多驱动下一个第二状态Y的逻辑门。参考图5对各种状态和转换进行进一步详细说明。

图3示出了用于开发第一编码器逻辑108和第二编码器逻辑208的卡诺图。图4示出了图1的通信系统的示例性状态转换表。

在工作中,第一装置100或第二装置200都需要向另一装置发送数据。为了发送数据,发送装置将输入/输出引脚驱动到逻辑低,当系统10处于空闲状态时,这将接收装置的输入/输出引脚驱动到逻辑低。这启动了从发送装置向接收装置发送数据。

图5示出了图1的通信系统10的示例性状态图。在初始化时,第一状态信号A和第二状态信号B均为逻辑高并且状态默认为AB=11。这是空闲状态,并且如果第一信号M和第二信号S均为逻辑高(MS=11),这表明两个装置都没有正在尝试发送到另一装置。如果第一信号M和第二信号S均为逻辑低(MS=00),这表明两个装置同时尝试发送,所以系统10保持空闲状态。MS=00被视为冲突。冲突的处理取决于协议。

如果只有第一装置100正在尝试发送数据,则第一装置100将M信号驱动到逻辑低。如图5所示,状态转换为AB=01。参考图1,当处于状态AB=01时,非(A)的值,即第二总线驱动器204的第二驱动信号为逻辑高,由此接通第二总线驱动器并将第二信号S拉到逻辑低(地)。同样,非(B)的值,即第一总线驱动器104的第一驱动信号为逻辑低,由此取消接通第一总线驱动器104并使其处于高阻抗状态,这允许第一装置100继续将第二信号S拉到逻辑低。系统保持在状态AB=01并继续驱动第二信号S为低,直到第一装置100释放总线,允许第二信号变为逻辑高。

要将逻辑高从第一装置100发送到第二装置200,第一装置100释放总线,允许通过上拉电阻101将M信号返回到逻辑高。这导致状态转换为状态AB=11,这又依次取消接通总线驱动器104和204。第二信号S不再被驱动为低,并且借助上拉电阻201返回到逻辑高。第一装置100可以如上所述通过驱动M信号继续发送逻辑低信号和逻辑高信号。

第二装置200以类似的方式向第一装置100发送数据。当所述第二装置将S信号驱动为逻辑低时,假设系统状态为AB=11,则系统状态转换为状态AB=10。第二装置200以与以上参考第一装置100说明的方式类似的方式来发送逻辑低和逻辑高信号。第二装置200控制应用到第一总线驱动器104的第一驱动信号以建立M信号的值。

图6示出了许多事件和相应的系统状态的更改。如上所述,第一装置100或第二装置200都通过分别将M信号或S信号驱动到逻辑低来启动通信。图7是本发明的一个实施例中的通信系统的高级方块图。如图7所示,当前状态作为输入被反馈到下一个状态逻辑300。这分别对应于被反馈到第一异步编码器逻辑108和第二异步编码器逻辑208的当前第一状态A和当前第二状态B。

状态寄存器302将下一个状态锁存为当前状态并对应于门110和210。输出逻辑304使用当前状态信息来生成适当的输出。这对应于门110和210上反相的输出。由通信系统10提供的状态机将当前状态作为反馈直接提供给下一个状态逻辑300的输入。这与典型的莫尔状态机相反。通信系统10将同步反馈直接提供给组合逻辑的输入。

通信系统10能够在不使用方向控制线的情况下实现异步的半双工双向通信。通信系统10还对第一装置100和第二装置200是透明的,并自主地判定通信的方向。第一装置100和第二装置200表现为好象它们通过铜线被直接连接在一起。通信系统10可以使用单独的逻辑元件来实现,作为集成电路(例如存储器控制器、串行通信多路转换器或中断仲裁器)的一部分。通信系统10也可以作为定制的ASIC、FPGA或CPLD中的更大的系统的一部分。通信系统10提供了一种机构,用于将所述双向信号分离成两个可以使用标准逻辑门来路由和切换的单向推挽信号。所述系统还可以用于创建高级切换和路由功能,例如多路转换器和多路分配器。

通信系统10的分离机构可以进一步有利地应用在增强的通信系统中,该通信系统从当前可用的范围扩展了双向数据通信总线的范围。图8中示出了此增强的通信系统的一个实施例。

如图所示,第一装置800(例如主装置)采用包括单线数据传输总线的双向数据总线805与第二装置810(例如从装置)通信。在本实例中,双向数据总线805被分成两个部分,其间插入增强的通信系统的一个装置。具体地说,在第一装置800的附近采用了自动读出双向总线收发机状态机820,用于将单线双向通信总线分离成单向发送数据通信总线(串行数据出(SDA OUT))822和单向接收数据通信总线(串行数据入(SDA IN))824。在一个实例中,自动读出双向总线收发机状态机820可以包括以上结合图1-7说明的通信系统组件,即布置在图1的第一装置100与第二装置200之间的那些组件。所述两个单向通信总线可以通过例如在点S处分解从晶体管204的漏极/集电极到输入缓冲器206的连接来获得。一旦这样修改后,晶体管204用作SDA OUT的输出缓冲器,而引脚202和缓冲器206包括单独的SDA IN线。每条线都被连接到单独的单向引脚。通过将双向总线分离成两个单向总线/引脚,提供了在不同方向上差分地驱动信号的能力。

采用包括多个差分驱动器/接收器830、840、860和870的差分通信子系统来扩展单向发送和接收数据通信总线822、824的长度。如图所示,差分驱动器/接收器830包括驱动器D,驱动器D驱动串行发送数据通过半双工差分通信总线832,到达布置在差分驱动器/接收器840中的接收器R。电阻RT包括用于差分通信总线的常规端电阻。来自第二装置810的串行接收数据由差分驱动器/接收器840中的差分驱动器D驱动,通过第二半双工差分通信总线834到达差分驱动器/接收器830中的接收器R,以便作为SDA IN(在单向接收数据通信总线824上)输出。

在差分通信子系统的末端,SDA OUT信号选通晶体管850,在本实例中,晶体管850将发送数据通信转换为集电极开路发送数据通信,同时其基极通过电阻R连接到VCC。SDA OUT通信和SDA IN通信在连接端子852处被重组为例如集电极开路双向数据总线805,该总线还被连接到第二装置810。有利地,状态机820、差分通信子系统以及重组电路对第一装置800和第二装置810而言都是透明的,并且不需要数据方向控制位或线。在双向数据总线上的整个数据传输中使用一致的通信协议,并且状态机820、差分通信子系统以及重组电路可以位于所述第一装置与第二装置之间的连接线内。

图8中还示出了单向的串行时钟信号(SCL)。该时钟信号通过(或绕过)状态机820并由差分驱动器/接收器860和870差分地驱动,以便扩展时钟总线的长度。由于在本实例中假设串行时钟信号包括集电极开路,因此在差分电路的输出端采用了晶体管880,以便将时钟信号重组为集电极开路时钟信号。由于晶体管880的作用是反转时钟信号,时钟线被示出为在差分驱动器/接收器860与差分驱动器/接收器870之间反向。数据线中不需要类似的反向,因为反向由图1-7的上述状态机进行处理。

通过以上说明,本领域的技术人员将会注意到此处提供了一种扩展例如半双工集电极开路或漏极开路通信总线的范围的系统和方法。采用结合图1-7说明的状态机时,可编程逻辑器件具有这样的能力:允许借助被分解成发送通信总线和接收通信总线的单线数据传输来实现半双工集电极开路或漏极开路通信。这充分利用了可编程逻辑器件的体系结构,因为双向输入/输出缓冲器可以如此处说明的那样被分成两种引脚,一种为输入,另一种用作输出,然后只要进一步沿通信路径对引脚进行线连接(wiredotting)以重建所述双向总线。一旦双向通信总线被转换为发送通信总线和接收通信总线,便会增加差分地驱动这些总线的机会(带有或不带有中继器)。这允许显著扩展集电极开路或漏极开路总线的范围,同时提供很陡的上升时间,超出诸如I2C协议技术规范之类的技术规范。这显著提高了半双工双向通信总线的电势,允许在较大长度上进行抗噪声传输。本发明的电路可以以分布的方式(例如,FPGA、分立元件、收发机)实现,或被制成单集成电路解决方案。

有利地,此处披露的通信系统允许双向通信总线被差分地驱动,这提供了以下优点:高抗噪声性、陡峭上升时间以及显著扩展的范围能力。此方法还实现了共模抗扰性。进而,这种实现方式在电气噪声环境中提供了更高可靠性的通信,提供了在例如物理上分离的框架(增大的范围)中的服务器硬件之间进行半双工集电极开路(或漏极开路)通信的能力,并通过允许一个主装置与位于更远处的多个从装置通信(而不是要求多个主装置在更高水平协调它们的通信),显著减小了典型服务器中的全部通信接口的所需成本和复杂性。

本发明可以被包括在具有例如计算机可用介质的制品(例如,一个或多个计算机程序产品)中。所述介质中包含例如计算机可读程序代码装置,用于提供和促进本发明的功能。所述制品可以被包括为计算机系统的一部分或单独销售。

此外,可以提供至少一个计算机可读的程序存储装置,该装置包含至少一个计算机可执行的指令程序以执行本发明的功能。

此处示出的流程图只是实例。在不偏离本发明的精神的情况下,此处所述的这些图或步骤(或操作)可以有多种变化。例如,可以按不同顺序执行步骤,或者可以添加、删除或修改步骤。所有这些变化都被视为要求保护的发明的一部分。

虽然参考示例性实施例对本发明进行了说明,但本领域的技术人员将理解,在不偏离本发明的范围的情况下,可以作出各种更改,并可用等效物替代其中的部件。此外,在不偏离本发明的基本范围的情况下,可以作出许多修改以使特殊情况或材料适合本发明的教导。因此,并非旨在将本发明限于作为构想的用于执行本发明的最佳方式而披露的特定实施例,而是旨在本发明将包括落入所附权利要求的范围之内的所有实施例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号