各品牌ARM SoC技术比较分析

本文将介绍三个常见的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)”读取。
philips的lpc2214
它的cpu核心是16/32-bit arm7tdmi-s,s是“可合成”(synthesizable)的意思,可让soc设计业者能将arm7tdmi核心快速地和灵活地与其它ip合成。lpc2214的主要特性如下:
内建有256 kbytes的flash、16 kbytes的sram,工作速率60 mhz。128-bit的“内存加速模块”(memory accelerator module;mam),能使cpu快速攫取到(prefetch)下一个arm指令,因此,执行速率可以达到60 mhz。
透过芯片内的开机加载软件(boot loader),可以达到“系统内编程”(in-system programming;isp)和“应用中编程” (in-application programming;iap)的功能。
所谓”系统内编程”是指利用jtag和软件,可以在很短的时间内(约30秒~40秒),将使用者系统程序写入flash中,或清除flash的所有内容;在这过程中,并不需要从主机板中将处理器或flash拆除,因此可以节省成本和时间。这有利于产品的开发;或能让技术人员到客户端更新软件或参数,且不需要拆机壳大翻修。目前大多数的mcu、soc、dsp、fpga/cpld都有提供类似的工具和功能。
所谓“应用中编程”是指利用两组flash,可以在远程将韧体版本升级。当将第一组flash的程序代码被清除或被重新写入时,处理器使用第二组flash的程序代码来执行。当第一组flash的写入作业完成之后,系统可以马上切换去执行第一组flash里面的程序代码。这个功能对网络通讯设备而言,是很重要的,因为当韧体版本升级时,这些设备的操作系统是不能停止的。
支持embeddedice-rt和embedded trace接口,透过realmonitor软件可以进行实时除错。
8个通道的10-bit adc,转换时间小于2.44μs。
2个32-bit定时器(4个采集信道和4个比较信道),1个pwm单元(6个输出)、1个实时时脉产生器(real time clock)、1个看门狗定时器。
多种序列接口,这包含:2个uart、1个快速i2c(400 kbps)、2个spi。
1个向量式中断控制器(可设定中断的优先级和中断向量的地址)。
可设定的外部内存接口,最多可设定4个内存排组(bank),每排最长16m-bit和8/16/32-bit的数据宽度(因此,支持的最大内存空间是64 mbytes)。
最多112个gpio脚位(5v)。9个外部中断脚位(边缘或水平触发)。
内建有pll,支持的最大cpu时脉为60 mhz。
内建有石英振荡器,工作频率范围是1 mhz~30 mhz。
两种低功率模式:闲置(idle)和功率下降(power-down)。
透过外部中断,可以将处于“功率下降模式”的处理器唤醒。
为了使功率的利用能够达到最佳化,可以开启(enable)或关闭(disable)个别的周边功能。
lpc2214也和tms470一样有支持adc的功能,因此,它们都很适合用来开发数据采集用途的装置,例如:条形码扫描机等。不过,tms470的mibadc可以支持16个通道,但lpc2214只支持8个通道。
其实,lpc2214的pwm的运作原理和定时器一样。定时器是依照7个比较缓存器(match register)来计算外围装置的时脉周期数目,并产生中断;或当定时器的计数数目达到特定值时,系统就会去执行指定的工作。因为它能够分别控制上升缘和下降缘的位置,所以应用较广。例如:多相(multi-phase)马达的控制通常需要3个不重迭的(non-overlapped)pwm输出,分别控制3个脉冲宽度和位置。7个比较缓存器能够提供最多6个单边(single edge)控制的,或3个双边(double edge)控制的pwm输出脉冲。
lpc2214的内存映像(图4)是固定的,在重新映像时,不需要再设计其它复杂的程序代码,以便在不同的地址区块执行。其中,cpu中断向量可以被重新映像,好让中断向量能储存于芯片内的flash中(默认值为0x00000000),或储存于芯片内的sram中。藉由设定memmap缓存器的值,就可以进行重新映射,重新映射完成后,开机码区块(boot block)将被搬移(relocate)至芯片内存储器映像的最上方。
lpc2000系列的soc都具有下列三种工作模式或开机状态:
开机加载模式:被硬件重置启动,之后,开机加载程序会被执行。开机码区块里的中断向量会被映像至内存映像(flash)的最下方,以便于在开机加载过程,能够处理例外和中断请求。
使用者flash模式:当开机加载程序发现flash里有使用者程序存在时,而且开机加载程序不需要再执行时(没有被强制执行),就进入此模式。(这很像pc的bios开机过程,若一直按f1或del键,就会进入bios模式;若不按此键,则操作系统会正常运作。)在此模式中,中断向量不会被映射,仍然位于flash的最下方。
使用者ram模式:被使用者程序启动。中断向量被重新映射至sram的最下方。
arm9族群
arm9大约可以达到180mhz~200 mhz的工作速率。因此,它能驱动的周边装置比arm7多,应用范围也比较广。下面举atmel的at91rm9200来说明。
atmel的at91rm9200
它的cpu核心是16/32-bit的arm920t,其主要功能简述如下:
内建有16 kbytes的sram和128 kbytes的rom。
外部总线接口(external bus interface;ebi):可以支持sdram、sram、“暴量传输的(burst)”flash(亦即nor flash)、能直接(glueless)和compactflash、smartmedia、nand flash连接。
7个外部中断来源,1个快速中断来源。
4个32-bit可程序i/o控制器,122个可程序i/o脚位,每个i/o脚位具有输入变动中断和”开路泄极”(open-drain)的功能。“开路泄极”是指在芯片内部的mos fet输出电路上的泄极没有连接任何组件(电阻)。通常,它可以用来驱动高电流或高电压的负载;或者说,多个外部装置可以和此单一线路做双向通信。
具有20个信道的周边装置控制器(dma)。
4个可程序外部时脉信号。
内建2个振荡器,以及2个pll。
软件控制的功率最佳化功能。
实时时脉产生器具有警报中断功能。
中断控制器具有8个不同等级的优先级。能个别屏蔽的向量式中断来源,可抑制寄生信号对中断信号的干扰。
支持以太mac 10/100 base-t、mii或rmii,整合了28-byte的fifo和专属的dma传收通道。
支持usb 2.0(12 mbps)主机端口(host port)和装置端口(device port)。主机端口有整合fifo和专属的dma。
多媒体记忆卡接口(multimedia card interface;mci):支持自动的通信协议控制、和自动化的数据快速传输;与mmc和sd标准兼容,最多可支持2个sd记忆卡。
3个同步的序列控制器(ssc):每个传送器和接收器都具有独立的时脉和讯包同步信号。支持i2s模拟接口,采用分时多任务技术。
4个万用同步/异步接收传送器(usart):可支持rs485、irda、调制解调器(modem)、iso 7816的t0/t1 smart card。
主从式序列外围接口(spi):8到16-bit的可程序数据长度,可以选择4个外部外围芯片。
2组3-通道、16-bit的定时器/计数器(tc):3个外部输入时脉、每个通道具有2个多用途i/o脚位。能够产生双pwm信号。
双线路界面(two-wire interface;twi):支持主控模式(master mode),支持atmel所有的双线路eeprom。
所有数字脚位都支持ieee 1149.1 jtag边界扫描。
at91rm9200算是性能非常强大的soc,它可以用来开发通信、储存、控制等产品。由于它的功能很多,所以本文无法逐项详细说明,在此仅介绍它的usb 2.0主机端口。
它的usb 2.0主机端口支持“开放式主机控制器接口”(open host controller interface;ohci) v1.0规格,以及usb v2.0全速(12 mbps)和低速(1.5 mbps)规格的信讯协议。它整合了1个“根部集线器”(root hub)和下游的2个usb传收器。标准的ohci usb通讯堆栈驱动程序可以轻易地移植到此架构中,不需要顾虑硬件的兼容问题;可以执行现有全部的usb类别驱动程序,这表示所有标准的usb类别装置(class device)都能被自动侦测,让使用者应用。图5是其内部架构图。
在主机控制器和主机控制器驱动程序之间,有两个通信信道。第一个信道使用主机控制器内部的作业缓存器组,这个信道的通信对象(目的地)就是主机控制器。这组缓存器包含了控制、状态、串行指针(list pointer)缓存器。它们都被映像至系统总线(asb)的映像区域内。其中有一个指标是指向处理器的地址空间—称为“主机控制器通讯区域”(host controller communication area;hcca)。hcca正是第二个通信信道。在此信道内,主机控制器是通信主控(主导)者。hcca包含一些起始指标(head pointer),分别指向中断模式的“端点描述者”(endpoint descriptor)串行、已处理完毕的队列(done queue),和“讯框起始”(start-of-frame;sof)所代表的状态信息。
此接口的基本建构区块包含:端点描述者(ed)和传输描述者(transfer descriptor;td)。主机控制器对系统内的每一个端点各别分配一个ed,td队列连结至特定的ed上。
 虽然有了硬件的usb 2.0主机端口,但是usb的软件驱动程序仍然是不可或缺的。图7是它的usb驱动程序架构。usb的数据处理作业是透过下列的通信层完成的:
