用于在总线上执行事务的方法及系统的制作方法

文档序号:6523666阅读:129来源:国知局
用于在总线上执行事务的方法及系统的制作方法
【专利摘要】本发明涉及一种用于在总线上执行事务的方法及系统。通过首先由起始器模块产生命令序列且在队列模块中对所述命令序列进行排队而在总线上执行事务。经由所述总线将所述命令序列中的第一者从所述队列模块发送到目标模块。暂停所述队列模块同时等待经由所述总线来自所述目标模块的响应;然而,所述起始器可继续处理另一任务。所述队列模块经由所述总线重复地将下一指令发送到所述目标模块且等待经由所述总线来自所述目标模块的响应,直到所述命令序列中的最后一者被发送到所述目标模块为止。在已将所述命令序列传送到所述目标模块之后,所述队列模块仅向所述起始器模块提供单个确认。
【专利说明】用于在总线上执行事务的方法及系统
[0001]依据35U.S.C.119(a)丰张优先权
[0002]本申请案主张2012年12月13日提出申请的标题为“用于通信总线的命令队列(Command Queue for Communication Bus) ” 的第 12290440.2 号欧洲专利申请案的优先权且以引用的方式并入所述专利申请案。
【技术领域】
[0003]本发明大体来说涉及使用I2C总线将多个命令从主控装置发送到从属装置的系统。
【背景技术】
[0004]I2C总线(集成电路间)是现在在由大量的不同公司制造的数以千计的不同IC中实施的实际的世界标准。另外,通用I2C总线用于各种控制架构中,例如系统管理总线(SMBus)、功率管理总线(PMBus)、智能平台管理接口(IPMI)、显示数据通道(DDC)及高级电信计算架构(ATCA)。
[0005]在消费型电子装置、电信及工业电子装置中,在看似不相关的设计之间通常存在许多相似性。举例来说,几乎每个系统均包含:某一智能控制件,通常为单芯片微控制器;通用电路,如IXD及LED驱动器、远程I / O端口、RAM、EEPR0M、实时时钟或A / D及D / A转换器;以及面向应用的电路,例如用于无线电及视频系统、温度传感器及智能卡的数字调谐与信号处理电路。
[0006]为了利用这些相似性来使系统设计者及设备制造者两者受益以及最大化硬件效率及电路简单性,飞利浦半导体公司(Philips Semiconductors,现为NXP半导体公司)曾开发出一种用于高效IC间控制的简单双向2线式总线。此总线称为“1C间”、I2C或I2C总线。所有I2C总线兼容装置均并入有允许其经由I2C总线彼此间接通信的芯片上接口。此设计概念解决了在设计数字控制电路时所遇到的许多介接问题。
[0007]需要仅两个总线;串行数据线(SDA)及串行时钟线(SCL)。连接到总线的每一装置可通过唯一地址进行软件寻址,且始终存在简单的主控/从属关系;主控装置可作为主控发射器或作为主控接收器而操作。支持冲突检测及仲裁以在两个或两个以上主控装置同时起始数据传送的情况下防止数据损坏。
[0008]可在标准模式中以高达100千位/秒、在快速模式中以高达400千位/秒、在快速模式+中以高达I兆位/秒、在高速模式中以高达3.4兆位/秒或在极快速模式中以高达5兆位/秒进行串行面向8位的双向数据传送。芯片上滤波拒斥总线数据线上的尖峰以保存数据完整性。可连接到同一总线的IC的数目仅受最大总线电容的限制。
[0009]I2C协议及操作更详细地描述于可获得的文档中;例如,参见“UM10204I2C总线规范及用户手册”,第5版;2012年10月9日,NXP半导体公司。

