本文将介绍三个常见的ARM SoC,包含ARM7和ARM9,并试着分析与比较它们的性能。
ARM7族群
低耗电量和低成本是ARM7的优点。不过,ARM7的最大执行速率不到100 MHz,因此,在应用上,它和8051之类的微控制器(MCU)类似,但在功能上,ARM7通常优于MCU。
由于一般的MCU都是8-bit,而且不支持操作系统(O.S.),所以使用MCU开发应用产品的成本通常会比使用ARM7来得便宜。然而,就简单的应用而言,ARM7也可以不需要操作系统,只使用纯粹的韧体,照样可以达到和MCU一样或优于MCU的效能。
TI的TMS470
它的CPU核心是ARM7TDMI,16/32-bit RISC。其正常模式的系统时脉是28 MHz、管线模式是48 MHz。内含128K Bytes的FLASH和8K Bytes的SRAM。其它电路单元还包含:
零脚位锁相回路(ZPLL)时脉模块。
模拟的看门狗定时器(analog watchdog timer;AWD)。
实时中断模块(real-time interrupt;RTI)。
两个”序列外围接口”(SPI)模块。
两个”序列通讯接口”(SCI)模块。
标准的”控制局域网络”(control area network;CAN)控制器(SCC)。
第二类序列界面(C2SIa)。
10-bit、16个输入信道多重缓冲”模拟数字转换器”(MibADC)。
高阶定时器(high-end timer;HET),控制16个输出入端口(I/O)。
外部时脉预分频器(external clock prescale;ECP)。
共49个I/O脚位,1个只能输入的脚位。
TMS470的系统功能有:
地址译码。
保护内存。
监督内存和各外围的总线。
重置(reset)和取消(abort)的例外管理。
所有内部中断源的排序(prioritization)。
装置的时脉控制。
平行的特性记号(signature)分析(PSA):是一种自动检测故障的功能,可以利用多个输入的特性记号来检测数据流。这个特性记号可以用来判定处理器是处于好的或坏的状态。
上述的ZPLL、HET、MibADC是TMS470的特殊功能。ZPLL包含了一个PLL、一个时脉监督(clock-monitor)电路、一个时脉致能(clock-enable)电路和一个预分频器(预分频值是从1~8)。ZPLL的功能是将外部的参考电压乘以预分频值,以获得较高的频率,供给TMS470内部使用。ZPLL提供ACLK给TMS470的系统模块,之后,系统模块会产生系统时脉(SYSCLK)、实时中断时脉(RTICLK)、CPU时脉(MCLK)、外围接口时脉(ICLK)。所谓”零脚位”是指ZPLL没有提供外部滤波器的接脚,亦即不需要连接外部滤波器的意思。
许多不熟悉TI芯片的硬件工程师,经常不知道要如何将石英振荡器(crystal oscillator)或外部的时脉信号连接到TI芯片上。其实,TMS470内部已经具有一个振荡器电路(在ZPLL内),但若要启动它,外部需要连接一个4MHz~20 MHz的石英或谐振器(resonator),并且要在OSCIN和OSCOUT脚位之间连接负载电容,如图2(a)所示。这个负载电容的大小应该由石英振荡器的供货商提供,如果施予不正确的载电容值,可能无法使TMS470正常开机和工作。
此外,如果不使用TMS470内部的振荡器,而改用外部的参考时脉或外部的振荡器输出信号,此时要将1.8V的时脉信号连接到OSCIN脚位,并将OSCOUT脚位保持开路的状态,如附图2(b)所示。当然,不同厂牌的芯片的时脉来源之连接方式不尽相同,硬件工程师事先应仔细查阅它们的技术手册。
HET是一种先进的智能型定时器,它为实时的应用提供精确的计时功能。此定时器是由软件控制的,使用精简的指令集、特殊的微电路架构、I/O端口。它可以应用于数据比较、采集,或当成GPIO,尤其适用于对多个传感器(sensor)的输入数据做比较,或输出复杂的和精确的时间脉冲(如:PWM脉冲)来驱动起动器(actuator)。
HET的周边具有”XOR—分享”的功能,此功能可以让两相邻的HET通道被XOR在一起,和HET的标准输出脉冲相比,这能够输出更小的脉冲信号。
为了让使用者可以为FLASH、RAM、HET RAM寻址,TMS470有提供“内存选择”(memory selection)的功能。每一个“内存选择”具有它自己的“内存基本地址缓存器(memory base address register)”—MFBAHRx和MFBALRx(分别是高位和低位元),用来定义各个内存区块的起始(基本)地址、区块大小和保护方式。每一个“内存选择”的基本地址是透过缓存器来设定的,它们应该要符合附图3中的映像地址之边界值—必须是区块大小的整数倍。图4是TMS470的“内存选择”的分配情形。
MibADC接受一个模拟信号,并将它转换成一个10-bit的数字信号。MibADC具有两个模式:相容vs.缓冲模式。在兼容模式中,TMS470的“程序模型”(programmer‘s model)和TMS470的ADC模块兼容,而且MibADC的数字输出是储存在“数字输出缓存器”(digital result register)中;“程序模型”包含:缓存器、寻址模式(addressing mode)和中断。兼容模式能让ADC的程序设计工作变得比较容易,因为只要直接读取数字输出缓存器即可取得转换后的数字数据。在缓冲模式中,数字元输出缓存器被3个FIFO缓冲存储器取代—分别表示不同的转换群组(事件、群组1、群组2)。在兼容模式中,MibADC的FIFO是被“中断服务例程(ISR)”读取。