主机控制器硬件和序列引擎(serial engine):在总线上,传送和接收usb数据。
主机控制器驱动程序:驱动主机控制器硬件和处理usb通信协议。
usb总线驱动程序和集线器驱动程序:处理usb命令和“列举”(enumeration)。提供一个硬件的独立接口。
迷你驱动程序(mini driver):处理usb装置特有的命令。不同厂牌的usb装置可能具有不同功能的特殊命令。
类别驱动程序:处理标准的装置及其命令。某一标准类别的usb装置之类别驱动程序都具有共同的特性,或类似的程序代码和逻辑;例如:人机接口装置(hid)的驱动程序。
性能比较分析
目前在国外市场上tms470、lpc2214、at91rm9200等arm soc很受到欢迎。当然,还有其它厂牌的arm soc也很受欢迎,譬如:samsung、analog等。虽然在价格上它们不见得是最便宜的,但是由于它们的性能优异、容易应用,所以拥有许多忠实的用户。

基于Raspberry Pi 2B实现的自动化花园设计方案
用于高阻抗电路的低失真、低噪声放大器
小米持续为用户推出更好的电视产品 让用户享受到更好的使用体验
如何让无人机实现真“无人”?
夹具刀具的选择及切削用量的确定
各品牌ARM SoC技术比较分析
电磁兼容性EMC的指令要求
关于智能汽车电子架构下的汽车线束新形态的介绍和应用分析
分库分表的21条法则速来码住(上)
永磁同步电机和交流异步电机分析
详细分析车载以太网基础知识
SIC比SI有什么优势?碳化硅优势的实际应用
smt设备知识介绍 smt生产线设备有哪些图文解析
振荡培养箱是什么,它的主要特点是什么
谷歌携三星推新机将浇熄iPhone4S热度?
CES 2021上的AR/VR新品
高增益前置放大器的制作教程
互联网思维的局限与消退的红利,互联网思维如何破局
砂光机上变频器的应用介绍
小米6plus什么时候上市?小米6只是诱饵,小米6Plus:更大更强的超级旗舰!7月25号见