新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Flexis微型控制器内部:包括8位及32位

Flexis微型控制器内部:包括8位及32位

作者:Scott Pape Freescale公司时间:2008-09-18来源:电子产品世界收藏

摘要:公司的 产品家族既有8位也有32位CPU核芯片,8位和32位具有相同的外设,并且引脚完全兼容。以血压监视器为例,如要从8位产品改进为一个较高级的产品,不论硬件还是软件都不需要变更,增加性能只需在现有装置上添加部件和软件。

本文引用地址:http://www.eepw.com.cn/article/88163.htm

关键词:

  高性能还是低成本?低功率还是附加功能?当设计师为他们的最新产品选择时,必须权衡这些选择。选择错了或需求发生了变化,你要么屈就于一个非最佳解决方案,要么得花费额外的时间和钱来把软件和硬件转换到另外一个核上。如果你能选择一个产品家族,使得在低成本方案与高性能方案之间的迁移异常简单,只需替换你现有硬件中的MCU并重新编译你的代码即可,这样你就事半功倍了。半导体正是这样考虑的,推出了 微控制器系列。

  Flexis QE128是一个微控制器产品家族,有8位也有32位CPU核,性能广泛,具有较好的成本效益。8位核是Freescale的S08核,是长期以来使用的HC05和HC08核的换代升级产品。32位核是ColdFireV1,属于Freescale ColdFire家族的一个新版本。为使装置移植容易,S08和V1具有相同的外设,并且针对针兼容。

CPU对比

  S08和V1的 CPU核存在固有差异。让我们来检视这些差异,并讨论如何通过芯片级设计和开发工具使它们最小化。

程序器的模型

  首先展示每个CPU的程序设计模型。图1显示S08的程序器模型;图2 是ColdFire V1的程序器模型,上面重叠显示S08模型,以显示二者的相似处和不同处。正如你所看到的,V1核的寄存器显著地大许多,数量也多。


图1 S08程序器模型

  S08有一个很小的CPU寄存器,以保持小CPU体积,适用于价格非常敏感的MCU产品组合的低端MCU上。它有一个8位累加器、一个16位变址寄存器(由2个8位寄存器H和X组成)、一个16位程序计数器(允许最多64千字节的连续存储器映射)、一个16位栈指针和一个8位条件码寄存器(只有6位用于条件式)。

  相比之下,V1有一个大得多的CPU寄存器,以使性能最大化。V1有8个32位数据寄存器,而S08只有一个8位累加器;8个32位地址寄存器,而S08只有16位变址寄存器和16位栈指针;一个32位程序计数器,能寻址一个16兆字节的存储器映射。条件码寄存器实际上比S08的条件码寄存器少一位,只有5位,而S08的是6位(中断屏蔽不包括在V1的CPU内,此功能集成在中断控制器内)。

S08 与 ColdFire V1有哪些兼容性

  考察了这两种装置的CPU之后,你可能疑惑:“S08 QE128 与 V1 QE128 MCUs怎么会真正兼容呢?”答案很简单,Freescale设计CPU核周围各部分时都使它们尽可能相同。一个微控制器的真正实力是它把多种外设和存储器集成到同一个硅片上作为其CPU。

相同外设=相同代码

  今天,可以买到用于最小的微控制器核的C编译器。这些用于各个核的C编译器各指令系统之间隐含着诸多不同点,允许程序器使用一个公用语言。我们刚刚讨论的S08 与 V1核之间的不同点隐藏在编译器的内部工作中。因此,当在这两种MCU之间切换时,核本身算不上大障碍,但核周围的所有部件是障碍。外设的不同促使你必须掌握新模块并修改代码,使模块能担任从前MCU所担任的同样任务。

  因此,为使Flexis微控制器家族真正兼容,两款MCU使用了相同的外设。从A/D转换器到计时器模块,QE128的S08 和 V1使用了相同外设的相同版本。因此,当UART 使用S08 QE128,被配置为115.2kbps、9 个数据位、2 个结束位、偶数奇偶校验,那么,在运行V1 QE128上的相同设置时,根本不必更改代码。

一个应用实例:血压监视器

  为了演示两种Flexis QE128的兼容性,我们设计了一个血压监视器(BPM)的参考设计,它既可以用S08 QE128也可以用 V1 QE128来驱动。图3显示了该BPM的框图。这个参考设计有很好的伸缩性,它可以仅采用最少量的硬件来设计,只测量和显示血压;或设计为带全部的选择功能,或设计成某中间结合点。




