控制模型的構建
2004年5月A版
高級圖形建模工具已在電子業使用了相當長的時間,問題在于框圖只在設計的初始階段起作用,之后就深藏不露了。然而,軟件工具卻利用框圖來完成差不多全部的算法建模,甚至系統的圖形建模,然后生成可自動實現該系統的代碼。
航天和汽車等工業已在控制和信號處理系統中充分利用軟件工具,它們采用工具作系統建模和產生原型硬件的代碼,有些甚至使用工具來生成適合生產系統的軟件。最初,自動生成的代碼用于原型機平臺或者PC,近年來的代碼生成變成一種更實用的為嵌入式硬件生成產品質量代碼的方法。現在,幾十萬輛汽車的量產借助于這種方法生成的生產代碼。
除了汽車業,航天應用亦獲得成功的佐證。在這些工業部門內,安全因素處于絕對優先的地位。有了機器生成代碼的保證,才有可能在從每行C或Ada語言的翻譯過程中避免軟件編程人員的人為影響。
目前使用的這類工具有Mathworks公司的Matlab和國家儀器(NI)公司的Matrixx等。它們為開發人員提供一種使用互連函數塊構建系統圖形模型的方法。每個函數塊可代表一項數學運算,例如乘法或加法,或者更復雜的函數例如快速傅里葉變換,甚至一種由某些結構組成的許多低級塊構建的函數。這種環境支持各種類型的框圖,某些框圖在動態模擬物理系統和機械系統時處理連續時間的建模,而在數字控制設計中用分立時間建模。在這類工具中還有一種Stateflow工具,可讓用戶綜合各種狀態的機械框圖。
面向控制的系統需要來自實際環境的數據,它有助于在單一環境下處理算法推導和系統建模時的數據,甚至這是一個可執行的規范。Mathworks公司的發言人認為,這正是使用這些工具的最積極因素。
使用帶有代碼生長的高級建模工具在設計控制系統時往往遵循一種常用方法。典型地,開發過程先從高級模型的脫機模擬開始,接著是在特殊原型化硬件上開發原型,并且由有關供應商提供軟件,例如dSpace公司提供這種支持,而Mathworks公司允許在實際環境數據下對模型作微調。在某種情況下,還可在運行過程中對取樣率和控制參數等作調整。
開發隊伍下一步要處理目標硬件的問題,往往它在存儲器和處理器功耗方面,具有比原型硬件更多的限制。在此階段應該將高級模型交給工程師進行代碼手編,或者采用dSpace公司的TargetLink、Mathwork公司的或NI公司的代碼發生器等工具來自動生成生產質量的代碼。
dspace公司認為這種生產代碼的質量與正規軟件工程師編寫的相同。
由Visual Solutions公司提供的VisSim是另一種建模和模擬環境,它的概念與Simulink相類似,但著重不同的市場范圍,主要面向工業控制。該公司認為,自動生成的代碼容易安裝到工業控制用的DSP中容量有限的片上存儲器中。對于采用脈寬調制(PWM)技術的馬達用定點閉環控制器的實例,一個正交編碼的位置讀出系統代碼量,只占TI公司的TM320F2812工業控制DSP內1.8KB指令存儲器空間和1.4KB數據空間。還有,控制器可在幾分鐘內移植到F243或F2407芯片內,只有PWM的I/O塊,編碼器和數字I/O需要變動。
總的來說,自動代碼生長只用到應用層,對于操作系統和硬件抽象層要用手編代碼。此外,用戶界面和協議棧等單元往往留作手編代碼或使用其它工具。然而,生成的代碼與操作系統的交互是一種需要留意或要有經驗的作業。dSpace公司的工作很有效,可將生成的代碼與遵從OSEK汽車標準的任何商業操作系統的集成量減至最小。工具供應商Sheet Dynamics公司的DSP開發工具,提供自行設計的操作系統來運行RTW(Real Time Workshop)工具生成的代碼,RTW是Mathworks公司的代碼發生器,用于Simulink模型以及Analog Devices公司的Sharc系列DSP。
生產代碼自動生成對一個項目的貢獻,同樣跟設計所需的安全性級別有關。NI公司的Greg Wempe稱“當您進入安全性很重要的部分時,您必須有更多的膠粘代碼來固定全部可能出現的問題”。
NI公司的Matrixx工具庫與Matlab有許多相似的地方,它廣泛用于美國國防項目。洛克希德馬丁公司用它開發概念演示飛機X35的飛行控制算法和自動代碼生成,X35聯合攻擊殲擊機是美、英兩國空軍共同合作的幾十億美元殲擊機項目。NI作為數據采集的專業公司,打算將Matrixx擴展到數據采集和過程控制系統的客戶,該公司的虛擬儀器工具在這方面不能滿足客戶的要求。據稱LabVIEW目前可處理許多PID控制,但是當你要解決宇航控制器或過程控制的多路輸入和輸出系統時,就需要Matrixx。
當降低性能和算法復雜性所要求的規模時,就有更多機會將高級模型與目標平臺特性配合,從而生成更有效的高性能代碼。例如,TargetLink工具庫與編譯器,擴充專用處理器語言、以及專為現今使用的多種處理器作優化的匯編宏功能一起,即可使問題迎刃而解。有專家稱:跨平臺獨立性只要簡單選擇所需的目標優化模塊和結合目標的處理器編譯器即可獲得。
人們一直努力為各種DSP定義最佳的軟件庫,以便代碼的生成。結果是,這些工具通常產生可移植的C代碼,而不是通用的代碼,并稱它為人工優化的特定平臺的匯編代碼函數工具庫,綽號叫做“本征代碼”。例如,幾家模型工具供應商的代碼生成工具組成專為TI公司的C6X DSP開發的本征代碼工具庫。
與DSP相似,使用FPGA作信號處理也越來越多,因為FPGA的速度要比DSP快得多,而且對于某種類型的算法FPGA更快且效率更高。由于信號處理的工程技術人員并不熟悉Verilog和VHDL等硬件描述語言,從高級模型自動生成這種代碼就十分重要了。
跨平臺方案
當試圖在同一系統內的不同硬件平臺之間擴大算法模型的實現時,往往會出現問題。例如,軟件無線電系統經常由多種FPGA、DSP和通用處理器構成。設計流程需要先從統一的高級模型再進入完全分散的環境,它們每個都是特定的平臺。應該注意,除非建立物理協議,完成系統測試是不可能的,而且費用昂貴。一種由Mathworks提供的解決方案是對不同硬件單元的定時和同步特性進行建模,包括嵌入式處理器和數字邏輯等單元的高級系統模型。此外,還要充分利用芯片或板卡供應商提供的接口規范,它們是總線I/O定時和其它特性、并且可‘包裝’入系統模型的方塊內用作模擬和生成代碼的自動調用。
Sheet Dynamics公司認為,不同類型目標之間的分區需要工程判斷和反復嘗試,特別是系統芯片(SoC)目標。目前的辦法幾乎都是在對硬件和軟件采用獨立的設計流程前借助“紙上”分區。它對單一環境下的代碼生成、測試和驗證人工硬件和軟件分區的價值,大于對該過程自動化的價值。下一步是用能夠生成代碼和具有驗證接口的系統級模型代替紙上規范。Sheet Dynamics公司正著手解決此問題,有關分區的主要辦法將在DSP開發者的新版本提出,特點是讓開發人員對每個Simulink塊指定一個電子數據表,它將包含每個塊內所需的資源模型,如存儲器需求、執行速度等的詳細數據,以便估計硬件的需求。
一種還不夠完善的可能解決辦法是:在系統級模型的環境下允許構建和維護有關驗證和評估的工具。結果是對于任何自動生成的代碼都具有相似的可信度。這種概念是“頂級”的參考設計,同樣含有“頂級”的測試基準。現今,不少供應商提供可再用的模型級測試基準工具來解決該問題,工具可驗證在目標平臺上生成的代碼,甚至驗證其它方法開發的代碼。
從事建模和代碼生成的公司正在審視汽車和航天以外的業界。還有不少面臨復雜競爭的部門,它們需要注意帶有代碼生成功能的系統級建模工具。取得的效果取決于代碼生成技術是否符合應用所要求的性能。需要把它看成是連續的統一體,因為我們不斷改進使代碼達到“足夠”好。當程序達到幾十萬行C語言時,工程師不能繼續手寫代碼了,需要去接受C編譯器和硬件綜合。■(馬詩,李奧)
評論