简介 世界领先的手机制造商们的广告有什么共同点? 答:他们几乎从来都不说他们的产品能够打电话——除非是某种视频通话功能。相反,他们承诺你可以与任何人联络,分享你所希望分享的一切。他们标榜有成百上千的应用程序可供您下载。这些应用程序可以做一切的事情,包括帮助你清理地毯,甚至使用星星来导航到一个遥远的地方,并且同时发送一系列 tweet 进行实时更新,与你在世界各地的忠实追随者分享。 现在,这一切似乎只是有趣的营销推广,但是如果研究的更深入一些,我们会发觉一个影响着每一位智能手机设计师的更深层次的工程现象。通过添加互联网浏览器,iPhone 创造了一种全新的手机使用模式。瞬间,该手机的移动客户端成为了所有万维网网站必须 24/7 提供的功能。今天,约有 10 万数量的特有功能应用程序开发人员在为各种智能手机服务。这个规模在同行业中是独一无二的,智能手机所带来的众多影响之一就是,快速产生新的需求。例如,游戏开发商叫嚣着需要更大、更好的显示器,或者智能手机的输出可以连接到更大的外部显示器。毕竟,可能比打掉“愤怒的小鸟”中最后一只猪更酷的事,就是在高清大屏幕前当着所有朋友的面打掉它。 对智能手机设计师的影响快速响应新的需求使得产品的开发周期变得更短。并且为了满足时间进度的巨大压力,将导致更多地依赖标准芯片——即全功能的应用处理器(片上系统或 SoC),如Qualcomm Snapdragon 或者 TI 的 OMAP。但是,现在我们有一个矛盾:如应用处理器那样大的芯片需要用两到三年的时间来开发,这意味着任何你今天购买的产品都是两三年前定义的,以目前智能手机的发展速度,这个周期太长了。 另一种方式是从应用处理器设计师的角度来看。他们必须用今天的知识,定义明天的芯片。但是,即使他们成功了,一旦新智能手机的应用处理器发布,就会十万个开发人员开始开发一些新的、不同的应用,由此将会产生更多的需求。因此智能手机的设计师们应该做些什么?为了实现设计进度,你必须使用现成的芯片。但是昨天的应用处理器往往不能满足今天的要求。所以,你需要延后您的想法,直到新的应用处理器可以支持你的创意(那时候你的竞争对手也将获得),或者你需要使用一些别的器件来补充现有应用处理器的功能。 应用处理器开发周期空档之间的衔接 一个解决办法是使用一个 FPGA。然后,你可以实现你的创意而无需等待。但是,直到最近,这不再是一种好的选择。一般对智能手机而言,FPGA 太大、太昂贵又太耗电了。这是因为传统的 FPGA 是为那些不受限于智能手机通常需要考虑的价格、功耗和空间限制因素的应用而设计的。 但是现在,你会发现越来越多的 FPGA 专门针对小尺寸、低价、功耗敏感的消费电子设备——特别是智能手机而设计。这种新的 FPGA,可用作应用处理器的功能补充,实现应用处理器开发周期空档之间的衔接(图 1)。 过多的传感器 在一个手机中,没有比传感器更好的例子来说明我们所描述的情况。拨打电话完全不需要用到传感器,它最初只用于简单的功能,如基于环境光调整显示器的背光。但传感器提供了许多有关手机周围环境的信息,这些信息可以在许多不同场合使用。因此,越来越多的传感器被添加到智能手机中:今天的智能手机可能会有十几到二十几个不同的传感器。 然而,这对设计师提出了一个问题:如何处理这些来自传感器的信息?显而易见的答案是将传感器输出输入到应用处理器,但处理器通常没有传感器所需的那么多 I2C 或 SPI 端口。这意味着需要寻找一些其他方式复用或使用通用的 I/O(往往表现欠佳)来处理过多的传感器输出。 但是现在面临挑战是:一个手机的体积是很小的,空间是需要重点考虑的问题——甚至比功率更重要。你不能只是把多个分立元件放进手机来增加传感器的数量。如果现在只有其他非消费类的系统,那么显而易见的解决方案是使用 FPGA。但是,根据以往的经验,没有人会将 FPGA 用在手机中:它们太大、太昂贵又太耗电。并且因为大多数 FPGA 是为许多无需考虑这些限制因素的应用而设计的。但是现在,你会发现越来越多的 FPGA 专门针对小尺寸、低价、功耗敏感的消费电子设备——特别是智能手机而设计。这些应用处理器的新伙伴,可用于未来新的硬件发布——如带有几十个传感器,和目前应用处理器所能实现的功能之间的衔接。 智能手机中的 FPGA 传感器管理是一个很好的例子,可以说明如何使用一款应用处理器的好伙伴,今天就能获得明天的 SoC 的功能。其中需要解决的最根本问题是传感器的数量和应用处理器上可用端口数量之间不匹配的问题。 例如,Qualcomm 的基带处理器——如 MSM8X55——最多只能处理 3 个 I2C 输入。今天的智能手机至少有三个定位传感器——加速度计、陀螺仪和指南针——以及触摸屏和电池监测器。比如为了吸引更多的健身爱好者,可能要添加心跳速率和流汗监测器以及一个海拔高度表(用于远足爱好者)。触摸屏必须有自己的输入,所以在其他传感器工作时,不会错过任何触摸事件。这意味着所有其他的传感器要共享剩下的两根 I2C 总线。 可以对一个应用处理器伙伴编程,添加更多的 I2C 主控,并且可以连接传感器和Qualcomm 的外部总线接口(EBI2)。如图 2 所示,所有的 I2C 功能的处理都在应用处理器伙伴中实现,然后传感器输出缓存在 FIFO 中,并通过高速 EBI2 接口与应用处理器通信,无需再使用任何 I2C 端口。 减轻应用处理器的工作负担 增加应用处理器的可用端口是很有帮助,但它也可能会导致另一个问题更加严重。应用处理器通常需要处理传感器数据,因此,传感器数量越多,它就会有更多的数据要处理。 例如,如陀螺仪和加速度计这样的惯性测量单元,只是在旋转或平移加速上,分别提供输出值。它们不会告诉你它们的值发生了变化。这意味着典型的应用处理器需要不断轮询,以确认是否发生了变化。即使应用处理器其他什么事都不干,这样也阻止了应用处理器进入休眠模式,从而增加了功耗。现在需要减轻应用处理器传感器管理的工作负担,FPGA 可以用作一个应用处理器伙伴,这将是一种有效的解决方案(图 3)。你可以创建一个自动轮询模块并且跟踪值,当出现某些变化,需要执行某些操作时提醒应用处理器。这将使传感器读有效地从“拉”转变为“推”,允许应用处理器忽略传感器,直到发生中断。 另外一种不同的情况是,一些传感器,如触摸传感器,已经提供了一个中断信号,因此应用处理器不必处理,直到有感兴趣的事件发生。问题是,当有多个手指触摸传感器并且滑动,将会有大量的中断产生——至少有上千个——应用处理器很容易就瘫痪了。此时,可以使用一个应用处理器伙伴来管理大量的中断,如图 4 所示,对它们进行排序,过滤噪声,并仅将有用的信息提供给应用处理器。这将大大减轻应用处理器的工作负担,无需处理那些无意义的中断,使其能够专注于处理更多实质性的任务。 请注意,你还可以同时处理接口转换。上面显示的应用处理器通过应用处理器伙伴中的一个 SPI 接口来接收 I2C 输入,你可以在另一个需要 SPI 接口的应用处理器中重用这个设计,抑或用于一个应用处理器的 I2C 端口已经用于其他场合的情况。这些例子说明了 FPGA 作为一个应用处理器伙伴,可以与三年前设计的应用处理器配合来完成你现在的创意…而不是要三年后才能实现。在专门为智能手机的小尺寸、低功耗、低成本需求而设计的 FPGA 中,莱迪思半导体公司的 mobileFPGA™是一个很好的代表。在智能手机生命周期大大缩短的今天,使你可以跟上令人眼花缭乱的创新时代,并同时还能够思考一个“手机”可以实现的所有其他不可思议的功能。
|