儘管FPGA在許多應用中日益普及,但大部分供應商僅採用兩種頗為狹窄但截然不同的FPGA結構。市場上不同產品陣營之間的區隔是很清楚的,一邊是整合了多個應用處理器核心的高端SoC FPGA,另一邊是主要包含邏輯單元的低端FPGA方案。供應商一般都只提供其中一類產品:要麼是提供內置高性能ARM A級應用處理器的SoC FPGA,要麼是提供沒有處理器的低端FPGA。
像伺服器農場和高性能運算系統這類應用,對運算性能的要求越來越高,為因應這種需求,SoC FPGA也開始整合多個十分適合處理高性能應用的ARM A級應用處理器。然而,現實的情況是,這種整合ARM A級處理器的SoC FPGA對很多其他應用來說,都算是大材小用。它們一般都比較貴,由於作業系統的要求而產生很多軟體支援的負擔,此外,由於高功耗也導致系統過熱。
一般來說,對越來越多的應用而言,這種強大的原始運算性能是不必要的;但要用低端FPGA來替代也不盡理想。由於低端FPGA只是一組邏輯單元的組合,沒有硬核微控制器或處理器,雖然它們帶有軟核微控制器,但卻不帶周邊設備或子系統。若需要周邊設備,就必須利用FPGA閘來開發建立。帶軟核微控制器的低端FPGA一般運行緩慢,而且由於需要FPGA閘來建立微控制器和子系統而使得效率不彰。此外,它們幾乎沒有設計安全性可言,而且都是以專用的架構來開發。這兩種FPGA選擇已經無法滿足越來越多的通用型應用之要求。
但是,現在有了第三種選擇。採用微控制器的新型SoC FPGA比低端FPGA性能強,而又沒有ARM A級SoC FPGA的高成本和支援需求等缺點。它們內置了硬核微控制器核心和周邊設備、I/O及其他功能,可讓嵌入式系統設計師實現各種通用型的應用。對很多應用而言,這種採用微控制器而且經過強化的SoC FPGA是最有效的方案,畢竟有很多應用都可以使用32位元的微控制器架構,所以每年會生產出許多這種架構的微控制器。
當FPGA結構與硬核微控制器和完整的周邊設備子系統結合起來,就可以產生一種有效的平台,方便在系統設計之內進行理想的分工。
設計分區策略的實例
一個ARM Cortex M3 SoC FPGA就可以兼具微控制器和FPGA結構的優勢。鑒於結構和為指令存取記憶體的要求,微控制器比較適合低速串列任務。而FPGA結構則更適合對時間要求比較高的平行處理任務。若根據這個特點來對設計進行分區(partitioning),就比較清楚那個元件應該做什麼事情。
例如,在許多設計中,ARM Cortex M3及周邊設備一般用於通訊、控制和其他低速功能。而FPGA結構一般用於實現獨特的邏輯功能,或者執行對時間要求比較高的加速功能。按這種方式,一個ARM Cortex M3 SoC FPGA結構就可以視為是一個帶可配置硬體加速功能的微控制器,而FPGA結構也成為硬體加速和實現邏輯功能的理想方案,而這兩方面都是FPGA所擅長之處。將ARM Cortex M3與FPGA結構整合成單一的解決方案,就可以在很多系統設計應用中妥善解決串列和平行任務的分區。我們將在下文列出幾個相關的設計實例。
多軸馬達控制
控制多個馬達的一個主要挑戰是要求馬達控制回路要有確定性的回應時間。為確保設計的可靠性,每個馬達必須有精確的伺服回應時間,不能有太大的計時波動。由於多軸馬達控制演算法是一種對時間要求嚴格的功能,所以它應該常駐於FPGA結構之中。FPGA是實施這種需要確定性計時的控制回路之理想方案。圖1說明了一個多軸馬達控制設計的模組示意圖。從圖中可以看出,馬達控制演算法模組位於FPGA結構之中,而低速介面則連接到ARM M3。
馬達控制演算法並不是唯一必須的功能,一個完整的馬達控制設計往往還需要通訊介面和控制I/O。這類介面對性能要求不高,因此由M3這類微控制器來實現比較合適。通訊介面可以是控制區域網路(CAN) 匯流排、串列周邊設備介面(SPI)、通用非同步收發器(UART),或者其他控制匯流排。
為乙太網交換機增加MACsec (MKA)
由於對網路資料安全的考慮越來越深,IEEE委員會制定了802.1AE MAC安全標準,它通常被稱為MACsec 或MACsec Key Agreement (MKA)。MKA標準具體規定了一系列的協定,來保護在乙太網上傳輸的資料,其中一個要求就是讓資料在鏈路上加密,對資料加密是利用產生金鑰和交換金鑰來完成的。雖然MACsec已內建在許多的乙太網實體層(PHY)器件之中,但很少有乙太網交換機帶有MKA協定。交換機和PHY需要同時支援,才可以實施MKA協定。而由採用ARM Cortex M3的FPGA來實現,是再合適不過的。
要為乙太網交換機增加MKA,交換機必須要連接到採用MACsec 的實體層(圖2)。另外還需要一個外部器件來管理金鑰、運行MKA協定,及監控乙太網連結。
金鑰管理和MKA軟體對運算性能沒有太高的要求,但是監控乙太網連結卻需要很高的列速率(line-rate)性能。這些任務最適合由採用M3的FPGA負責。微控制器運行MKA協定並處理金鑰的產生,這些任務跟網路類型和所需的安全標準無關,並且不會經常運行。例如,如果網路要求每隔一小時更改安全金鑰,且如果FPGA要支持兩個鏈路,那麼MKA協定只需要每小時執行幾次即可。FPGA邏輯單元可提供與串列十億位元級媒體獨立介面 (Serial Gigabit Media Independent Interface,SGMII) 鏈結介接的物理介面,也可以過濾特定IP位址或命令的列。當新的金鑰需要載入時,邏輯單元還會對PHY輸出訊號。
實施一個完整的IEEE1588用戶端
IEEE1588是一種在同步乙太網內計時的標準,廣泛地應用於無線通訊產品之中,並且也廣為金融網路、智慧電網應用和廣播視訊所採用。一個IEEE1588網路包括乙太網交換機、閘道、接取點,以及從端/用戶端點的(slave/client end point)設備(圖3)。從端/用戶端點只需要一個乙太網埠,像智慧電網的中繼或機器視覺相機等工業應用也只需要一個IEEE1588埠。雖然從端/用戶端點設備僅需要一個埠,但要在設計中添加IEEE1588功能,並不是一件小事。
在IEEE1588設計中,需要實現以下四個關鍵的功能:
‧ 可支援時間戳記的乙太網PHY或其他器件
‧ 在處理器上運行的軟體常式(routine),以實現所要求的應用功能
‧ 運行演算法的IP,可依據IEEE1588輸出調整鎖相回路(PLL)
‧ 可以動態調整的PLL,以輸出網路計時時鐘
一個採用ARM Cortex M3的FPGA是IEEE1588用戶端設計的理想核心。M3用於運行軟體計時常式和演算法以控制PLL,這個軟體可以監控網路時鐘,必要時也可以調整PLL。FPGA提供可與乙太網PHY介接的邏輯,以及簡化系統主機整合所必需的介面匯流排。這一經過驗證的完整方案可將系統軟體整合和測試工作量減到最少。此外,當新的IEEE1588簡檔或增強功能面世時,這個採用M3的FPGA方案也可實現更快的現場更新。
開啟新的機會
對通用型應用來說,系統設計師以往只有兩種FPGA選擇,但兩種都不是很理想。現在,我們有了第三種選擇,就是採用微控制器的SoC FPGA。這種方案可以實現橋接、I/O擴展、硬體加速、協定管理和主機板初始化等功能。對於越來越多的應用來說,這種採用微控制器新型FPGA的能力已經是綽綽有餘了,所以它們必將為嵌入式系統設計師開啟更多的市場機會。
(本文作者 Ted Marena 任職於美高森美公司)