在進(jìn)行復(fù)雜系統(tǒng)的架構(gòu)開(kāi)發(fā)時(shí),,架構(gòu)師和設(shè)計(jì)師很少對(duì)設(shè)計(jì)的系統(tǒng)控制方面予以重視。最好的情況是,系統(tǒng)控制在整個(gè)系統(tǒng)的設(shè)計(jì)考慮中排第二位。而最壞的情況是直接被遺忘,直到設(shè)計(jì)后期,板上只有很小的空間能實(shí)現(xiàn)系統(tǒng)控制功能,也不可能再有時(shí)間來(lái)重新進(jìn)行架構(gòu)設(shè)計(jì),。
過(guò)去,設(shè)計(jì)師常常會(huì)使用一些方法來(lái)解決這些問(wèn)題:請(qǐng)軟件設(shè)計(jì)師想辦法在軟件中實(shí)現(xiàn)某些控制功能,;在電路板上四處增加小的PLD,,因?yàn)槭艿诫娐钒蹇臻g限制而不得不忍受布局布線的不便和擁擠;或者,,以時(shí)間進(jìn)度為由,,犧牲某些功能。這些方法聽(tīng)起來(lái)都不怎么樣,。我們需要一種方法,,最大限度地減少電路板的面積和布線,,同時(shí)減少微處理器的使用并且實(shí)現(xiàn)所需的功能。
CPLD和小型FPGA往往是這種情況下的首選解決方案,。使用CPLD和FPGA,,設(shè)計(jì)人員可以不再需要集中監(jiān)測(cè)和控制,而更多的采用本地化控制和分配,。創(chuàng)建一條通信路徑,,盡可能地減少中央處理器和分布的PLD之間的連接,將會(huì)是一個(gè)最接近理想的解決方案,。幸運(yùn)的是,,串行外設(shè)接口(SPI)標(biāo)準(zhǔn)和內(nèi)部集成電路(I2C)標(biāo)準(zhǔn)就是理想的低開(kāi)銷(xiāo)的通信路徑,他們最初分別由Motorola公司和Phillips公司開(kāi)發(fā),。這兩個(gè)標(biāo)準(zhǔn)并非設(shè)計(jì)用于提供大多數(shù)數(shù)據(jù)路徑所需的高吞吐量,,但它們?cè)诒O(jiān)控和控制應(yīng)用中表現(xiàn)良好,相比之下這些應(yīng)用中的延遲問(wèn)題不是那么重要,。
將FPGA和CPLD的靈活性和這些低開(kāi)銷(xiāo)總線相結(jié)合,,為系統(tǒng)設(shè)計(jì)師提供了大量的系統(tǒng)控制功能,同時(shí)最大限度地減少所需的電路板面積,。
低速串行總線
從物理學(xué)和電氣學(xué)的角度來(lái)看,,SPI和I2C都是低開(kāi)銷(xiāo)的總線標(biāo)準(zhǔn),一般從電路板實(shí)現(xiàn)的角度來(lái)看就很容易理解,。I2C只需要兩個(gè)信號(hào)來(lái)實(shí)現(xiàn):SDA(數(shù)據(jù)線)和SCK(時(shí)鐘線),。這些線路都是漏極開(kāi)路,并要求端接上拉電阻,。這些連線可以跨越多個(gè)主器件和從器件,,如圖1所示。該電路還需要的唯一一個(gè)額外要求就是使用適當(dāng)?shù)亩私由侠娮鑱?lái)處理線路電容,。兩線總線上的多個(gè)主器件的問(wèn)題需要使用總線仲裁來(lái)處理消息沖突,。但是使用一個(gè)簡(jiǎn)單的專用總線結(jié)構(gòu)和一個(gè)主器件,這些問(wèn)題就可以全部解決,。
圖1——典型的I2C連接
SPI是一個(gè)4線串行總線,由于總線上僅允許有一個(gè)主器件因而無(wú)需總線仲裁,。此外,,還有兩個(gè)數(shù)據(jù)引腳,都不是真正的雙向引腳,。MOSI(主器件輸出,,從器件輸入)線負(fù)責(zé)將數(shù)據(jù)發(fā)送給外設(shè);MISO(主器件輸入,,從器件輸出)負(fù)責(zé)將數(shù)據(jù)發(fā)送給主器件,。時(shí)鐘(SCLK)和從器件選擇(SS)信號(hào)提供總線控制,,它們都是由主器件驅(qū)動(dòng)。雖然這種安排避免了總線仲裁的需要,,但是需要使用更多的信號(hào),。
圖2——典型的三個(gè)從器件的SPI總線
今天使用哪種串行總線方面的限制相對(duì)較少。截至2006年,,NXP(原Phillips)不再需要許可證即可使用I2C協(xié)議,。應(yīng)當(dāng)指出的是,獲取I2C從器件地址仍需收取費(fèi)用,。然而,,對(duì)于外設(shè)無(wú)需與外界通信的應(yīng)用,這是沒(méi)有必要的,。而SPI是一個(gè)沒(méi)有正式規(guī)范文檔而被廣泛使用的標(biāo)準(zhǔn),。然而,該標(biāo)準(zhǔn)已經(jīng)在許多不同的嵌入式處理器中實(shí)現(xiàn),,由此看出雖然它沒(méi)有正式規(guī)范文檔,,但是并未阻礙其廣泛使用。
低開(kāi)銷(xiāo)的I2C和SPI兩種標(biāo)準(zhǔn)被廣泛采用并且集成到微控制器和外設(shè)中,。
系統(tǒng)監(jiān)測(cè)和控制
單塊電路板上的應(yīng)用監(jiān)測(cè)和控制相對(duì)比較簡(jiǎn)單,。復(fù)位、中斷線路和選擇線路可以直接由微控制器或本地PLD控制,。然而,,在多塊電路板的系統(tǒng)中則需要進(jìn)行集中控制,因而盡量減少連接的數(shù)量是很重要的,。這可以通過(guò)使用低開(kāi)銷(xiāo)的串行總線與PLD進(jìn)行通信來(lái)實(shí)現(xiàn),,如圖3中所示。
圖3——將PLD用作一個(gè)串行IO擴(kuò)展器
接下來(lái)就需要一個(gè)協(xié)議,,定義從微控制器到外部PLD的數(shù)據(jù)流的指令和尋址機(jī)制,。對(duì)于基于SPI的實(shí)現(xiàn),無(wú)需太多擔(dān)心,。SPI不需要數(shù)據(jù)流中的任何信息進(jìn)行尋址,,因?yàn)镾S和SCLK信號(hào)已經(jīng)根據(jù)協(xié)議提供了控制尋址。因此,,用戶只需控制整個(gè)數(shù)據(jù)有效載荷的傳輸,。
外部PLD的I2C實(shí)現(xiàn)稍微復(fù)雜一些。首先,,在將數(shù)據(jù)傳輸?shù)娇偩€上之前,,要對(duì)器件尋址,必須識(shí)別出這個(gè)PLD。這種差異正是選擇這兩種串行總線架構(gòu)時(shí)需要考慮權(quán)衡的地方:SPI架構(gòu)不需要一個(gè)指令翻譯器來(lái)尋找到特定的從器件,,但比I2C結(jié)構(gòu)需要更多引腳,。
遠(yuǎn)程故障記錄
考慮到外部的非易失性存儲(chǔ)器成本低,以及便于通過(guò)串行總線如I2C或SPI接口進(jìn)行連接,,將外部非易失性存儲(chǔ)器與PLD結(jié)合使用,,可以為用戶提供極具成本效益的方式來(lái)實(shí)現(xiàn)系統(tǒng)中的遠(yuǎn)程故障記錄管理。圖4顯示了一個(gè)典型的系統(tǒng)應(yīng)用,,不僅使用了之前重點(diǎn)介紹的IO擴(kuò)展功能,,也說(shuō)明了怎樣將外部存儲(chǔ)器納入系統(tǒng)架構(gòu)中使用。
圖4——遠(yuǎn)程故障記錄
在這個(gè)架構(gòu)中,,PLD主要負(fù)責(zé)監(jiān)測(cè),、控制和與微控制器通信。然而,,它也負(fù)責(zé)執(zhí)行線路上額外的監(jiān)測(cè)/控制分析和故障信息記錄,,通過(guò)串行總線寫(xiě)入非易失性存儲(chǔ)器。電壓監(jiān)控,、看門(mén)狗定時(shí)器和PCB上的其他故障條件可以通過(guò)PLD寫(xiě)入非易失性存儲(chǔ)器,。通常情況下,檢測(cè)到故障后,,系統(tǒng)中其他監(jiān)控器的狀態(tài),,如溫度和電壓以及時(shí)間信息將被保存。
應(yīng)當(dāng)注意的是,,這樣一個(gè)系統(tǒng)在實(shí)現(xiàn)時(shí)有一個(gè)重要的考慮,。如果PLD是外部非易失性存儲(chǔ)器的主器件,那么它還需要決定串行總線的控制和尋址,。這個(gè)決定對(duì)于使用SPI總線而言很容易,;設(shè)計(jì)師必須實(shí)現(xiàn)一個(gè)從SPI器件,與微控制器進(jìn)行通信,,以及一個(gè)獨(dú)立的主SPI器件,,可以訪問(wèn)外部存儲(chǔ)器。
對(duì)于I2C總線,,設(shè)計(jì)師有幾個(gè)選擇,。第一種選擇是設(shè)計(jì)類(lèi)似SPI那樣的設(shè)計(jì),使用一個(gè)從器件與微控制器通信,,以及一個(gè)主器件訪問(wèn)外部存儲(chǔ)器,。第二種選擇是使用PLD,同時(shí)作為主器件和從器件,。這種方法的好處是,系統(tǒng)中只有一條串行總線,,因此微控制器可以直接訪問(wèn)非易失性存儲(chǔ)器,,而無(wú)需PLD翻譯指令然后從存儲(chǔ)器中讀取信息,。然而,由于不是在PLD中簡(jiǎn)單地使用一個(gè)從器件,,現(xiàn)在設(shè)計(jì)必須處理尋址和總線控制,。
傳感器和外設(shè)匯聚
基于串行接口的標(biāo)準(zhǔn)產(chǎn)品的數(shù)量日益增長(zhǎng)。你可以在溫度傳感器,、壓力傳感器,、A/D轉(zhuǎn)換器、數(shù)字電位器,、實(shí)時(shí)時(shí)鐘和LCD控制器等等應(yīng)用中找到串行接口,,這里僅列舉了幾個(gè)來(lái)說(shuō)明。要了解如何將這些集成到設(shè)計(jì)中的關(guān)鍵是要知道哪些外設(shè)需要“實(shí)時(shí)”使用以及“實(shí)時(shí)”意味著什么,。舉例來(lái)說(shuō),,在系統(tǒng)中溫度是一個(gè)相對(duì)緩慢變化的對(duì)象,并可以很容易地通過(guò)串行總線監(jiān)控,。用于電流或電壓檢測(cè)的A/D轉(zhuǎn)換器可能是也可能不是一個(gè)“實(shí)時(shí)”需求,,這要根據(jù)正在測(cè)量的內(nèi)容,以及需要多快的檢測(cè)速度而定,。
一旦你已經(jīng)確定了外設(shè)的優(yōu)先級(jí),,然后你可以將較低優(yōu)先級(jí)的外設(shè)讓PLD處理,減輕處理器的負(fù)擔(dān),,如圖5所示,。
圖5——傳感器匯聚示例
在上面的例子中,微控制器只需與2個(gè)而非4個(gè)外設(shè)進(jìn)行通信,。
這種安排還有另外一個(gè)好處,。你可以使用一個(gè)功能強(qiáng)大的PLD來(lái)預(yù)處理數(shù)據(jù),然后由微控制器讀取,。例如,,請(qǐng)考慮一個(gè)應(yīng)用,使用A/D采樣測(cè)量一個(gè)三相電力系統(tǒng)的電壓和電流,,并進(jìn)行故障檢查,。一個(gè)擁有強(qiáng)大DSP功能的PLD可以代替DSP或微控制器執(zhí)行RMS計(jì)算、峰值電流分析,、相位計(jì)算和FFT?,F(xiàn)在采樣速率受到PLD收集樣本和處理數(shù)據(jù)所需時(shí)間的限制。然后,,微控制器可以讀取編譯的數(shù)據(jù),,將更多的時(shí)間用于處理控制和報(bào)告工作。設(shè)計(jì)師們應(yīng)該好好考慮微控制器處理能力、PLD處理能力,、成本和空間之間的權(quán)衡,。
下一步:集成
鑒于這些串行總線與小型可編程邏輯器件相結(jié)合使用的實(shí)用性,下一步將是將至少一種串行總線標(biāo)準(zhǔn)(如果不能兼顧)集成到PLD中,。這種集成降低了PLD解決方案的成本和功耗,。此外,串行總線接口的編碼不再是設(shè)計(jì)師需要解決的問(wèn)題,。設(shè)計(jì)師只需要處理他們的應(yīng)用和邏輯要求,,而不是集成一個(gè)開(kāi)放的核。
萊迪思半導(dǎo)體公司提供的最新的CPLD就可以為設(shè)計(jì)師帶來(lái)這些優(yōu)點(diǎn),。MachXO2™系列中的嵌入式功能塊(EFB),,包含預(yù)先設(shè)計(jì)的解決方案,可以用來(lái)實(shí)現(xiàn)上面所述的任意系統(tǒng)控制功能,。MachXO2器件包含一個(gè)SPI控制器以及2個(gè)I2C控制器,。所有串行總線控制器都可以配置為主或從器件。此外,,MachXO2還為設(shè)計(jì)師們提供了一個(gè)定時(shí)器/計(jì)數(shù)器塊以及少量的用戶可訪問(wèn)的閃存(UFM),。
除了上面提到的解決方案,串行總線與PLD相結(jié)合可以為系統(tǒng)提供其他的好處,,即使有時(shí)它們?cè)诩軜?gòu)設(shè)計(jì)過(guò)程后才顯現(xiàn)出來(lái),。它們并不是所有弊病的靈丹妙藥,但它們?cè)谠O(shè)計(jì)中的實(shí)用性是有據(jù)可查的,,有無(wú)數(shù)的開(kāi)源核和設(shè)計(jì)方案可以給予不同的架構(gòu)設(shè)計(jì)師們指引,,實(shí)現(xiàn)最佳的解決方案。
Peter J. Stinson是萊迪思半導(dǎo)體公司北美和歐洲地區(qū)市場(chǎng)營(yíng)銷(xiāo)經(jīng)理,。他畢業(yè)于Lehigh大學(xué),,擁有計(jì)算機(jī)工程學(xué)士學(xué)位和技術(shù)管理碩士學(xué)位。他已經(jīng)在PLD行業(yè)中工作了15年,,曾從事市場(chǎng)營(yíng)銷(xiāo),、產(chǎn)品規(guī)劃和其他技術(shù)類(lèi)職位。他擁有超過(guò)20年的工作經(jīng)驗(yàn),,在軍事,、工業(yè)和通信市場(chǎng)擔(dān)任過(guò)設(shè)計(jì)師、項(xiàng)目經(jīng)理以及工程經(jīng)理等職位,。