【发明内容】
[0010]本发明提供一种用于在总线上执行事务的方法,所述方法包括:
[0011]由起始器模块产生多个命令;
[0012]在队列模块中对所述多个命令进行排队;
[0013]经由所述总线将所述多个命令中的第一者从所述队列模块发送到目标模块且暂停所述队列模块同时等待经由所述总线来自所述目标模块的响应;
[0014]重复经由所述总线将下一命令从所述队列模块发送到所述目标模块且等待经由所述总线来自所述目标模块的响应,直到所述多个命令中的最后一者被发送到所述目标模块为止;及
[0015]在已将所述多个命令传送到所述目标模块之后,仅向所述起始器模块提供单个确以。
[0016]本发明还提供一种系统,其包括:
[0017]队列模块,其耦合到通信总线接口 ;
[0018]起始器模块,其耦合到所述队列模块;
[0019]其中所述队列模块经配置以从所述起始器模块接收多个命令且经由所述通信总线接口将所述多个命令发送到目标模块;且
[0020]其中所述队列模块经配置以经由所述通信总线接口从所述目标模块接收对所述多个命令中的每一者的确认且在已将所述多个命令传送到所述目标模块之后仅向所述起始器模块提供单个确认。
【专利附图】

【附图说明】
[0021]现在将仅以实例的方式且参考附图来描述根据本发明的特定实施例:
[0022]图1是包含经配置以消除显著百分比的中断请求的I2C外围装置的实例性系统的框图;
[0023]图2-4是图解说明I2C总线的操作的信号图;
[0024]图5是图1的系统的更详细框图;且
[0025]图6是图解说明经配置以消除显著百分比的中断请求的I2C外围装置的操作的流程图。
[0026]依据附图且依据以下详细描述,本发明实施例的其它特征将显而易见。
【具体实施方式】
[0027]现在将参考附图详细描述本发明的特定实施例。为一致起见,各个图中的相似元件由相似参考编号表示。在以下对本发明的实施例的详细描述中,陈述众多特定细节以便提供对本发明的更透彻的理解。然而,所属领域的技术人员将明了,可在没有这些特定细节的情况下实践本发明。在其它例子中,未详细描述众所周知的特征以避免不必要地使所述描述复杂。
[0028]通常,微处理器单元(MPU)微控制器单元(MCU)可耦合到将I2C命令发送到系统内的其它装置的I2C外围装置。所述I2C外围装置可经配置以将中断请求(IRQ)发送到主机处理器以指示每一命令的完成。在典型的现有技术系统中,举例来说,I2C命令被循序地发送且要求主机经由IRQ或通过轮询状态位而等待对每一命令的确认。[0029]此行为从总体系统观点来看是损失(penalty),特别是在密集型读取操作中,因为其浪费时间且导致在主机侧处来自由I2C外围设备发出的IRQ的IRQ污染。
[0030]举例来说,在具有三轴运动传感器的系统中,可需要十五个IRQ来读取来自一个运动的一组三轴数据。对于简单的命令,可需要三个IRQ。对于三轴传感器,可需要至少五个调用(IRQ)来完整地读取传感器数据:中断状态、X轴上的值、y轴上的值、z轴上的值及控制寄存器。因此,可需要十五个IRQ来读取一组传感器数据;此为每秒可发生100次的操作。
[0031]此些读取可针对应用以密集方式进行且导致每秒数百个读取操作。在复杂的芯片上系统(SOC)系统中,可存在使用I2C接口的数个模块。I2C接口允许连接逐个存取的数个外围设备;不存在并行存取。考虑到必须密集地存取的外围设备及可在同一总线上连接的外围设备的数目,由外围设备向主机发出的IRQ的数目迅速增加且可使CPU的处理能力饱和。在MPU / MCU侧处,服务于IRQ可在MPU / MCU正运行复杂任务时使用户体验降级。
[0032]本发明的实施例提供一种用以显著地减少由I2C外围装置产生的IRQ的数目的机制,如下文将更详细地描述。
[0033]集成电路间总线(I2C或I2C)为多主控总线。支持冲突检测及仲裁以在两个或两个以上主控装置同时起始数据传送的情况下防止数据损坏。每一 I2C装置由唯一地址识别且可根据的装置功能而作为发射器或接收器操作。除作为发射器或接收器以外,还可在执行数据传送时将连接到I2C总线的装置视为主控装置或从属装置。注意,主控装置为在总线上起始数据传送且产生时钟信号以准许所述传送的装置。在此传送期间,由此主控装置寻址的任何装置被视为从属装置。
[0034]本文中将描述I2C协议的一般操作;然而,I2C协议及操作更详细地描述于可公开获得的文档中;例如,参见“UM10204I2C总线规范及用户手册”,第5版;2012年10月9日,NXP半导体公司,所述文档以引用的方式并入本文中。
[0035]图1是包含经配置以消除发送到MCU102的显著百分比的中断请求103的I2C外围装置104的实例性系统100的框图。在此实例中,系统100为包含一个或一个以上微控制器单元102及一个或一个以上外围装置的芯片上系统(SoC),所述外围装置例如为模/数或数/模转换器106、通用I / 0(输入/输出)扩充器、LED(发光二极管)控制器、开关、LCD (液晶显示器)驱动器、实时时钟、温度传感器等。例如EEPR0M(电可擦除可编程只读存储器)108的一个或一个以上存储器装置可经由I2C总线通过串行连接耦合到MCU102。
[0036]I2C外围设备104提供例如ARM、MIPS或DSP (数字信号处理器)处理器的本地主机(LH) 102与经由I2C串行总线连接的任何I2C总线兼容装置之间的接口。在此实例中,I2C总线由中继器114及多路复用器116划分成数个分段,例如I2C总线110-113。每一I2C分段可取决于由连接到给定分段的装置使用的技术而使用不同上拉电压Vdd操作。附接到I2C总线的外部组件可通过双线式I2C接口向/从LH装置串行地发射/接收高达8位的数据。
[0037]图2-4是图解说明I2C总线的操作的信号图。参考图2,两条导线(串行数据(SDA)及串行时钟(SCL))在连接到总线的装置之间载运信息。每一装置均通过唯一地址来识别(无论其是微控制器、LCD驱动器、存储器、键盘接口等)且可取决于装置的功能而作为发射器或接收器操作。LCD驱动器可仅为接收器,而存储器可既接收又发射数据。除发射器及接收器以外,在执行数据传送时装置还可被视为主控装置或从属装置。主控装置为在总线上起始数据传送且产生时钟信号以准许所述传送的装置。在所述时间,被寻址的任何装置均被视为从属装置。
[0038]I2C总线为多主控装置总线。此意味着一个以上能够控制总线的装置可连接到这条总线。由于主控装置通常为微控制器,因此典型传送可在MCU102与连接到I2C总线的ADC106之间进行。SDA及SCL两者均为经由电流源或上拉电阻器(参见图1)连接到正供应电压的双向线。当总线空闲时,两条线均为高。连接到总线的装置的输出级必须具有开漏或开集以执行“线与”函数。可在标准模式中以高达100千位/秒、在快速模式中以高达400千位/秒、在快速模式+中以高达I兆位/秒或在高速模式中以高达3.4兆位/秒的速率传送I2C总线上的数据。总线电容限制连接到总线的接口的数目。
[0039]参考图2,SDA线上的数据在时钟的高周期期间必须为稳定的。数据线的高及低状态可仅在SCL线上的时钟信号为低时改变。
[0040]参考图3,所有事务均以开始⑶而开始且由停止⑵而终止。在SCL为高时SDA线上的高到低转变界定开始条件。在SCL为高时SDA线上的低到高转变界定停止条件。I2C模块104在其被配置为主控装置时产生开始及停止条件。总线在开始条件之后被视为繁忙且在停止条件之后被视为空闲。
[0041]参考图4,确认(ACK)及未确认(NACK)用于控制数据流。确认在每个字节之后发生。确认位允许接收器用信号通知发射器所述字节被成功接收且可发送另一字节。主控装置产生所有时钟脉冲,包含用于来自从属装置的确认响应的第九时钟脉冲402。
[0042]发射器在确认时钟脉冲402期间释放SDA线,因此接收器可将SDA线拉为低,且其在此时钟脉冲的高周期期间保持稳定为低,如在403处所图解说明。当SDA在此第九时钟脉冲期间保持为高时,将此界定为未确认信号,如在405处所图解说明。主控装置可接着产生停止条件以中止传送或产生重复开始条件以开始新的传送。存在导致产生NACK的五个条件:
[0043]1.总线上不存在具有所发射地址的接收器,因此不存在装置来用确认做出响应;
[0044]2.接收器不能接收或发射,因为其正执行某一实时功能且未准备好开始与主控装置的通信;
[0045]3.在传送期间,接收器得到其不理解的数据或命令;
[0046]4.在传送期间,接收器无法接收任何更多的数据字节 '及
[0047]5.主控接收器必须将传送的结束用信号通知给从属发射器。
[0048]I2C总线事务以8位字数据格式操作(针对最后存取支持的字节写入存取)。置于SDA线上的每一字节为8位长。可发射或接收的字节的数目不受限制。最高有效位(MSB)优先地传送数据。如果I2C模块处于接收器模式中,那么每一字节之后是来自所述I2C模块的确认位。
[0049]I2C模块104支持两种数据格式-J位/ 10位寻址格式;及具有重复开始条件的7位/ 10位寻址格式。在开始条件(S)之后的第一字始终由8个位组成。在确认模式中,在每一字节之后插入专用于确认的额外位。
[0050]在具有7位地址的寻址格式中,第一字节由7MSB从属地址位及ILSB(最低有效位)R / W(读取/写入)位构成。在具有10位地址的寻址格式中,第一字节的前七个位是组合1111 OXX,其最后两个位(XX)是10位地址的两个最高有效位(MSB);第一字节的第八个位是确定消息的方向的R/W位。
[0051]图5是图1的系统的更详细框图,其更详细地图解说明I2C控制器104。I2C控制器104包含用于最小化IRQ信号103被断言以中断耦合到本地主机102的控制逻辑440的次数的队列逻辑模块410。中断控制逻辑440在一些实施例中可与本地主机102成整体,或在其它实施例中可为分离的,如此处所图解说明。如众所周知,中断逻辑440可接收数个不同中断请求信号且致使本地主机102响应于每一中断请求信号而开始执行不同中断服务例程。
[0052]LH102经由芯片上协议(OCP)接口逻辑422介接到I2C控制器104。在此实施例中,OCP接口逻辑422经配置以连接到用于耦合到LH102的十六位并行外围总线442。
[0053]队列逻辑模块410包含寄存器块424、主控/从属控制逻辑426、命令FIFO(先进先出)缓冲器420、读取与写入数据FIF0430。
[0054]寄存器块424含有可由LH102经由OCP逻辑422存取的各种控制、状态及数据寄存器。
[0055]主控/从属控制逻辑426对寄存器块424中可由LH102加载的各种控制寄存器做出响应且将状态信息提供到寄存器块424中可接着由LH102存取的状态寄存器。
[0056]命令FIF0420经耦合以寻址寄存器块424中的从属寄存器I2C_SA,且由LH102写入到I2C-SA的每一从属地址命令积累于命令FIF0420中。类似地,写入数据FIF0430积累由LH102加载到写入数据寄存器I2C_WD中的写入数据。读取数据FIF0430类似地从I2CIF逻辑接收并积累可由LH102经由读取数据寄存器I2C_RD存取的读取数据。
[0057]对于单个I2C命令传送,由LH102将从属地址写入到I2C串行地址(I2C_SA)寄存器。接着由LH102将开始位(STT)写入到I2C控制(I2C_C0N)寄存器中。主控/从属逻辑426接着引导I2C接口逻辑428使用上文更详细描述的I2C协议在I2C总线110上开始数据传送。I2C IF逻辑与所寻址从属装置之间的数据传送可为由从属地址的R / W位界定的读取或写入,如上文所描述。
[0058]图6是图解说明FIFO命令模式的操作的梯形图。FIFO命令模式是可由某些应用使用的特殊模式,其中通过最小化在数据传送的特定序列期间本地主机102与I2C模块104之间的交互来获得软件优化。对于高速及F / S(快速或标准速度)两者,其可仅在主控模式中应用于发射及接收模式两者。
[0059]在时间tl处,响应于从LH102接收602到对I2C_SA寄存器的一个以上从属地址写入的序列而进入FIFO命令模式,之后LH102通过在I2C_C0N寄存器中设定604STT位而开始一个特定传送。I2C_SA寄存器耦合到命令FIF0420。在此实施例中,命令FIF0420的深度为五个条目,从而允许记录最多五个从属地址。因此,在经缓冲命令序列中的命令写入的数目可为2、3、4或5。FIFO指针保持追踪多少从属地址被加载到了命令FIF0420中。当设定STT位时,将FIFO指针的当前值保存于命令计数(#CMD)寄存器中,且接着将FIFO指针设定为“000”以再次指向第一命令。在此实施例中,当经由I2C_SA寄存器加载五个从属地址时,最大值可为“100”。
[0060]在此实施例中,根据存储于寄存器块424中的FIF0DEPTH参数,I2C_DATA FIF0430可具有深度8、16、32或64。[0061]在完成所有经编程传送之前于在I2C控制(I2C_C0N)寄存器中设定STT (开始)位之后不允许到I2C_SA地址的写入。在此实施例中,如果在经缓冲命令序列传送期间向I2C_SA地址寄存器写入,那么所添加的地址将被忽略,且在设定STT之前针对所记录的原始地址集合传送将不中断地继续。其它实施例可用不同方式处置此情形,例如通过给错误加旗标。
[0062]当响应于从属地址的R / W位而选择发射模式时,对应写入数据需要在设定STT位之前写入到I2C_DATA寄存器且借此加载到写入数据FIF0430中。
[0063]在断言STT位之后,控制逻辑426在I2C_IF逻辑428中设定605主控/从属传送模式(MST)寄存器、发射/接收模式(TRX)寄存器及从属地址(SA)寄存器。I2C_IF428接着使用上文关于图2-4所描述的标准I2C协议而在时间t3处开始606第一从属传送。
[0064]当数据传送在FIFO命令模式中开始时待寻址的第一从属地址是以FIFO指针值“000”发送的第一个。对于发射模式,对应数据字节也为寄存于数据寄存器中的第一个,或对于接收模式,其为从I2C从属装置接收的第一个。
[0065]在时间t4处,在第一 I2C传送完成时,外围设备以由I2C接口逻辑接收的ACK /NACK做出响应608,如上文所描述。进行610检查以确定ACK计数是否等于命令FIFO中如#CMD寄存器所指示的命令的数目。如果ACK计数不等于命令的数目,那么使FIFO指针递增612,且将下一从属地址发送到外围设备而不将中断发送到主机处理器102。
[0066]重复此序列直到ACK计数变为等于此序列中的命令的数目为止。接着将中断请求发送614到中断处置器逻辑440以用于LH102。在不将中断用信号通知给主机的情况下发生针对高达五个从属地址的数据传送,直到完成针对最后一个地址的数据传送为止。从此模式退出借助针对TX模式的ARDY中断或针对RX模式的RRDY中断发生。
[0067]在FIFO命令模式期间,借助重复开始在I2C总线上进行传送。在每一传送的开始,经由I2C_SA寄存器用存储于命令FIF0420中的值更新I2C IF逻辑428中的内部从属地址寄存器,所述值从指针为“000”的值开始,最高达最大值“100”。对于每一从属地址,I2C_CON寄存器中的STT位由硬件针对传送以重复开始设定。在发送每一字节之后,将从属地址改变为下一地址。
[0068]当已执行先前编程的地址、数据及命令序列且已更新状态位时,控制逻辑426在写入命令序列之后产生寄存器准备好存取中断(ARDY)。此中断用于使LH102知晓I2C寄存器准备好存取。
[0069]当存在准备由LH从I2C_RD寄存器读取的所接收数据时,在读取命令序列之后产生接收中断/状态(RRDY)。LH102可替代地轮询此位以从I2C_DATA寄存器读取所接收数据。
[0070]当主控装置I2C未从接收器接收到确认时,产生未确认中断(NACK)。
[0071]可针对I2C控制器104的其它操作模式产生额外中断。其它实施例可产生不同的中断信号类型或组合。举例来说,可通过读取状态寄存器来扩增单个中断信号以确定中断的原因。
[0072]在寄存器块424中的专用寄存器I2C_C2_C0N中给出FIFO命令模式期间的当前状态,其提供以下状态信息:FIF0模式、FIFO等级及溢出。一在I2C_C0N寄存器中设定了 STT位同时已使一个以上地址进入到I2C_SA地址寄存器中,就断言FIF0_M0DE,且当完成I2C_SA地址FIFO中的最后一个地址并在I2C总线上发送停止时,将FIF0_M0DE解除断言。
[0073]FIF0_LEVEL具有从“000”到“ 100”的值,其展示在每一时刻I2C_SA地址文件中的地址的指针是在特定时刻被服务。在进入FIFO命令模式之前或在完成此模式之后,此值改变为“000”。在此实施例中,当给出I2C_SA地址寄存器中的五个位置时,最大值可为“100”。
[0074]当将五个以上地址发送到I2C_SA寄存器时,在于I2C_C0N寄存器中设定STT位之前,断言溢出位。溢出断言AERR中断(I2C_IRQSTATUS寄存器中的位字段7),其还可由I2C_DATA寄存器上来自OCP侧的可能溢出设定。一清除AERR位状态,在I2C_IRQSTATUS中,便也清除I2C_C2_C0N寄存器中的溢出状态位。当溢出发生时,忽略新的从属地址且SA FIFO指针保持不变。
[0075]在其中遇到NACK或AL (仲裁丢失)的特殊情形中,环路将被断开;一设定这些位中的一者,就退出FIFO模式。当NACK或AL发生时,地址FIFO (I2C_SA) 420及数据FIFO (I2C_DATA) 430的指针就由硬件复位以冲洗616所述FIFO。
[0076]在此实施例中,针对启用DMA (直接存储器存取)的传送不支持FIFO命令模式。对于此些情形,即使I2C_SA FIFO已存储有一个以上地址,当在I2C_C0N寄存器中设定STT位时,也阻止进入FIFO命令模式。尽管I2C控制器104的此实施例支持DMA操作,但本文中将不进一步详细地描述DMA。
[0077]在传送于FIFO命令模式中完成之后,地址指针通过硬件自动复位到“000”。当FIFO命令模式正由NACK或AL中断而中断时,也发生此情形。
[0078]以此方式,在每一 I2C总线事务上使用开始位允许与任何I2C外围装置且与可由主机处理器102执行的软件的反向兼容性。不需要额外寄存器来启用FIFO模式。当将处理单个命令(遗留模式)时或当对命令序列进行排队时,可触发开始位,如本文中所描述。
[0079]FIFO命令模式借助最终IRQ允许以原子方式执行来自主控装置的命令序列,所述最终IRQ通知系统总线对于另一主控装置来说为空闲的。FIFO命令模式允许在LH102上执行的软件控制应用程序更佳地运行且可更易于写入。举例来说,在需要对I2C外围设备的密集型读取或写入的系统中,可消除至少90%的IRQ。
[0080]举例来说,在其中读取重现周期为?8ms的系统中,遗留系统将针对八位数据每秒产生750个IRQ且针对十六位数据每秒产生1125个IRQ。通过使用FIFO命令模式,针对八位或十六位数据IRQ速率将下降到每秒125个IRQ。
[0081 ] 在一些实施例中,读取命令及写入命令两者可在FIFO序列中交错。
[0082]系统实例
[0083]再次参考图1,数字系统100包含处理器102及用于保持供处理器102执行的软件指令的相关联存储器、可保持软件指令及数据的非易失性存储装置108以及数字系统特有的众多其它元件及功能性(未展示)。在本发明的一个或一个以上实施例中,数字系统可包含多个处理器。SoCIOO还可耦合到输入构件,例如键盘、小键盘、开关、环境传感器(例如温度、压力、运动、加速度等)。SoCIOO可耦合到输出构件,例如监视器、IXD面板、LED或其它显示装置、运动致动器、继电器等。所属领域的技术人员将了解,输入及输出构件可采取其它形式。
[0084]SoClOO可经由网络接口连接(未展示)连接到网络(未展示)(例如,局域网(LAN)、广域网(WAN),例如因特网、蜂窝式网络、任何其它类似类型的网络及/或其任何组合)。举例来说,SoCIOO可包含用以经由网络接口连接从或向存储装置108接收或发射数据的功能性。
[0085]其它实施例
[0086]尽管已参考说明性实施例描述了本发明,但此描述并不打算以限制意义来理解。所属领域的技术人员在参考此描述后将即刻明了本发明的各种其它实施例。举例来说,I2C总线可为单个分段或其可由中继器、桥接器、拆分器、多路复用器等划分成多个分段。实施例可具有单个主控装置或在共同I2C总线上的多个主控装置。I2C总线可局限于单个SoC衬底上的装置,或可耦合到安装于刚性或柔性印刷电路板或其它类型的衬底上的多个集成电路上的装置,或可耦合到封装于多芯片模块(MCM)中或堆叠于封装中系统(SiP)中的多个集成电路上的装置,等等。
[0087]尽管本文中将命令及数据队列描述为FIFO,但其它实施例可使用不同队列结构,例如后进先出(LIFO)、先进后出(FILO)、循环等。尽管本文中描述了五个命令的队列深度,但其它实施例可具有可长于或短于五的队列长度。
[0088]尽管本文中描述了基于I2C总线的实施例,但其它实施例可基于不同总线协议同时仍聚合多个单总线事务以借此减少主机处理器必须被中断来处理在总线上发射或接收的数据的次数。
[0089]本文中所描述的系统及方法的实施例可提供于数个类型的数字系统中的任一者上:数字信号处理器(DSP)、通用可编程处理器、专用电路或芯片上系统(SoC),例如DSP与精简指令集(RISC)处理器连同各种专门加速度计的组合。板上或外部(快闪EEP) ROM或FRAM中的所存储程序可用于实施总线事务的方面。模/数转换器及数/模转换器提供与现实世界的耦合,调制器及解调器(加上用于空中接口的天线)可提供用于由卫星、TV站、蜂窝式网络等在空中或经由有线网络(例如因特网)广播的数据的波形接收的耦合。
[0090]本发明中所描述的技术可以硬件、软件、固件或其任何组合来实施。如果以软件实施,那么所述软件可在一个或一个以上处理器中执行,例如微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或数字信号处理器(DSP)。执行技术的软件最初可存储于计算机可读媒体(例如光盘(CD)、软磁盘、磁带、文件、存储器或任何其它计算机可读存储装置)中,且在处理器中加载并执行。在一些情况中,软件还可以计算机程序产品形式出售,其包含计算机可读媒体及用于所述计算机可读媒体的封装材料。在一些情况中,可经由可装卸计算机可读媒体(例如,软盘、光盘、快闪存储器、USB钥匙)、经由从另一数字系统上的计算机可读媒体的发射路径等分配软件指令。
[0091]在所述描述及权利要求书通篇中使用某些术语来指代特定系统组件。如所属领域的技术人员将了解,数字系统中的组件可通过不同名称来提及/或可以本文中未展示的方式来组合,此并不背离所描述的功能性。此文件并不打算在名称不同但功能相同的组件之间进行区分。在以上论述中且在权利要求书中,以开端方式使用术语“包含”及“包括”,且因此其应解释为意指“包含但不限于...”。此外,术语“耦合”及其派生词打算意指间接、直接、光学及/或无线电连接。因此,如果第一装置耦合到第二装置,那么所述连接可通过直接电连接、通过经由其它装置及连接的间接电连接、通过光学电连接及/或通过无线电连接进行。
[0092]虽然本文中可以顺序方式呈现及描述方法步骤,但可省略、重复、同时执行及/或以不同于图中所展示及/或本文中所描述的次序的次序执行所展示及描述的步骤中的一者或一者以上。因此,本发明的实施例不应视为限于图中所展示及/或本文中所描述的步骤的特定排序。
[0093]因此,预期所附权利要求书将涵盖如归属于本发明的真实范围及精神内的对实施例的任何此类修改。
【权利要求】
1.一种用于在总线上执行事务的方法,所述方法包括: 由起始器模块产生多个命令; 在队列模块中对所述多个命令进行排队; 经由所述总线将所述多个命令中的第一者从所述队列模块发送到目标模块且暂停所述队列模块同时等待经由所述总线来自所述目标模块的响应; 重复经由所述总线将下一命令从所述队列模块发送到所述目标模块且等待经由所述总线来自所述目标模块的响应,直到所述多个命令中的最后一者被发送到所述目标模块为止;及 在已将所述多个命令传送到所述目标模块之后,仅向所述起始器模块提供单个确认。
2.根据权利要求1所述的方法,其中所述起始器模块将开始命令发送到所述队列模块以开始经由所述总线将所述多个命令发送到所述目标模块。
3.根据权利要求2所述的方法,其中所述起始器模块在将所述开始命令发送到所述队列模块之后在接收到所述单个确认之前执行另一任务。
4.根据权利要求1所述的方法,其进一步包括:如果从所述目标模块接收到否定响应,那么冲洗命令队列。
5.根据权利要求1所述的方法,其中所述多个命令包括用于将数据写入到耦合到所述总线的所述目标模块中的多个写入地址,所述方法进一步包括在所述队列模块中对应于所述多个写入地址对多个写入数据进行排队。
6.根据权利要求1所述的`方法,其中所述多个命令包括用于从耦合到所述总线的所述目标模块读取数据的多个读取地址,所述方法进一步包括在所述队列模块中对应于所述多个读取地址对从所述目标模块接收的多个读取数据进行排队。
7.根据权利要求1所述的方法,其中所述总线为I2C总线。
8.一种系统,其包括: 队列模块,其耦合到通信总线接口 ; 起始器模块,其耦合到所述队列模块; 其中所述队列模块经配置以从所述起始器模块接收多个命令且经由所述通信总线接口将所述多个命令发送到目标模块;且 其中所述队列模块经配置以经由所述通信总线接口从所述目标模块接收对所述多个命令中的每一者的确认且在已将所述多个命令传送到所述目标模块之后仅向所述起始器模块提供单个确认。
9.根据权利要求8所述的系统,其中所述队列模块包括经耦合以从所述起始器模块接收写入数据且耦合到所述通信总线接口的写入数据队列,其中所述多个命令包括对应于由所述起始器模块存储于所述写入数据队列中的写入数据用于将数据写入到耦合到所述通信总线接口的从属模块中的多个写入地址。
10.根据权利要求9所述的系统,其中所述队列模块包括耦合到所述起始器模块且经耦合以从所述通信总线接口接收读取数据的读取数据队列,其中所述多个命令包括用于将数据从耦合到总线的从属模块读取到读取数据队列模块中的多个读取地址。
11.根据权利要求10所述的系统,其进一步包括: 目标模块,其经由通信总线耦合到所述通信总线接口,其中所述目标模块可操作以经由所述通信总线从所述队列模块接收所述多个命令中的每一者且响应于接收到每一命令而经由所述通信总线向所述队列模块提供确认。
12.根据权利要求11所述的系统,其中所述通信总线为I2C总线。
13.根据权利要求8所述的系统,其中所述系统包括在芯片上系统集成电路中的单个衬底上 。
【文档编号】G06F13/366GK103870415SQ201310684323
【公开日】2014年6月18日 申请日期:2013年12月13日 优先权日:2012年12月13日
【发明者】弗雷德里克·达尼斯, 埃里克·路易斯·皮埃尔·巴迪 申请人:德州仪器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1