以ARM和DSP嵌入式系統(tǒng)為核心的實時仿真平臺的開發(fā)
引 言
本文引用地址:http://www.ex-cimer.com/article/149421.htm一個大型的船舶輪機(jī)模擬器蘊含著30多個全物理過程的數(shù)學(xué)模型,涉及千余個實時參變量,通常采用功能分散的DCS網(wǎng)絡(luò)來實現(xiàn)。即便如此,個別仿真工作站由于模型復(fù)雜、任務(wù)繁重,難以滿足實時仿真的要求。
例如,動力推進(jìn)系統(tǒng)的仿真是一個半實物在環(huán)的仿真系統(tǒng),其中既有虛擬的動力裝置即仿真計算機(jī)上運行的數(shù)學(xué)模型,又有真實的控制盤臺、物理顯示設(shè)備,是一種集實時控制和高速運算功能于一體的典型系統(tǒng)。
早期開發(fā)成功的SMSC2000型輪機(jī)模擬器采用工控機(jī)作為仿真計算機(jī),所有數(shù)據(jù)的處理和輸入輸出的控制都經(jīng)過它的數(shù)據(jù)采集卡來完成。推進(jìn)系統(tǒng)仿真的精確度與實時性無法兩全。近期航運仿真中心在開展多模式機(jī)艙仿真實驗的同時,針對I/O點最多(200多個)、半實物環(huán)境最復(fù)雜的船舶推進(jìn)系統(tǒng)進(jìn)行了剖析,研制了嵌入式微機(jī)的新穎仿真平臺。
船舶推進(jìn)系統(tǒng)仿真平臺的選取
船舶推進(jìn)系統(tǒng)仿真平臺需要有很強(qiáng)的控制接口(輸入輸出)能力和高速的數(shù)字運算處理能力。TI公司的DSPC2000系列率先為電機(jī)的實時控制開拓了應(yīng)用領(lǐng)域,但并不適合于具有眾多I/O的復(fù)雜機(jī)電模型的仿真。由于市場上無現(xiàn)成的仿真裝置可購,只能針對機(jī)艙模擬器的對象自行探索。實際上,當(dāng)代嵌入式芯片既提供了高速的數(shù)字信號處理器(DSP),也提供了有強(qiáng)大控制功能的微控制器(MCU)。采用MCU+DSP架構(gòu),就可兼?zhèn)鋬烧叩拈L處。
基于ARM核的32位RISC微控制器在監(jiān)視控制、人機(jī)接口方面的功能非常完善,數(shù)字信號處理器(DSP)對各種數(shù)字信號或數(shù)據(jù)處理的能力十分強(qiáng)大。因此,許多嵌入式實時應(yīng)用系統(tǒng)采用ARM+DSP的結(jié)構(gòu)組合來充分發(fā)揮兩種處理器的優(yōu)勢,從每個處理器中獲得最大益處,以獲得更高性能。其中,ARM作為主處理器,負(fù)責(zé)任務(wù)管理、輸入輸出接口、對外部設(shè)備的控制,甚至運行嵌入式操作系統(tǒng);而DSP作為從處理器,僅僅負(fù)責(zé)快速的數(shù)據(jù)運算處理。兩個處理器核之間通過共用一部分存儲器等方式進(jìn)行通信。
以ARM+DSP為核心的嵌入式系統(tǒng)具有很強(qiáng)的控制接口能力和高速數(shù)字處理能力,用來代替以工控機(jī)為核心的仿真系統(tǒng),可以達(dá)到實時運行精確的船舶推進(jìn)系統(tǒng)的數(shù)學(xué)模型、實時控制外圍物理設(shè)備的目的,從而實現(xiàn)精確實時的半物理實物在環(huán)的船舶推進(jìn)仿真系統(tǒng)。
ARM+DSP嵌入式船舶推進(jìn)系統(tǒng)仿真平臺的硬件結(jié)構(gòu)
ARM+DSP嵌入式仿真平臺主要由以ARM,C5000DSP,C2000DSP3個處理器為中心的功能部分構(gòu)成。其中ARM部分的ARM核微控制器是主處理器,是整個系統(tǒng)的控制中心。ARM部分帶有自己的FLASH,RAM,A/D,D/A轉(zhuǎn)換器等外圍設(shè)備,主要負(fù)責(zé)上電后完成整個系統(tǒng)的自舉加載和系統(tǒng)的任務(wù)分配、從物理設(shè)備輸入和向物理設(shè)備輸出信號、通過CAN總線與上位計算機(jī)通信等。
C5000DSP部分主要運行船舶推進(jìn)系統(tǒng)的數(shù)學(xué)模型,并將仿真所得的轉(zhuǎn)速和轉(zhuǎn)矩的數(shù)據(jù)傳遞給C2000DSP部分的電機(jī)控制單元,以在電動機(jī)上表達(dá)出推進(jìn)系統(tǒng)的實時狀態(tài),即用電動機(jī)來模擬推進(jìn)主機(jī)。
C2000DSP部分的功能是接收C5000DSP部分?jǐn)?shù)學(xué)模型的運算結(jié)果,按照該結(jié)果控制電動機(jī)達(dá)到仿真的轉(zhuǎn)速和轉(zhuǎn)矩,最終實現(xiàn)用電動機(jī)來模擬推進(jìn)主機(jī)。這3個部分按一定的方式組合在一起,構(gòu)成一個整體,共同完成推進(jìn)系統(tǒng)仿真的任務(wù)。其基本組織結(jié)構(gòu)如圖1所示。
圖1 ARM+DSP嵌入式微機(jī)系統(tǒng)的基本組成
實際上,從可靠性角度考慮,對于ARM部分和C5000DSP部分,采用一塊ARM7+C54x的雙核芯片(TI的TMS320VC5470)把兩部分的核心集成到一起。這兩部分的主要外圍設(shè)備有ARM側(cè)的FLASH,SRAM,SDRAM,鍵盤,LCD,CAN總線接口,A/D,D/A轉(zhuǎn)換器(用于模擬量的輸入輸出),光耦電路(用于數(shù)字量或開關(guān)量的輸入輸出),用于編程調(diào)試用的JTAG接口及DSP側(cè)的程序空間外擴(kuò)SRAM,數(shù)據(jù)空間外擴(kuò)SRAM,及I/O空間的FIFO(用于向C2000DSP部分傳遞數(shù)據(jù))。這兩部分的硬件組織結(jié)構(gòu)如圖2所示。
圖2 ARM和C5000DSP的硬件結(jié)構(gòu)
C2000DSP部分為任選部分。若省略這部分,則仿真結(jié)果僅顯示在LCD,LED狀態(tài)指示燈上。加上這部分后,仿真推進(jìn)系統(tǒng)的各種動靜態(tài)轉(zhuǎn)速及轉(zhuǎn)矩特性可在C2000DSP部分控制的仿真電機(jī)上反映出來,達(dá)到用電機(jī)模擬推進(jìn)系統(tǒng)主機(jī)的目的。圖3所示的C2000DSP子系統(tǒng)實際上是一個電機(jī)的閉環(huán)控制系統(tǒng),由DSP控制器、功率驅(qū)動放大電路、電機(jī)和轉(zhuǎn)速檢測環(huán)節(jié)(光電編碼盤)4個子部分構(gòu)成??梢?,ARM+DSP嵌入式船舶推進(jìn)系統(tǒng)仿真平臺的硬件資源豐富,且有很大的可擴(kuò)展空間。該系統(tǒng)平臺在硬件方面有以下一些特點。
(1)從處理器的速度上看,ARM最大為47.5MHz,C5000DSP最大為100MHz,C2000DSP最大為40MHz,屬于較高速處理器。
圖3 C2000DSP部分的硬件結(jié)構(gòu)
(2)FLASH的容量很大。在ARM和C5000DSP(即TMS320VC5470)部分有8MB的外部FLASH;在C2000DSP(TMS320LF2407)部分有32KW的在片F(xiàn)LASH,而且還可以進(jìn)行外擴(kuò)。這樣,該系統(tǒng)就可以固化大量的程序代碼,適合開發(fā)大型的程序。
(3)SRAM的容量也很大。在ARM部分有16KB的在片高速SRAM和2MB的外部SRAM;在C5000DSP部分有72KW高速在片SRAM和64KW外擴(kuò)程序SRAM和64KW外擴(kuò)數(shù)據(jù)SRAM;在C2000DSP(TMS320LF2407)部分有2.5KW的在片SRAM,而且還有64KW外擴(kuò)程序SRAM和64KW外擴(kuò)數(shù)據(jù)SRAM。這樣,大量的SRAM可以保證處理器在SRAM中讀取程序,以保證程序快速運行。
(4)系統(tǒng)的I/O端口資源豐富。既有數(shù)字量的輸入輸出,也有模擬量的輸入輸出;既提供了串行方式,也提供了并行方式。為數(shù)據(jù)采集、控制指令輸出、與上位機(jī)通信等奠定了硬
件基礎(chǔ)。
(5)C2000DSP的處理器TMS320LF2407是專用來進(jìn)行電機(jī)控制的芯片,用來產(chǎn)生PWM信號和捕獲轉(zhuǎn)速反饋信號很容易,而且運算速度快,可以實現(xiàn)對電機(jī)的各種高效復(fù)雜的控制。
(6)各部分間需要實時交換數(shù)據(jù),其硬件上都采用了共享存儲器的方式(ARM與C5000DSP之間的ARMPortInterface,簡稱API,C5000DSP與C2000DSP之間的FIFO)。這樣,通信速度很快,從硬件上滿足了實時要求。
(7)因為器件數(shù)量較多且速度相對較高,有些芯片采用的是先進(jìn)的BGA(BallGridArray)封裝技術(shù),所以在設(shè)計印刷電路板時,采用了6層板,布線充分考慮了器件的高速性和封裝技術(shù)。
(8)該系統(tǒng)平臺提供了很多可擴(kuò)展的接口,用戶可針對具體對象擴(kuò)充硬件、添加新的功能。對于構(gòu)成SMSC2000輪機(jī)模擬器的其他工作站,無須擴(kuò)展任何I/O接口,可見該系統(tǒng)具有通用性。
ARM+DSP嵌入式仿真平臺的軟件結(jié)構(gòu)
ARM部分中的軟件
ARM部分是整個系統(tǒng)的控制中心,其運行的主要是系統(tǒng)軟件,包括自舉加載程序、指令響應(yīng)程序、鍵盤掃描程序、LCD顯示驅(qū)動程序、A/D與D/A轉(zhuǎn)換控制程序、直接數(shù)字量/開關(guān)量輸入輸出程序、CAN總線通信控制程序及與C5000DSP部分進(jìn)行內(nèi)部實時數(shù)據(jù)交換的控制程序。
自舉加載程序是上電或復(fù)位后首要實現(xiàn)的任務(wù)。它先對ARM的一些關(guān)鍵寄存器(如時鐘、中斷等)進(jìn)行初始化(即部分初始化);之后將ARM部分中要運行的主程序和各個子程序(如指令響應(yīng)程序、鍵盤掃描、LCD顯示驅(qū)動等)從片外的非易失性存儲器FLASH中加載到片內(nèi)或片外的SRAM中,以增加程序的運行速度;接著,開始負(fù)責(zé)對C5000DSP部分進(jìn)行復(fù)位初始化,再把數(shù)學(xué)模型程序通過API控制加載到C5000DSP中。這樣,自舉加載程序就完成了兩個部分的自舉加載工作。
自舉加載完成后,ARM部分開始執(zhí)行系統(tǒng)的全部初始化,然后便進(jìn)入系統(tǒng)的主程序(該主程序是一個無限循環(huán)等待程序),在主程序中再以中斷方式反復(fù)運行鍵盤掃描、LCD顯示驅(qū)動、指令解釋響應(yīng)、A/D與D/A轉(zhuǎn)換控制、數(shù)字量/開關(guān)量的輸入輸出及與C5000DSP部分通訊的程序。其中,指令解釋的響應(yīng)程序是一個核心程序,類似于操作系統(tǒng)的內(nèi)核程序,接受來自輸入處理子程序(鍵盤掃描、數(shù)字量/開關(guān)量的輸入等)的接口數(shù)據(jù),并根據(jù)它們的值啟動相應(yīng)的任務(wù),如果需要將任務(wù)執(zhí)行的結(jié)果作為接口數(shù)據(jù)(指令)輸出給顯示或控制處理子程序,則經(jīng)由各輸出子程序再進(jìn)行處理。該部分的軟件組織結(jié)構(gòu)如圖4所示。
圖4 ARM部分的軟件組織結(jié)構(gòu)
C5000DSP部分的軟件
C5000DSP部分主要用來運行推進(jìn)系統(tǒng)的數(shù)學(xué)模型,該推進(jìn)系統(tǒng)可以是傳統(tǒng)的柴油主機(jī)推動系統(tǒng),也可以是新型的電力推動系統(tǒng),關(guān)鍵在于不同的推動類型對應(yīng)不同的數(shù)學(xué)模型。
C5000DSP程序?qū)嵸|(zhì)上是以實時循環(huán)迭代求解微分方程組為主的程序,該微分方程組即推進(jìn)系統(tǒng)的數(shù)學(xué)模型,并且每循環(huán)求解一次,要確定有沒有從ARM部分傳遞來的指令及參數(shù)更改的信息。如果有,就改變相應(yīng)狀態(tài)及參數(shù)再求解微分方程組;如果沒有,則仍按上一次的狀態(tài)和參數(shù)求解。在每個循環(huán)中,方程組完整求解一次,從而得到推動系統(tǒng)在該時刻的仿真數(shù)據(jù)。在每個循環(huán)的最后,把仿真數(shù)據(jù)結(jié)果傳送給ARM部分及C2000DSP部分(通過FIFO),用于顯示和控制。這部分的軟件程序結(jié)構(gòu)如圖5所示。
圖5 C5000DSP部分的軟件組織結(jié)構(gòu)
C2000DSP部分的軟件結(jié)構(gòu)
C2000DSP部分的主要任務(wù)就是讀取FIFO接收來自C5000DSP部分的仿真結(jié)果中的轉(zhuǎn)速和轉(zhuǎn)矩信號,并將之表達(dá)為電動機(jī)的相應(yīng)轉(zhuǎn)速和轉(zhuǎn)矩。該部分實際上是獨立構(gòu)成的一個專門控制交流電機(jī)的子系統(tǒng)。
其中,C2000DSP處理器TMS320LF2407為該控制子系統(tǒng)的核心。它首先采用查詢的工作方式,檢測主控指令位是否指示打開該進(jìn)程,檢查系統(tǒng)與主電路是否正常。如果主控指令位指示“關(guān)閉”,則切斷主電路,封鎖輸入輸出,再關(guān)閉系統(tǒng);如果不正常,則切斷主電路,封鎖輸入輸出,再關(guān)閉系統(tǒng),并發(fā)出警報;如果一切正常且主控指令位指示“打開”,則讀取此子系統(tǒng)的給定信號(由通信中斷服務(wù)程序從FIFO中讀出并存入相應(yīng)地址的存儲器中),即轉(zhuǎn)速和轉(zhuǎn)矩仿真結(jié)果數(shù)據(jù)的接收,再調(diào)用捕獲子程序從相應(yīng)接口輸入實際轉(zhuǎn)速和轉(zhuǎn)矩的反饋值。給定值和反饋值準(zhǔn)備完畢,系統(tǒng)才開始使用某種控制算法對給定數(shù)據(jù)和反饋數(shù)據(jù)進(jìn)行處理。
完成了一個電機(jī)閉環(huán)恒轉(zhuǎn)速控制算法后,產(chǎn)生相應(yīng)的PWM信號輸出給電機(jī)功率驅(qū)動電路,再由驅(qū)動電路控制電機(jī)跟隨仿真給定轉(zhuǎn)速和轉(zhuǎn)矩信號,完成對推動系統(tǒng)轉(zhuǎn)速和轉(zhuǎn)矩的物理模擬。這里使用的控制算法可以是交流電機(jī)控制的各種算法,有要求較低的恒壓頻比、恒電動勢頻比算法,也有要求高的矢量控制算法和直接轉(zhuǎn)矩控制算法。完成此步控制算法輸出PWM信號后,再返回到開頭處。如此循環(huán),直到出現(xiàn)不正?;駻RM主控程序結(jié)束該任務(wù)進(jìn)程。該部分程序的主要結(jié)構(gòu)如圖6所示。
圖6 C2000DSP部分的軟件組織結(jié)構(gòu)
芯片間的通信控制
該系統(tǒng)由3大部分構(gòu)成,各部分之間的通信關(guān)系如圖1所示。ARM與C5000DSP之間相互通信,C5000DSP與C2000DSP之間相互通信,ARM與C2000DSP之間也相互通信。其中,前兩者是通過中斷方式來完成的,而后者是通過直接傳送的方式完成的。
ARM與C5000DSP之間通過ARM向C5000發(fā)出中斷信號,告知C5000要準(zhǔn)備接收數(shù)據(jù)。然后ARM將數(shù)據(jù)放到兩方共享的API中。DSP接收到中斷信號后,開始中斷服務(wù)程序,從API的相應(yīng)位置取出數(shù)據(jù),之后向ARM發(fā)出回復(fù)信號,以表示數(shù)
據(jù)被取走,而后繼續(xù)準(zhǔn)備開始接收新的數(shù)據(jù)。ARM接收到來自C5000的回復(fù)信號,開始發(fā)送新的數(shù)據(jù)。如此反復(fù),直到傳遞完所有數(shù)據(jù)。反過來,由C5000DSP向ARM發(fā)送數(shù)據(jù),其過程與上面相同,只是收發(fā)方互換位置。
C5000DSP與C2000DSP之間的通信是單向的,即C5000只進(jìn)行發(fā)送而C2000只進(jìn)行接收。它們之間是通過FIFO進(jìn)行緩沖的。C5000首先將仿真運算的轉(zhuǎn)速和轉(zhuǎn)矩數(shù)據(jù)通過總線放入接在其IO空間的FIFO中,再向C2000發(fā)送中斷請求。C2000收到后,響應(yīng)中斷,進(jìn)行中斷服務(wù),從FIFO的相應(yīng)位置取出數(shù)據(jù)并存入特定地址的存儲器中,再回復(fù)C5000告知數(shù)據(jù)已經(jīng)被取出。如此周而復(fù)始,不斷進(jìn)行數(shù)據(jù)的收發(fā)。
ARM與C2000DSP之間的通信主要是ARM主控打開或關(guān)閉C2000系統(tǒng),采用單向直接傳送方式。它們之間通過各自的一個GPIO(通用IO口)相連,ARM發(fā)送,C2000接收。ARM要打開C2000系統(tǒng)時,只需向其對應(yīng)的GPIO寫1,而ARM要關(guān)閉C2000系統(tǒng)時,只需向其對應(yīng)的GPIO寫0。在C2000部分,在主體循環(huán)程序中每次查詢C2000的對應(yīng)GPIO口,讀為1則表示繼續(xù)其進(jìn)程,而讀為0則表示關(guān)斷其進(jìn)程。
ARM+DSP嵌入式仿真平臺與以工控機(jī)為核心的仿真平臺的比較
以ARM+DSP為核心的嵌入式仿真平臺系統(tǒng)與以工控機(jī)為核心的仿真平臺系統(tǒng)相比在仿真的實時性和精確度方面具有很多優(yōu)勢。
(1)使用專用的DSP完成運算,相比通用PC處理器80×86的精確度更高。
(2)ARM和DSP分工明確,各司其職,比單一的PC處理器完成仿真任務(wù)要快很多。SMSC2000在進(jìn)行主機(jī)仿真時,由于處理器、操作系統(tǒng)和VB開發(fā)工具的限制,每求解一次數(shù)學(xué)模型需要的時間在ms級,其采樣周期也在ms級以上;而以ARM+DSP為核心的嵌入式仿真平臺系統(tǒng),由于采用功能強(qiáng)大的雙核構(gòu)架,每求解一次數(shù)學(xué)模型需要的時間在μs級,采樣周期也相應(yīng)減小很多,即仿真的步長更小,大幅度提高了仿真的精確度。
(3)軟件系統(tǒng)是在裸機(jī)的基礎(chǔ)上建立的,實時性完全由開發(fā)人員決定,不受非實時操作系統(tǒng)限制。
結(jié)束語
針對船舶推進(jìn)系統(tǒng)研制的新穎ARM+DSP嵌入式仿真平臺揚長了ARM與DSP兩種嵌入式處理器的特點,集豐富的控制接口和高速運算處理能力于一體。該仿真平臺系統(tǒng)結(jié)構(gòu)清晰,各部分專用功能強(qiáng)大,任務(wù)分配明確,相互之間都有通信交互。該系統(tǒng)存儲器容量大,各器件速度快,集成度高。軟件編程從系統(tǒng)和應(yīng)用的角度出發(fā),密切結(jié)合實際情況,軟件結(jié)構(gòu)適合嵌入式系統(tǒng)運行。系統(tǒng)的軟硬件都有較大擴(kuò)展空間。用該仿真平臺代替?zhèn)鹘y(tǒng)的基于工控計算機(jī)的仿真模式真正達(dá)到了實時要求,其運行的數(shù)學(xué)模型更精確,控制物理設(shè)備的能力更強(qiáng)。
該仿真平臺同樣可用于船舶電站、船舶輔機(jī)、機(jī)艙報警等系統(tǒng)的仿真,并通過CAN總線與主控站聯(lián)絡(luò)。它不光強(qiáng)化了單一工作站的功能,而且使整個DCS網(wǎng)絡(luò)演化為FCS網(wǎng)絡(luò),大大提高了系統(tǒng)的實時性。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)存儲器相關(guān)文章:存儲器原理
評論