图3  血压监视器参考设计的框图

  最小功能包括带滤波器的压力传感器、OLED显示器、使用一个电场传感器的小键盘接口、用于用户告警的基本音频音调。选项包括USB连通性、ZigBee无线连通性、上坡血压测量、自动袖带充气、用于存储多个用户测量历史值的MRAM存储器、数字化语音音频告警。印制电路板为模块化设计,可集成任何功能,若要增加一额外功能,只需在BOM(材料清单)上添加必要元件即可。

  为配合硬件的模块式设计,软件也采用同样设计思路,即通过添加软件模块来增加附加功能。这些附加模块被写入,它们或由主程序周期性调用,或通过中断服务程序调用,这样它们很容易被添加,而不会影响到其它程序。

产品范围从低成本到高端

  通过此参考设计,我们不难看出,两款Flexis QE128 MCU间的兼容性比较令人满意。一家公司可以生产一系列BPM,从低成本版本开始,利用S08 QE128实现其基本功能。可以添加任一选项,S08 QE128仍可以维持运行该系统。然而,当越来越多的选项被添加时,S08 CPU将用完带宽, V1 QE128所具有的更高性能就成为必需。需要从8位切换至32位的那一点,取决于使用了附加功能的哪种组合,因为不同功能需要不同的CPU马力数。

  让我们来仔细研究一下BPM的基本功能,就血压测量本身来说,来看看两款Flexis MCU是如何处理它的。测量血压最容易的方法是给袖带过度充气,使之超过收缩压力读数,然后当袖带缓缓放气时,听心跳测量压力。这里指的是下坡测量法。测量过血压的人都知道,袖带过度充气有些不舒服。一些非常敏感的人,尤其是老年人,甚至会经历过由于测量导致的皮下出血。

  一种更舒服的测量方法是给袖带充气,一旦到达收缩压时立即停止,在这期间检测收缩压。当袖带缓缓放气时,再测量舒张压。这个上坡方法避免了袖带过度充气,使病人感觉相对舒适些。然而,在袖带充气期间,收缩压很难测量,这是由于气泵产生的噪音,不容易把它与心跳检测区分开来。

两种方法,两款MCU,一套硬件和软件设计

  对BPM参考设计而言,袖带的压力经由压力传感器被测量,压力值由带12位模数转换器的MCU读取。由于作用于每次心跳的袖带压力的周期性改变,心跳被检测。对于下坡测量,袖带被充气至一个预定压力,然后当袖带放气时,通过读取压力值心跳被检测。因为气泵在放气期间不工作,压力读数的三角区只与心跳符合,这使得计算很容易,只需要最小的数字滤波。在这种情况下,一个S08 CPU能容易地处理12位模数转换器的值,寻找符合心跳的三角区,读出符合收缩压和舒张压的压力读数。

  对于上坡测量,气泵将对袖带压力改变产生噪音,同时,MCU试图通过压力改变检测心跳。通过为模数转换器的压力测量采用高级软件滤波技术,泵噪音被滤波掉,心跳读数被隔离开。然后收缩压就能被检测到,气泵关闭,袖带放气,以检测舒张压。 S08 CPU能操作12位的模数转换器结果的软件滤波,实施上坡测量,但它需要CPU带宽的更大部分,只给其它任务留下很少的带宽。而V1 CPU,能容易地对12位数据施用软件滤波器,为其它任务留下大量带宽,例如控制气泵电动机,向病人提供数字语音反馈,在显示器上实时显示脉率。

Flexis 的优势

  血压监视器的例子显示了拥有一个覆盖很宽成本范围的微控制器家族的优势,而且在性能方面实现针和外设兼容。在这个例子中,如要改进为一个较高级的产品,不论硬件还是软件都不需要变更。增加性能只需在现有装置上添加部件和软件。8位与32位CPU的不同点由编译器来处理,软件保持不变,因为外设是相同的。

  可伸缩产品的概念可被应用到范围广阔的多种应用上:家用和商用安全系统、家庭和工业自动化、玩具、电话等等。如果用户以成本效益为切入点,并且愿意支付附加功能的费用,任何此类应用都能从这个可伸缩方法上受益。



评论


相关推荐

技术专区

关闭