引言
嵌入式世界的范围和概念极其广泛,可以从ASIC到MCU,而ASIC是有着巨大的潜力和创新力的一种技术,尽管它的设计非常昂贵,并且所需世界要花费数年,但这依然不影响它的巨大市场潜力。相比而言,单片机方案就便宜得多,时间花费也短,只需几个月甚至几周就可以了。但是不论ASIC还是单片机,他们都收到第三方芯片的限制。在终产品上来说,他们还是有很多相似点和共同点的,都主要使用ARM CPU核,包含标准的通信接口,片内整合了大量的模拟功能,支持低功耗工作和快速唤醒。
图1 嵌入式设计SoC和MCU对照图
这个对照图中间的是可编程平台,它的设计不发生在硅级别,但能从功能上提供巨大的灵活性,可以集成到一个器件上。这种类型明显的例子就是FPGA和CPLD,他们功能强大,容量巨大。然而,这些器件并不能称之为可编程平台,因为他们都是集中在数字领域的。
为了在ASIC和MCU之间架起真正的桥梁,那就需要一个可编程平台,这个平台能够提供模拟和数字功能的灵活性,不需要设计者是这两方面的就能做好设计。设计者想要这样的平台,在标准的MCU上加上可编程功能,利用他们现成的工具和系统。那么,理想的系统是这样的,完全适合一种应用,片上提供所有所需的外围器件和接口,性能表现恰如其分,并没有不需要的还要付钱的功能。
要实现这样的灵活性需要一个平台,这个平台可以支持在SoC里实现可定制配置的高性能模拟功能和可编程数字逻辑,而不需要开发人员成为HDL或模拟设计的。微控制器有一些工具和模拟功能,但缺少配置性。FPGA有可配置的逻辑,也可以提供比较好的软件,但是他们的缺点仍在于模拟方面和不能真正的低功率运作。
1 ARM是实际应用中的嵌入式标准
许多年来,ARM构架一直是ASIC设计事实上的标准,在很多高端嵌入式市场占统治地位,英特尔公司一直致力于个人电脑的使用推广(没有反编程克隆的问题)。在几年前,Cortex M系列处理器核发布之后,人们很难找到一个没有ARM核的现代单片机。
这种说法的真实性可以从遍布嵌入式工业的ARM支持者看出。跟SoC IP供应商谈及他们的目标新产品使用的个总线体系结构时,结果永远是ARM的AMBA。和实时操作系统(RTOS)公司(那些还没有被半导体公司购买)交谈时,他们会告诉你,支持ARM是他们新产品的优先级。
实际上,任何平台希望在可编程部分寻求成功都必须使用ARM CPU。其结果是连续性的。工程师们不害怕变化。但是,他们经常因变化而浪费时间。在SoC的设计中,如果你不提供相同的CPU结构,同样的编译器,同样的IDE和调试器,同样的实时操作系统和相同的中间软件包,就想吸引工程师不用他们的传统的平台转向新的设计, 这是非常困难的。简而言之,软件规则就是没有人愿意离开原来的设计。除了真正的低端产品,他们能够在8位设备上如8051上完成特定的嵌入式功能,任何不是ARM CPU的可编程平台都很快归类于少数领域,成为不占主导地位的架构。
2 在可编程器件中添加模拟功能
不断有可编程器件失败,当然,是指模拟功能。虽然有很多平台可以整合重要的模拟功能,如高速通信接口,但真正的难点是要解决整合的传统片外部件的低级电路问题。毕竟,现在的FPGA的物理层(PHY)的实现是完全把模拟部分的问题和设计者隔离的,只留标准数字接口,就像其他的IP模块。
真正的模拟挑战是实现通用功能,如模拟数字和数字模拟转换器、放大器和电压比较器。这不仅仅是因为模拟电路是一个棘手的设计问题,更是因为一些困难被转交给了终用户。对于数字功能,例如,它可以把实现方式融入设计,路由到适当的I/O,运行静态时序检查,以及计划中的所有工作。当然,时序扮演了设计中的重要角色,但时序问题并不是IP整合的本质的问题,而是器件运行时的速度问题,整体设计的复杂程度,器件的利用率,以上这些都会影响到路由资源。然而,对于任何模拟设计,甚至简单的电路都很难设计,配置选项、片上路由和外部板设计,这些都很难做到。
举例来说,开关电容模块是重要的模拟部件,因为他们可以配置成许多方式,如可编程增益放大器(PGA),跨阻放大器(TIA),模拟过滤器,甚至是混频器。然而,他们也给设计者带来了问题,因为他们的行为依赖于模块的配置与电容的开关频率。把这个功能放到一个芯片里固然很好,但是要从datasheet和一堆配置寄存器里明白如何使它工作就不容易了。
要解决这个问题当然可以通过软件实现。把高性能模拟功能放到一颗器件里是一个解决方案。但是如果没有一个开发工具来揭开配置过程的神秘面纱,那么当初选定可编程器件后,由于需要快速设计进入市场,在设计中很可能要引进很多开始计划时没有的片外器件。
要解决这些模拟问题的方法是一个软件工具,它通过包括可编程模拟模块和实现细则的器件提供了模块和参数,使设计者不需了解功能如何实现。换句话说,设计者不需要了解传统ADC芯片的工作原理,也不需要学习该集成器件的寄存器名称和位域,只需要建立一个ADC就可以了。设计者不需要陷入计算时钟频率和匹配R和C值的困境,只需要根据其特征,特性(如可分辨率,采样率,工作电压范围,等等)配置ADC即可。
一旦设计里确定了ADC,下一步就是裁剪它适合应用的需求。理想的情况是,这个过程通过设置参数实现。如果一个ADC支持一个范围或固定的设置值,可以叫输入范围(群电压不会给ADC供电),那么这些选择应该直观地体现出来,通过一个操作来实现对理想参数值的选择。
图2 一些工具,例如赛普拉斯的PSoC Creator可以通过选择你所需要的功能实现可编程模拟电路设计,可以无需考虑实现细节
这种可编程平台的工具中典型的例子就是赛普拉斯半导体的PSoC Creator。PSoC Creator支持PSoC 3和PSoC 5器件设计,它提供原理图设计接口,用户可以根据需要绘制,可以通过用户参数编辑器来配置所选器件。在目录里用户可以预创建模拟(和数字)器件,在那里可以看到工程实例和数据手册,就像是片外的ADC。当在设计中使用一个器件时, 工具会自动生成API接口,使用者不需要进行寄存器设置,或者担心ADC的次序或时序。
3 具备软件开发环境的整合模拟数字功能的设计
使用模拟器件原理图设计解决可编程模拟问题是很有效的,它并不是整个的解决方案。开发人员也需要一个工具支持数字设计,更重要的是,还要支持应用软件设计。
在数字设计里原理图设计绝不是新鲜事物,支持数字和模拟电路设计整合成一个单一的器件的平台越来越受欢迎。然而,使用多个工具来完成一个设计,这也不能吸引开发人员。开发人员更希望在一个编辑器里进行数字和模拟设计,用相同的环境创建,调试和测试上述设计。
可编程平台的供应商需要记住,在MCU的世界,设计者的设计离不开软件中心的集成开发环境(IDE),需要它进行源码编辑、项目管理、工具编译,在一个单一构架下一起调试。在ASIC世界里,对于应用开发,他们是相同的,芯片设计人员和软件开发人员很少是一个团队。两组中的任何一组都不希望丢弃他们方便的IDE增加新的工具来解决它们之前不关心的问题。这两个团队都需要一个现代的IDE,这个IDE看起来和用起来就像他们以前用过的那样,甚至需要更引人注目的特点来证明IDE已经变化了。
图3 整合了模拟比较器和数字计数器的过电压定时器电路
我们通过过电压定时器举例说明一下这些想法,它使用一个模拟比较器和一个数字计数器来监控输入电压。如果引脚电压超过参考值,比较器开启计数器,一段特定的时间后 (当然,这个时间可以通过设置一个参数来实现),在引脚发出一个错误信号并触发中断服务程序(ISR)。这个简单的例子很容易地整合了数字和模拟电路设计,开发人员可以从草图开始设计,只需考虑MCU的工作,也就是说,连接了引脚,时钟,参考电压和中断,那么就可以设计很难实现的功能了。
当这个设计创建后,开发环境为器件生成API。这使得开发人员可以不需了解它的实现方式,直接使用这些器件。例如,开发人员可以通过API改变计数器的timeout周期或得到其值,关闭中断,关闭时钟等等,不需要研究器件的参考手册或示例代码。通过从原理图里建立硬件,可编程器件提供了固定功能芯片所不能比拟的优势,因为工具自动提供了所有的设置代码,使接口到所有片上功能的设计成为一个很简单的过程。
图4 PSoC Creator创造者的工作浏览器窗口显示了为比较器,计数器,时钟和中断服务程序生成的源文件
API的生成其实是把硬件设置参数映射到软件抽象概念的延伸。例如,要建立一个时钟,开发人员只需要把它放到设计里然后设置所需的频率。开发工具会负责如何从片内或片外已知的时钟源获得在公差范围内的适当的频率。启动和关闭时钟只需要简单的调用API即可,例如ctr_clock_Start()或ctr_clock_Stop()。根本不需要修改寄存器来选择时钟源,设置分频,选择它就象是片上功能的输入一样,或者可以通过位操作实现开启/关闭。
开发工具可以为系统资源(例如时钟,中断,DMA,或引脚)生成API,可以节省时间,同时,片上模拟、数字和通信外设API也使得开发可编程器件比MCUs 或 ASIC变得更容易。当使用了的嵌入式ARM核后,相对于文章开始所看到的对照图,集成的原理图设计工具比对照图两端的设计表现出强大的优势。随着可编程芯片越做越好,性能越做越强,ARM核越来越强大,模拟功能越来越强,成本越来越低,这一切似乎越来越清楚地表明,平台支持的软件将确定它在市场上是否会成功。日常开发工具是开启芯片潜能和扩大设计范围的钥匙,重要的是,它会赢得嵌入式工程师的喜爱,因为他们一直在做一件事情:找一个更好的方法来解决所有难题。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。