Global Sources
電子工程專輯
 
電子工程專輯 > 測試與測量
 
 
測試與測量  

正視FPGA在嵌入式測試系統中的設計挑戰

上網時間: 2003年08月09日     打印版  Bookmark and Share  字型大小:  

關鍵字:FPGA  現場可程式閘陣列  embedded system  嵌入式系統  VHDL 

有多種方式可以在系統中加入智慧化功能,其中一種常見的技術就是現場可程式閘陣列(FPGA)。將算法編入FPGA中可為最終產品在成本、尺寸和性能方面帶來很多好處。本文主要介紹在要求測量和控制功能的系統中使用FPGA可得到的好處和面臨的挑戰。

嵌入式系統’這個名詞的範圍很廣,從數位電子錶到變電站電力檢測系統中的PC都可歸於這一範疇。大多數情況下,嵌入式系統是一個獨立且具有專門用途的系統,它應能在沒有技術人員作業的情況下執行。許多嵌入式系統都有某種類型的用戶介面,但有一些以‘傻瓜型’方式運作,這些系統需要與外界透過感測器、網路等進行交流。系統智慧化可以透過由作業系統控制的微處理器實現,或者系統大部份功能也可由一個單獨的專用晶片完成。

不同的嵌入式系統其設計要求相去甚遠。如果設計是手持式設備(如PDA),那麼功耗是主要問題;而對機場或電影院售票設備,可靠性和安全將是主要考慮因素。當然,用戶介面在上述兩種系統中都是主要組成部份,但也有許多嵌入式系統還必須和感測器和執行器相連,這些系統要求對實際的激勵做出迅速反應並產生複雜輸出模式作為響應,完成這些動作需要處理引擎和系統輸入輸出埠緊密結合。

讓我們來看一下嵌入式系統和外界進行交流的方式。掌上運算器具有非常簡單的用戶介面,包括鍵盤和LCD顯示器,它不需要與感測器或通訊匯流排連接的介面。而對於一個汽車引擎控制單元,它雖然沒有用戶介面,但是需要與感測器和執行器進行通訊,而且車輛網路匯流排也是很重要的部份。當汽車進行維修保養時,技術人員會使用一種設備作為汽車電路的用戶介面,對大多數需要這種功能的現代嵌入式系統,用戶介面往往像這樣透過在設備上增加一個乙太網路埠,然後執行web伺服器作為嵌入式系統功能的一部份來實現。路由器就是這樣一種設備,通常以‘傻瓜’方式執行,但可透過一個web瀏覽器對其進行配置。

可以選擇多種方法和元件將智慧化功能加入系統中,並且可將這些方法和元件進行混合配對以便以最佳方式達到設計要求。最靈活的平台類型是將微處理器和作業系統結合起來,這種架構可以採取單板機帶即時作業系統(RTOS)核心的形式,比如在ATM機或自動販賣機中。更複雜的系統則嵌入一個完整的PC,上面執行Windows或其它作業系統,這樣做可以利用現成的網路介面功能連接到標準印表機上。

對於有的系統而言,PC或單板機可能太大或成本太高,而且它們或許也不能滿足性能需求。這時可以透過將現成的專用積體電路晶片(ASIC)整合在設計中來實現所要求的功能,如用DSP、運算放大器和通訊匯流排收發器等,這種方法的缺陷是計畫需要增加板級設計,而如果使用PC平台,只需要將精力集中在系統級設計上即可。

但如果PC不能滿足需求,而且也沒有現成元件可以完成系統,那該怎麼辦呢?這時不僅要考慮進行板級設計,而且還包括晶片級設計,需要設計並製造自己的ASIC或者是使用現成的可配置晶片:FPGA。其中一個需確定的因素是最終產品的數量,如果設計是大量產品如行動電話,那麼為了節約設計和裝配成本最好自行開發ASIC;但如果目標市場很小,則可以透過使用FPGA來減少成本。FPGA可以在更改系統時不必開發新的ASIC,如果系統需要升級或修改以便滿足特殊客戶的需要,這樣的方式是極為有利的。今天,FPGA已廣泛應用在印表機、影印機、測量設備、消費電子產品和自動控制模組等嵌入式系統中。

