Low Overhead 串列匯流排 CPLD FPGA PLD SPI I2C

巧扮串列I/O擴展器 PLD延展系統控制功能

2012-09-10
CPLD與FPGA可讓系統控制功能設計更為簡易。設計人員藉由將CPLD與FPGA的靈活性,以及I<sup>2</sup>C各SPI等低損耗串列介面結合,可在兼顧電路板占用面積的前提下,實現大量的系統控制功能。
進行複雜系統的開發時,架構設計人員和系統設計人員很少花太多心力在設計的系統控制上。最好的情況是,系統控制被擺在整個系統設計的第二順位;而最壞的情況就是直接被遺忘,一直等到設計後期,電路板上能實現系統控制功能的空間很小,或是根本沒有時間再重新進行架構設計時,才被想起來。

設計人員過去常常會找出一些方法解決這些問題,例如請軟體設計人員想辦法在軟體中實現某些控制功能;在電路板四處增加小的可編程邏輯元件(PLD),並忍受電路板空間的限制和擁擠的布線設計;或者,以排程為由,犧牲某些功能。然而這些方法都令人不敢恭維,因此需要一種方法,盡可能減少電路板和布線的面積,同時減少微處理器(MPU)使用週期的耗損,並保有所需的功能。

複雜可編程邏輯元件(CPLD)和小型現場可編程閘陣列(FPGA)往往是這種情況下首選的解決方案。使用CPLD和FPGA,設計人員將不再須要透過集中的監督程序和控制,而採用小範圍和分散式的控制方法,搭起一條傳輸路徑,盡可能地減少中央處理器(CPU)和散布PLD間的連接,形成一個接近理想的解決方案。

幸運的是,最初分別由摩托羅拉(Motorola)和飛利浦(Phillips)開發出的串列周邊介面(SPI)和內部整合電路(I2C)標準就是理想、低損耗(Low Overhead)的傳輸路徑。這兩個標準並非針對大多數資料路徑所需的高傳輸量所設計,但在監控和控制應用中可得到很好的發揮,相較之下,在應用中出現的延遲問題反而不是那麼重要。

將FPGA和CPLD的靈活性和這些低損耗匯流排相結合,可為系統設計人員提供大量的系統控制功能,同時大幅減少所需的電路板面積。

低速串列匯流排須上拉電阻

一般從電路板實行配置的觀點來看就可以很容易理解,不論從物理或電學的角度出發,SPI和I2C都是低損耗匯流排的標準。I2C只需要兩個訊號就可以被滿足:資料線路(SDA)和時脈線路(SCK)。這些線路都是源極開路(Open-drain),且需要上拉電阻。如圖1所示,這些線路可以跨越多個主控和附屬端。

圖1 典型的I2C連接

該電路其他的額外要求就是使用適量的上拉電阻處理線路的電容。兩線匯流排上的多個主控端須使用匯流排處理訊息重疊的問題,但使用一個簡單的專用匯流排結構和一個主控端,這些問題就可全部解決。

SPI是四線串列匯流排,由於匯流排上僅允許有一個主控端因而無需匯流排處理訊息衝突。此外,上頭還有兩個資料接腳,且這兩個接腳都不算真正具備雙向作用的功能。主控端輸出、附屬端輸入(MOSI)負責將資料發送給外部;主控端輸入、附屬端輸出(MISO)負責將資料發送給主控端。而匯流排的控制,則是由時脈(SCLK)和附屬端設定(Slave Select, SS)訊號控制,都是由主控端所驅動。雖然這種安排避免匯流排衝突處理的需要,但卻有更多的訊號需求(圖2)。

圖2 典型三個附屬端SPI匯流排架構

現今,不論使用哪種串列匯流排,限制相對較少。從2006年開始,恩智浦(NXP)宣布不須許可即可使用I2C協定,不過,獲取I2C附屬端的位址仍須支付費用,但對於外部無需與外界傳輸通訊的應用,就不須收費。事實上,SPI是一個沒有正式規範但卻被廣泛使用的標準。然而,該標準已經被導入許多不同的嵌入式處理器中,由此可看出,SPI未被認證的狀態,並未阻礙其被廣泛使用。

低損耗的I2C和SPI兩種標準已被廣泛採用,並且整合至微控制器(MCU)和外部設備中。

以PLD擴展串列介面I/O數

圖3 將PLD作為一個串列I/O擴展器
單獨電路板上的監測和控制相對比較直接。重置、中斷線路和選擇線路可以直接由微控制器或局部的PLD控制。然而,在多塊電路板的系統中則須進行集中控制,因此儘量減少連接的數量很重要,這可透過使用低損耗串列匯流排與PLD進行傳輸通訊實現,如圖3所示。

接下來需要一個協定,定義從微控制器到外部PLD資料流程的指令和定址機制。對於以SPI為基礎的導入,毋須擔心太多,SPI不需要資料流程中的任何資訊進行定址,因為SS和SCLK訊號已根據協定提供控制定址,因此,使用者將可有效控制整個資料傳輸的載量。

