各廠牌ARM SoC技術分析
[日期︰2006-02-04] | 來源︰《電子&電腦》 作者︰ | [字體︰大中小] |
ARM是全球目前嵌入式微處理器的第一品牌。由於它的市場魅力無法擋,所以許多晶片設計公司都有推出內含ARM核心的系統級單晶片(SoC),這些公司包括︰TI、Philips、Atmel、Cirrus、Samsung、Analog等。本文將介紹三個常見的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的標準輸出脈波相比,這能夠輸出更小的脈波信號。
圖2是TMS470的內存映像位址。為了讓使用者可以為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上。作業緩存器組、端點描述者和傳輸描述者的關係如圖6所示。
雖然有了硬體的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等。雖然在價格上它們不見得是最便宜的,但是由於它們的性能優異、容易應用,所以擁有許多忠實的用戶。
表1是這三種ARM SoC的性能比較。在功能上,ARM7當然無法和ARM9相比。不過,在節約功率上,TMS470的0.65 mA(在功率下降模式中)、LPC2214的0.5mA/MHz都優於AT91RM9200的30.4 mA(在待命模式中為3.1 mA)。在產品開發的複雜度方面,AT91RM9200應該是最高的,其次是TMS470,LPC2214比較適合初學人使用(另一種適合初學人使用的是Samsung的S3C4510B)。
留言列表