測量和控制用FPGA

FPGA是一種具有可重配置邏輯閘的晶片,與供應商提供功能定義的ASIC晶片不同,FPGA可根據每個應用的不同需要而進行配置和重新配置。由於FPGA允許在硬體中實現自定義算法,因此它具有精確時序和同步、快速決策及平行任務同時執行等優點。在PC或具有RTOS和微處理器的平台上,處理器必須對多個任務進行分時處理,而FPGA則可以配置為多個獨立的平行運算資源,簡言之,就像晶片上有多個微處理器一樣,且這些微處理器都針對特定的任務進行了最佳化。

FPGA的性能和靈活性使得它們成為處理輸入輸出非常有效的技術。假如想運算那些比計數器處理的簡單上升或下降沿更有趣的類比或數位事件,或者要確認一個基於特定事件順序或自定義通訊協定的輸入模式,然後在幾奈秒後觸發一個模擬作業,這時就可以利用FPGA監視輸入訊號,快速決定並做出反應。另外可以製作一個系統讀取脈寬調變訊號並迅速運算佔空比,更進一步,還可以對FPGA進行配置以利用自定義數位協議進行通訊,如對輸入資訊進行解碼,然後將資訊組合編碼作為輸出數據包再發送出去,這種快速解碼在與非標準編碼器連接時有助於讀取和解讀出位置和速度資訊。你可能甚至希望同時進行上述所有作業,並使得這些作業互相同步,且和其它輸入和輸出任務同步。

那麼輸出的情況是怎樣的呢?透過自定義數位協議進行通訊和產生PWM訊號是這種類型很好的例子,也可以模擬一個連接到實體系統的電子元件或感測器。如果是用一個基於軟體的系統完成此項工作,即使使用RTOS,輸出的性能也可能不一定夠。對於主控制算法,或許只需執行在幾千赫茲頻率上,這會造成CPU資源閒置,而且它只是告訴輸出做什麼以及何時做,並沒有指明該怎樣做。具體來說,假定你的嵌入式系統是一個客戶用來測試引擎控制模組的引擎模擬器,對汽車引擎設立了模型並且系統基於該模型進行即時模擬,透過類比和數位I/O與控制器進行通訊。如果在某個特定測試?模型按照控制器的指示進行作業,引擎開始運轉,但是不斷即時調整汽缸壓力感測器模擬輸出以使控制器相信它是與一個真實運轉的引擎相連是非常困難的,輸出訊號必須在運轉過程中形成以便對控制器的命令做出響應。但如果使用的是FPGA,就可以透過對其進行配置使其產生基於類比模型的高級輸出訊號。

面臨的挑戰

將FPGA整合在嵌入式系統最大的挑戰是如何配置FPGA的邏輯,以及將感測器輸入和控制輸出與它連接起來。許多嵌入式系統設計人員對於在即時作業系統下執行的微處理器上編程非常熟練,但他們不喜歡在晶片級對硬體進行定義,這需要有設計工具和語言如VHDL方面的知識。當然,冒昧進入晶片級領域還意味著需要設計和建構晶片周邊的電路板,雖然這對於一些嵌入式系統設計人員來說已經過時了,但仍然有許多設計人員寧願盡可能地使用現成的硬體,特別是當硬體必須精確地測量出感測器數據並對其作數位化處理時。

目前有許多FPGA配置工具,有些工具需要VHDL或其它語言編碼完成硬體定義,有些工具提供了圖形配置環境,還有的工具允許你使用熟悉的工具編寫軟體,然後將程式碼下載到FPGA中。在選擇哪種方式適合時需要考慮幾個問題,其中一個考慮因素是你的背景。你是否是一個富有經驗的硬體開發人員並對FPGA的基本作業有深入的認識?如果是,就可以利用低級工具充分發揮你的經驗並深入實地進行配置。也許你不是硬體工程師,但你是一位優秀的程式員並且能很容易掌握新的編程語言,那麼你可能需要選擇一個能夠讓你充分運用數據結構和程式細節進行編程的工具。另外一個可能是你既不是硬體專家也不是軟體專家,但由於你對整個系統內在的理論或系統所投入的應用非常熟悉而來設計系統,如果是這種情況,那麼應該選擇一個可以讓你以自己的語言進行設計工具,而不必學習複雜的FPGA或硬體描述語言。