外部PLD的I2C導入稍微複雜一些。首先,在將資料傳輸到匯流排上前,這個PLD必須先識別出這是否為被定址的組件,這其中的差異顯示出這兩種串列匯流排架構須考慮權衡之處--SPI架構不需要指令編譯器尋找特定的附屬端,但比I2C結構需要更多接腳。

PLD可記錄遠端故障資訊

考慮到外部非揮發性記憶體的低成本特性,以及藉由串列匯流排如I2C或SPI介面進行連接的便利性,將外部非揮發性記憶體與PLD結合使用,可為用戶提供一個極具成本效益的方法,完成系統中遠端故障記錄的管理。圖4顯示一個典型的系統應用,此應用不僅使用之前強調的輸入輸出(I/O)擴展功能,也說明如何將外部記憶體納入系統架構中使用。

圖4 遠端故障記錄

在這個架構中,PLD主要負責監測、控制並與微控制器通訊。然而,它也負責執行線路上額外的監測與控制分析,以及透過串列匯流排寫入非揮發性記憶體所做的故障資訊記錄。電壓監控、監控計時器的失常和印刷電路板(PCB)上其他的故障狀況可透過PLD寫入非揮發性記憶體。正常情況下,檢測到故障後,系統中其他監控器的狀態,如溫度、電壓及時間資訊將被保存。

應注意的是,這樣一個系統在導入時有一個重要的需求。如果PLD是外部非揮發性記憶體的主控端,則還須決定串列匯流排的控制和定址,這個決定對於SPI匯流排的使用而言相當容易,設計師必須導入一個從屬端SPI設計,與微控制器進行通訊,並使用一個獨立的主控端SPI設計與外部記憶體進行存取。

對於I2C匯流排而言,設計師有幾個選擇。第一種選擇是設計類似SPI那樣的設計,使用一個附屬端與微控制器通訊,並使用一個主控端存取記憶體。

第二種選擇是將PLD同時當作主控端和附屬端,這種方法的好處是,系統中只會有一條串列匯流排,因此微控制器可直接存取非揮發性記憶體,無需PLD翻譯指令,從記憶體中讀取資訊。然而,這並不是透過PLD中使用一個簡單的附屬端設計,就可讓PLD處理定址和匯流排控制。

減低處理器工作負載

以序列介面為基礎的標準產品數量與日俱增。工程師可在溫度感測器、壓力感測器、A/D轉換器、數位電壓計、高精度時脈和液晶顯示器(LCD)控制器等應用中找到序列介面,本文僅列舉幾例說明。要了解如何將這些整合到設計中的關鍵,是要知道哪些周邊元件需要「即時」使用,並了解「即時」代表的意思。舉例來說,溫度是一個在系統中變化相對緩慢的現象,可很容易地透過串列匯流排進行監控,用於電流或電壓檢測的A/D轉換器可能是、也可能不是一個「即時」的需求,這要根據正在測量的內容,以及檢測速度的需求而定。

一旦已確定周邊元件的優先順序,接著可將優先順序較低的周邊元件讓PLD處理,減輕處理器的負擔,如圖5所示。

圖5 感測器匯聚示例

在上面的例子中,微控制器只需與兩個而非四個周邊元件進行通訊。這種安排還有另外一個好處,可使用一個功能強大的PLD預先處理資料,然後由微控制器讀取,例如,想像一個使用三相電力系統做A/D採樣電壓和電流測量,以及故障檢查的應用。一個擁有強大數位訊號處理(DSP)功能的PLD可代替DSP或微控制器執行均方根(RMS)計算、峰值電流分析、相位計算和快速傅立葉轉換(FFT)。當採樣速率受到PLD收集樣本和處理資料所需時間的限制時,微控制器接著就可讀取編譯過的資料,將更多的時間用於處理控制和回報工作。設計師們應該好好考慮微控制器處理能力、PLD處理能力、成本和空間之間的權衡。

整合PLD與匯流排

有鑑於這些串列匯流排與小型可程式設計邏輯組件相結合使用的實用性,下一步就會是將至少一種串列匯流排標準(若不能兼顧)整合到PLD中。這種整合降低PLD解決方案的成本和功耗。此外,串列匯流排介面的編碼將不再是設計人員的問題,設計人員只須處理應用和邏輯要求,而不用合併一個開放式的核心(Open Core)。

以萊迪思(Lattice)最新的CPLD為例,即可以為設計人員帶來這些優點。MachXO2系列中的嵌入式功能塊(EFB),包含預先設計的解決方案,可用來實現上述任何的系統控制功能。新產品套件包含一個SPI控制器及兩個I2C控制器。所有串列匯流排控制器都可配置為主控或附屬端。此外,新的CPLD還為設計人員提供一個計時器/計數器塊及少量、可供用戶存取的快閃記憶體(UFM)。

除上述的解決方案,合併串列匯流排與PLD還可為系統提供其他的好處,即使有時這些好處在架構設計過程後才會顯現出來。雖然不是萬能的,但在設計過程中的實用性卻是有憑有據,有無數的開放原始碼和設計方案可讓不同的架構設計人員當作參考,進而實現最佳的解決方案。

(本文作者為萊迪思北美和歐洲地區市場行銷經理)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!