嵌入式應(yīng)用中的互連技術(shù)應(yīng)用
連接外圍器件似乎是設(shè)計工程師必須面對的處理過程。在很多情況下,串行網(wǎng)絡(luò)具有足夠的性能來完成該工作并最小化器件間的連接。這對于器件間距離大于數(shù)厘米的情況非常重要。
目前已有多種方案可用。而許多其它的方案可以從現(xiàn)場總線、具有專利的接口和專用串行接口中選擇。它們之間常常會有直接競爭關(guān)系,但是大部分方案都有其利基市場。
通常,一個串行互連包含的電線數(shù)目不會超過6根,其中可能包括電源線和地線(不過情況可能會有變化)。例如,像美信公司1-Wire這樣的器件需要連接地線。這也是一個互連的多種參考設(shè)計在計算電線數(shù)目時沒有將電源線計算在內(nèi)的原因。
目前存在很多不同的架構(gòu)和協(xié)議,對于單主機和多主機網(wǎng)絡(luò)而言也存在這種情況。以太網(wǎng)、PCI Express和Serial RapidIO(SRIO)等諸多架構(gòu)都需要一個交換結(jié)構(gòu)。
當處理串行網(wǎng)絡(luò)的集成接口時,性能和簡易性往往都是問題。8位或性能更強微控制器必須支持I2C、串行外設(shè)接口(SPI)、控制器區(qū)域網(wǎng)絡(luò)(CAN)、本地互連網(wǎng)絡(luò)(LIN)和1-Wire接口。而多功能串行端口通??芍С稚鲜鼋涌谝约邦愃芌S-485的標準串行接口(雖然RS-485和CAN一般都需要采用外部收發(fā)芯片)。
大部分其它接口采用標準微控制器輸出,并允許器件之間的直接連接。由NXP公司推出的I2C通信鏈路是可提供這類支持(圖1)的一種雙線解決方案。它不包含任何錯誤檢查功能,但支持多主機操作。
圖1:一個I2C主器件提供時鐘和初始地址。根據(jù)主器件R/W位的值決定是由主器件還是從器件傳送數(shù)據(jù),基于每字節(jié)來識別數(shù)據(jù)傳送。最高有效位(MSB)位是最先被傳送的位。
數(shù)據(jù)包包括一個用來指示主器件或從器件是否發(fā)送數(shù)據(jù)的地址和方向位。此外,I2C屬于PMBus、SMBus和智能平臺管理接口(IPMI)等功率管理和系統(tǒng)管理標準的一部分,以上標準可利用I2C的多主機模式。而且I2C沒有版稅問題。
I2C的主要對手是SPI(圖2)。作為一種主/從器件的互連接口,SPI通常用于將外圍芯片連接到主處理器上,其芯片選擇架構(gòu)的硬件和軟件實現(xiàn)十分簡單。SPI可提供比I2C更快的傳輸速率,但需要以采用更多電線為代價。在硬件端,僅需一個移位寄存器和一些邏輯門就可以實現(xiàn)。此外,SPI還可提供一個相對于I2C的基址寄存器尋址方式而言非常低級的接口。
CAN和LIN總線起源于汽車產(chǎn)業(yè)(圖3)。但是當CAN已經(jīng)被廣泛用于自動控制、系統(tǒng)控制和機器人中時,LIN仍然僅將其應(yīng)用范圍鎖定在汽車領(lǐng)域。在大量微控制器上提供的CAN接口構(gòu)成了實現(xiàn)多種協(xié)議和現(xiàn)場總線的基礎(chǔ)。此外,CAN還采用了一種不同于大多數(shù)嵌入式網(wǎng)絡(luò)的尋址方式。
大部分網(wǎng)絡(luò)協(xié)議對接收器進行標識,有時候也標識出發(fā)送器。CAN則對數(shù)據(jù)包的數(shù)據(jù)進行標識。它的接口通常具有多個用來檢驗輸入數(shù)據(jù)包標識符的濾波器。濾波器可以屏蔽某些位,這使得它們能夠識別數(shù)據(jù)類別并忽略其余部分。而且,CAN是為數(shù)不多的實現(xiàn)了優(yōu)先級策略的系統(tǒng)之一,優(yōu)先級策略也屬于標識符處理過程的一部分(因此最高的標識符值具有優(yōu)先權(quán))。
其它低速(低于1Mbps)互連包括美信公司的專用1-Wire協(xié)議(圖4)。該異步協(xié)議僅需利用一個片上二極管和電容器就可以給聯(lián)網(wǎng)器件提供最小量的功率。這種寄生方法適用于簡單的傳感器和通常與1-Wire配合使用的控制芯片。雖然該方法并不是專門針對1-Wire協(xié)議的,但在這類產(chǎn)品中應(yīng)用得最普遍。
更高速的互連通常以較早的低速技術(shù)為基礎(chǔ)。FlexRay總線就是由CAN發(fā)展起來的,這兩種總線都可以用于汽車領(lǐng)域。相對于CAN總線,F(xiàn)lexRay的速度更快(10Mbps)、更復(fù)雜并且更具魯棒性,但是在大部分新型汽車中,以上兩種總線和LIN總線都是同時存在的。
FlexRay是面向時間關(guān)鍵應(yīng)用而設(shè)計的,這類應(yīng)用(例如汽車線控制動)需要考慮安全性、可靠性、冗余性和容錯性等因素。FlexRay可以與時鐘級同步,并對傳輸周期進行劃分以實現(xiàn)多個設(shè)備間數(shù)據(jù)交換的細粒度控制。雖然FlexRay也許能夠以類似CAN的連接方式應(yīng)用于其它環(huán)境,但是其它高速互連更適用于非汽車類嵌入式應(yīng)用。
高速互連
除了FlexRay以外,經(jīng)檢驗接口傳輸?shù)臄?shù)據(jù)量往往比一個數(shù)據(jù)包所能容納的更少。與所采用的處理器的速度相比,網(wǎng)絡(luò)流量往往太小。在很多情況下,必須在保持更高性能的同時能夠盡量減少互連線的數(shù)量。此時,USB、PCI Express和SRIO等技術(shù)開始發(fā)揮作用。
在嵌入式領(lǐng)域中USB不斷獲得青睞。USB最初成功應(yīng)用于鍵盤、鼠標、打印機等PC外圍設(shè)備的互連,而現(xiàn)在它被普遍用于連接特定嵌入式應(yīng)用中的模數(shù)轉(zhuǎn)換器(ADC)、發(fā)動機和數(shù)碼相機。單個USB主接口能以高達480Mbps的速度支持126個設(shè)備。
通常,USB與一臺主機和一組外圍設(shè)備協(xié)同工作。盡管如此,USB所作的可能仍然只是處理雜事,同時利用SMSC公司的USB2524 MultiSwitch和DisplayLink公司基于USB的顯示適配器支持多主機功能。
隨著廉價、易于編程、USB使能微控制器的出現(xiàn),USB變得越來越普遍。一臺USB主機(通常是另一個微控制器)能夠與微控制器進行通信以訪問來自一系列遠程接口(從ADC到發(fā)動機控制)的服務(wù)和外圍設(shè)備數(shù)據(jù)。事實上,微控制器的單個USB主接口可提供所有這些功能,還能夠支持對USB存儲器的訪問和以太網(wǎng)通信。
當然,可能還需要傳輸速率更高的產(chǎn)品?;赑CI Express和SRIO等最新串行連接標準的產(chǎn)品已經(jīng)開始設(shè)計,高端系統(tǒng)通常采用4到32個通道,其中每個通道是一個全雙工、四線接口。而低端系統(tǒng)通常采用單個通道。它們現(xiàn)在的最高輸出速率為5Gbps。
這兩者之間的主要區(qū)別是PCI Express繼承了PCI的存儲結(jié)構(gòu),而SRIO能夠輕而易舉地處理小型數(shù)據(jù)包。另一個重要區(qū)別是PCI Express是基于主機的,而SRIO是一個類似以太網(wǎng)的通用網(wǎng)絡(luò)。他們都具有的優(yōu)點是采用了芯片到芯片直接連接(已在上述許多低端技術(shù)中采用)。
SRIO往往只能用于類似TI TMS320C6?54 DSP和飛思卡爾的雙核MPC8572 PowerQUICC III等芯片。DSP通常具備1x接口而CPU包含4x鏈接。目前SRIO已經(jīng)可以用于低端32位或16位微控制器。
PCI Express會出現(xiàn)同樣的情況,但是根據(jù)目前對PCI的支持,在不久的將來PCI Express更有可能向低端芯片領(lǐng)域發(fā)展。嵌入式領(lǐng)域中的另外一個驅(qū)動因素將是各種標準,例如PCMCIA的ExpressCard、PIC Express和COM Express。這些標準正不斷推進對更多1x PCI Express外圍器件的需求,從而使得這些器件更適合微控制器平臺。
當然,我們不應(yīng)該忽略這個問題。以太網(wǎng)是事實上的網(wǎng)絡(luò)標準,10Mbps以太網(wǎng)甚至可以用于8位微控制器,例如Microchip的PIC18F97J60和Rabbit Semiconductor的Rabbit 4000。以太網(wǎng)通常需要外部磁場,并且系統(tǒng)一般與外部交換機相連。根據(jù)環(huán)境的不同,這一特性可能成為優(yōu)勢也可能成為劣勢。
在工業(yè)自動化應(yīng)用中,盡管通常針對的是機外(outside-the-box)連接,以太網(wǎng)標準同樣具有一定優(yōu)勢。如果發(fā)生兼容性和吞吐量的問題,那么從10Base-T往上升級是一個相對較簡單的方法,這在很大程度上是因為較高端的微控制器具有內(nèi)置的100Mbps和1Gbps以太網(wǎng)接口。
支持和阻礙以太網(wǎng)發(fā)展的一個關(guān)鍵點是協(xié)議棧的復(fù)雜性。如果低端控制就已經(jīng)足夠滿足而且網(wǎng)絡(luò)通信被隔離開來,那么TCP/IP協(xié)議棧通??捎玫投私涌诨蛘邇H用一個IP協(xié)議棧來取代。
設(shè)計系統(tǒng)
給開發(fā)人員提供一個端口、一個UART或者一個FPGA產(chǎn)品,他們就可以在其網(wǎng)絡(luò)接口上實現(xiàn)位響應(yīng)(bit-bang)。開發(fā)人員也可以實現(xiàn)很多本文中提到的接口,但是必須小心謹慎。因為有些架構(gòu)存在許可證問題,而這些問題可能是不確定的。例如,一些架構(gòu)可能僅限制使用一個術(shù)語或者標志,而其它架構(gòu)則允許設(shè)計工程師創(chuàng)建除主設(shè)備以外的設(shè)備(反之亦然)。