另一個很重要的考慮因素是你計畫設計系統所要求達到的功能是什麼。如果正設計多個不同類型的系統,可能通用硬體設計工具最為適合。有許多人花費很多時間成為使用這些工具的專家,你也可以加入其中。如果想將涉及面縮小一些,那麼也有工具去處理那些‘常規’事務,而讓你專注於可以增值的地方。舉個例子,有許多工具可以幫助你很快開發出訊號處理系統並將其配置到FPGA中去,也有一些經最佳化的工具專門用來增加測量和控制功能。

還需要考慮系統配置希望怎樣設置的問題。要有怎樣的尺寸?與PC連接嗎?有的FPGA開發工具要求你開發FPGA周邊所有硬體,另一些則要求使用一種特殊的內建有FPGA的電路板。對於後者,很多和板上其它資源如I/O與匯流排連接的工作都已做好,這樣可以大幅加速開發的進度,因為你無須關注諸如抗噪性、穩定時間和串擾之類的事項。對於此類系統,你應該確保與I/O的連接只有一些簡單功能。如果系統需要大量與執行Windows或RTOS的PC連接,那麼應選擇那些能夠跨平台的設計工具。如果用於開發PC端介面的API很有限的話,設計效率將受到一定的影響。

設計系統

設計一個完整系統的第一步是確定你的算法哪一部份需要放到FPGA中並執行,有以下幾種可能性。第一,整個應用都可以在FPGA上執行,你無須透過鍵盤、顯示器或滑鼠等用戶交互方式,在這種情況下,用軟體開發就可以完成所有工作。第二,也可能將應用嵌入到FPGA中去,但你想有一個在PC上執行的Windows用戶介面,這就意味著需要開發一個在Windows下執行的程式來和FPGA進行通訊。這要看你的開發工具是否按照這種思路開發,可能很棘手,也可能很簡單。第三,另一個常見的情況是,你希望在FPGA和一個微處理器平台如單板機或執行RTOS的嵌入式PC之間分配你的應用程式,在這種情況下可能也需要一個Windows用戶介面。

有幾個原因你可能無法將整個應用程式嵌入到FPGA中去。應用程式大小是其中之一,FPGA的邏輯閘數量有限,並且最終放入FPGA中的程式碼因編程人員以及產生程式碼的自動系統不同而效率可能很高也可能很低,另外FPGA上供用戶使用的RAM容量也很有限,而基於PC的平台一般都具有相對較大的記憶體和硬碟空間。另外一個需要考慮的問題是FPGA設計常常無法進行浮點運算,市面上有在FPGA上執行浮點運算的工具,但它們可能可以也可能無法與你正使用的開發工具相容,如果無法全部以整型算法執行整個運算,可以放一部份在PC上執行。PC還可以提供一些其它好處,而這些好處在FPGA上無法容易地實現,包括文件I/O、網路作業、列印能力和基於PC的測量和控制能力,如圖形識別╱處理、GPIB/VXI工具控制以及與產業匯流排如CAN、RS-232和RS-485的介面等。

本文小結

FPGA為嵌入式系統帶來了在尺寸、成本和性能上的優點,特別對I/O處理加入智慧特性非常有幫助,利用FPGA可以實現基於軟體且執行RTOS的系統無法實現的時序和同步。你可以透過微處理器和RTOS平台如嵌入式PC執行大多數應用程式,但需要晶片級解決方案進行訊號解碼和編碼或產生輸出資訊;同樣,你也可以在FPGA上執行大多數應用程式,但需要另一個平台來完成更高級的任務。使用FPGA有一些挑戰,但有許多工具可以幫助你解決這些問題。最主要的考慮因素是你的技術特點,系統需要完成什麼任務以及系統如何設置。

作者:Geoff Hoekstra


National Instruments


Email: geoff.hoekstra@ni.com





投票數:   加入我的最愛
我來評論 - 正視FPGA在嵌入式測試系統中的設計挑戰
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首