一种内部集成电路总线时序调节方法、相应装置及系统的制作方法

文档序号:6480083阅读:529来源:国知局
专利名称:一种内部集成电路总线时序调节方法、相应装置及系统的制作方法
技术领域
本发明涉及电子通信技术领域,具体涉及一种fc总线时序调节方法、相应装置及
系统。
背景技术
内部集成电路12<:总线(Inter-Integrated Circuit Bus)是由飞利浦PHILIPS公 司开发的两线式串行总线,用于连接微控制器及其外围设备。"C总线最初是为音频和视频 设备开发的,如今主要用于服务器管理中使用。采用"C总线可以实现多个设备之间的通 信,便于对设备的控制、访问,因此,广泛应用于电子通信技术领域。 12<:总线是由串行数据(SDA,Serial Data)总线和串行时钟线(SCL, SerialData) 组成,设备之间传输的数据是承载在SDA上,I2C总线上传输的的信号的种类有三种,分别 是开始信号、结束信号和应答信号。其中,开始信号是指SCL为高电平时,SDA从高电平 跳变为低电平,此时,12C总线两端的设备中其中一个设备向另一个设备传输数据;结束信 号是指SCL为低电平时,SDA从低电平跳变为高电平,此时,12(:总线两端的设备中其中一 个设备结束向另一个设备传输数据;应答信号是指I2C总线两端的设备中其中一个设备接 收到8比特bit数据后,向另一个设备发出低电平脉冲,作为该设备接收到8bit数据的响 应通知给与之对应的设备。 在I2C协议中规定在SCL为高电平时,SDA有高低电平的跳变,则表示I2C总线两 端的设备中, 一端向另一端发送读/写操作的开始/结束命令。在一次读/写操作的开始 和结束之间,SDA上的电平变化时,要求SCL上的电平为低电平,这是正确的I2C时序,如图 l所示。否则,接收设备认为收到了错误的信号。通常I2C总线的时序错误发生在SCL的下 降沿,即SCL上的电平处于下降沿,而SDA上的电平也处于高低电平的跳变状态,此时,I2C 总线上的时序是错误的时序,如图2所示。 为了减少fC总线上的时序发生错误,现有技术中的做法通常有两种,一种是如图 3所示,在设备A与设备B之间的I2C总线的SCL和SDA总线上,分别接有对地电容C1、C2, 通过调节SCL和SDA上接有的对地电容的容值,使得SDA的下降沿变缓和/或SCL的下降 沿变陡,增加I^时序裕度。需要说明的是时序裕度可以理解是SCL处于下降沿与SDA上的 电平开始跳变之间的时间间隔,时间间隔大,则出现错误时序的几率小,反之,时间间隔小, 则I2C总线上的时序发生错误的几率大。采用这种方法来实现对I2C总线的时序的调节的 缺点是调节的范围小,通常不能达到完全避免I2C总线上的时序错误的目的。
另一种调节I2C总线上的时序的方法是在通信的两个设备之间插入隔离器件,这 种隔离器件对"C总线上的时序调节的作用是相当有限的,即调节的范围也非常小,使得调 节I2C总线上的时序错误效果不明显。

发明内容
本发明实施例提供一种I2C总线时序调节方法、相应装置及系统,可以根据设计需要,选择需要调节范围,能够有效的减少I2C总线上时序错误。 本发明实施例提供了一种内部集成电路I2C总线时序调节方法,包括 接收串行时钟SCL总线上的信号和串行数据SDA总线上的信号; 根据所述接收到的SCL总线上的信号和SDA总线上的信号,判断I2C总线上信号
传输的方向; 当SCL总线上的信号处于每个下降沿时,根据所述判断出的方向,将SDA总线上的 信号延迟时间T输出; 根据所述判断出的方向,将SCL总线上的信号输出。
本发明实施例还提供了一种可编程逻辑装置,包括 接收单元,用于接收串行时钟SCL总线上的信号和串行数据SDA总线上的信号;
判断单元,用于根据所述接收到的SCL总线上的信号和SDA总线上的信号,判断 I2C总线上信号传输的方向; 延迟单元,用于当SCL总线上的信号处于每个下降沿时,根据所述判断出的方向, 将SDA总线上的信号延迟时间T ; 发送单元,用于根据所述判断出的方向,将SDA总线上延迟时间T后的信号和SCL 总线上的信号输出。 本发明实施例还提供了一种通信系统,包括 第一设备,用于在串行时钟SCL总线上发送信号,在串行数据SDA总线上发送信 号; 可编程逻辑装置,用于接收所述第一设备在串行时钟SCL总线上发送的信号,在 串行数据SDA总线上发送的信号,根据所述接收到的SCL总线上的信号和SDA总线上的信 号,判断I2C总线上信号传输的方向,当SCL总线上的信号处于每个下降沿时,根据所述判 断出的方向,将SDA总线上的信号延迟时间T,发送SDA总线上延迟时间T后的信号和SCL 总线上的信号给第二设备; 第二设备,用于接收所述可编程逻辑装置发送的SDA总线上延迟时间T后的信号 和SCL总线上的信号。 本发明实施例采用可编程逻辑器件根据传输在其中的SCL信号和SDA信号,判断 出信号传输的方向,将SCL信号不做处理输出,而在SCL信号处于下降沿时,延迟时间T将 SDA信号的输出,从而保证了在SCL信号在跳变时,SDA信号上的输出时不变的,因此,减少 了 It总线上的时序错误。保证了 fc总线上信号传输的高效、准确。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是 本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还 可以根据这些附图获得其他的附图。 图1是通过I2C总线传输信号时正确的时序图;
图2是通过I2C总线传输信号时错误的时序图;
图3是现有技术中调节I2C总线上传输的信号时序的系统简 图4是本发明实施例一提供的 图5是本发明实施例二提供的 图6是本发明实施例三提供的 图7是本发明实施例四提供的 图8是本发明实施例五提供的
种I2C总线时序调节方法流程简图; 种I2C总线时序调节方法流程简图; 种可编程逻辑装置的逻辑组成图; 种可编程逻辑装置的逻辑组成图; 种通信系统的逻辑组成图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。 本发明实施例提供一种I2C总线时序调节方法及可编程逻辑装置,以下分别进行
详细说明。 实施例一 本发明实施例提供一种I2C总线时序调节方法,为了便于理解本发明实施例提供 的方法,首先,对执行该方法的系统中各设备做简要说明,所述系统至少包括两个通过I2C 总线进行通信的设备,由于i2c总线是一种串行总线,在同一时刻只有一个设备发送数据给 另一个设备,即在一个时刻SDA上传输的数据只有一个方向。为了能够保证I2C总线上的 时序正确,在本发明实施例中在"C总线上增加一个可编程逻辑器件,该可编程逻辑器件控 制SDA输出时序,达到减少l2C总线上时序错误的目的。为了便于以下文字的说明,将采用 I2C总线进行通信的至少两个设备分别称为A设备和B设备。 下面对该可编程逻辑器件执行一种It总线时序调节方法做说明,参加图4所示, 该方法包括 步骤1 :接收I2C总线上的信号,即接收SCL总线上的信号和SDA总线上的信号;
步骤2 :根据接收到的SCL总线上的信号和SDA总线上的信号,判断I2C总线上信 号传输的方向; 其中,步骤2中判断出fC总线上信号传输的方向具体可以是根据fC协议,分析 接收到的SCL总线上的信号和SDA总线上的信号,获取I2C总线上信号传输的方向。
步骤3 :当SCL信号的每个下降沿时,根据判断出的信号传输的方向,将SDA上传 输的信号延迟时间T输出; 其中,延迟时间T远远小于I2C总线周期,通常是几十纳秒(ns),设计者可以选择 具体的T的大小。 步骤4 :将SCL总线上的信号输出。 通过步骤1至步骤4的说明,该方法中可编程逻辑器件通过传输在其中的SCL信 号和SDA信号,判断出信号传输的方向,将SCL信号不做处理输出,而在SCL信号处于下降 沿时,延迟时间T将SDA信号的输出,从而保证了在SCL信号在跳变时,SDA信号上的输出 是不变的,因此,减少了 I2C总线上的时序错误,保证了 I2C总线上信号传输的高效、准确。
实施例二 本发明实施例提供一种I2C总线时序调节方法,包括
7
步骤A1 :接收SCL总线上的信号和SDA总线上的信号、输出SCL信号; 其中,需要说明的是,执行步骤A1的装置可以是一个可编程逻辑器件,该可编程
逻辑器件此时相当于传输线,且不知道SDA和SCL上传输信号的方向。该逻辑器件对于SCL
总线上传输的信号相当于通路,除了检测SCL上的信号,对SCL上的信号可以不做任何处理
直接输出。 步骤A2 :判断是否接收到12C开始信号,如果是,进入步骤A3 ; 其中,步骤A2中该逻辑器件的一个I2C总线接口与一个设备的I2C总线接口相连,
逻辑器件中的另一个I2C总线接口与另一个设备的I2C总线接口相连,即该可编程逻辑器件
位于两个通过I2C总线通信的设备之间,用于调整I2C总线时序。该可编程逻辑器件分别
判断两个I2C总线接口上的SDA和SCL上传输的电信号的关系,判断是否接收到开始信号,
即SCL为高电平,SDA由高电平向低电平跳变,此时表示一个设备向另一个设备开始传输数据。 还需要说明的是,步骤A2中逻辑器件执行判断是否接收到I2C开始信号的具体方 法是判断在SDA为下降沿时,SCL上的电平是否为高电平,如果是,则判断出该I2C总线接 口接收到I2C开始信号。 步骤A3 :根据接收到的I2C开始信号,获取SCL和SDA上传输的信号方向,即信号 是从接收到I2C开始信号的I2C总线接口输入该逻辑器件,从另一个I2C总线接口输出该逻 辑器件; 为了便于以后的说明,此处将输出信号的设备称为主机,将接收信号的设备称为 从机。即此时SCL和SDA上传输的信号的方向是从主机到从机。 步骤A4 :收到I2C开始信号之后,记录SCL总线上的时钟数目,具体可以是记录的 上升沿数目和下降沿数目; 步骤A5 :SCL总线上前8个下降沿时,将SDA总线上从主机到从机的方向上接收到 的数据延迟时间T后输出给从机; 事实上,也可以对SCL总线上的每个时钟信号延迟时间T'后输出,通常延迟时间 T'小于该装置对SDA总线上的信号延迟的时间T,才可以达到较好的时序输出。例如T'为 30ns, T为50ns,而T'和T都远远小于SCL上的时钟周期。 其中,还需要说明的是,步骤A5中延迟的时间T、 T'通常是预先配置的,可以是对 该逻辑器件输入预先写好的代码,该代码中规定对数据的延迟时间为T、T', T和T'的单位
通常是纳秒数量级。 步骤A6 :判断SCL的上升沿数目是否为8,如果是,进入步骤A7,如果否,进入步骤 A4 ; 步骤A7 :获取SCL在第8个上升沿时,SDA上的信号值; 其中,步骤A7中SDA上的信号为高或者地电平,通常高电平代表读操作,低电平代 表写操作。还需要说明的是,在I2C总线上信号是以字节的形式传输的,即SCL上的8个时 钟周期可以传输一个字节,通常传输的第一个字节的前七位传输的是从机的地址,两个通 过lt总线进行传输信号的设备之间每次传输的字节数量是不受限制的,但是,每个字节后 都需要有一个响应信号ACK,主机根据接收到的ACK信号执行相应的操作。还需要理解的 是,主机在发送完每个字节后,释放SDA总线,从机发送ACK信号占用SDA总线。通常,从机
8发送ACK信号为低电平信号给主机,作为主机可以发送下一个字节的通知。 步骤A8 :根据SCL在第8个上升沿时SDA总线上的信号,获取下一字节的传输方
向; 通常,步骤A8中获取的传输方向包括如果步骤A7中获取到的SDA为高电平,则 可编程逻辑器件判断出该字节是主机要求对从机进行读操作,则判断SDA总线上下一个字 节的传输方向是由从机到主机;如果步骤A7中获取的SDA为低电平,则可编程逻辑器件判 断出该字节是主机要求对从机进行写操作,则判断SDA总线上下一个字节的传输方向是由 主机到从机。 还需要理解的是,在I2C总线上传输的信号,在一次开始信号和一次结束信号之 间,SCL总线的传输方向是不变的,一直为根据开始信号而判断出的方向,例如本实施例中, SCL的方向一直为主机到从机的方向,直到收到结束信号后,该可编程逻辑器件再重新判断 SCL的方向。 步骤A9 :将SCL总线上第9个下降沿时,SDA总线上从从机到主机的方向上,接收 到的数据延迟时间T输出给主机; 通过以上步骤A1至步骤A9的说明,该方法中可编程逻辑器件根据接收到的SDA 上信号和SCL上的信号,判断出信号传输的方向,将SDA信号的跳变时间延迟到SCL的下降 沿之后,减少I2C总线上时序错误,可以实现主机给从机发送读或写操作命令时,接收端的 从机可以接收到正确的命令。
该方法还可以包括 步骤A10 :将记录的SCL的时钟数目清零,从1开始再记录; 步骤All :根据步骤A8中获取的下一个字节的传输方向,将重新记录的SCL总线 上前8个下降沿时,SDA总线上接收到的数据延迟时间T后输出; 步骤A12 :在重新记录的SCL总线上第9个下降沿时,将SDA总线上传输方向与步 骤A8中获取的传输方向相反的方向上的信号,延迟时间T输出; 其中,需要说明的是,在步骤A11之后,即可编程逻辑器件根据判断的下一个字节 的传输方向,将8个字节的数据传输完毕后,在第9个时钟时,接收到字节的一端设备应该 发送ACK信号,因此,在第8个时钟下降沿到第9个时钟下降沿的这段时间,SDA总线上数 据的传输方向是与前8个时钟的传输方向相反的。因此,在步骤A12中,在第9个时钟下降 沿时,根据以上说明中的方向,获取的SDA上的信号,将该信号延迟时间T后按照该方向输 出。 步骤A13 :获取重新记录的SCL总线上第9个上升沿时,SDA的总线上传输方向与 步骤A8中获取的传输方向相反的方向上的信号的值; 其中,步骤A12和步骤A13中,SCL总线上第9个时钟周期时(第9个时钟周期包 括第9个上升沿和第9个下降沿时刻)SDA上传输的信号为ACK信号,该ACK信号的传输方 向与步骤A8中判断出的字节的传输方向相反。 步骤A14 :根据步骤A13中获取SDA总线上信号的值,判断是否继续传输字节,如 果是,进入步骤A10,如果否,进入步骤A15 ; 其中,需要说明的是,以上步骤A10至步骤A14是实现了主机与从机直接传输第二 个字节的数据,由于在主机和从机之间,在一次开始信号和一次结束信号之间可以传输多个字节,字节的数目不受限制。但是,由于12C协议规定,每次传输一个字节后,接收端要发 送ACK响应给发送字节的一端。因此,对于传输多个字节的情况,需要执行步骤A10至步骤 A14的循环操作。 还需要理解的是,步骤A14中判断是否继续传输字节具体可以是根据步骤A13中 获取SDA总线上信号的值,判断是否继续传输字节,通常,ACK信号为低电平时,认为主机可 以继续传输信号,即如果信号值为0,则进入步骤A10,如果信号值为1,则进入步骤A15。
步骤A15 :判断是否接收到It结束信号,如果是,则可以认为该方法结束。
其中,步骤A15中判断是否接收到It结束信号具体可以是判断该可编程逻辑器 件在设置的时间内是否接收到"C结束信号,如果是,直接结束操作,如果没有在设置的时 间内接收到i2c结束信号,则在超过设置的时间后也结束流程。 需要说明的是,在步骤A1至步骤A15中,可编程逻辑器件不对SCL总线上传输的 信号做任何处理,即从该器件的一个端口接收到SCL总线上的信号,又从该器件的另一个 端口将该SCL总线上的信号传输出去,在一次I2C开始信号和一次I2C结束信号之间,SCL总 线上传输的信号的方向是不变的。该可编程逻辑器件对SCL总线上的信号主要是做检测, 根据SCL总线上的时钟信号,作为判断SDA总线上信号传输方向的判断依据,根据判断出的 SDA总线上信号传输方向,对SDA总线上的信号做延迟,从而更智能,更高效的保证I2C总线 上的时序的正确性。 通过以上步骤A1至步骤A15的说明,可以得出该可编程逻辑器件根据接收到的 SCL和SDA总线上的信号,判断出SCL和SDA总线上信号的传输方向,根据判断出的SCL和 SDA总线上信号的传输方向,将SCL在下降沿时,SDA总线上传输的信号延迟时间T,从而达 到减少"C总线时序错误的目的。该可编程逻辑器件可以容易的到达设计要求所要延迟的 时间T。通常延迟的时间是纳秒ns级。还需要说明的是,通常I2C总线的频率是400KHz, 周期为2. 5us,而对可编程逻辑电路的要求是对SDA总线上的数据延迟时间为几十纳秒。
采用该方法的另一个优点是,可编程逻辑器件对时序的调节灵活,只需要改变逻 辑代码就可以调节延迟时间,且调节的范围比较大,不用修改硬件。
实施例三 本发明实施例提供一种可编程逻辑装置,参见图6所示,该可编程逻辑装置包括 接收单元11、判断单元21、延迟单元31和发送单元41。 其中,接收单元11用于接收I2C总线上的信号,即接收SCL信号和SDA信号;
判断单元21,用于根据接收到的SCL信号和SDA信号,判断fC总线上信号传输的 方向; 延迟单元31,用于当SCL信号处于每个下降沿时,根据判断出的方向,将SDA上传 输的信号延迟T; 发送单元41,用于将SCL上的信号不做处理输出,和将延迟时间T后的SDA总线上 的信号输出。 通过以上对本发明实施例提供的一种可编程逻辑装置的说明,该装置通过传输在 其中的SCL信号和SDA信号,判断出信号传输的方向,将SCL信号不做处理输出,而在SCL 信号处于下降沿时,延迟时间T将SDA信号的输出,从而保证了在SCL信号在跳变时,SDA信 号上的输出时不变的,因此,减少了 It总线上的时序错误。保证了 It总线上信号传输的
10高效、准确。
实施例四 本发明实施例提供一种可编程逻辑装置,该可编程逻辑装置也包括接收单元 11、判断单元21、延迟单元31和发送单元41。本发明实施例提供的一种可编程逻辑装置与 实施三提供的装置相似,但是,本发明实施例提供的可编程逻辑装置的各逻辑单元还可以 包括多个功能单元,下面结合附图7做详细的说明。 其中,判断单元21包括第一判断单元201、第一获取单元202、记录时钟单元 203 ;延迟单元31包括第一延迟单元301。需要说明的是,接收单元ll接收到SCL总线上 的信号和SDA总线上的信号。 第一判断单元201判断是否接收到I2C开始信号,如果是,通知第一获取单元202 ;
第一获取单元202根据接收到的I2C开始信号,获取SCL和SDA上传输的信号的 方向,即信号是从接收到i2c开始信号的I2C总线接口输入该逻辑器件,从另一个I2C总线 接口输出该逻辑器件; 记录时钟单元203收到I2C开始信号之后,记录SCL的时钟数目,具体可以是记录 的上升沿数目和下降沿数目; 第一延迟单元301根据获取SCL和SDA上传输的信号的方向,将SCL总线前8个 下降沿时,SDA总线上的信号延迟时间T ; 发送单元40根据获取SCL和SDA上传输的信号的方向,将延迟后的SDA上的信号 输出,将SCL上的信号输出。 通过以上对该可编程逻辑器件的说明,该逻辑器件第一获取单元202根据接收到 的I2C开始信号,获取SCL和SDA上传输的信号的方向后,将SDA上自I2C开始信号之后,第 一字节上的每个比特信号延迟时间T输出,从而减少传输第一字节时发生I2C时序错误。
通常在I2C开始信号之后,SDA上传输的第一字节是控制字节,该控制字节通常包 括地址码和控制量,即第一字节的高7位为地址码,最低位为控制量(控制量通常包括读或 者写操作)。因此,该可编程逻辑装置还应该实现减少除第一个字节外,其他字节传输时i2c 总线上的时序的错误的功能。参见如下详细说明。 该可编程逻辑装置中的延迟单元31还包括第二延迟单元302,用于根据第一获取 单元202中获取的SCL和SDA上传输的信号的方向,将SCL总线上第9个下降沿时,SDA总 线上传输的信号延迟时间T输出,该信号的方向与第一获取单元202中获取的SCL和SDA上 传输的信号的方向相反。其中,需要说明的是,前8个时钟与第9个时钟中,传输在SDA总 线上的信号的方向相反。第9个时钟,即从第8个时钟的下降沿到第9个时钟的下降沿的 时间中,SDA总线上传输的信号为ACK信号,ACK信号的方向与前8个时钟传输的字节的方 向是相反的。因此,第二延迟单元302中,延迟的信号是根据已经判断出的传输方向的基础 上,获取SDA总线上的信号,再根据已经判断出的方向将信号延迟时间T输出。
其中,需要说明的是,该第9个SCL时钟时,SDA上传输的是接收装置接收到该字 节后的响应信号ACK,因此,方向是与第一获取单元202中获取的SCL和SDA上传输的信号 的方向相反。 该可编程逻辑装置中的判断单元21还可以包括第二判断单元204、第二获取单 元205、第三获取单元206、清零单元207。
11
其中,第二判断单元204,判断SCL的上升沿数目是否为8、如果是,通知第二获取 单元205, 第二获取单元205获取SCL在第8个上升沿时,SDA上的信号值;第三获取单元 206,用于根据第二获取单元205获取的SDA上的信号值,获取下一个字节的传输方向,SDA 上传输的第一个字节的第8位上的值为1或0,代表不同的操作,可以将1代表读,0代表写, 因此可以获知SDA总线上下一个字节的传输方向; 第三获取单元206将获取的下一个字节的传输方向发送给第一延迟单元301 ;当 记录时钟单元203中记录的SCL时钟数目为9后,清零单元207将记录时钟单元203清零, 从1再开始记录SCL时钟数目,即清零单元207在装置接收到I2C开始信号之后,每次SCL 上的时钟数目到达9后就清零,重新记录。 第一延迟单元301还用于根据第三获取单元206将获取的下一个字节的传输方 向,将清零后的前8个SCL总线上的下降沿时,SDA上的数据延迟时间T,发送单元40将延 迟后的数据输出。第二延迟单元302还用于在清零后第9个下降沿时,将SDA上的数据延 迟时间T,需要说明的是延迟的信号的方向是与前8个时钟时,SDA上传输信号的方向相反。
通过以上说明,该可编程逻辑装置可以实现保证I2C开始信号之后I2C总线上传输 时序的正确性。 还需要说明的是,该判断单元21还可以包括第三判断单元208和第四判断单元 209。其中,第三判断单元208用于根据接收到的SCL总线上第9个上升沿时,SDA的总线上 于前8个时钟上传输方向相反的方向上的信号的值,判断是否继续传输字节,如果是,通知 清零单元207,如果否,通知第四判断单元209,第四判断单元209用于判断是否接收到I2C 结束信号。 其中,第三判断单元208中可以具体判断接收到的SCL总线上第9个上升沿时, SDA的总线上于前8个时钟上传输方向相反的方向上的信号的值是1,还是0,如果是1则 通知第四判断单元209,如果为0则为继续传输字节;第四判断单元209具体执行判断可以 是判断在预置的时间内是否接收到"C结束信号,如果是,接收操作;如果在预置的时间 内没有接收到i2c结束信号,也结束操作。 需要理解的是,以上的说明全部是针对只调节SDA总线上的时序的做法,事实上, SCL总线上传输的时钟信号的时序也是可以调节的。则该可编程逻辑器件还可以包括第三 延迟单元,用于根据第一获取单元202获取SCL上传输的信号的方向,将时钟信号延迟时间 T',第一发送单元41将延迟后的时钟信号输出。通常延迟时间T'要小于时间T才可以达 到较好的时序输出。 通过以上对本发明实施例提供的一种可编程逻辑装置的说明,该可编程逻辑装置 根据接收到的SCL和SDA总线上的信号,判断出SCL和SDA总线上信号的传输方向,根据判 断出的SCL和SDA总线上信号的传输方向,将SCL在下降沿时,SDA总线上传输的信号延迟 时间T,从而达到减少"C总线实现错误的目的。该可编程逻辑装置可以容易的到达设计要 求所要延迟的时间T,且T的取值调节灵活,只需要改变逻辑代码就可以调节延迟时间,且 调节的范围比较大,不用修改硬件。 最后,需要说明的是,本发明实施例提供的一种可编程逻辑装置可以是一个复杂 可编程逻辑器件(CPLD, Complex Programmable Logic Device)、或者可拭除式可编程逻辑器件(EPLD, Erasable Programmable Logic Device)等,与I2C总线相连的引脚可以是 CPLD或者EPLD上任意四个引脚。 [ono] 实施例五 本发明实施例提供了一种通信系统,参见图8所示,该通信系统包括第一设备 81、第二设置85和可编程逻辑装置83。 其中,第一设备81,用于在串行时钟SCL总线上发送信号给可编程逻辑装置83,和 在串行数据SDA总线上发送信号给可编程逻辑装置83 ; 可编程逻辑装置83,用于接收所述第一设备81在串行时钟SCL总线上发送的信 号,在串行数据SDA总线上发送的信号,根据所述接收到的SCL总线上的信号和SDA总线上 的信号,判断I2C总线上信号传输的方向,当SCL总线上的信号处于每个下降沿时,根据所 述判断出的方向,将SDA总线上的信号延迟时间T,发送SDA总线上延迟时间T后的信号和 SCL总线上的信号给第二设备85 ; 第二设备85,用于接收所述可编程逻辑装置83发送的SDA总线上延迟时间T后的 信号和SCL总线上的信号。 该通信系统中的可编程逻辑装置83还可以用于根据判断出的方向,将SCL总线上 的信号延迟时间T'发送给第二设备85,时间T'小于所述时间T。 为了更清楚的理解该通信系统,还需要说明的是,第一设备81和第二设备85是通 过I2C总线进行通信的,而可编程逻辑装置83在I2C总线上,用于调节I2C总线上的时序, 保证第一设备81和第二设备85之间传输的信号准确。因此,第一设备81用于通过可编程 逻辑装置83与第二设备85进行通信。 还需要说明的是,本实施例中的可编程逻辑装置85可以是实施例三或四中提供 的可编程逻辑装置。具体说明可以参考实施例三、四的说明。 该通信系统中第一设备和第二设备之间传输的I2C总线信号通过可编程逻辑装置 来调节fC总线时序,减少了 fC总线上的时序错误。保证了 fc总线上信号传输的高效、 准确。 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储 介质可以包括R0M、RAM、磁盘或光盘等。 以上对本发明实施例所提供的一种I2C总线时序调节方法、相应装置及系统进行 了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例 的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员, 依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内 容不应理解为对本发明的限制。
权利要求
一种内部集成电路I2C总线时序调节方法,其特征在于,包括接收串行时钟SCL总线上的信号和串行数据SDA总线上的信号;根据所述接收到的SCL总线上的信号和SDA总线上的信号,判断I2C总线上信号传输的方向;当SCL总线上的信号处于每个下降沿时,根据所述判断出的方向,将SDA总线上的信号延迟时间T输出;根据所述判断出的方向,将SCL总线上的信号输出。
2. 根据权利要求l所述的方法,其特征在于,所述根据所述接收到的SCL总线上的信号和SDA总线上的信号,判断I2C总线上信号传输的方向,包括判断是否接收到I2C开始信号,如果是,根据接收到的I2C开始信号,获取SCL和SDA总线上传输的信号的方向。
3. 根据权利要求2所述的方法,其特征在于,所述当SCL总线上的信号处于每个下降沿时,根据所述判断出的方向,将SDA总线上的信号延迟时间T输出,包括记录SCL总线上的时钟数目;在SCL总线上前8个下降沿时,根据所述获取的SDA总线上传输的信号的方向,将SDA总线上的信号延迟时间T输出。
4. 根据权利要求3所述的方法,其特征在于,所述方法还包括在SCL总线上第9个下降沿时,将SDA总线上的信号延迟时间T后,按照与前8下降沿传输的信号相反的传输方向输出。
5. 根据权利要求3或4所述的方法,其特征在于,所述方法还包括根据第8个上升沿时接收到的SDA总线上的信号值,获取下一字节的传输方向,所述前8个时钟周期中SDA传输了一个字节;当记录的SCL总线上的时钟数目为9时,将所述记录的SCL总线上的时钟数目清零;再次记录SCL总线上的时钟数目;在所述再次记录SCL总线上的时钟数目的前8个下降沿时,根据所述获取下一字节的传输方向,将SDA总线上的信号延迟时间T输出。
6. 根据权利要求5所述的方法,其特征在于,所述方法还包括在所述再次记录SCL总线上的时钟数目的第9个下降沿时,将SDA总线上的信号延迟时间T后,按照与前8个时钟周期传输的信号相反的传输方向输出。
7. 根据权利要求1所述的方法,其特征在于,所述根据所述判断出的方向,将SCL总线上的信号输出,包括根据所述判断出的方向,将SCL总线上的信号延迟时间T'输出,所述时间T'小于所述时间T。
8. —种可编程逻辑装置,其特征在于,包括接收单元,用于接收串行时钟SCL总线上的信号和串行数据SDA总线上的信号;判断单元,用于根据所述接收到的SCL总线上的信号和SDA总线上的信号,判断I2C总线上信号传输的方向;延迟单元,用于当SCL总线上的信号处于每个下降沿时,根据所述判断出的方向,将SDA总线上的信号延迟时间T ;发送单元,用于根据所述判断出的方向,将SDA总线上延迟时间T后的信号和SCL总线上的信号输出。
9. 根据权利要8所述的装置,其特征在于,所述判断单元包括第一判断单元,用于判断是否接收到I2C开始信号,如果是,通知第一获取单元;第一获取单元,用于根据接收到的I2C开始信号,获取SCL和SDA总线上传输的信号的方向;记录时钟单元,用于记录SCL总线上的时钟数目,所述延迟单元根据所述记录的时钟数目,根据所述第一获取单元获取的SDA总线上传输的信号的方向,将SDA总线上的信号延迟时间T。
10. 根据权利要求9所述的装置,其特征在于,所述延迟单元包括第一延迟单元,用于根据所述记录时钟单元记录的时钟数目,在SCL总线上前8个下降沿时,根据所述获取的SDA总线上传输的信号的方向,将SDA总线上的信号延迟时间T输出。
11. 根据权利要求10所述的装置,其特征在于,所述延迟单元还包括第二延迟单元,用于在SCL总线上第9个下降沿时,将SDA总线上的信号延迟时间T输出,所述信号的传输方向与与前8下降沿传输的信号传输方向相反。
12. 根据权利要求11所述的装置,其特征在于,所述判断单元还包括清零单元,用于当记录的SCL总线上的时钟数目为9时,将所述记录的SCL总线上的时钟数目清零;所述记录时钟单元在所述清零单元将记录的SCL总线上的时钟数目清零后,再次记录SCL总线上的时钟数目。
13. 根据权利要求12所述的装置,其特征在于,所述判断单元还包括第二判断单元,用于根据所述记录时钟单元记录的时钟数目判断SCL的上升沿是否为第8个上升沿;第二获取单元,用于当第二判断单元判断为是的结果时,获取SDA上传输的信号的值;第三获取单元,用于根据所述第8个上升沿时,获取到的SDA总线上的信号值,获取下一字节的传输方向,所述前8个时钟周期中SDA传输了一个字节;所述第一延迟单元,还用于在所述再次记录SCL总线上的时钟数目的前8个下降沿时,根据所述获取下一字节的传输方向,将SDA总线上的信号延迟时间T输出。
14. 根据权利要求13所述的装置,其特征在于,所述第二延迟单元,还用于在所述再次记录SCL总线上的时钟数目的第9个下降沿时,将SDA总线上的信号延迟时间T输出,所述SDA总线上的信号的传输方向与前8个时钟周期时信号的传输方向相反。
15. —种通信系统,其特征在于,包括第一设备,用于在串行时钟SCL总线上发送信号,在串行数据SDA总线上发送信号;可编程逻辑装置,用于接收所述第一设备在串行时钟SCL总线上发送的信号,在串行数据SDA总线上发送的信号,根据所述接收到的SCL总线上的信号和SDA总线上的信号,判断I2C总线上信号传输的方向,当SCL总线上的信号处于每个下降沿时,根据所述判断出的方向,将SDA总线上的信号延迟时间T,发送SDA总线上延迟时间T后的信号和SCL总线上的信号给第二设备;第二设备,用于接收所述可编程逻辑装置发送的SDA总线上延迟时间T后的信号和SCL 总线上的信号。
16.根据权利要求15所述的通信系统,其特征在于,所述可编程逻辑装置还用于根据 所述判断出的方向,将SCL总线上的信号延迟时间T'发送给第二设备,所述时间T'小于所 述时间T。
全文摘要
本发明实施例公开了一种I2C总线时序调节方法,该方法包括接收串行时钟SCL总线上的信号和串行数据SDA总线上的信号;根据所述接收到的SCL总线上的信号和SDA总线上的信号,判断I2C总线上信号传输的方向;当SCL总线上的信号处于每个下降沿时,根据所述判断出的方向,将SDA总线上的信号延迟时间T输出;根据所述判断出的方向,将SCL总线上的信号输出。本发明实施例还提供相应的装置和系统。本发明技术方案根据传输在I2C总线上的信号,判断出信号传输的方向,在SCL信号处于下降沿时,延迟时间T将SDA信号的输出,保证在SCL总线上的信号在跳变时,SDA总线上的输出不变,减少了I2C总线上的时序错误。
文档编号G06F13/42GK101770443SQ200910000390
公开日2010年7月7日 申请日期2009年1月7日 优先权日2009年1月7日
发明者唐烽杰, 张洪岽 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1