新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 以ARM和DSP嵌入式系統(tǒng)為核心的實(shí)時仿真平臺的開發(fā)

以ARM和DSP嵌入式系統(tǒng)為核心的實(shí)時仿真平臺的開發(fā)

作者: 時間:2012-03-15 來源:網(wǎng)絡(luò) 收藏

引 言

本文引用地址:http://m.butianyuan.cn/article/149421.htm

一個大型的船舶輪機(jī)模擬器蘊(yùn)含著30多個全物理過程的數(shù)學(xué)模型,涉及千余個參變量,通常采用功能分散的DCS網(wǎng)絡(luò)來實(shí)現(xiàn)。即便如此,個別工作站由于模型復(fù)雜、任務(wù)繁重,難以滿足的要求。

例如,動力推進(jìn)是一個半實(shí)物在環(huán)的仿真,其中既有虛擬的動力裝置即仿真計算機(jī)上運(yùn)行的數(shù)學(xué)模型,又有真實(shí)的控制盤臺、物理顯示設(shè)備,是一種集控制和高速運(yùn)算功能于一體的典型。

早期成功的SMSC2000型輪機(jī)模擬器采用工控機(jī)作為仿真計算機(jī),所有數(shù)據(jù)的處理和輸入輸出的控制都經(jīng)過它的數(shù)據(jù)采集卡來完成。推進(jìn)系統(tǒng)仿真的精確度與實(shí)時性無法兩全。近期航運(yùn)仿真中心在開展多模式機(jī)艙仿真實(shí)驗(yàn)的同時,針對I/O點(diǎn)最多(200多個)、半實(shí)物環(huán)境最復(fù)雜的船舶推進(jìn)系統(tǒng)進(jìn)行了剖析,研制了微機(jī)的新穎仿真

船舶推進(jìn)系統(tǒng)仿真的選取

船舶推進(jìn)系統(tǒng)仿真需要有很強(qiáng)的控制接口(輸入輸出)能力和高速的數(shù)字運(yùn)算處理能力。TI公司的C2000系列率先為電機(jī)的實(shí)時控制開拓了應(yīng)用領(lǐng)域,但并不適合于具有眾多I/O的復(fù)雜機(jī)電模型的仿真。由于市場上無現(xiàn)成的仿真裝置可購,只能針對機(jī)艙模擬器的對象自行探索。實(shí)際上,當(dāng)代芯片既提供了高速的數(shù)字信號處理器(),也提供了有強(qiáng)大控制功能的微控制器(MCU)。采用MCU+架構(gòu),就可兼?zhèn)鋬烧叩拈L處。

基于核的32位RISC微控制器在監(jiān)視控制、人機(jī)接口方面的功能非常完善,數(shù)字信號處理器(DSP)對各種數(shù)字信號或數(shù)據(jù)處理的能力十分強(qiáng)大。因此,許多實(shí)時應(yīng)用系統(tǒng)采用+DSP的結(jié)構(gòu)組合來充分發(fā)揮兩種處理器的優(yōu)勢,從每個處理器中獲得最大益處,以獲得更高性能。其中,作為主處理器,負(fù)責(zé)任務(wù)管理、輸入輸出接口、對外部設(shè)備的控制,甚至運(yùn)行嵌入式操作系統(tǒng);而DSP作為從處理器,僅僅負(fù)責(zé)快速的數(shù)據(jù)運(yùn)算處理。兩個處理器核之間通過共用一部分存儲器等方式進(jìn)行通信。

以ARM+DSP為的嵌入式系統(tǒng)具有很強(qiáng)的控制接口能力和高速數(shù)字處理能力,用來代替以工控機(jī)為的仿真系統(tǒng),可以達(dá)到實(shí)時運(yùn)行精確的船舶推進(jìn)系統(tǒng)的數(shù)學(xué)模型、實(shí)時控制外圍物理設(shè)備的目的,從而實(shí)現(xiàn)精確實(shí)時的半物理實(shí)物在環(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部分主要運(yùn)行船舶推進(jìn)系統(tǒng)的數(shù)學(xué)模型,并將仿真所得的轉(zhuǎn)速和轉(zhuǎn)矩的數(shù)據(jù)傳遞給C2000DSP部分的電機(jī)控制單元,以在電動機(jī)上表達(dá)出推進(jìn)系統(tǒng)的實(shí)時狀態(tài),即用電動機(jī)來模擬推進(jìn)主機(jī)。

C2000DSP部分的功能是接收C5000DSP部分?jǐn)?shù)學(xué)模型的運(yùn)算結(jié)果,按照該結(jié)果控制電動機(jī)達(dá)到仿真的轉(zhuǎn)速和轉(zhuǎn)矩,最終實(shí)現(xiàn)用電動機(jī)來模擬推進(jìn)主機(jī)。這3個部分按一定的方式組合在一起,構(gòu)成一個整體,共同完成推進(jìn)系統(tǒng)仿真的任務(wù)。其基本組織結(jié)構(gòu)如圖1所示。

圖1 ARM+DSP嵌入式微機(jī)系統(tǒng)的基本組成

實(shí)際上,從可靠性角度考慮,對于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所示。

ARM和C5000DSP的硬件結(jié)構(gòu)

圖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)實(shí)際上是一個電機(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)平臺在硬件方面有以下一些特點(diǎn)。

(1)從處理器的速度上看,ARM最大為47.5MHz,C5000DSP最大為100MHz,C2000DSP最大為40MHz,屬于較高速處理器。

C2000DSP部分的硬件結(jié)構(gòu)

圖3 C2000DSP部分的硬件結(jié)構(gòu)

