单线总线系统的制作方法

文档序号:6440374阅读:315来源:国知局
专利名称:单线总线系统的制作方法
技术领域
本公开大体涉及总线系统,更具体地,涉及单线总线系统。
背景技术
在计算机或处理器架构中,总线是在计算机内的计算机组件之间或在计算机之间传送数据的子系统。总线架构也用于多个设备的公共数据信令路径,而不是需要通信的每一个设备组之间的单独连接。换言之,总线结构可用于使一个或多个从属设备与一个或多个主控设备进行通信。

发明内容
下面描述一种单总线架构作为通过单线进行通信的系统,该单总线架构包括这一传输介质上的同步、控制、数据、时钟和电能。总线可以用于管脚或导线数目受限的操作或期望相对于抗扰度的高可靠性的操作。优选地,本公开的总线允许多个外部设备的连续操作,并且所有设备通过同一个时钟信号来同步。该单总线架构可以基于连续时钟源对导线、PCB布线或传输线进行充电,并允许可变数目的接收机(例如,从属设备)在指定时刻对线进行放电,以提供通信链路。如果系统时钟频率较低,则可以给系统添加总线保持器用来保持线上的电荷。


现在将参照附图,仅作为示例来描述本公开的实施例,在附图中图I是便携式电子设备的示意图;图2是便携式电子设备的框图;图3是单线总线系统的示意图;图4a是时序图的示意图;图4b是十六个时钟周期的示意时序图;图4c是单个时间帧的图示;图4d是Y字的一部分的图示;图4e至4g是示例时钟信号的示意;图5是时序图的示意图;图6是接口控制寄存器的不意图;图7是IRQ掩码的示意图;图8是状态寄存器的示意图;图9是如何传送同步字的示意图;图IOa是查验(ping)操作中X字的示意图;图IOb是ping操作中Y字的示意图;图Ila是用于读取操作的X字的示意图Ilb是用于读取操作的Y字的示意图;图12a是用于写入操作的X字的示意图;图12b是用于写入操作的Y字的示意图;以及图13a至13e是示例时间帧的示意图。
具体实施例方式本公开涉及用于在至少两个设备(例如主控设备和从属设备)之间进行通信的单总线架构。主控设备与从属设备之间的传输包括连续时钟系统和双向数据。在总线架构中,通常存在用于设备发信号通知下列信息的机制它们何时需要使用总线;以及在使用总线时,使用的性质(对于数据而言,例如,指令的传输、控制信息或信号的传输等)。然而,当大量异步处理试图有效地共享总线时,总线控制可能变得相当复杂。 系统通常需要多条导线和焊盘,这使得系统的成本较高。当这种系统与外部设备一同使用时,还需要多个连接器,这产生了较大的空间需求。参考图1,其中示出了便携式电子设备(例如,移动通信设备)的示意图。便携式电子设备10具有机身12,机身12包括显示屏14、键盘/键区16、一组按钮18、以及用户输入设备20 (例如,轨迹垫或轨迹球20)。将理解,用户输入设备20表示用户操作的指向或输入设备,可以呈现为操纵杆、涡轮、滚轮、鼠标、触垫等,或另一按钮。设备10还包括用于容纳插孔的至少一个端口,这在图I中未示出。参考图2,便携式电子设备10还包括控制器或处理器30,与集成在通信设备10内的芯片32(例如,头戴式耳机或耳机接口芯片)连接。芯片32包括开关矩阵和插孔配置检测部分34,集成有端口 36,用于容纳与缆线40 (例如,视频缆线或头戴式耳机缆线)相关联的插孔38。开关矩阵34包括多个单独的输入输出端口 42,用于利用连接在插孔38内的相应导线44来发送和接收信号。插孔38内的导线或线44代表信号线,例如音频和视频线。各条线的集合(典型地为4条,但是其他插孔配置也是可以的)允许在便携式电子设备与位于缆线末端的设备 (例如,头戴式耳机)之间进行通信。在一个实施例中,线44包括一对音频线44a和44b、 地线44c和麦克风线44d。然而,只需要其中的一条线用于通信,并由此作为单线总线系统 10的通信总线。其余的线可以用于其他功能。典型地,一条线可以用作地线,而剩余的两条线可以用于耳机输出。在另一配置中,一条线可以用作单线总线,一条线用作地线,第三条线可以提供电能,以及留下最后一条线用于其他目的(例如,分离的时钟线),用于传送视频信号或用于其他功能。在其他实施例中,单线总线可以用于设备之间(而不是便携式电子设备与头戴式耳机之间)的任意数字或模拟传输。参考图3,其示出了单线总线系统的示意图。单线总线系统50包括主控设备52, 例如便携式电子设备或便携式电子设备内的头戴式耳机接口芯片;以及从属设备54,例如头戴式耳机。尽管仅示出了一个从属设备,应当理解,多个从属设备可以连接到主控设备 52。主控设备52或从属设备54可以包括内置集成电路(I2C)接口 56,连接到基带处理器或其他移动处理单元。主控设备或从属设备还可以包括用于数字音频数据的I2C接口。I2C 接口 56和串行接口 58的输入或输入信号60可以包括外部时钟60a(EXT CLK)、I2C时钟 60b (I2C CLK)和I2C数据信号60c (I2C DAT),但不局限于此。低速串行接口 58的输出经由缆线62 (例如,同轴电缆)连接到从属设备54。如上所述,缆线62内的导线64之一用于从属设备54与主控设备52之间的通信,并且可以看作单线总线。本公开的一个优点在于利用这个架构,单线总线可以组合多个功能,包括在单个总线周期中传输时钟和数据二者,但不局限于此。在操作中,I2C接口 56获取数据,并通过指定的单线64将数据发送至从属设备54。在其他实施例中,单线总线可以经由到基带处理器或其他处理单元的连接来控制。主控设备52产生成帧信息,以允许从属设备54或多个从属设备与单线总线或通信总线64同步。在一个实施例中,帧长度由8位寄存器确定, 该8位寄存器设置了命令数据的每个块的起始之间的分隔距离。在另一实施例中,测量单位是半字节,等于4比特。最小帧长度由命令模型确定,并且在一个实施例中,最小帧长度可以是48比特,其中有28个半字节的缺省同步分隔值,从而使得帧长度为384比特。在操作中,通过单线总线64在主控设备52与从属设备54之间传送同步信号 (sync)、信息的控制信号、数据、时钟信号和电能。时钟信号可以用作内部电路(例如Σ-Δ 转换器)的采样时钟,或者可以用于复杂逻辑电路的连续操作。该系统的一个优点在于,可以减小供单线总线通信使用的组件的尺寸。例如,如果在图2的便携式电子设备中实现,则本公开的单线总线允许通过单线传送时钟信号和数据,这减小了芯片32中需要被占用的管脚的数目,从而使得其他管脚端口 42可以用于其他功能,或者减小总管脚数、硅面积或芯片成本。在一个实施例中,总线可以利用低-高-浮动的周期模式来实现,但是备选地可以实现为高-低-浮动模式。该浮动时段用于信令,而低-高(或高-低)时段用于传送电能以及用于时钟同步。由于总线浮动的时间段非常短,总线可以由于寄生电容而保持稳定, 或者可以通过在系统内包括总线保持器而在较长时间段内保持稳定。因此,如果静态卸载或加载高阻抗,则可以认为电荷以及由此总线上的电压是稳定的。在给定实现中,虽然可以利用延迟锁定环(DLL)或固定延迟值电路使用受控延迟来将外部设备同步至总线,但也可以使用低-高沿或高-低沿触发的锁相环(PLL)来进行同步。延迟单元可以包括两个电容器,这两个电容器由固定电流交流地充电,然后使用电容器上的充电电压来确定应对总线进行激活和采样的点。这两个电容器可以从一个固定时钟沿到第二固定时钟沿充电,并在开始这个周期之前放电。在一个实施例中,应当观测到最小总线电容和最小时钟频率(即,足够高),以便唯一地定义在浮动或三态时段期间对总线状态的读取。如果该总线系统在印刷电路板上实现,则可以使用较小电容器来提供大量电荷,以避免数据差错。在这种情况下,需要小而有限的总线电容,或备选地利用总线保持器(例如,使用两个背靠背相连的反相器)来实现小而有限的电容,以保持稳定的总线值。可以选择这种方法用于总线的低频操作,其中较小的泄漏电流可能慢慢地释放总线上剩下的所有电荷,但是总线保持器将使值保持稳定。该总线保持器一般在主控设备上实现,用以限制与其操作相关联的功率效率的损失,但是为了数据完整性也可以在从属设备中实现。此外,如果从属设备或主控设备想要发信号通知逻辑0,则该设备将使总线处于与之前的状态(即浮动状态)相同的状态,并使总线上具有相同的值,这将在下面进行讨论。 利用本公开的一个优点,当多个设备试图同时通过总线发信号通知或通信时,该总线结构减少或避免总线竞争、或拥塞,这是因为一旦总线已经放电,则后续设备检测不到该总线的放电并且不会出现总线冲突。参考图4a,其示出了主控设备与从属设备之间的通信或通信协议的时序图。在该图中,示出了单个时钟周期。在时钟周期开始时,总线上的信号较低,然后主控设备将其拉高。在该时间周期期间的某一点处,将该信号拉低或放电,以便为下一个时钟周期做准备。 在不需要传送信息的时段或时钟周期期间,可以通过将时钟信号设置为恒定高来使得总线变得空闲。备选地,总线上的信号可以维持为低,然后为了发信号通知从属设备想要与主控设备通信,或者为了通过总线传送数据,将该信号拉高。在一个时钟周期期间,在主控设备与从属设备之间传送一个比特。在时钟信号被拉高的时刻与时钟周期的结尾之间,存在三态区域,在该区域中,信号可以由主控设备或从属设备拉低。在一个实施例中,如果时钟信号由主控设备拉低,则主控设备发信号通知逻辑“1”,并且下一个时钟周期开始。如果时钟信号由从属设备拉低,则是从属设备发信号通知逻辑“I”。这将在下面利用总线通信的特定示例来详细描述。在一个示例操作模式下,在16个时钟周期上,主控设备在总线上传送诸如同步字之类的信息。如图4b示意性所示,其示出了主控设备在单线上传送同步字 111111111101100的示例时序图。因此,对于连接到总线的任意从属设备,这些设备可以经由该同步字锁定到总线上,以使得其内部状态机以及进而定时与主控设备同步。参考图5,利用图4a的通信协议示出了从属设备写入“0101”的时序图的示意图。 通常,按照4个时间间隔对总线进行时间复用。在操作中,总线在第一四分之一时钟周期处于低有效(从前一时钟周期),然后主控设备通常在第二四分之一时钟周期将其驱动到高有效。这一低-高转换可以用作连续采样时钟信号。然后,在该时钟周期的剩余部分使得该总线处于浮动状态,除非从属设备54或主控设备52为了发信号通知“I”而将总线拉低。 这典型地发生在后半个时钟周期,以使得该总线在该时钟周期的结尾是完全固定的。在时钟周期的结尾附近(在主控设备为了开始下一个时钟周期而开始将总线驱动为低之前或同时),对总线值进行采样。在一个实施例中,前半个时钟周期可以用于时钟信号,而后半个时钟周期可以用于数据传输。然而,时钟周期的其他划分也是可以的,例如,67%用于时钟以及33%用于数据传输。在图5的示例中,在时钟周期开始处,总线初始处于低有效。在特定时间段之后, 由主控设备将总线驱动为高有效。在从属设备想要传送被视为高有效的“O”时,从属设备不对总线进行任何动作。然后,在主控设备在下一个时钟周期之前将总线驱动为低有效之前,由主控设备和从属设备读取“O”值。在第二时钟周期期间,主控设备在特定时间段之后将总线驱动为高有效。在从属设备想要传送“I”时,从属设备将总线驱动或拉至低有效,然后由主控设备和从属设备读取该值。当总线为低有效时,主控设备不需要将总线驱动为低有效(尽管如图5所示,主控设备可以执行该功能)。在第三时钟周期中,在特定时间段之后,主控设备将总线驱动为高有效。当从属设备想要传送“I”时,从属设备将总线驱动或拉至低有效,然后由主控设备和从属设备读取该值。在第四时钟周期的起始处,总线处于低有效,并在特定时间段之后由主控设备将该总线驱动为高有效。当从属设备想要传送“O”时, 不对总线进行任何动作,直到该值被读取,然后主控设备将总线驱动为低有效,以为下一个时钟周期做准备。主控设备在特定时间段之后将总线拉低,以使得主控设备或从属设备不会采样到不正确的数据。当主控设备将总线拉高时,从属设备需要浮动的输出。当主控设备或从属设备进入三态时,这由上部(高)和下部(低)电平之间的虚线表示(即便实际电压将由被写入总线的先前值确定)。在优选实施例中,三态期间的输出电压由总线或线的电荷和寄生负载阻抗确定。在一些场景中,从属设备可能需要激活数据线(或总线)。为了以特定时间间隔激活总线,可以经由锁相环(PLL)、动态锁定环路(DLL)或延迟电路来实现本地时钟。由于主控设备用于控制定时,因此主控设备上不需要模拟受控延迟。在通过在查验(ping)操作期间将信号拉低来指示从属设备想要与主控设备进行通信之后,可以再经由读取或写入操作在从属设备与主控设备之间传送数据。主控设备也可以主动发起读取或写入操作。为了发起通信,主控设备和从属设备需要同步。在当前实施例中,在16比特的单个分组或时钟周期中传送控制字,例如,同步字、X字和Y字。如图4c示意性示出的,其示出了单个时间帧。主控设备与从属设备之间的通信发生在时间帧中。主控设备传送同步字使得物理上连接到总线的从属设备之一能够被锁定用于与主控设备进行通信。根据应用或总线的使用(或者用于音频传输,或者用于比特流传输),可以使用不同的同步字。选择同步字的固定部分,以使得该固定部分是音频或比特流中不常出现的比特模式,从而不会影响其用作同步字。作为示例,当总线用于音频传输时, 音频同步字的固定部分可以是0xB25(十六进制),以及当总线用于比特流传输时,比特流同步字的固定部分可以是OxFFE。参考图13a至13e,其中示出了各个帧结构的示例。图13a是命令分隔为O个比特的帧结构。图13b是命令分隔为84个比特的帧结构。图13c是命令分隔为112个比特的帧结构。图13d是3个比特流的比特交织处理类型的帧结构,以及图13e是7个比特流的比特交织处理类型的帧结构。在一个示例中,帧长度为384比特长,然而将理解,帧长度可以更短或更长,并且可以与总线所操作的时钟频率或过采样率更适于64以外的其他数的时钟频率相关联。例如,在使用(移动系统中通常使用的)19. 2MHz的时钟频率时,可以有利地使用50或100的过采样率,因为这允许支持48kHz的采样率,而不需要采样率转换方法。在这种情况下,可以使用400的帧长度。可以经由I2C接口,通过另一控制接口、或作为与数字信号处理器(DSP)或微处理器单元的连接的一部分来控制主控设备,这将提供使得主控设备Ping或执行读或写操作的必要信息。主控设备还产生将外部设备同步到总线所必需的成帧信息。在离开空闲操作之后,接口应进入Ping操作,这是因为在掉电之后从属设备没有锁定到总线。在同步字和X字的传送(下面将详细描述其操作)之间,从属设备或主控设备可以拾起(pick up)总线以传送随机数据或信息。该信息包括比特流或音频数据,但不局限于此。X字的传输允许主控设备和从属设备可以确定是否要执行任意特定功能,或者确定是否已经设置了任何中断。在传送了X字(假定没有设置任何中断)之后,可以通过总线传送其他数据,例如音频数据。然后传送Y字,Y字进一步概述了功能以及主控设备与从属设备之间用以确定总线上或者从属设备是否存在差错的其他信息。P ing和读或写命令可以不出现在同一个帧中,因为每一个帧由三个不同的功能定义。所有帧都从同步字开始,随后是X字,然后是Y字。在命令字之间,根据使用场景,可能存在分配用于数据传输的空闲空间。空闲空间的长度由同步分隔寄存器定义。X或Y字的传输可能导致产生ping操作、命令数据读取或命令数据写入。在一个实施例中,如果命令是命令数据读取,则从与主控设备对齐的从属设备中读取16比特字, 以及如果命令是命令数据写入,则向与主控设备对齐的从属设备写入16比特字。在一个实施例的操作中,当产生ping命令时,将分别如图IOa和IOb所示的X和Y 命令字(或寄存器)传送至单条总线。如果从属设备想要请求中断,则将“I”或高逻辑电平写入X15比特,以指示该中断。这可以用于延迟读取或写入操作,并在主控设备能够发信号通知其当前操作之前被写入。如果X14寄存器等于“1”,则发起“ping”操作。该比特由主控设备写入。Ping操作在下列情况下出现没有读取或写入命令在执行;或者X15的值=I以及X15 DELAY B5(IRQ 掩码)的值=1,即,禁用中断掩码或者未决的输入/输出操作由于识别出的从属中断而被延迟。X字的比特X13-X12在ping操作期间等于“11”,并且该字段的任意其他值被保留用于未来扩展。如果所读取的值不是“11”,则应忽略命令帧的内容(X和Y值)。ST13:ST0 比特应由任意外部设备设置为指定状态,并且位于χο-ll和Y0-15比特中。每一个设备可以利用三个不同的状态等级进行响应,或者可以选择完全不进行响应。这些比特可以基于中断掩码寄存器的设置而产生中断。除非主控设备(头戴式耳机芯片)已经激活了读取或写入命令,并且正在处理该命令,否则该ping命令始终是有效的。Ping命令是确定连接到总线的设备的状态的通用命令。为了与从属设备进行通信,主控设备传送从属设备(或多个从属设备)可以用于与主控设备同步其内部定时或时钟的同步字。在一个实施例中,同步字包括12比特常数和4比特伪随机值或寄存器值。从属设备使用该字的常数部分来降低似然性,避免或消除帧内的错误同步字或位置。例如,其他从属设备可以通过单线总线来传送数据,该数据看起来是同步字,但是由于它不是由主控设备传送的,因此它们实际上是错误同步字,并且应该被未连接的从属设备所忽略。伪随机寄存器还用于验证帧的起始位置。这允许更快的时间锁定(time-to-lock),并降低从属设备锁定于总线上的随机数据所产生的错误单字的可能性。典型地,从属设备可以在锁定到总线之前多次验证伪随机模型。一旦从属设备连接到总线,可以通过总线传送各种数据(例如,音频数据或比特流传输)。将同步字和X字的传输之间的时间段设置为特定值,并且在一个实施例中设置为 4比特或时钟信号的倍数,最大为4*255或1020个时钟信号。在传送X字时,每个已连接的从属设备可以通过查看X字来确定正在执行的操作的类型,例如读取或写入。主控设备可以通过检查X字的比特15来确定是否有任意一个从属设备已经发起了中断。如果存在差错或者如果从属设备之一需要协助或者不是以期望的方式进行操作或者具有重要的状态消息要发送,则可以发信号通知中断。X字代表时间帧中的控制字,并且确定是否有从属设备正在等待中断请求。X字的比特15或X15也确定用于读取或写入应用的动作,并且不影响ping操作正在进行的进程。 该比特也可以作为掩码,以使得其不会阻碍总线业务量。如果尚未设置X15比特,则主控设备和已锁定的从属设备从X字中读取信息,以确定总线上是否有任何动作,或者是否有任何动作在主控设备与特定从属设备之间的总线上执行。如果已经设置了 X15比特,并且已经检测并确认了中断,则由主控设备基于从I2C 传送(I2C transfer)接收到的数据来传送信号,如状态或ping请求、读取命令或写入命令。 然后,主控设备延迟当前操作,以确定是哪个从属设备发信号通知了该中断,并确定需要解决的问题。该信息可以在Y字中发现,Y字在特定时间段(相当于同步字与X字之间的时间段)之后传送。当发出数据读取命令时,将分别如图IIa和IIb所示的X和Y命令字(或寄存器) 传送至单条总线。如果从属设备需要请求通信中断,则可以通过激活X15比特或通过设置中断请求来延迟读取操作。如果没有从属设备激活该比特(‘I’表示激活),或者如果禁用了 IRQ掩码,则数据读取命令将继续。如果激活了延迟,则请求了中断的从属设备具有等于“10”或 “11”的状态等级,并且设置了相应的IRQ掩码比特。在延迟期间,该从属设备应将其状态寄存器的最高位的内容复制到总线上。如果没有中断,则将X14比特设置为“0”,表示读取或写入寄存器操作,并且将X13 比特设置为“I”表示读取操作。为了确认是否已经正确接收到消息,由从属设备写入确认消息比特。当在该帧中传送或传达命令字期间在总线上没有检测到差错时,将该比特的值设置为逻辑高,以使得从属设备存在,并且具有与主控设备已经写入的相同的地址。主控设备识别与其进行通信的从属设备,并因此可以有规律地确认该从属设备的地址,以降低似然性或差错,如果出现了差错(从总线读取的比特不同于所期望的),则主控设备报告总线差错。这避免了任意设备无意写入该总线,并且避免了总线差错。如果在读取应用期间数据传输发生损坏,则从属设备应发信号通知逻辑O。此外,从属设备设置确认比特,因为它是唯一知道是否出现差错 (例如,奇偶校验比特错误或者出现了总线差错)的设备。如果没有从属设备连接到总线, 则将借助于总线信令方案来从总线返回逻辑0,以向主控设备指出问题。当发出数据写入命令时,将分别如图12a和12b所示的X和Y命令字(或寄存器) 传送至单条总线。如果从属设备有重要的状态消息要发送或者已经发送了中断请求,则X15比特的目的是延迟写入操作。这通过激活X15比特来完成。如果没有从属设备激活该比特(‘I’ 表示激活),或者如果IRQ掩码被禁用,则数据写入命令可以继续。如果激活延迟,则利用与上述关于数据读取命令所公开的方式类似的方式来对待该延迟。通过寄存器比特X14:X13 =“00”来发信号通知数据写入命令操作的开始。Y14被定义为使得从属设备不会用主控设备所提供的控制来强加数据读取或写入命令。此外,在已经选择了数据读取命令时,从属设备可能不会强加进行数据写入命令。然而,从属设备可以(错误地或故意地)将读取或写入操作改变为Ping,或将写入命令改变为读取命令。这应当视为总线冲突。如果将X14比特设置为“0”,则不允许从属设备利用IRQ信息进行应答 (即,这表示读取/写入寄存器操作)。在数据写入命令的结尾,从属设备应该向主控设备确认它已经读取并接受了该消息。主控设备所寻址的从属设备将该比特设置为逻辑1,以指示不存在奇偶校验差错以及它已经接受了该消息。作出响应的从属设备必须被锁定到总线,并且具有与主控设备正在试图写入的设备相同的地址。如果已经出现了总线差错,并且由主控设备检测到该差错,则主控设备应当将总线差错比特设置为有效的,并再次尝试数据写入命令。在数据被写入至或读取自从属设备时,使用11个比特进行寻址,使用4个比特选择特定从属设备,以及保留7个地址比特用于选择还应当使用正在被写入的从属设备内的哪个寄存器、其他地址以及寄存器空间。X字的最后2个比特用于寄存器读取或写入命令。最后的控制字(Y)用于在主控设备与从属设备之间传送数据。在一个实施例中, 该数据可以是被写入至或读取自从属设备寄存器的数据(当没有发信号通知中断时)。在另一实施例中,该数据可以是来自从属设备的中断状态的轮询,以确定哪个从属设备设置了中断请求。数据长度是16比特,包括X寄存器的最后2个比特。Y寄存器的最后2个比特用于数据完整性。在其他实现中,可以使用其他数据长度。因此,如果在X15比特中没有设置中断,则可以轮询Y字或Y控制字,以确定上述所列出的信息。如果利用X15比特发信号通知了中断,并且启用了关联中断掩码比特,则主控设备利用Ping操作来轮询从属设备。这里,X和Y字用于确定哪一个从属设备发信号通知该中断。下面将关于从属设备的状态等级来对此进行更详细的描述。在X和Y字中,指定特定寄存器用于从属设备,以使得主控设备可以快速确定特定从属设备的状态等级。图 4d示出了 Y字的一部分的示意图。为了表示从属设备想要与主控设备进行通信,如上面所公开的,该从属设备可以产生中断(典型地在Ping操作期间),或者可以在任意时间帧期间激活X字的X15。然后, 该从属设备可以在Ping操作期间使用从属地址O来向主控设备发送中断请求(IRQ),这是因为该地址经由如图4b (图4b示出了连接到单线总线的5个从属设备的状态)示意性所示的单线总线被分配给了未指派的从属设备或基带芯片。尽管只示出了 5个从属设备,然而可以有任意数目的从属设备连接到总线。从属设备可以通过其2个比特而具有4个状态等级,即“00”、“01”、“10”和“11”。
“00”典型地表示从属设备没有锁定到单线总线。“01”表示从属设备已经锁定到总线,并且该状态可以用于检测从属设备何时从总线断开(如果有的话)。“10”表示该从属设备锁定到总线,但希望获得主控设备的关注。如果IRQ掩码是有效的,则该从属状态等级也将延迟读取或写入操作。“11”表示从属设备具有需要被立即处理的紧急状态,例如设备的温度过热或存在严重的欠压或过压,但不局限于此。如果IRQ掩码是有效的,则该状态等级将延迟读取或写入操作。因此,在感测到中断时,主控设备轮询Y字,以确定哪些从属设备需要关注。在图4d的示例中,从属设备4的状态等级为“10”,而从属设备5的状态等级为“II”。关于ping操作,以存储在X和Y字的XlI:X0&Y15: YO寄存器中的值更新状态寄存器。将读取自从属设备的最高值与从属状态寄存器进行比较,并且在读取的值高于当前从属状态寄存器值的情况下更新寄存器值。利用这种方式,最需要关注的从属设备接收到即时关注。在读取从属状态寄存器时,其值不会被后续Ping操作期间的覆写所清除。换言之, 将从属设备5的状态等级确定为需要即时关注,并将其状态等级写入状态寄存器。在已经完成ping操作之后,将更新从属状态寄存器,以反映所更新的寄存器值。图4e至4g示出了其他时钟信号选项或其他通信协议或如何通过总线来传送逻辑高和逻辑低。在图4e中,初始将时钟信号拉高(如图4a所示),然而这表示逻辑“I”信号, 以使得如果主控设备或从属设备之一想要在时钟周期的数据部分期间传送逻辑“0”,则必须拉低时钟周期。为了传送逻辑“I”信号,使时钟信号保持不变,直至靠近时钟周期的结尾 (在已经对总线进行采样之后)。在图4f中,初始将时钟信号拉低,以指示时钟信号的前沿。在本实施例中,为了主控设备或从属设备之一中的一个在时钟周期的数据部分期间发信号通知逻辑“1”,需要该设备将时钟信号拉高。如果主控设备或从属设备之一想要传送逻辑“0”,则使时钟信号保持不变,直至靠近时钟周期的结尾(在已经对总线进行采样之后)。在图4g中,初始将时钟信号拉低,以指示时钟信号的前沿。在本实施例中,为了主控设备或从属设备之一中的一个在时钟周期的数据部分期间发信号通知逻辑“0”,需要该设备将时钟信号拉高。如果主控设备或从属设备之一想要传送逻辑“ 1”,则使时钟信号保持不变,直至靠近时钟周期的结尾(在已经对总线进行采样之后)。当从属设备锁定至总线时,主控设备与从属设备进行通信,以获取从属设备的地址。初始地,所有从属设备以地址O开始,因此如果存在3个从属设备试图锁定至总线,则初始给每一个均赋予O值。然而,将理解,这些设备中的每一个都将具有与从属设备相关联的内部标识或唯一名称。典型地,从属设备的唯一名称是32比特或更多。在由主控设备发出PING命令之后,如果从属设备想要锁定到总线,则用条目 01 (指示希望锁定至总线的至少一个从属设备的存在)来填充X字的末尾。一旦这被主控设备识别出,则主控设备执行对试图连接到总线的设备的名称的读取,以便给已连接的从属设备赋予地址。将理解,如果当前没有从属设备连接到总线,则主控设备继续完成该帧, 然后在下一个帧周期发出另外的ping。如果存在至少一个从属设备,则主控设备读取期望被赋予唯一地址的所有从属设备的唯一名称的第一比特。然后,取回每一个从属设备的唯一名称的第一比特。如果它们是相同的,即全部为“ 1”,或者全部为“0”,则主控设备继续或轮询从属设备名称的下一比特。 如果存在“O”和“I”的组合,则由于总线的动态特性,主控设备在确定总线值时仅继续具有 “I”的唯一名称。因此,主控设备将“按字母顺序”查看唯一名称,其中给数字名称值较高的从属设备赋予的地址在给数字名称值较低的从属设备赋予的地址之前。基于二进制搜索, 按照排序确定从属设备名称的数值,将值读取为二进制数。如果仅存在单个“I”值,则主控设备将与该唯一名称相关联的从属设备指派为第一设备,并给其赋予唯一从属值1-13,然后返回至总线通信,其中该主控设备将在后续帧期间遇到X字中的另一 01,因此以类似的方式给下一个从属设备赋予与第一从属设备不同的从属设备地址。继续确定给哪些从属设备赋予从属地址1-13,直至没有未指派的从属设备附着于总线。由于每一个从属设备都具有唯一名称,因而可能不存在主控设备不知道哪一个从属设备与当前设备地址相关联的情形。在针对从属设备的后续读取和写入中,将所赋予的从属地址1-13用于标识这些设备。 如果从属设备发生硬件差错,并且重置,则将从属地址设置为缺省值O。在备选实施例中,可以逐比特发送控制字,以减小所经历的等待时间。图9示出了如何传送同步字的示意图。在本示例中,仅示出了同步字的头4个字母。为了使从属设备锁定至总线,在这种模式下检查同步字的每第N个比特。在图中,使用每第4个比特。其他控制字、X和Y可以利用类似的方式来传送。通过使同步字、X字和Y字与音频数据内容交织,可以减小数据字所经历的等待时间,这是因为控制字局限于单个比特的延迟。在这种模式下,从属设备需要以同步符号之间的一定间隔来搜索同步符号。为了降低从属设备的搜索引擎的复杂度,典型地使用有限数目的可变间隔,例如每个同步符号之间的4或8个比特的间隔。为了减小搜索时间,典型地重复控制符号,而其间没有额外的间隔。在使用控制比特之间的两个选定的间隔时,允许利用控制比特同时传送3个比特流和7个比特流。可以看出,可以在同步字传输之间在音频或数据信道(显示为1、2和3)上传送数据。将理解,可以使用任意数目的音频数据信道,可达控制字之间的4*255或1020个信道之多。在下面附图中,示出了用于从属设备或主控设备内的总线通信的各个寄存器的示意图。参考图8,其示出了状态寄存器的示意图。在操作中,该状态寄存器提供来自总线和控制IRQ的状态信息,并由主控设备或从属设备通过读取和写入操作来控制。该状态寄存器包括8个比特,表示为BO至B7。将理解,状态寄存器在被重置之后的缺省值为 “00000000”。这有助于控制主控设备与从属设备之间的数据通信。该状态寄存器内的每一个比特可以由主控设备的控制器来读取并使用。比特BO 代表帧完成(FRAME DONE)比特,比特BI代表RD比特,比特B2代表WR比特,比特B3代表附着(ATTACHMENT)比特,比特B4代表状态O比特,比特B5代表状态I比特,比特B6代表 IO差错比特,以及比特B7代表总线差错比特。更具体地,总线差错比特(B7)表示已经出现非法总线操作,并且是高有效的。当总线上的值不同于主总线写入操作期间的值时(例如,从属设备与同步模型冲突),可以检测到该条件。一旦检测到非法总线操作,则在读取寄存器之前保持设置。如果观测到非法总线操作,则产生中断,并启用相应的IRQ掩码比特(即,设置为高)。IO差错比特(B6)表示读取/写入操作期间的差错。如果从属设备没有确认读取 /写入操作(即,读取/写入命令中的确认比特YO没有被激活/为“I”),则将置位该比特。 该比特在读取状态字时重置。将该比特作为WR和RD比特的组合来计算,参见其描述。状态I和状态O比特给出了从附着于总线的任意设备读取的最高状态等级。如果任意从属设备的状态等级高于这两个比特所指示的,则将在下一个Ping操作期间将其更新为该新值。这两个比特将继续更新为所读取的任意更高的状态等级,直至该寄存器被读取。对状态寄存器的读取不会清除该字段,但是它将在下一Ping操作期间被更新为最高状态等级。寄存器在每一Ping操作期间更新并在上电时重置,因此始终有效。作为示例,寄存器值在重置后为“00”,而在设备已经附着于总线之后为“01”。然后,假设某一设备在ping 帧期间需要紧急关注为信号“11”。随后将状态寄存器更新为该值。在读取了状态寄存器之后,该值仍为“11”。假设在下一帧期间最高的设备等级为“10”。在ping操作结束时,将状态寄存器更新为该新值(“10”)。这使得在从属设备确认时首先清除差错。如果已经启用了中断掩码,并且作为从属设备请求关注的结果已经产生了中断,则在读取状态寄存器时将清除IRQ线。如果从属设备仍然请求关注,并且设置了中断掩码比特,则在下一 Ping 操作期间将产生新的中断。在正常操作期间,对该字段的读取将返回“01”。也就是说,一个或多个设备附着于总线,并且不需要特别服务。该字段可以用于确定是否有设备附着于总线,或利用低优先级(状态等级“10”)或高优先级(状态等级“11”)在设备之间进行区分。如果没有设备附着于总线,则将返回“00”。附着比特(B3)是高有效的,并且将指示从上一次ping操作开始是否有设备断开或连接至总线。该值可以通过在Ping操作期间将来自X和Y字的设备状态与先前值进行比较来发现。如果任意设备的状态已经从{ “01”,“10”,“11”}变到“00”(S卩,设备已经从总线断开),则该信号将变为高。如果状态已经从“00”变到{ “01”,“10”,“11”(即,设备已经附着于总线),则该信号将为高。该附着比特将在设置之后保持为高(“I”),直至在被清除的那一刻读取了状态寄存器。在任意其他情况下,信号将保持为低。这将指示任意设备从上一次ping操作起的附着状态的改变。在每一个ping操作期间进行比较。通过启用相应的IRQ掩码比特,可以导致作为设备被附着至总线或从总线分离的结果而产生IRQ(将外部SPARK IRQ线拉低)。该比特在重置之后的缺省值为“O”。WR比特(B2)表示未决的写入操作,并且为高有效。寄存器写入操作将通过I2C总线先写入到数据寄存器然后写入到地址寄存器开始。在更新了地址寄存器的最高位字之后,ACT_WR比特将变为高,并且将在下一帧开始执行写入寄存器操作的尝试。如果没有被设备中断所延迟,写入操作将继续,否则它将被延迟到下一帧并且再次尝试。在写入操作完成之后,在Y字的最后一个比特之后立即再次重置该比特。如果从属设备没有确认写入操作,则将设置ERR_WR比特,但是ACT_WR比特仍然为低。当ACT_WR比特为高时,在其返回至低之前不应发起新的读取/写入操作。RD比特(BI)表示未决的读取操作,并且为高有效。寄存器读取操作将通过I2C总线写入到地址寄存器开始。在更新了地址寄存器的最高位字之后,ACT_RD比特将变为高, 并且将在下一帧尝试执行读取寄存器操作。如果没有被设备中断所延迟,读取将继续,否则它将被延迟到下一帧并且再次尝试。在读取操作完成之后,在Y字的最后一个比特之后立即再次重置该比特。如果从属设备没有确认读取操作,则将设置ERR_RD比特,但是ACT_RD 比特仍然为低。当ACT_RD比特为高时,在其返回至低之前不应发起新的读取/写入操作。帧完成比特(BO)表示帧已经完成,并且为高有效。该比特被设置在帧的最后一个比特。这可以用于将操作与总线的基本定时同步。当设备正在充电并且没有通信是有效的时,该比特仍然有效,即帧计数器始终在内部运行。该比特将继续设置,直至状态寄存器被读取。该比特可以用于表明Ping操作是否已完成或者用于基本定时,例如,在开始通信之前对特定数目的帧进行计数,以确保所有设备都被充电。在启用了相应的IRQ掩码比特时, 将在每一帧结束时产生中断。参考图7,其示出了 IRQ掩码寄存器的示意图。在操作中,掩码寄存器提供与在总线系统操作期间出现的任意差错或事件相关的信息。该掩码寄存器包括8个比特,表示为 BO 至 B7。状态寄存器内的每一个比特由主控设备或从属设备读取或写入。比特BO代表帧完成(FRAME DONE)比特,比特BI代表RD比特,比特B2代表WR比特,比特B3代表附着比特,比特B4代表关注(ATTENTION)比特,比特B5代表X15延迟比特,比特B6代表IO差错比特,以及比特B7代表总线差错比特。更具体地,总线差错比特(B7)用于启用或禁用I2C中断。当被设置为高时,该比特将基于状态寄存器中的活动总线差错比特来启用中断。该中断自身通过分离的有效低电平输出线发信号通知,并在读取状态寄存器时被清除。IO差错比特(B6)用于启用或禁用I2C中断。当被设置为高时,该比特基于状态寄存器中的有效IO差错比特来启用中断(即,读取/写入命令中的确认比特YO未被置位)。通过有效低电平输出线发信号通知该中断,并在读取状态寄存器时清除该中断。X15延迟比特(B5)用于在从属设备请求关注时启用或禁用读取和写入操作的延迟。当被设置为高时,该比特将基于在X15时隙期间从总线读取的值来启用X15延迟操作。 在从属设备的状态为“10”或“11”时,该从属设备将激活X15以发信号通知对于关注的需求,即从属设备应在X15时隙期间复制其状态寄存器的MSB。如果当前操作是读取或写入操作,则该操作将被延迟直至下一帧,并将被Ping操作所代替。在下一个帧的起始处,将重新尝试读取或写入操作。无论X15比特的值如何,Ping操作将不变地继续。如果任意设备要求关注,则通过启用X15延迟比特,将保证至多一个帧的等待时间。在读取设备状态的同时,命令字之外的数据业务仍然可以继续。如果IRQ掩码X15比特为无效(低),则任意读取或写入处理将继续,而不管X15比特的值。在IRQ出现时,主控设备应当用软件清除该比特,以免阻碍对寄存器的读取或写入。关注比特(B4)用于在ping操作期间基于从属设备关注请求来启用或禁用I2C中断。当被设置为高时,该比特将基于“10”或“11”的从属状态等级来启用中断。换言之,在启用IRQ掩码比特时,只要从属设备请求关注,主控设备就将产生中断。通过有效低电平输出线发信号通知该中断,并在读取状态寄存器时清除该中断。如果在下一Ping操作期间从属设备仍然请求关注,并且关注比特仍然被启用,则将产生新的中断。在出现IRQ时,主控设备应当用软件清除该比特,以免产生多个中断。附着比特(B3)用于启用或禁用I2C中断。当被设置为高时,该比特将基于状态寄存器的改变来启用中断。通过有效低电平输出线发信号通知该中断。只要STA1:STA0字段由于从属设备附着至总线或从总线分离而改变,则产生中断。这可以发生在从属设备改变值并且已经通过PING操作读取该值的情况下。如果设备状态改变并且启用了 IRQ掩码设备状态比特,则产生中断。在读取状态寄存器时清除该中断。如果所读取的状态值指示需要主控设备干涉,则主控设备的控制器的正常操作是从从属状态寄存器读取回设备状态值,以发现中断源。在完成之后,可以通过将寄存器控制命令写入所涉及的从属设备来执行任何必要的动作。WR比特(B2)用于在完成写入之后启用或禁用I2C中断。当被设置为高时,该比特将基于有效写入状态的完成来启用中断。通过有效低电平输出线来发信号通知该中断。在读取状态寄存器时清除该中断。可以通过激活另外的比特或者通过同时将ACT_RD和ACT_ WR寄存器比特均设置为有效以指示IO操作的完成,来检测中断源。RD比特(BI)用于在完成读取之后启用或禁用I2C中断。当被设置为高时,该比特将基于有效读取操作的完成来启用中断。通过有效低电平输出线来发信号通知该中断。在读取状态寄存器时清除该中断。最后,基于帧的完成,使用帧完成比特(BO)来启用或禁用I2C中断。当被设置为高时,该比特基于内部帧计数器的完成来启用中断。通过有效低电平输出线来发信号通知该中断,并在读取状态寄存器时清除该中断。主控设备中的内部帧计数器在充电模式期间仍运行。本公开的一个优点在于,总线相对于同时发信号通知的多个源具有鲁棒性,并且对于时间约束实现问题确有改进,在使用开放式集电极和开放式漏极类型时,发信号通知的速率是功耗与抗扰度之间的折衷。
本公开的上述实施例仅作为示例。在不背离所附权利要求所限定的本公开的范围的前提下,可以实现具体实施例的改变、修改和变型。
权利要求
1.一种单线总线架构,包括单线总线;主控设备,与单线总线相连;至少一个从属设备,与单线总线相连;通信协议,在单线总线上实现,以实现所述主控设备与所述至少一个从属设备之间的通信;其中所述单线总线在主控设备和与主控设备通信的所述至少一个从属设备中的一个从属设备之间、在一个时钟周期内传送连续时钟信号和双向数据。
2.根据权利要求I所述的单线总线架构,其中所述连续时钟信号与所述双向数据之间的定时是由所述时钟周期的前沿和后沿定义的。
3.根据权利要求2所述的单线总线架构,其中使用特有的时隙来传送所述连续时钟信号和所述双向数据。
4.根据权利要求I或3所述的单线总线架构,其中将总线信号拉高表示所述连续时钟信号的前沿。
5.根据权利要求4所述的单线总线架构,其中在指派给双向数据的时隙中,将总线信号拉低表示逻辑数据值“ 1”,而使总线信号保持不变表示逻辑数据值“0” ;或者在指派给双向数据的时隙中,将总线信号拉低表示逻辑数据值“0”,而使总线信号保持不变表示逻辑数据值“I”。
6.根据权利要求I或3所述的单线总线架构,其中将总线信号拉低表示所述连续时钟信号的前沿。
7.根据权利要求6所述的单线总线架构,其中在指派给双向数据的时隙中,将总线信号拉高表示逻辑数据值“ I ”,而使总线信号保持不变表示逻辑数据值“0” ;或者在指派给双向数据的时隙中,将总线信号拉高表示逻辑数据值“0”,而使总线信号保持不变表示逻辑数据值“I”。
8.根据前述任一权利要求所述的单线总线架构,其中所述至少一个从属设备之一是头戴式耳机。
9.根据权利要求I所述的单线系统,其中,所述主控设备驱动所述连续时钟信号,并针对双向数据时隙,使总线处于浮动或弱驱动状态。
10.根据前述任一权利要求所述的单线总线架构,其中数据帧包括控制字的集合。
11.根据权利要求10所述的单线总线架构,其中所述控制字的集合包括至少一个同步字、和用于控制附着于总线的设备的字;以及优选地,用于同步的同步字包括常数值和伪随机部分。
12.根据权利要求10所述的单线总线架构,其中以预定顺序分别传送控制字的比特;以及优选地,连续传送控制字的比特,并在控制字之间传送音频数据。
13.一种单线总线架构,包括单线总线;主控设备,与单线总线相连;至少一个从属设备,与单线总线相连;其中所述主控设备和所述至少一个从属设备通过时间复用总线周期的集合来进行通信,每一个总线周期包括时钟信号部分、以及所述主控设备与所述至少一个从属设备之间的双向数据传输部分。
14.根据权利要求13所述的单线总线架构,其中部分总线周期用于传送连续时钟信号,而所述总线周期的剩余部分用于双向数据传输;以及优选地,其中在特定时间段之后,所述主控设备或所述至少一个从属设备对时钟信号进行放电;以及优选地,其中在总线周期内的特定时间段之后,所述主控设备或所述至少一个从属设备读取总线状态——放电状态或充电状态。
15.根据前述任一权利要求所述的单线总线,其中所述单线总线用于给从属设备供电。
全文摘要
本公开提供了一种单线总线架构,包括单线总线;主控设备,与单线总线相连;至少一个从属设备,与单线总线相连;通信协议,在单线总线上实现,并由所述主控设备和所述至少一个从属设备采用;其中当所述至少一个从属设备中的一个从属设备希望与所述主控设备通信时,所述至少一个从属设备中的所述一个从属设备在时钟信号的三态阶段期间对该时钟信号进行放电;以及所述单线总线在所述主控设备和与所述主控设备通信的所述至少一个从属设备中的所述一个从属设备之间传送时钟信号、电能和数据。
文档编号G06F13/40GK102591834SQ20111040488
公开日2012年7月18日 申请日期2011年12月1日 优先权日2010年12月2日
发明者杰恩斯·克里斯蒂安·波尔森 申请人:捷讯研究有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1