《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 各品牌ARM SoC技術(shù)比較分析
各品牌ARM SoC技術(shù)比較分析
摘要: 本文將介紹三個常見的ARM SoC,包含ARM7和ARM9,,并試著分析與比較它們的性能,。
關(guān)鍵詞: ARM SOC
Abstract:
Key words :

本文將介紹三個常見的ARM SoC,,包含ARM7和ARM9,,并試著分析與比較它們的性能,。

  ARM7族群

  低耗電量和低成本是ARM7的優(yōu)點(diǎn),。不過,,ARM7的最大執(zhí)行速率不到100 MHz,,因此,在應(yīng)用上,,它和8051之類的微控制器(MCU)類似,,但在功能上,ARM7通常優(yōu)于MCU,。

  由于一般的MCU都是8-bit,,而且不支持操作系統(tǒng)(O.S.),所以使用MCU開發(fā)應(yīng)用產(chǎn)品的成本通常會比使用ARM7來得便宜,。然而,,就簡單的應(yīng)用而言,ARM7也可以不需要操作系統(tǒng),,只使用純粹的韌體,,照樣可以達(dá)到和MCU一樣或優(yōu)于MCU的效能。

  TI的TMS470

  它的CPU核心是ARM7TDMI,,16/32-bit RISC,。其正常模式的系統(tǒng)時脈是28 MHz、管線模式是48 MHz,。內(nèi)含128K Bytes的FLASH和8K Bytes的SRAM,。其它電路單元還包含:

  零腳位鎖相回路(ZPLL)時脈模塊,。

  模擬的看門狗定時器(analog watchdog timer;AWD),。

  實(shí)時中斷模塊(real-time interrupt;RTI)。

  兩個”序列外圍接口”(SPI)模塊,。

  兩個”序列通訊接口”(SCI)模塊,。

  標(biāo)準(zhǔn)的”控制局域網(wǎng)絡(luò)”(control area network;CAN)控制器(SCC),。

  第二類序列界面(C2SIa)。

  10-bit,、16個輸入信道多重緩沖”模擬數(shù)字轉(zhuǎn)換器”(MibADC),。

  高階定時器(high-end timer;HET),控制16個輸出入端口(I/O),。

  外部時脈預(yù)分頻器(external clock prescale;ECP),。

  共49個I/O腳位,1個只能輸入的腳位,。

  TMS470的系統(tǒng)功能有:

  地址譯碼,。

  保護(hù)內(nèi)存。

  監(jiān)督內(nèi)存和各外圍的總線,。

  重置(reset)和取消(abort)的例外管理,。

  所有內(nèi)部中斷源的排序(prioritization)。

  裝置的時脈控制,。

  平行的特性記號(signature)分析(PSA):是一種自動檢測故障的功能,,可以利用多個輸入的特性記號來檢測數(shù)據(jù)流。這個特性記號可以用來判定處理器是處于好的或壞的狀態(tài),。

  上述的ZPLL,、HET、MibADC是TMS470的特殊功能,。ZPLL包含了一個PLL,、一個時脈監(jiān)督(clock-monitor)電路、一個時脈致能(clock-enable)電路和一個預(yù)分頻器(預(yù)分頻值是從1~8),。ZPLL的功能是將外部的參考電壓乘以預(yù)分頻值,,以獲得較高的頻率,供給TMS470內(nèi)部使用,。ZPLL提供ACLK給TMS470的系統(tǒng)模塊,,之后,系統(tǒng)模塊會產(chǎn)生系統(tǒng)時脈(SYSCLK),、實(shí)時中斷時脈(RTICLK),、CPU時脈(MCLK)、外圍接口時脈(ICLK),。所謂”零腳位”是指ZPLL沒有提供外部濾波器的接腳,,亦即不需要連接外部濾波器的意思。

  許多不熟悉TI芯片的硬件工程師,,經(jīng)常不知道要如何將石英振蕩器(crystal oscillator)或外部的時脈信號連接到TI芯片上,。其實(shí),TMS470內(nèi)部已經(jīng)具有一個振蕩器電路(在ZPLL內(nèi)),,但若要啟動它,,外部需要連接一個4MHz~20 MHz的石英或諧振器(resonator),,并且要在OSCIN和OSCOUT腳位之間連接負(fù)載電容,如圖2(a)所示,。這個負(fù)載電容的大小應(yīng)該由石英振蕩器的供貨商提供,,如果施予不正確的載電容值,可能無法使TMS470正常開機(jī)和工作,。

  此外,,如果不使用TMS470內(nèi)部的振蕩器,而改用外部的參考時脈或外部的振蕩器輸出信號,,此時要將1.8V的時脈信號連接到OSCIN腳位,,并將OSCOUT腳位保持開路的狀態(tài),如附圖2(b)所示,。當(dāng)然,,不同廠牌的芯片的時脈來源之連接方式不盡相同,硬件工程師事先應(yīng)仔細(xì)查閱它們的技術(shù)手冊,。

  HET是一種先進(jìn)的智能型定時器,,它為實(shí)時的應(yīng)用提供精確的計時功能。此定時器是由軟件控制的,,使用精簡的指令集,、特殊的微電路架構(gòu)、I/O端口,。它可以應(yīng)用于數(shù)據(jù)比較,、采集,或當(dāng)成GPIO,,尤其適用于對多個傳感器(sensor)的輸入數(shù)據(jù)做比較,,或輸出復(fù)雜的和精確的時間脈沖(如:PWM脈沖)來驅(qū)動起動器(actuator)。

  HET的周邊具有”XOR—分享”的功能,,此功能可以讓兩相鄰的HET通道被XOR在一起,,和HET的標(biāo)準(zhǔn)輸出脈沖相比,這能夠輸出更小的脈沖信號,。

  為了讓使用者可以為FLASH,、RAM、HET RAM尋址,,TMS470有提供“內(nèi)存選擇”(memory selection)的功能,。每一個“內(nèi)存選擇”具有它自己的“內(nèi)存基本地址緩存器(memory base address register)”—MFBAHRx和MFBALRx(分別是高位和低位元),用來定義各個內(nèi)存區(qū)塊的起始(基本)地址,、區(qū)塊大小和保護(hù)方式,。每一個“內(nèi)存選擇”的基本地址是透過緩存器來設(shè)定的,它們應(yīng)該要符合附圖3中的映像地址之邊界值—必須是區(qū)塊大小的整數(shù)倍。圖4是TMS470的“內(nèi)存選擇”的分配情形,。

  MibADC接受一個模擬信號,,并將它轉(zhuǎn)換成一個10-bit的數(shù)字信號,。MibADC具有兩個模式:相容vs.緩沖模式,。在兼容模式中,TMS470的“程序模型”(programmer‘s model)和TMS470的ADC模塊兼容,,而且MibADC的數(shù)字輸出是儲存在“數(shù)字輸出緩存器”(digital result register)中;“程序模型”包含:緩存器,、尋址模式(addressing mode)和中斷。兼容模式能讓ADC的程序設(shè)計工作變得比較容易,,因?yàn)橹灰苯幼x取數(shù)字輸出緩存器即可取得轉(zhuǎn)換后的數(shù)字?jǐn)?shù)據(jù),。在緩沖模式中,數(shù)字元輸出緩存器被3個FIFO緩沖存儲器取代—分別表示不同的轉(zhuǎn)換群組(事件,、群組1,、群組2)。在兼容模式中,,MibADC的FIFO是被“中斷服務(wù)例程(ISR)”讀取,。

  Philips的LPC2214

  它的CPU核心是16/32-bit ARM7TDMI-S,S是“可合成”(synthesizable)的意思,,可讓SoC設(shè)計業(yè)者能將ARM7TDMI核心快速地和靈活地與其它IP合成,。LPC2214的主要特性如下:

  內(nèi)建有256 Kbytes的FLASH、16 Kbytes的SRAM,,工作速率60 MHz,。128-bit的“內(nèi)存加速模塊”(memory accelerator module;MAM),能使CPU快速攫取到(prefetch)下一個ARM指令,,因此,,執(zhí)行速率可以達(dá)到60 MHz。

  透過芯片內(nèi)的開機(jī)加載軟件(boot loader),,可以達(dá)到“系統(tǒng)內(nèi)編程”(In-System Programming;ISP)和“應(yīng)用中編程” (In-Application Programming;IAP)的功能,。

  所謂”系統(tǒng)內(nèi)編程”是指利用JTAG和軟件,可以在很短的時間內(nèi)(約30秒~40秒),,將使用者系統(tǒng)程序?qū)懭隖LASH中,,或清除FLASH的所有內(nèi)容;在這過程中,并不需要從主機(jī)板中將處理器或FLASH拆除,,因此可以節(jié)省成本和時間,。這有利于產(chǎn)品的開發(fā);或能讓技術(shù)人員到客戶端更新軟件或參數(shù),且不需要拆機(jī)殼大翻修,。目前大多數(shù)的MCU,、SoC、DSP、FPGA/CPLD都有提供類似的工具和功能,。

  所謂“應(yīng)用中編程”是指利用兩組FLASH,,可以在遠(yuǎn)程將韌體版本升級。當(dāng)將第一組FLASH的程序代碼被清除或被重新寫入時,,處理器使用第二組FLASH的程序代碼來執(zhí)行,。當(dāng)?shù)谝唤MFLASH的寫入作業(yè)完成之后,系統(tǒng)可以馬上切換去執(zhí)行第一組FLASH里面的程序代碼,。這個功能對網(wǎng)絡(luò)通訊設(shè)備而言,,是很重要的,因?yàn)楫?dāng)韌體版本升級時,,這些設(shè)備的操作系統(tǒng)是不能停止的,。

  支持EmbeddedICE-RT和Embedded Trace接口,透過RealMonitor軟件可以進(jìn)行實(shí)時除錯,。

  8個通道的10-bit ADC,,轉(zhuǎn)換時間小于2.44μs。

  2個32-bit定時器(4個采集信道和4個比較信道),,1個PWM單元(6個輸出),、1個實(shí)時時脈產(chǎn)生器(real time clock)、1個看門狗定時器,。

  多種序列接口,,這包含:2個UART、1個快速I2C(400 Kbps),、2個SPI,。

  1個向量式中斷控制器(可設(shè)定中斷的優(yōu)先級和中斷向量的地址)。

  可設(shè)定的外部內(nèi)存接口,,最多可設(shè)定4個內(nèi)存排組(bank),,每排最長16M-bit和8/16/32-bit的數(shù)據(jù)寬度(因此,支持的最大內(nèi)存空間是64 MBytes),。

  最多112個GPIO腳位(5V),。9個外部中斷腳位(邊緣或水平觸發(fā))。

  內(nèi)建有PLL,,支持的最大CPU時脈為60 MHz,。

  內(nèi)建有石英振蕩器,工作頻率范圍是1 MHz~30 MHz,。

  兩種低功率模式:閑置(Idle)和功率下降(Power-down),。

  透過外部中斷,可以將處于“功率下降模式”的處理器喚醒,。

  為了使功率的利用能夠達(dá)到最佳化,,可以開啟(enable)或關(guān)閉(disable)個別的周邊功能,。

  LPC2214也和TMS470一樣有支持ADC的功能,因此,,它們都很適合用來開發(fā)數(shù)據(jù)采集用途的裝置,,例如:條形碼掃描機(jī)等。不過,,TMS470的MibADC可以支持16個通道,,但LPC2214只支持8個通道。

  其實(shí),,LPC2214的PWM的運(yùn)作原理和定時器一樣,。定時器是依照7個比較緩存器(match register)來計算外圍裝置的時脈周期數(shù)目,,并產(chǎn)生中斷;或當(dāng)定時器的計數(shù)數(shù)目達(dá)到特定值時,,系統(tǒng)就會去執(zhí)行指定的工作。因?yàn)樗軌蚍謩e控制上升緣和下降緣的位置,,所以應(yīng)用較廣,。例如:多相(multi-phase)馬達(dá)的控制通常需要3個不重迭的(non-overlapped)PWM輸出,分別控制3個脈沖寬度和位置,。7個比較緩存器能夠提供最多6個單邊(single edge)控制的,,或3個雙邊(double edge)控制的PWM輸出脈沖。

  LPC2214的內(nèi)存映像(圖4)是固定的,,在重新映像時,,不需要再設(shè)計其它復(fù)雜的程序代碼,以便在不同的地址區(qū)塊執(zhí)行,。其中,,CPU中斷向量可以被重新映像,好讓中斷向量能儲存于芯片內(nèi)的FLASH中(默認(rèn)值為0x00000000),,或儲存于芯片內(nèi)的SRAM中,。藉由設(shè)定MEMMAP緩存器的值,就可以進(jìn)行重新映射,,重新映射完成后,,開機(jī)碼區(qū)塊(boot block)將被搬移(relocate)至芯片內(nèi)存儲器映像的最上方。

  LPC2000系列的SoC都具有下列三種工作模式或開機(jī)狀態(tài):

  開機(jī)加載模式:被硬件重置啟動,,之后,,開機(jī)加載程序會被執(zhí)行。開機(jī)碼區(qū)塊里的中斷向量會被映像至內(nèi)存映像(FLASH)的最下方,,以便于在開機(jī)加載過程,,能夠處理例外和中斷請求。

  使用者FLASH模式:當(dāng)開機(jī)加載程序發(fā)現(xiàn)FLASH里有使用者程序存在時,,而且開機(jī)加載程序不需要再執(zhí)行時(沒有被強(qiáng)制執(zhí)行),,就進(jìn)入此模式,。(這很像PC的BIOS開機(jī)過程,若一直按F1或DEL鍵,,就會進(jìn)入BIOS模式;若不按此鍵,,則操作系統(tǒng)會正常運(yùn)作。)在此模式中,,中斷向量不會被映射,,仍然位于FLASH的最下方。

  使用者RAM模式:被使用者程序啟動,。中斷向量被重新映射至SRAM的最下方,。

  ARM9族群

  ARM9大約可以達(dá)到180MHz~200 MHz的工作速率。因此,,它能驅(qū)動的周邊裝置比ARM7多,,應(yīng)用范圍也比較廣。下面舉Atmel的AT91RM9200來說明,。

  Atmel的AT91RM9200

  它的CPU核心是16/32-bit的ARM920T,,其主要功能簡述如下:

  內(nèi)建有16 Kbytes的SRAM和128 Kbytes的ROM。

  外部總線接口(External Bus Interface;EBI):可以支持SDRAM,、SRAM,、“暴量傳輸?shù)?burst)”FLASH(亦即NOR FLASH)、能直接(glueless)和CompactFlash,、SmartMedia,、NAND FLASH連接。

  7個外部中斷來源,,1個快速中斷來源,。

  4個32-bit可程序I/O控制器,122個可程序I/O腳位,,每個I/O腳位具有輸入變動中斷和”開路泄極”(open-drain)的功能,。“開路泄極”是指在芯片內(nèi)部的MOS FET輸出電路上的泄極沒有連接任何組件(電阻)。通常,,它可以用來驅(qū)動高電流或高電壓的負(fù)載;或者說,,多個外部裝置可以和此單一線路做雙向通信。

  具有20個信道的周邊裝置控制器(DMA),。

  4個可程序外部時脈信號,。

  內(nèi)建2個振蕩器,以及2個PLL,。

  軟件控制的功率最佳化功能,。

  實(shí)時時脈產(chǎn)生器具有警報中斷功能。

  中斷控制器具有8個不同等級的優(yōu)先級,。能個別屏蔽的向量式中斷來源,,可抑制寄生信號對中斷信號的干擾,。

  支持以太MAC 10/100 Base-T、MII或RMII,,整合了28-byte的FIFO和專屬的DMA傳收通道,。

  支持USB 2.0(12 Mbps)主機(jī)端口(host port)和裝置端口(device port)。主機(jī)端口有整合FIFO和專屬的DMA,。

  多媒體記憶卡接口(multimedia card interface;MCI):支持自動的通信協(xié)議控制,、和自動化的數(shù)據(jù)快速傳輸;與MMC和SD標(biāo)準(zhǔn)兼容,最多可支持2個SD記憶卡,。

  3個同步的序列控制器(SSC):每個傳送器和接收器都具有獨(dú)立的時脈和訊包同步信號,。支持I2S模擬接口,采用分時多任務(wù)技術(shù),。

  4個萬用同步/異步接收傳送器(USART):可支持RS485,、IrDA、調(diào)制解調(diào)器(modem),、ISO 7816的T0/T1 Smart Card,。

  主從式序列外圍接口(SPI):8到16-bit的可程序數(shù)據(jù)長度,,可以選擇4個外部外圍芯片,。

  2組3-通道、16-bit的定時器/計數(shù)器(TC):3個外部輸入時脈,、每個通道具有2個多用途I/O腳位,。能夠產(chǎn)生雙PWM信號。

  雙線路界面(two-wire interface;TWI):支持主控模式(master mode),,支持Atmel所有的雙線路EEPROM,。

  所有數(shù)字腳位都支持IEEE 1149.1 JTAG邊界掃描。

  AT91RM9200算是性能非常強(qiáng)大的SoC,,它可以用來開發(fā)通信,、儲存、控制等產(chǎn)品,。由于它的功能很多,,所以本文無法逐項(xiàng)詳細(xì)說明,在此僅介紹它的USB 2.0主機(jī)端口,。

  它的USB 2.0主機(jī)端口支持“開放式主機(jī)控制器接口”(Open Host Controller Interface;OHCI) v1.0規(guī)格,,以及USB v2.0全速(12 Mbps)和低速(1.5 Mbps)規(guī)格的信訊協(xié)議。它整合了1個“根部集線器”(root hub)和下游的2個USB傳收器,。標(biāo)準(zhǔn)的OHCI USB通訊堆棧驅(qū)動程序可以輕易地移植到此架構(gòu)中,,不需要顧慮硬件的兼容問題;可以執(zhí)行現(xiàn)有全部的USB類別驅(qū)動程序,這表示所有標(biāo)準(zhǔn)的USB類別裝置(class device)都能被自動偵測,,讓使用者應(yīng)用,。圖5是其內(nèi)部架構(gòu)圖,。

  在主機(jī)控制器和主機(jī)控制器驅(qū)動程序之間,有兩個通信信道,。第一個信道使用主機(jī)控制器內(nèi)部的作業(yè)緩存器組,,這個信道的通信對象(目的地)就是主機(jī)控制器。這組緩存器包含了控制,、狀態(tài),、串行指針(list pointer)緩存器。它們都被映像至系統(tǒng)總線(ASB)的映像區(qū)域內(nèi),。其中有一個指標(biāo)是指向處理器的地址空間—稱為“主機(jī)控制器通訊區(qū)域”(Host Controller Communication Area;HCCA),。HCCA正是第二個通信信道。在此信道內(nèi),,主機(jī)控制器是通信主控(主導(dǎo))者,。HCCA包含一些起始指標(biāo)(head pointer),分別指向中斷模式的“端點(diǎn)描述者”(Endpoint Descriptor)串行,、已處理完畢的隊列(done queue),,和“訊框起始”(start-of-frame;SOF)所代表的狀態(tài)信息。

  此接口的基本建構(gòu)區(qū)塊包含:端點(diǎn)描述者(ED)和傳輸描述者(Transfer Descriptor;TD),。主機(jī)控制器對系統(tǒng)內(nèi)的每一個端點(diǎn)各別分配一個ED,,TD隊列連結(jié)至特定的ED上。

 雖然有了硬件的USB 2.0主機(jī)端口,,但是USB的軟件驅(qū)動程序仍然是不可或缺的,。圖7是它的USB驅(qū)動程序架構(gòu)。USB的數(shù)據(jù)處理作業(yè)是透過下列的通信層完成的:

  主機(jī)控制器硬件和序列引擎(serial engine):在總線上,,傳送和接收USB數(shù)據(jù),。

  主機(jī)控制器驅(qū)動程序:驅(qū)動主機(jī)控制器硬件和處理USB通信協(xié)議。

  USB總線驅(qū)動程序和集線器驅(qū)動程序:處理USB命令和“列舉”(enumeration),。提供一個硬件的獨(dú)立接口,。

  迷你驅(qū)動程序(mini driver):處理USB裝置特有的命令。不同廠牌的USB裝置可能具有不同功能的特殊命令,。

  類別驅(qū)動程序:處理標(biāo)準(zhǔn)的裝置及其命令,。某一標(biāo)準(zhǔn)類別的USB裝置之類別驅(qū)動程序都具有共同的特性,或類似的程序代碼和邏輯;例如:人機(jī)接口裝置(HID)的驅(qū)動程序,。

  性能比較分析

  目前在國外市場上TMS470,、LPC2214、AT91RM9200等ARM SoC很受到歡迎,。當(dāng)然,,還有其它廠牌的ARM SoC也很受歡迎,譬如:Samsung,、Analog等,。雖然在價格上它們不見得是最便宜的,,但是由于它們的性能優(yōu)異、容易應(yīng)用,,所以擁有許多忠實(shí)的用戶,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。