(2)FLASH的容量很大。在ARM和C5000DSP(即TMS320VC5470)部分有8MB的外部FLASH;在C2000DSP(TMS320LF2407)部分有32KW的在片F(xiàn)LASH,而且還可以進(jìn)行外擴(kuò)。這樣,該系統(tǒng)就可以固化大量的程序代碼,適合大型的程序。

(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中讀取程序,以保證程序快速運(yùn)行。

(4)系統(tǒng)的I/O端口資源豐富。既有數(shù)字量的輸入輸出,也有模擬量的輸入輸出;既提供了串行方式,也提供了并行方式。為數(shù)據(jù)采集、控制指令輸出、與上位機(jī)通信等奠定了硬
件基礎(chǔ)。

(5)C2000DSP的處理器TMS320LF2407是專用來進(jìn)行電機(jī)控制的芯片,用來產(chǎn)生PWM信號和捕獲轉(zhuǎn)速反饋信號很容易,而且運(yùn)算速度快,可以實(shí)現(xiàn)對電機(jī)的各種高效復(fù)雜的控制。

(6)各部分間需要實(shí)時交換數(shù)據(jù),其硬件上都采用了共享存儲器的方式(ARM與C5000DSP之間的ARMPortInterface,簡稱API,C5000DSP與C2000DSP之間的FIFO)。這樣,通信速度很快,從硬件上滿足了實(shí)時要求。

(7)因?yàn)槠骷?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)的控制中心,其運(yùn)行的主要是系統(tǒng)軟件,包括自舉加載程序、指令響應(yīng)程序、鍵盤掃描程序、LCD顯示驅(qū)動程序、A/D與D/A轉(zhuǎn)換控制程序、直接數(shù)字量/開關(guān)量輸入輸出程序、CAN總線通信控制程序及與C5000DSP部分進(jìn)行內(nèi)部實(shí)時數(shù)據(jù)交換的控制程序。

自舉加載程序是上電或復(fù)位后首要實(shí)現(xiàn)的任務(wù)。它先對ARM的一些關(guān)鍵寄存器(如時鐘、中斷等)進(jìn)行初始化(即部分初始化);之后將ARM部分中要運(yùn)行的主程序和各個子程序(如指令響應(yīng)程序、鍵盤掃描、LCD顯示驅(qū)動等)從片外的非易失性存儲器FLASH中加載到片內(nèi)或片外的SRAM中,以增加程序的運(yùn)行速度;接著,開始負(fù)責(zé)對C5000DSP部分進(jìn)行復(fù)位初始化,再把數(shù)學(xué)模型程序通過API控制加載到C5000DSP中。這樣,自舉加載程序就完成了兩個部分的自舉加載工作。

自舉加載完成后,ARM部分開始執(zhí)行系統(tǒng)的全部初始化,然后便進(jìn)入系統(tǒng)的主程序(該主程序是一個無限循環(huán)等待程序),在主程序中再以中斷方式反復(fù)運(yùn)行鍵盤掃描、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所示。

ARM部分的軟件組織結(jié)構(gòu)

圖4 ARM部分的軟件組織結(jié)構(gòu)

C5000DSP部分的軟件

C5000DSP部分主要用來運(yùn)行推進(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ì)上是以實(shí)時循環(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所示。

C5000DSP部分的軟件組織結(jié)構(gòu)

圖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)矩。該部分實(shí)際上是獨(dú)立構(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)接口輸入實(shí)際轉(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所示。

C2000DSP部分的軟件組織結(jié)構(gòu)

圖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首先將仿真運(yùn)算的轉(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)相比在仿真的實(shí)時性和精確度方面具有很多優(yōu)勢。

(1)使用專用的DSP完成運(yùn)算,相比通用PC處理器80×86的精確度更高。

(2)ARM和DSP分工明確,各司其職,比單一的PC處理器完成仿真任務(wù)要快很多。SMSC2000在進(jìn)行主機(jī)仿真時,由于處理器、操作系統(tǒng)和VB工具的限制,每求解一次數(shù)學(xué)模型需要的時間在ms級,其采樣周期也在ms級以上;而以ARM+DSP為核心的嵌入式仿真平臺系統(tǒng),由于采用功能強(qiáng)大的雙核構(gòu)架,每求解一次數(shù)學(xué)模型需要的時間在μs級,采樣周期也相應(yīng)減小很多,即仿真的步長更小,大幅度提高了仿真的精確度。

(3)軟件系統(tǒng)是在裸機(jī)的基礎(chǔ)上建立的,實(shí)時性完全由開發(fā)人員決定,不受非實(shí)時操作系統(tǒng)限制。

結(jié)束語

針對船舶推進(jìn)系統(tǒng)研制的新穎ARM+DSP嵌入式仿真平臺揚(yáng)長了ARM與DSP兩種嵌入式處理器的特點(diǎn),集豐富的控制接口和高速運(yùn)算處理能力于一體。該仿真平臺系統(tǒng)結(jié)構(gòu)清晰,各部分專用功能強(qiáng)大,任務(wù)分配明確,相互之間都有通信交互。該系統(tǒng)存儲器容量大,各器件速度快,集成度高。軟件編程從系統(tǒng)和應(yīng)用的角度出發(fā),密切結(jié)合實(shí)際情況,軟件結(jié)構(gòu)適合嵌入式系統(tǒng)運(yùn)行。系統(tǒng)的軟硬件都有較大擴(kuò)展空間。用該仿真平臺代替?zhèn)鹘y(tǒng)的基于工控計算機(jī)的仿真模式真正達(dá)到了實(shí)時要求,其運(yùn)行的數(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)的實(shí)時性。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

存儲器相關(guān)文章:存儲器原理




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