当谈到32 位微控制器时,基于ARM 的产品已经占据重要地位。那么,这会是故事的全部吗?不见得,行业内最重要的公司之一,Microchip Technology,正全力推动其基于MIPS 架构的芯片。他们最新推出的产品在提醒我们,成功的嵌入式设计需要指令集之外的诸多因素。 在计算机历史上,从实验室走出过多少种不同的指令集架构?可能曾经有数百种架构取得过一些商业上的成功;如果算上诸多博士论文中出现过的,数目可能会多达几千种。拿流行时尚做比喻,计算机体系结构发展就好似女生裙摆的高度一般,经常来回变化。 曾经有一段时间它非常要紧—— 比如在汇编语言编程的时期。至于兼容性,至少在表面上它依旧是件重要的事情,特别是在电脑或视频游戏方面(例如,有一些需要执行以前的二进制文件)。但实际上,严格的目标代码兼容性对多数嵌入式设计来说已经不再是一个大问题。更多的问题是关于工具链的兼容性和代码模块的可用性,指令集本身已经不是问题之一。 随着芯片不断地集成系统功能,设计人员需要的是一个拥有全部所需存储器、外设和胶合逻辑的芯片。并且这个芯片必须省电、有良好的工具和支持,以及合适的价格。 这并不是说在特定的应用当中,体系结构并没有优劣之分。事实上,这个问题很有趣,看看那些当初为“计算机”设计的架构—— 如ARM 和MIPS,不断下沉,以更好地适应嵌入式“控制器”应用的需求。这些“计算机”架构最后都终于认识到要在嵌入式应用里面解决诸如代码密度、低功耗、快速并确定的中断响应等问题。 认识 PIC32 在 MCU 领域的竞争里,无疑MIPS 是在追赶ARM。但是,拥有像Microchip 这样的重量级选手支持,差距正在缩小。看看新的PIC32 5XX/6XX/7xx 系列产品,高度集成了以太网、USB 和CAN 应用。 我在以前的文章中(“MIPS for the Masses”,Circuit cellar 216 期,2008)介绍过PIC32的内核。拥有5 级流水线,性能相对较高(比如与ARM Cortex - M3 相比)。不过,这只是处理器内核级别的性能差异。比如Microchip PIC32 的性能为1.5 DMIPS / MHz,而Cortex - M3是1.25 DMIPS / MHz 的。在实际中,32 位微控制器的flash 存储器访问时间是性能瓶颈。如以80MHz 运行的PIC32 可能需要2 个等待周期。通常采用宽总线(128 位)、高速缓存和预取等技术来减轻flash 访问的瓶颈问题。 或者,可以使用片内的RAM来达到0 等待周期。’5xx 系列包含64KB 的RAM,’6xx’和7xx 系列中的部分型号有多达128KB 的RAM。不过要记住,代码和数据访问之间的争抢可能导致一些延迟。此外,256KB 或512KB 的flash 空间足够用来放置你的代码(加上额外12 KB 的启动代码空间)。 外设方面,这些新产品提供了完整的I/O(见图1)。‘5xx/6xx/7xx 编号代表了大的接口功能:USB、CAN 和以太网。‘5xx 系列包含一个USB 2.0 和一个CAN(2.0b)模块;‘6xx系列包含USB 模块与一个10/100 以太网MAC。而‘7xx 系列集成了所有这些,包含USB、以太网和两个CAN 模块。
普通I/O 方面,这些产品遵循了不同应用需求的趋势。我们看到5 个16 位计数器/定时器,其中任何两对可以组合成为32 位单元。由于封装尺寸(有64 脚和100 脚可选)和引脚复用的限制,你能得到最多六个UART、四个SPI 以及五个I2C 接口。在模拟方面,有一个16通道多路复用器连接一个10 位1 MSPS 的ADC 和两个模拟比较器。除了这些MCU 能力,另外还有8/16 位数据总线和16 位地址总线扩展功能,外加两个片选。所有的数据流可以通过8个通用DMA通道控制,辅以4个专用DMA通道('5XX 和'6XX 系列)或8个专用DMA通道('7XX 系列)。 源自上世纪80 年代的MIPS 是RISC 方面“精简”特性的杰出代表。当响应中断时,它们可以要对PC 和状态寄存器压栈,不然的话就转由软件去处理。对这种极端简约存在一些争议,可能少了一些有用的东西。考虑到这一点,PIC32 系列包括一个全功能优先级/向量可编程的中断控制器;以及一组替代寄存器组用于快速中断响应和上下文切换。 另外,不要忽视那些可能导致严重预算问题的胶合逻辑,如看门狗定时器、低电压检测、电压整流器、主时钟/外设时钟/实时时钟等。这些功能的集成,使PIC32 系列成为真正适用于“控制”应用的芯片,有别于“计算机”芯片。
|