本发明专利申请是国际申请号为pct/us2013/065017,国际申请日为2013年10月15日,进入中国国家阶段的申请号为201380053473.1,名称为“虚拟gipo”的发明专利申请的分案申请。
相关申请
本申请要求于2012年10月15日递交的美国临时申请no.61/714,118的权益,其内容通过引用完全被纳入于此。
本申请涉及通用输入/输出(gpio),并且尤其涉及配置成将一对引脚用作虚拟gpio引脚的集成电路。
背景技术:
通用输入/输出(gpio)使得集成电路设计者能够提供可以为特定应用定制的通用引脚。例如,取决于用户需要,gpio引脚可以被编程为输出引脚或者输出引脚。gpio模块或者外围设备通常会控制基于接口要求而能变动的引脚群。因为gpio引脚的可编程性,它们一般被包括在微处理器和微控制器应用中。例如,移动设备中的应用处理器可以使用数个gpio引脚来进行握手信令,诸如进行与调制解调器处理器的处理器间通信(ipc)。
对于此类握手信令,若边带信号必须既被处理器发射又被其接收,那么该边带信号可以被视为是“对称”的。若有n个对称的边带信号需要被交换,那么每个处理器要求n*2个gpio(一个gpio发射给定信号并且一个gpio接收该信号)。例如,调制解调器处理器与应用处理器之间的对称ipc接口可以包括五个信号,其转译成结果所得的ipc信令需要10个gpio引脚。ipc通信需要如此之多的gpio引脚增加了制造成本。此外,为ipc投入过多的gpio限制了gpio对其他系统级外围接口的可用性。该问题不能够通过将ipc通信移到处理器之间的主数据总线上来得到解决,因为如此就违反了特定角点条件。
相应地,本领域中存在对能够容适众多输入/输出信号,而不要求过多数目的引脚的gpio架构的需求。
技术实现要素:
提供了一种用于在各自具有处理器的两个集成电路之间进行通信的虚拟gpio架构。每个集成电路还包括用于使用一组信号与远程处理器通信的gpio接口。该组信号包括一组gpio信号和一组虚拟gpio信号。每个集成电路由此包括对应于该组gpio信号的一组gpio引脚。
与该组gpio信号形成对比的是,该组虚拟gpio信号并不在gpio引脚上被发射。替换地,每个集成电路使用专用发射引脚和专用接收引脚来传送和接收该组虚拟gpio信号。鉴于此,该组虚拟gpio信号包括发射集和接收集。每个集成电路中的有限状态机(fsm)配置成通过该专用发射引脚向远程处理器串行地传送该发射集。该有限状态机进一步配置成在该专用接收引脚上从该远程处理器串行地接收虚拟gpio信号的该接收集。
该处理器向该gpio接口提供第一组信号。从该gpio接口,该第一组信号的一部分作为第一组gpio信号在第一组对应gpio引脚上被传送到远程处理器。来自该处理器的该第一组信号的剩余部分由该gpio接口并行地提供到fsm。该fsm能够接着将该剩余部分作为虚拟gpio信号的发射集在专用发射引脚上串行地传送。
该gpio接口还在第二组对应gpio引脚上从该远程处理器接收第二组gpio信号。此外,该fsm从该远程处理器串行地接收虚拟gpio信号的接收集,并且并行地向该gpio接口提供该接收集。该gpio接口能够接着向该处理器提供第二组信号,该第二组信号包括来自该远程处理器的第二组gpio信号、以及虚拟gpio信号的接收集。
用这种方式,该处理器对于其向该gpio接口提供的第一组信号是否包括任何虚拟gpio信号是“不置可否”的。类似地,对于该处理器来说,它从该gpio接口接收到的第二组信号是否包括任何虚拟gpio信号并没有功能上的差别。该处理器由此不需要针对其与本文中所公开的虚拟gpio架构的集成进行任何配置或者重编程。此外,该有限状态机独立于该处理器,因为其并非是由软件驱动的。该虚拟gpio架构由此能够在该处理器处于休眠模式或以其他方式呈非活跃时独立地运作,这节省了功率。
一个处理器中的fsm在由开始位和结束位划界的帧中传送虚拟gpio信号的发射集。远程处理器中的fsm由此将所传送的帧作为其虚拟gpio信号的接收集来接收。通过监视其是否接收到包括了开始位和结束位二者的完整帧,一个处理器的fsm就能够检测出该远程处理器是否发生了故障。
附图说明
图1是示例虚拟gpio架构的框图。
图2a是其中处理器与单个远程处理器通信的虚拟gpio架构的高级框图。
图2b是其中处理器与两个远程处理器通信的虚拟gpio架构的高级框图。
图3是虚拟gpio有限状态机的框图。
图4解说了虚拟gpio帧的传送与接收之间的时序关系。
图5是图1的gpio架构所实践的方法的流程图。
本发明的实施例及其优势通过参考之后的详细描述而被最好地理解。应当领会,在一个或多个附图中,相同的参考标记被用来标识相同的元件。
具体实施方式
提供了一种虚拟通用输入/输出(gpio)架构,其使得系统能够将一对引脚使用为就如同这对引脚构成了更大数目的gpio引脚一样。这一架构被视为是虚拟的,因为对于创建那些虚拟gpio信号的系统级应用而言,这就如同那些虚拟gpio信号正被容适在常规gpio引脚上进行输入/输出一样。换句话说,具有本文中所公开的虚拟gpio架构的片上系统(soc)或处理器不会体验到gpio信号与虚拟gpio信号之间的功能性差异。然而,仅使用了两个引脚来传送和接收原本各自都需要它们自身专用的gpio引脚对(若gpio信号是对称的)的虚拟gpio信号。
本文中所公开的虚拟gpio架构可以针对容适移动电话或其他通信设备中的应用处理器与调制解调器处理器之间的ipc来讨论。然而,将领会,本文中所公开的虚拟gpio电路和技术广泛应用于要求gpio能力的片上系统(soc)或者专用集成电路(asic)。
所公开的虚拟gpio架构使得发射节点的健康对于接收节点来说是透明的。这是重要的优势,在软件实现的调试阶段期间尤其如此,因其向接收处理器指示了发射处理器变为不起作用的时间。
为了使得能够实现此类稳健的虚拟gpio能力,每个集成电路包括耦合到电路板上的发射线的专用发射引脚以及耦合到该电路板的接收线的专用接收引脚。鉴于此,虚拟gpio信号可以被划分为用于在该发射线上进行传送的发射集和用于在该接收线上进行接收的接收集。如果信令是对称的,那么每个处理器的发射集中信号的数目是相同的。然而,本文中所公开的虚拟gpio架构能够容适不对称信令,其中一个处理器的虚拟gpio信号的发射集与远程处理器的发射集的大小不相同。
现在转到附图,图1针对移动电话或其他通信设备中对应集成电路中的应用处理器集成电路100和调制解调器处理器集成电路105来解说虚拟gpio架构101。因为每个集成电路耦合到专用的发射线和专用的接收线,所以应用处理器100的发射线110a由此是调制解调器处理器105的接收线。类似地,调制解调器处理器105的发射线110b是应用处理器100的接收线。这些线或导线被承载在电路板(由虚线150指示)或者集成电路100和105之间的其他物理互连上。每个集成电路包括耦合到对应发射线(例如,调制解调器处理器105的线110b)的专用发射引脚。类似地,每个处理器包括耦合到对应接收线(例如,调制解调器处理器105的线110a)的专用接收引脚。每个集成电路中的有限状态机(fsm)115使用这些专用线和引脚,参考来自外部时钟源(例如,32khz休眠时钟)的外部时钟信号来控制传送和接收。
如在gpio领域所已知的,每个处理器包括其用来与gpio引脚对接的gpio接口103。有利地,gpio接口在虚拟gpio架构101中可以是不变的。换句话说,每个处理器以常规方式通过其gpio接口103接收和传送信号,从而虚拟gpio架构101对于处理器100和105而言是透明的。通过每个gpio接口103处理的这些信号的特定部分可以作为gpio信号130在常规gpio引脚125上被发射和接收。但是,通过gpio接口103处理的这些信号的剩余部分并不通过常规gpio引脚125被发射或接收。替代地,该剩余部分包括使用专用发射引脚和专用接收引脚通过fsm115来传送和接收的多个虚拟gpio信号135。
通过gpio接口103处理的这些信号的此剩余部分被指定为虚拟gpio信号135,因为它们并不如常规gpio信号130的情形中那样各自具有它们自身专用的引脚。这十分有利,因为每个处理器核不要求对其gpio接口103的改组,而虚拟gpio架构101达成了与其中虚拟gpio信号135将各自要求其自身引脚的常规gpio实施例相比而言显著的引脚减少。
集成电路可以仅包括一个fsm115或者可以包括用于和多个外部系统接口的多个此类元件。图2a解说了虚拟gpio架构,其中集成电路200包括用于与集成电路205(包括其自身的fsm115)中的远程处理器通信的单个fsm115。作为对比,图2b中所示的集成电路220包括用于分别与集成电路225和230中的远程处理器通信的fsm115a和fsm115b。鉴于此,片上系统(soc)(诸如本文中所讨论的处理器)可以被配置有容适与其他soc的虚拟gpio信令所需要的那样多的fsm。
不管处理器可能具有的fsm的数目是多少,如图2a中所指示的,每个fsm使用其自身专用的发射引脚240和接收引脚245进行通信。
再次参见图1,因为虚拟gpio信号135是使用诸如fsm115的有限状态机来容适的,所以这些处理器核可以处于休眠或者其他类型的休止状态,却能够接收虚拟gpio信号135。以这种方式,虚拟gpio架构101不仅有利地节约了每个gpio接口103的引脚的数目,而且也是低功率的。
如本文中所使用的,“引脚”是覆盖了集成电路用来耦合到电路板上或者其他物理互连(例如,封装互连或者穿孔式通孔互连)上的导线的结构(诸如焊盘或实际引脚)的通用术语。例如,若每个集成电路具有十六个gpio引脚125,那么这些引脚可以配置成容适八个对称gpio信号130(为了解说清楚起见,图1中仅示出了四个常规gpio信号#1到#4)或者十六个不对称gpio信号130。此外,每个集成电路能够使用线110a和110b来容适多个(n个)虚拟gpio信号135的输入/输出对接,其中n是任意复数整数。对于每个处理器核而言,gpio信号130与虚拟gpio信号135之间没有差异:它们两者都只不过是要按需通过gpio接口103传送和接收的信号。然而,与常规gpio信号130形成对比的是,因为虚拟gpio信号135没有专用引脚,所以虚拟gpio信号135在fsm115中被串行化以用于在线110a和110b上传输。在接收之际,每个fsm115将接收到的经串行化虚拟gpio信号反串行化。由此,每个fsm115对于虚拟gpio信号135而言起到串行器/反串行器的作用。
处理器可能需要响应于这些gpio信号中选定的若干信号上的改变而接收中断信号。针对虚拟gpio信号135而言,调制解调器功率管理器(mpm)140按通过中断配置寄存器145被编程的方式来监视这些选定的gpio信号。每个虚拟gpio信号135具有对应的中断配置寄存器145。如果虚拟gpio信号135被要求响应于该信号改变状态而生成中断,那么对应的配置寄存器145将被相应地编程。类似地,如果虚拟gpio信号135是无论该信号是否改变了状态均不生成中断的信号,那么对应的中断配置寄存器也将被相应地编程。mpm140也可以包括有限状态机。由此,就像fsm115,mpm140是低功率的并且无论其处理器是处于休眠模式还是某种其他休止状态均呈活跃。
虚拟gpio信号135可以被细分为发射集和接收集。在对称系统中,每个集合可以具有相同的数目。然而,将会领会,虚拟gpio架构101是有利的,因为其能够现成地容适其中虚拟gpio信号135的发射集和接收集具有不同大小的不对称信令实施例。无论架构101是对称的还是不对称的,每个fsm115并行地从gpio接口103接收虚拟gpio信号135的发射集,并行的意义是指虚拟gpio信号135的该发射集中的每个信号被承载在gpio接口103与fsm115之间的该信号自身的导线106上。与之形成对比的是,由fsm115对此发射集所做的结果传输发生在单个发射引脚240上,如针对图2a所讨论的。虚拟gpio信号的该发射集接着变成远程处理器的接收集。该远程处理器的fsm接着反串行化该接收集,以使得其可以并行地呈递给gpio接口103。
每个fsm115包括存储虚拟gpio信号135的发射集的先前状态的配置寄存器107。以这种方式,每个fsm115能够监视从gpio接口103接收到的发射集的当前状态,并且仅在当前状态相对于先前状态而言改变了时才触发发射集的串行传输。换句话说,fsm115将仅在通过配置寄存器107中存储先前状态监测到发射集内的一个或多个信号改变了状态时才触发发射集的串行传输。
如以上所讨论的,每个fsm115作为串行器/反串行器来串行化虚拟gpio信号135的发射集并且反串行化虚拟gpio信号135的接收集。图3是fsm115的框图用以更好地解说这些操作。fsm115经由gpio接口103(图1)通过复用模块300与处理器核交换虚拟gpio信号135。在一个实施例中,fsm115包括若发射集中有改变则将授权在发射线110a上传送虚拟gpio信号135的发射集的逻辑电路301。逻辑电路301由此将虚拟gpio信号135的发射集的当前状态与存储在配置寄存器107中的发射信号的该集合的先前状态作比较。例如,逻辑电路301可以包括异或门310以执行该比较。复用模块300将该发射集并行加载到并入串出(piso)移位寄存器315。若来自异或门310的使能信号320走高(指示发射集的当前状态与先前状态之间有改变),则piso移位寄存器315被启用以响应于外部时钟120的循环,串行地将其内容移出到发射线110a上。
fsm115还使用串入并出(sipo)移位寄存器325用类似的方式将虚拟gpio信号的接收集反串行化。虚拟gpio信号135的接收集由远程处理器生成并且由远程处理器传送到接收线110b上。该虚拟gpio信号135的接收集响应于外部时钟120的循环被成功地移到sipo移位寄存器325中。如本文中所进一步讨论的,fsm115被配置成在具有单独开始位和结束位的帧中传送该发射集并且接收虚拟gpio信号135的接收集。
这些帧具有预定义的大小。在一个实施例中,帧大小可以被固定为长达特定数目的位。若虚拟gpio信号的发射集小于此固定大小,那么每帧内未被使用的位可以是随意(don'tcare)值。替换地,每个fsm115可以被配置成取决于给定应用所需的位的数目而变更所发射的帧的大小。
为了检测收到虚拟gpio信号135的接收集的完整帧,fsm115可以包括在收到帧的开始位后计数外部时钟120的必要循环数目的逻辑电路350。例如,假设接收集包括响应于外部时钟120的十个循环所接收到的十个虚拟gpio信号。在检测到开始位并且等待了外部时钟120的另外十个循环后,逻辑电路350将接着期望收到结束位。如果相应地检测到了结束位,那么逻辑电路350可以接着选通输出锁存器351来并行接收已作为完整帧移入sipo移位寄存器325的虚拟gpio信号的接收集。被锁存的虚拟gpio信号的接收集接着可以通过复用模块300被呈递给gpio接口103。
再次参照piso移位寄存器315,将会领会,该寄存器被配置成将虚拟gpio信号的发射集用开始位和结束位来框定。虚拟gpio信号的发射集由此在由开始位和结束位划界的帧中被传送。因为处理器的发射集变成远程处理器的接收集,所以该接收集也相应被框定。该框定是有利的,因为每个处理器由此可以监视远程处理器的健康而不需要任何的附加专用引脚。例如,每个fsm115可以配置成在默认状态(虚拟gpio信号的发射集的当前状态相比于先前状态没有改变)期间将其专用发射引脚240弱拉(并因此将发射线110a弱拉)至电源电压。对于此类实施例而言,开始位将会是逻辑零,以使得为了传送开始位,fsm115将发射线110a接地。用这种方式,每个fsm115可以通过检测接收线110b被拉向接地而现成地检测出收到开始位。在一个实施例中,开始位和停止位是逻辑互补的。
存在处理器发生故障使得其不恰适地将其发射线110a拉到接地的可能性。该远程处理器会由此将这一情况检测为开始位,并且逻辑电路350会相应地开始向着帧的结束进行计数。但是,结束位在该实施例中是逻辑1,这样每个fsm115将发射线110a充电至电源电压以信令通知帧传输的结束。若处理器发生了故障使得远程fsm检测到被视为开始位的信号,则逻辑电路350将不会检测到结束位,并且将会相应告知其处理器有关远程处理器的故障。
图4示出了针对用于虚拟gpio帧400的传送和接收的外部时钟120的示例性时序。为了允许有足够的建立时间来进行接收,传输应当参照第一时钟沿来发生,并且参照剩余的时钟沿接收。例如,piso移位寄存器315中的位可以响应于外部时钟120的下降沿或负沿而被移出以用于在发射线110a上传输。相反地,接收线110b上收到的位可以响应于时钟120的上升沿或正沿而被移入sipo移位寄存器325。
为使一个处理器检测到远程处理器中的非活跃状态,每个fsm115可以被配置成在默认状态(其中没有帧要发射)中弱拉高其发射线。开始位和停止位具有相反的逻辑状态。开始位405可以由此为零,以使得发射线110a为该位的传送而被拉低,而停止位410可以为二进制1值,以使得发射线110a为该位的传送而被拉高。再次参见图3,逻辑电路350被配置成参照外部时钟120的上升沿来监视接收线110b。无帧传输的默认逻辑状态由因上文所讨论的弱上拉而导致接收线110b简单地维持在高来指示。如果逻辑电路350在外部时钟120的上升沿之一检测到接收线110b被拉低了(指示开始位405的零值),则逻辑电路350根据帧400的预定义大小等待足够数目的时钟循环以接着检测停止位410的逻辑高值。收到停止位410向逻辑电路350指示完整帧400已被完全移入sipo移位寄存器325。此刻,逻辑电路350选通sipo移位寄存器325,以使得收到的帧通过锁存器351被并行地提供到复用模块300。虚拟gpio信号的接收集可以接着通过gpio接口103被相应地提供到处理器核。
相对慢的外部时钟120(诸如32khz休眠时钟)对于ipc的信令要求来说是充足的。例如,假设虚拟gpio信号的传输的最小建立和保持要求各自为两纳秒,并且虚拟gpiofsm处收到外部时钟120的最大预期领先或滞后为六纳秒。能够容易地示出,外部时钟120的结果所得的最大频率将会是62mhz。诸如来自休眠时钟的32khz频率由此会为此类实施例提供非常大的安全边际。
图5的流程图中总结了架构101的操作方法。该方法始于gpio接口在步骤500从其处理器接收一组信号。在步骤505该组信号接着从该gpio接口被提供到fsm。在步骤510,fsm响应于外部时钟的循环,在专用发射引脚上串行地发射该组信号。
考虑所公开的虚拟gpio架构的优势:仅需要两个引脚以及共用时钟源,而任何数目的虚拟gpio信号能通过有限状态机被串行化或反串行化。仅有的限制是对虚拟gpio信号参照外部时钟120和任何预期的时钟滞后或领先量的时序要求。此外,不需要任何其他引脚来使得一个处理器的健康对于对方处理器透明。
如本领域普通技术人员至此将会领会并取决于手头的具体应用,可以在本公开的设备的材料、装置、配置和使用方法上做出许多修改、替换和变动而不会脱离本公开的精神和范围。有鉴于此,本公开的范围不应当被限定于本文中所解说和描述的特定实施例(因为其仅是藉其一些示例来解说和描述的),而应当与所附权利要求及其功能等同方案完全相当。