【論文-筆記】複雜電子系統標準化仿真平臺設計與實現

摘要

隨着電子科學技術研究的不斷深入,實體電子系統的搭建難度越來越高,尤其是對於雷達、通信等複雜電子對抗系統的構建,技術要求更爲嚴苛,一方面場外實際操作的難度較大,系統建成後實驗次數有限,另一方面,搭建戰場上覆雜的電磁環境不僅有很大的技術風險,也會給實際項目帶來巨大的經濟負擔,因此複雜電子仿真系統的設計和開發對電子元件性能評估、系統模擬測試有着重大意義。現今電子建模仿真技術雖已得到了飛速的發展,但也存在諸多問題:沒有規範化統一的系統框架,導致模型的複用性差,開發時存在大量的重複性工作;SystemVue,Simulink 等人機交互良好的可視化建模軟件只能進行仿真模擬卻不能生成可執行的工程代碼;手動的模型代碼的編寫不僅過程繁瑣而且工作效率低。

本文針對複雜電子建模仿真系統存在的問題,給出了可視化建模仿真集成開發平臺的設計與實現方法。**該平臺可通過拖拽操作新建模型,將模型信息及拓撲結構統一存儲,通過模型輸入輸出端口連線生成仿真場景,並通過運行仿真批處理文件自動生成工程代碼,得到仿真結果及波形繪製圖。**模型的設計時借鑑了面向對象的思想,從標準化、層次化、可複用的角度,採用 XML 標記語言並用五個關鍵字段對模型建立了統一、規範的描述。在此基礎之上應用了基於模型驅動的代碼生成技術,用戶可根據自身需求自定義模型並由系統自動生成 C++可執行代碼框架;在仿真邏輯控制設計時,採用了基於圖論的拓撲排序來決定模型串行仿真的先後順序,並從四個層面設計了仿真計算速率提升的方案:①以高效的基本線性代數操作庫作爲底層的矩陣運算支撐,②通過顯式添加 OpenMP 指令代碼進行多核並行計算加速,③對可視化仿真場景中多連通分量分配多線程進行並行仿真,④以消息通信接口 MPI 爲標準的多機並行來實現系統級的聯合仿真。

本電子仿真平臺具有良好的通用性和移植性,交互環境友好,將系統建模和代碼生成功能集成在一起,使操作更加簡潔高效。可視化建模仿真模塊現已投入項目的實際應用,運行穩定流暢,性能測試良好,給建模仿真工作提供了一定的便利,在未來也具有很大的應用價值。

關 鍵 詞:電子系統, 建模仿真, 標準化, XML, 並行計算

第一章 緒論

1.1 電子系統建模仿真背景與意義

當前的電子技術已經全面進入了數字化時代,發展速度空前,對功能完備性要求的增高導致系統構建的難度也越來越大,尤其是對於雷達、通信等複雜電子系統的構建,技術要求更爲嚴苛,一方面,搭建戰場上覆雜的電磁環境不僅有很大的技術風險,也會給實際項目帶來巨大的經濟負擔;另一方面場外實際操作的難度較大,系統建成後實驗次數有限,而硬件系統的實現需要反覆調試、修改才能成型,無限拉長了整個仿真週期,最後得不償失。計算機技術的飛速發展給電子仿真帶來了革命性的變革,用數學模型對器件的功能和特性進行模擬,計算機虛擬製造出環境,最後將複雜的計算過程交由程序來處理求解。系統建模仿真解決了真實模擬時成本大、風險高、不易於控制的問題,並且可以手動方便地對參數變量進行修改,不斷調整方案直到獲得滿意的結果,保證電路級仿真試驗的成功率,大大縮短了研發電子系統的所耗費的時間週期。

建模簡單來講即是對系統的抽象,系統有哪些特性,建立一個怎樣的數學或者物理模型才能合理地描述這個系統,用怎樣的方式如何表達出它的特性,都是建模時需要考慮的問題。而仿真恰好是一個相反的過程,它是一個將模型通過計算機硬件或
者軟件具象的過程,直觀的展現出模型所表達的含義。但建模和仿真並不是一個對立的存在,合理的模型可以做到更好的描述使仿真的過程更真實,而優秀的仿真會對模型實現最好的表達,它們是相輔相成的兩部分,最終的目的是對系統作出合理的性能評估和在實際應用設計規劃時提出指導性意見。

建模仿真技術是一門依附於計算機基礎的新興學科,尤其在設計結構複雜、數量龐大的電子系統時,計算機憑藉自身優良的計算能力、直觀的顯示效果展現出了卓越的優勢。近年來建模仿真技術的應用越來越廣泛,模型建立算法也日趨成熟完備,
但對仿真系統整體構建的研究還不夠深入,沒有一個標準化的建模規範和系統架構,導致每次新模型的開發都需要從最底層的模型重新做起,模型和代碼的複用率都很低,不僅浪費了大量的時間在重複的工作上面,也降低了模型間的互操作性,因此構建標準化、層次性、可移植的建模仿真系統的工作迫在眉睫。

1.2 相關技術發展現狀

1.2.1 電子系統概述

電子系統是指可以完成一個特定功能的完整的電子裝置,通常是由若干電子元器件或部件相互連接而成,宏觀的看是能夠獨立完成某些功能的電子設備的總和,這些電子單元在物理結構形式上可以是單獨存在的,也可以是多個功能模塊分離的,而在功能邏輯上往往具有層次的特點。

電子系統涉及範圍廣,功能模塊多,所以不可避免地會給系統的設計和管理帶來複雜性,因此只有對一個複雜的電子系統進行合理的功能結構層次劃分,纔能有效、成功地構建出模型系統。

電子系統從功能和結構上通常有自頂向下、自底向上、自頂向下爲主導結合自底向上三種設計方法。自頂向下強調從整體出發,根據原始設計需求按系統的功能和性能進行合理規劃,將龐大複雜的模塊獨立爲規模較小、功能模塊單一的子系統,並確立它們之間的相互聯繫,以此來減少模塊間的耦合。自底向上的設計和自頂向下剛好相反,設計者可從現有的可用的部件中選擇出最合適的來實現系統的某個特定功能,當沒有可以滿足需求的部件存在時,則用多個部件組合設計出子系統來滿足該功能。該方法繼承了面向對象可複用的思想,可以直接使用已經成熟的、經過驗證的子系統而無需重新設計,提高了效率,但也可能會讓設計人員受限於已有的元件,對系統整體的把握和宏觀理解不夠全面。自頂向下爲主導結合自底向上的方法是對前兩種方法的結合,它不僅可以保證整體的系統化、結構的清晰性,又能充分利用現有成熟模塊,減少了設計的重複工作,提高了設計生產率,因此也是目前最普遍採用的一種設計方法。

1.2.2 建模仿真技術發展現狀

在仿真技術的發展歷程中,先後經歷了硬件建模仿真與軟件建模仿真兩個過程。硬件仿真起源比較早,它是先用傳統的仿真器件進行系統搭建構成系統然後進行模擬仿真,不具備擴展性和維護性,而軟件建模仿真是以數學建立理論模型爲基礎然後在計算機系統上進行軟件的仿真模擬,可以實現高複雜,可擴展,易維護,易修改的建模系統。

在軟件仿真系統中,人們在充分研究數學建模算法的同時,也引入了許多標準化的系統建模思想,使得軟件仿真系統更易於構建。軟件仿真的優越性使得硬件仿真逐步被軟件仿真所取代。

早期電子建模仿真系統的設計借鑑了計算機軟件面向過程的設計思想,它對系統的整體功能進行比較明確的劃分,組織成模塊的集合,模塊內實現某特定的功能,聚合性高,模塊間通過數據的傳輸或消息進行交互,耦合性低。過程化的構建思想一般來說比較容易理解,也很好掌握,但存在自身的缺陷:自頂向下的方案要求在最初設計時就對系統有全面宏觀的認識,對設計者的要求高,另一方面,系統的需求在項目推進時總是在不斷變化,很難從一開始就有一個固定的框架,尤其在設計高度複雜、需求多變的建模系統時面向過程的軟件設計方法就會暴露更多的弊端。

二十世紀八十年代到九十年代,面向對象的建模思想在計算機領域興起,也從另一個角度對電子仿真系統的建模過程進行了闡述。和麪向過程的思想相反,它是一種自底向上、從局部到系統的建模過程,它從獨立的事物出發抽取其特性來對一類事
物進行總結形成特定的對象,面向對象的電子建模系統強調從模型出發,提供標準化、層次化、可視化的系統模型,大大提高了模型的可複用性和可擴展性。

SystemVue 是 ELANIX 公司於 1995 年推出的一套用於通信、雷達與電子電路系統等領域的仿真分析工具,SystemVue 最大的特點就是可視化,它提供了豐富的模型資源和強大的分析功能,它的可視化開放體系結構讓用戶不需要編寫複雜的代碼,簡化了用戶的操作,降低了系統編寫人員的要求與負擔。SystemVue 通過提供圖符的方式,可以讓系統編寫人員直接通過界面操作來完成系統的搭建與運行,極具便利性。SystemVue 主要提供了三類庫,main(主庫)包括了基本的加法器、乘法器和信號發生等基本模型;Optional(可選庫)提供了專業的模型庫,比如信號處理庫、邏輯庫等;Custom(自定義庫),也是特殊的可選庫,用戶可以根據自身需求擴展出附加的功能。它的缺點是隻完成模型的仿真工作並不能生成實際的數字信號處理程序,不能滿足在工程應用中對信號處理程序要求的高效性,而且缺乏靈活性,不能根據用戶及系統需求定製出具有針對性的模型系統。

現今電子建模中使用比較廣泛的就是 MATLAB 下的 Simulink 組件,它是一種基於數字信號的動態仿真、建模和分析包,支持線性、非線性、離散、連續各類系統仿真。和 MATLAB 語言不同,它提供了一種圖形可視化的建模方法,模型爲外界提供基本的輸入輸入、參數等信息,將內部實現封裝起來,用戶在使用時可以直接通過對模型的拖拽、連線和顯示的參數修改配置就可以對仿真場景進行搭建,使用戶可以將主要的精力放在系統的構建上,避免了傳統建模時進行大量的代碼編寫工作。同時它也爲用戶提供了一套完備的模型庫,從基本的信號產生到針對特定的專業模塊,支持動態的系統模型搭建,集成了綜合仿真分析平臺,即使是新手使用起來也比較方便直觀。Simulink 建模過程如下所示:(1) 從模型庫中找到所需建模組件並且通過複製操作添加到建模主窗口;(2)填寫並修改模型的接口及參數信息;(3)通過線段連接所需模型組件來得到更高級的系統模型。在功能模塊方面它提供了將模型系統組合封裝成子模型的功能,正是由於它以上的諸多特性使它廣泛應用於各種建模仿真系統,但它也存在和 SystemVue 一樣的一些缺點,所以在工程應用中無法達到廣泛的適用性。

電子建模仿真系統發展到今天已經有了比較好的技術積累,但同時也存在許多亟需解決的問題:基於 C++,Java 語言的建模系統雖然具有良好的通用性,方便工程應用開發的擴展,但現今並沒有成熟的軟件平臺,而且缺乏像 Simulink,SystemVue 之類的基於圖形可視化的人機操作界面;另一方面由於電子建模方面沒有統一的框架,軟件開發人員水平參差不齊、編程風格各異,導致開發的模型兼容性差,經常存在一個系統設計的模型拿到另一個系統就不能使用的情況,可複用性差,而且浪費了大量的時間在重複的代碼編寫工作上面。本文針對上述存在的問題,下面分別從標準化、可視化、高效率等方面對電子系統進行分析和設計。

1.3 本文結構

本文借鑑面向對象的設計思想並結合實際情況,從標準化、可複用、可視化等規範角度對複雜電子建模仿真系統框架進行合理設計與實現,提供了基於模型模板的代碼自動化生成技術,並對仿真控制過程中的邏輯順序控制及仿真速率提升問題進行研究並給出系統設計方案。在實現可視化建模平臺人機交互界面時採用了基於圖形圖像的 Qt 編程框架,模型數據及建模場景統一採用易於描述並且與模型契合的 XML 數據作爲標準格式。模型仿真邏輯控制採用基於圖論的拓撲排序決定仿真先後順序,爲提高計算速度提出了 BLAS、線程並行、多核單機並行、多機並行四層加速模型。

本文的主要結構如下:

  1. 第一章對電子系統建模仿真的研究背景及意義進行扼要描述,其次介紹了電子技術的概念及建模仿真技術的發展現狀,然後闡述了建模仿真系統存在的必要性以及進行標準化、可複用軟件系統開發的迫切性,最後描述了針對現今建模仿真系統存在的主要問題及本文後續展開的工作內容。
  2. 第二章從功能性及交互性兩方面對系統進行了需求分析,並介紹了本建模仿真平臺在設計實現時採用的一些關鍵技術。
  3. 第三章首先描述了本系統的結構框架設計,並且將系統按通用模型庫管理、可視化場景建模平臺、模型代碼自動生成、仿真結果反饋顯示器、仿真與評估管理、綜合管理六大模塊進行劃分,然後借鑑面向對象思想從標準化、層次化、複用化的角度來對模型系統進行了設計,以此來解決實際中存在的模型兼容性差、不可移植的問題。
  4. 第四章給出了系統的詳細設計與實現,首先給出了基於 XML 語言的模型標準數據描述格式以及子模型的具體封裝,介紹了 XML 解析方法及自定義場景拓撲描述的樹形數據結構以及主要的可視化編輯模塊的具體設計與實現;然後介紹了本系統中所使用的代碼生成技術的基本原理、具體的框架與流程;最後給出了仿真順序的控制以及後期仿真計算速率優化方案,並以複雜的偵察電子系統的測頻、測向、測角功能模塊爲例,對系統流程進行仿真演示及測試。

第二章 系統需求分析及關鍵技術

2.1 需求分析

電子系統建模仿真就是基於數學建模的基本原理,利用計算機模擬現實環境,進一步再現一個真實的硬件環境和電路場景,從而對元件性能、系統的可行性做出一定的分析與評估,對實際的硬件搭建和系統測試有着重要的參考價值。標準化的建模過程不僅具有一致性、模塊性、獨立性的特點,也有複用性高,通用性強的好處,在建模仿真過程中更加經濟、高效。本系統集成了場景建模、用戶自定義建模、模型代碼生成、仿真數據結果顯示等模塊,下面分別從系統的功能性需求和非功能性需求的角度作出分析。

2.1.1 功能性需求分析

本系統前臺主要是完成用戶交互、數據顯示等工作,其功能性需求主要有:
(1)可視化場景建模:提供可視化的圖形進行模型搭建,用戶可通過鼠標拖動、模型連線來構建場景,達到更直觀便捷的效果;提供場景的基本編輯操作,包括移動模型,刪除模型,複製和粘貼模型等;提供對當前可見範圍的擴大和縮小的顯示功能;可通過對模型參數進行設置與修改滿足不同的參數要求;支持子模型的構建和展開;可編譯、運行工程文件,並且可將工程文件運行結果與錯誤狀態信息顯示返回給用戶。
(2)用戶自定義模型:用戶可根據自己的需求定義模型,並設置基本的輸入、輸出、參數等信息;計算機根據創建的模型自動生成工程代碼框架,由用戶手動填寫核心建模代碼,減少工作的重複性和用戶的操作負擔。
(3)仿真結果顯示:通過 PPI、AR 顯示器實時展現當前場景的狀態。
(4)邏輯控制模塊:提供邏輯控制流程監控功能,顯示當前的仿真進度和實時狀態。(5)結果評估與分析模塊:用來存儲仿真結果並對仿真數據進行比對與分析,並得到仿真評估結果。

系統後臺模塊需要實現對模型的抽象、操作、管理以及對模型數據生成、處理等,主要功能包括:
(1)模型庫的管理:根據功能對系統的各類模型進行合理劃分並按類入庫,提供基本模型庫及庫上的添加、刪除、移動等功能,並支持用戶利用基本模型組建可複用的新模型,用戶可根據需求建立自定義模型庫,方便下次直接使用。
(2)層次化設計:按照模塊粒度和功能類別將系統劃分爲若干層,同層次模塊之間相互獨立,相鄰的高層模塊可複用低層模塊,組織結構清晰且容易維護。
(3)代碼生成:系統需要對系統自帶基本模型與用戶自建模型自動化生成代碼,減輕用戶負擔。

2.1.2 非功能性需求分析

系統設計的完整、規範是軟件工程的核心,在此基礎上快捷的操作、友好的交互等非功能性的原則在需求分析中也是必須要考慮的部分,在本系統中主要體現在如下
幾個方面:
(1)便捷合理的用戶操作:對於合理的用戶操作如粘貼、放大等編輯操作的設計要合理並且儘量便捷易操作,同時符合用戶的使用習慣;
(2)交互界面美觀且操作友好:從操作的角度講,各個顯示窗口的放置應該參考主流的仿真軟件,方便用戶上手使用,從美觀的角度,窗口大小的設置、圖標的放置、顏色的搭配都需要合理選擇,保證外觀大方整潔,不會帶來視覺的不適感;
(3)健壯性:軟件的使用者專業水平層次不齊,當存在非法的輸入、不合理的操作時應提供一定的反饋信息,保證不
會造成數據的丟失或者系統的崩潰。
(4)兼容性:建模系統應該具有平臺無關特性,不依賴特定的操作系統並具有可移植性。

2.2 關鍵技術

有別於現有的電子建模仿真系統,本系統用可視化的模型編輯替代了傳統的手工代碼編程,用戶在建模過程中只需要考慮模型的構建而不需要過多的關注模型連接和接口的代碼實現,使用起來更加便捷、高效。

從宏觀的角度看,系統設計可以大致分爲前端和後臺兩個層面,相互間的數據傳遞統一用一張完整的 XML 文件,如圖 2.3 所示。前端主要負責如何將模型描述爲XML 文件,後臺則剛好相反,需要把相應的 XML 文件翻譯爲可以運行的實際代碼。
在這裏插入圖片描述

2.2.1 XML 文件語法結構及介紹

XML 又稱爲可標記擴展語言,全名爲 ExtensibleMarkup Language。XML 廣泛應用於互聯網領域內數據的表示、傳輸與存儲,它的語言優點是語法簡潔明瞭,表示能力強又易於理解。

XML 文檔主要包括頭部信息與主體信息,頭部信息又包括版本聲明與編碼格式,主體信息主要用來描述各種元素以及元素所具有的屬性,並且只有一個文件根節點。在 XML 文件中一個元素表示一個實體,XML 採用標籤來標記一個元素,標籤又分爲起始標籤和結束標籤,並且不同的一個元素可以通過標籤來包含其他的元素,而屬性用來描述元素本身的特點。

主流的解析方法有兩種:Dom(Document Object Model)和 Sax(SimpleAPIfor Xml)。Dom 表示文檔對象模型,顧名思義就是將 XML 文件中的元素映射爲文檔節點對象,對文檔節點對象的處理即爲對 XML 文件中元素的處理。Dom 在進行解析
時需要將 XML 文件一次性完整的裝入內存,通過節點與節點間的關係來進行解析工作,方便編程,但是佔用空間過大。Sax 有別於 Dom 的是它是事件驅動型的,類似於流式的處理,即僅當檢測到一個特定的事件(也就是標籤)後然後才執行相應的回調函數。它的解析是從剛開始就進行的,而不是一次處理所有數據,所以不會像 Dom一樣一次消耗巨大的內存,對於處理較大的 XML 文檔來說是一個很大的優點。

2.2.2 標準化建模

本系統採用面向對象方法來對建模系統進行了設計與實現:通過建立基本模型庫及模型組件間的操作實現了可視化建模;將功能相同的模型作爲一個“類”來看待,通過建立“類”的實例來添加模型;封裝子模型並在後期建模中直接使用,達到較高的重
用性。在除了模型設計標準化,在建模過程中也要從以下幾個角度考慮:
(1)模型分類:根據模型的功能和結構完整性,將模型分類研究入庫,方便管理且易於使用;
(2)共有屬性提取:可以先建立基礎類,在此之上擴展其它類,如基本的輸入輸出;
(3)結構和參數分離:將模型的結構框架和參數進行分離,方便用不同參數初始化同一模型;
(4)對象模型模板化:即爲每個模型類建立一個模板,用戶在使用時直接調用模板修改參數即可,模型內部實現封裝對用戶不可見。

2.2.3 仿真並行計算

電子建模仿真系統結構複雜、信息量多導致計算規模巨大,所以運行速度成爲了電子系統亟需解決的主要問題之一。隨着近代計算機技術的不斷進步,並行計算技術的提出和應用爲仿真計算加速帶來了新的革命。並行計算(ParallelComputing)是多核多主機時代的新的數據處理方式,與串行計算不同,我們可以將一個任務劃分成多個部分,利用現代計算機上的多核或者同時利用多臺計算機來並行處理這個任務的多個部分,進而提高計算效率。從微觀的角度講它是一次執行多條指令的算法,從宏觀的角度講它將初始問題分解爲若干子任務,各個部分運行在獨立的處理機上以達到並行的效果。

與傳統串行計算相區別,並行計算有自己獨特的特點:
(1)將工作分解成多個離散部分,有助於同時解決;
(2)隨時並及時的執行多條指令;
(3)因爲可以同時計算一個任務的多個部分,所以採用多個處理器對一個任務並行處理的速度要遠快於單個處理器的處理速度。正是並行計算的上述特點使它不僅在運算速度上有了很大的提升,解決了更多複雜的問題,同時也有效的利用了計算資源,克服了單個硬件運行速率上限。現今的並行計算主要分爲單指令多數據(SIMD),多指令多數據(MIMD),單程序多數據(SPMD)和 MPMD(多程序多數據)。

本建模仿真系統的計算速度自底向上主要從以下三個層面進行優化:
(1)底層矩陣運算加速採用高性能多核BLAS(BasicLinear AlgebraSubprograms)庫;
(2)利用建模場景拓撲圖連通信息將串行結構轉化爲並行結構,採用多線程並行加速;
(3)本地仿真系統採用 OpenMP 編程框架以共享內存的方式對任務進行並行處理;
(4)多機之間任務的分解、計算資源的分配、結果的回收、消息的傳遞採用 MPI 並行編程框架來實現。

2.2.4 Qt 開發框架

Qt 是一套通用的可移植的 C++圖形圖像用戶界面編程框架,誕生於 1991 年曆經多個版本依舊是業界最流行跨平臺的圖形界面編程框架。

下面簡單介紹在開發過程中用到的 Qt 相關的幾個關鍵技術:
(1)信號槽機制:信號槽和信號是 Qt 中實現圖形界面編程的基本機制,彌補了C++語言中沒有回調功能的缺點。Qt 通過信號和槽可以將兩個不相干的對象通過信號綁定在一起,並且進行通信。一個對象可以通過槽綁定到某個信號,當另外一個對象發出該信號之後,與該信號綁定的對象就會執行相應的信號處理函數。

(2)佈局管理器:佈局管理器是 Qt 用來實現對不同組件之間 Layout 的方式。最原始的絕對位置佈局是通過對窗體內的每個子窗口設置固定的位置和大小來實現的,所以其缺點顯而易見:無法改變窗口的大小,在佈局時人工計算複雜枯燥且容易出錯,而且不利於後期的修改維護,格式和平臺的變化也會引起窗口部件的失調。後來的人工佈局可以讓子窗口大小自適應外部窗體大小,雖然從一定程度上優化了絕對佈局的問題但仍需要程序員手動計算位置。佈局管理器的作用就是會對其內部包含的部件進行自動管理,當需要調整大小或者位置的時,佈局管理器會充分考慮其最大最小尺寸,並且會自動調整佈局來適應窗口大小的調整、字體的改變。
(3)GVF 框架:圖形視圖框架(GraphicsViewFramework)是基於元素(item)的 MV 架構的框架,它將每一個組件都看作是一個獨立的元素。有別於 OpenGL 面向過程的繪製方式,GVF 框架首先創建一個場景(scene),然後創建各個元素(item),再使用 add 函數,將元素逐個添加到場景中,最後通過視圖(view)進行觀察。GVF對圖形對象的處理更加符合面向對象的設計要求,而且當場景中存在大量元素時,管理起來更加容易,同時一個很複雜的圖形也可以很方便的複用。

2.3 本章小結

本章在前一節研究了課題背景和發展狀況的基礎上,從功能性和非功能性兩個角度對本電子建模仿真系統進行了需求分析,並介紹了本系統設計實現時用到的幾個關鍵技術,主要爲模型存儲時採用的 XML 標準規範、標準化建模思想、仿真並行計算
的概念,以及採用 Qt 編程框架實現可視化仿真平臺的實現原理。

第三章 系統框架與標準化模型系統設計

3.1 系統設計

3.1.1 系統結構設計

用戶可通過模型自定義或者可視化建模平臺實現對場景的搭建,配置好相關參數信息後統一存爲標準的 XML 格式,這樣方便系統間的移植和網絡傳輸。電子建模庫存放大量已經定製好的基本的電子模型的模板,依據模板進行實例化並利用 XML 中的數據信息將參數重新設置就可完成建模的工作。系統本身會將不同的仿真數據傳遞給對應的模塊,仿真控制模塊負責對仿真流程和狀態的監控,顯示終端會實時反饋探測情況,而仿真過程中的關鍵性的數據則會被用來進行參數計算,並將重要結果放回數據庫。
在這裏插入圖片描述
功能模塊劃分:
(1)通用基本模型庫,提供通用的基本模型及模型的分類管理,可以手動添加、刪除、移動模型,也可自定義模型並加入到庫中,統一用 XML表格來表示;
(2)可視化場景建模平臺,可以利用基本模型搭建所需的仿真場景,也可以將已經搭建好的模型場景封裝爲子模型,並添加到模型庫中,方便用戶以後直接使用;
(3)模型代碼生成,用戶搭建好仿真場景並檢測各個模塊有效性和場景連接正確性後,生成相應的代碼及動態鏈接庫等;
(4)仿真結果反饋和顯示器,包括 AR 顯示器和相關仿真結果顯示平臺,提供直觀的仿真結果表示;
(5)仿真與評估運行管理模塊,顯示仿真邏輯順序及運行進度,完成仿真過程運行管控和系統性能評估運行管理功能;
(6)綜合管理模塊,用來完成模型仿真數據存儲與處理、模型庫管理、實現用戶操作與日誌存儲等功能。
在這裏插入圖片描述
在圖中系統的各個模塊相互獨立,卻又存在信息、數據的相互傳遞。首先用戶可以利用系統提供的通用基本模型在可視化編輯平臺搭建仿真場景,也可以根據自己的需求自定義模型、封裝子模型;其次確保仿真場景各個模型以及連接關係有效性後將其保存爲項目文件,在本系統中底層統一用 XML 文件表示;然後後臺拿到 XML 工程文件後進行解析並自動生成模型代碼,由仿真與評估運行管理模塊實現仿真過程的管控,顯示器輸出仿真結果;最後由綜合管理模塊來完成對建模數據的處理,傳送及存儲等功能。

3.1.2 人機交互界面設計

友好、快捷的交互界面設計不僅會給用戶帶來視覺的美感、使用的舒適,更重要的是提高了使用軟件的效率。
在這裏插入圖片描述
參考了 VS,Simulink 等主流集成開發軟件,採用了相似的窗體佈局方式:與用戶交互最頻繁的可視化編輯窗口位於平臺
的中心區域,左側放置了模型管理器、工程文件管理器相關的管理控件,右側窗體提供模型屬性顯示,底部放置了編譯及運行輸出結果信息。

3.2 模型系統標準化設計

面向對象建模仿真所具有的封裝性特點使得各個開發組件之間具有模塊性,並且相互之間耦合性低,增強了建模仿真系統的靈活性與可擴展性。

3.2.1 標準化設計

模型的標準化設計可以很好的解決模型結構複雜度各異,設計人員水平參差不齊,很難做到體系結構的規範化這一問題,所謂標準化即是在模型設計、模塊劃分時,建立的一套規範規則,其中包括對模型的統一化標準描述,規定接口的互操作性,代碼框架的標準化,甚至編程風格的約束。仿真模型數量龐大,功能各異,採用一種怎樣的格式對所有的仿真模型進行統一
的描述,這是標準化首先需要解決的問題
。全面描述一個模型需要模型名、模型類、輸入輸出數據、參數屬性等各種信息但忽略模型內部功能實現機理,僅從模型外部接口着眼,則所有類型的模型均需要用五個字段進行描述:**基本信息、輸入信息、輸出信息、參數信息、內部連線信息。**其中基本信息描述該模型所述模型類、模型名、創建日期等最基本的模型信息,輸入信息描述該模型各個輸入接口及接口上的數據類型、輸入值等,輸出信息描述該模型各個輸出接口及接口上的數據類型、輸入值等,參數信息描述改模型各項參數及參數上的屬性數據,連線信息主要針對基本模型封裝而成的非原子的子系統模型,使用該項可以詳細記錄其內部基本模型的拓撲結構。

3.2.2 層次化設計

層次化是指在設計系統時按照功能模塊將系統劃分爲若干個層次,劃分的原則是每層都有明確的功能特性和相對獨立的結構,而且還要有簡單、統一的接口便於模塊間的連接。分層設計的目標是設計高內聚、低耦合的系統,高內聚是指模塊化程度高一個模塊只實現一個功能實現功能內聚,低耦合是指模塊之間沒有功能上的重疊且相互間作用少,僅存在數據層面的聯繫。
在這裏插入圖片描述

本節從層次化的設計角度出發,從底層基本模型到高級模型實現逐層的包含調用,模型粒度由細到粗。

  • 基本支撐層:基本支撐層作爲整個電子建模仿真的最底層,提供了系統主要的矩陣型運算數據接口——矩陣的操作庫,和系統主要數據驅動格式——XML 的解析功能。爲了達到良好的兼容性和移植性,矩陣操作庫採用 C 語言進行實現,克服了 matlab 不易擴展、不靈活的使用缺點,同時我們採用面向對象的設計思想對矩陣求逆、矩陣相乘等基本操作進行了封裝,方便上層模型的調用。考慮到整個系統的基本模型、子模型均採用 XML 規範來描述的設計,系統支撐層也提供了XML 的操作庫,其中包括 XML 解析操作,以及對相應的文件內容進行的存儲和修改。
  • 基本模型層:提供了建模仿真系統中的基本數字信號處理模型,它是系統模型庫中最基本也是最原始的模型。通過研究現有的電子通信理論知識並結合自身需求,本系統設計了一系列功能全面、覆蓋廣泛的基本模型組件,它是原子的不可再分
    的,是模型庫的最小的基本單元。比如基本的信號發生器模型、線性放大器模型、混頻器模型等等。我們可以通過基本模型層組件的相互組合構建出具有各種功能子模型。
  • 子系統層:利用下層多個基本模型組合而成的高層模型,具有可再分性,例如由信號發生器、混頻器等封裝成的發射機模型,由變頻器、限幅放大等封裝成的接收機模型。
  • 系統組件層:系統組件層是由若干特定子系統層模型搭建而成的一套最高級的完整系統組件,如在圖 3.7 的偵察系統模型主要由接收機、偵收天線和信號處理終端等子系統組成。
  • 應用層:是整個系統的最頂層,主要負責仿真數據結果展示,針對不同功能的電子系統可根據需求設計不同的應用程序,如在圖 3.7 的通信電子系統涵蓋到的 PPI顯示器、AR 顯示器、地圖仿真等應用軟件,它們提供用戶交互模塊,如參數修改、數據評估。本層中的數據通信主要通過內存共享、消息傳遞等方法實現。

3.2.3 複用化設計

複用化是指在構建結構時可以把之前已經構建好的、經過測試驗證的模型簡單修改後,無需針對平臺重新開發,直接加以利用的體系結構。本系統設計了一套數目龐大、功能完備的基本模型模板,在實際使用時可以通過拖拽到可視化編輯區進行實例化,用戶只需要簡單的修改參數即可反覆使用。

除了提供基本模型模板庫外,本系統還支持嵌套生成子模型,子模型的內部包含了多個基本模型以及它們的連接關係,但通過封裝後對外僅提供模型的輸入輸出接口而屏蔽了其內部的構造和實現。

3.2.4 可視化設計

電子系統的建模仿真過程是一個複雜、繁瑣的過程,可視化系統建模仿真方法時以層次化爲原則,利用界面鼠標拖拽、模型連線來完成這個系統的搭建。可視化的原則就是爲用戶提供友好方便的交互,它操作簡單,容易理解且便於上手,同時具有
更直觀、更人性化的理念爲用戶提供數據信息和展示的特點。

可視化的仿真系統將每個模型用一個具體的圖符來表示,然後用戶通過圖符輸入輸出接口的連線,完成仿真場景的搭建工作。傳統的手動修改模型的配置數據繁瑣、容易出錯,而且使用起來也很不方便,對模型管理、數據回放的功能也不夠直觀。可視化的仿真允許用戶可以直接對圖符進行點擊、拖動、修改參數操作就可以快速完成建模的工作,這樣可以將設計的重心放在模型的組建上面而不必過分關注其功能實現,模型間的數據傳遞只需要簡單的連線就可以表示,可視化的設計降低了建模過程的難度,同時也降低了對操作人員的能力需求,提升了設計人員的開發效率。

3.3 本章小結

系統的框架結構設計,將系統按通用模型庫管理、可視化場景建模平臺、模型代碼自動生成、仿真結果反饋顯示器、仿真與評估管理、綜合管理六大模塊進行劃分。針對實際建模仿真中存在的衆多問題,從標準化、層次化、複用化、可視化四個角度對模型進行設計,提高模型系統的工作效率和後期擴展性。

第四章 系統詳細設計與實現

本系統爲用戶提供了數量龐大、功能完備的基本信號處理模型庫,用戶可以根據實際系統需求利用基本模型來搭建更高級的子模型系統對象,並依照模板對對象模型進行轉換。在這裏所有的模型均採用可擴展標記語言 XML 標準來進行模型描述,後臺對模型描述文件進行 XML 解析後自動生成 C++代碼和目標代碼,接入通信數據等進行鏈接就可以生成仿真進程並顯示輸出仿真運行結果。
在這裏插入圖片描述

4.1 模型 XML 標準化描述

本建模仿真平臺採用 XML 標記語言來對模型進行統一、規範的描述,從而達到模型的標準化設計。屬性是模型的重要標籤,只有通過某些屬性共同的聯合、作用才能完成模型特有的功能,換句話說撇開屬性不談的模型也是完全沒有意義的。XML
語言本身具有定義數據並且提供描述數據屬性、數據類型的能力,同時 XML 語言作爲一種獨立的標準完全獨立於操作系統與操作平臺,便於軟件的可移植性。下面我們將給出模型的 XML 格式以及具體的實現。
在這裏插入圖片描述
爲了實現模型設計和操作的標準化,如圖 4.2 所示主要從五個方面來用 XML 表描述一個基本的模型,每個元素命名時均以“CLS”打頭。

除了在模型設計時考慮標準化的問題,模型和基本操作庫函數編程也遵循了統一的命名規則。基本模型模板命名時以 mw 打頭,當用基本模型搭建子模型時,則默認命名是以 rd 打頭,搭建更高層的系統層時命名以 xd 打頭。而用於 XML 解析操作的
一系列函數命名統一使用”xml”作爲前綴。命名的規範性和良好的編程風格有利於對模型的分類和管理,給後期代碼的使用和維護也帶來了便利性。

4.2 模型嵌套與封裝

爲了模型系統後期的通用性和擴展性,除了對單個模型進行了上一章所示的標準化定義和描述,本仿真平臺也提供了多個模型嵌套封裝進而生成子模型的功能。一個複雜模型可能包含了許多模型,但一些模型共同組合可以完成某個特定的功能,爲了方便用戶下次直接使用這個模塊,提高工作效率,可以將這些模型封裝成一個子模型,

4.3 XML 解析及樹形數據結構設計

在這裏插入圖片描述

4.4 可視化編輯平臺模塊的設計與實現

可視化編輯平臺是本系統集成最多、設計難度最大的功能性模塊,也是用戶進行模型搭建、參數交互的最主要平臺,用戶可以利用它提供的可視化的圖形模型來構建仿真場景,通過自主的連線方式定義模型輸入輸出接口間的連接關係,編譯運行後就可以自動生成代碼和可執行文件,這樣不僅降低了用戶的使用難度,使表達更直觀,而且爲建模仿真提供了統一、標準化的框架,免去了編寫大量重複、簡單代碼的工作,也利於進行後期的擴展和維護。

4.4.1 可視化模塊架構設計與實現

系統可視化模塊的設計採用了 Qt 的 GVF 圖形視圖框架,它是一個基於元素的MV 結構的框架,可以管理大量 2D 圖形並且與它們交互,底層使用 BSP 樹來提供對元素的快速查找,將每個仿真模型結構看作獨立的元素(Item),將當前可見窗口
看作視圖(View),整個的仿真圖看作場景(View),不僅可以滿足本系統對可視化的設計需求,同時也符合面向對象的設計準則,對於有大量模型存在的視圖管理也方便了許多。

  • QGraphicsScene:是 GVF 框架中所有 Item 的存放容器,負責場景中所有 2D 圖形的管理,配合 QGraphicsItem 類可以通過 add 函數將各個 Item 放入場景,同時它提供了方便的接口函數可以高效的定位到具體的 Item,快速檢測到 Item 間的相
    交、碰撞以及事件的處理和傳播。
  • QGraphicsView:和 QGraphicsScene 配合使用,是 QGraphicsScene 的一個可縮放的視圖窗口,可以看到 scene 的整個場景或者局部,一個場景可以對應多個視圖,但一個視圖只能屬於一個場景。
  • QGraphicsItem:QGraphicsScene 中最基本的圖形類,GVF 提供了一些基本的、典型的圖元形狀,如直線、矩形和圓形等,支持基本的鼠標懸停、按下、釋放、雙擊、拖動、滾輪事件、捕獲焦點、鍵盤事件,除此之外還有圖元的包絡、碰撞檢
    測、繪製重載以及和場景、視圖的座標轉換。
  • GraphWidget:繼承於 QGraphicsView 類,是可視化編輯區的實現類,主要負責可視化編輯區中的模型展示和管理,記錄了當前仿真模型樹結構的根節點,模型XML 文件的存放路徑,指向撤銷重做棧的指針以及鼠標在當前場景中的狀態標誌,同時對鼠標的按下、釋放、拖動和滾輪事件進程了重定義,以及根據 XML 文件對場景構建和管理的函數接口。
  • Edge:繼承於 QGraphicsItem 類,用來實現一條邊的圖形元素,也是模型間連線的一部分,主要記錄了邊的長度、方向,左右連接點的狀態,指向左右連接邊的指針等,同時也定義了對邊的長度、方向、位置調整的成員函數。
  • SimpleNode:繼承於 QGraphicsItem 類,描述可視化模型外觀的基本信息,如模型的長、寬,上下左右包絡邊界值,文字信息以及移動狀態標誌等。爲了方便後期對模型類型的擴展,將模型輸入輸出端口數目操作函數、模型上的鼠標操作函數均設置爲虛函數,這樣統一的接口可以方便後續編碼和管理。
  • BasicOperation:描述可視化編輯上操作的基本抽象類,定義了常見的複製、粘貼、刪除、剪切、撤銷和重做等基本的編輯操作,需要具備編輯功能的圖形元素都需要繼承本類。模型的基本操作屬於獨立功能,所以單獨構建一個類來對操作進行描述和管理可以使類結構更加清晰、易於維護。
  • SimpleBasicOperationNode:避免多重繼承二義性而構建的類,SimpleNode 和BasicOperation 類是模型的基本屬性,其它各種類型模型都需要繼承這兩個類,如果直接多重繼承不僅會導致類結構的混亂,而且在模型類型轉換時也會造成很多不便。
  • LineProperty:繼承於 BasicOperation 類,用來描述模型間連線信息,LineProperty是在該條連接線上 Edge 的集合,線兩邊連接模型節點。爲了方便檢索,該類除了記錄模型的名字、文字顯示等基本信息,還記錄了在連接線上的第一條 Edge 和
    最後一條 Edge,以及連接線兩端的模型節點的指針。
  • ModelNode:繼承於 SimpleBasicOperationNode 類,描述可視化編輯區中的基本模型,也是最常見最普遍的模型類型。該類定義了模型的輸入輸出的端口數目、各端口名字和端口連線指針鏈表;當模型爲子模型,還需記錄下子模型展開標籤頁的指針和信息。
  • FolderNode:繼承於 SimpleBasicOperationNode 類,模擬模型存放的文件夾節點,是一種特殊的模型類型,它是爲了方便對模型分類管理而自定義的模型文件類,並且支持模型拖動入庫操作以及文件夾的嵌套功能,主要存放了模型樹結構和文件夾展開標籤頁的鏈接信息。
  • EndsNode:繼承於 ModelNode 類,描述輸入輸出兩種特殊的基本模型,對於輸入模型只存在一個輸出端,而對於輸出模型只存在一個輸入端。

4.4.2 模型編輯操作設計與實現

模型可視化涉及了很多基本的編輯操作,主要有刪除、剪切、複製、粘貼、撤銷和重做。考慮到各種編輯操作的全局性和多態性,所以需要在 BasicOperation 裏定義靜態型的成員變量來模擬剪切板和撤銷重做棧,虛函數爲各種類型模型的編輯操作提供統一接口。

  • 剪切板:用一個鏈表存放各個圖元的編輯操作來模擬剪切板的功能,對鏈表統一的操作如清理剪切板、複製到剪切板、剪切到剪切板等定義爲類成員,具體的複製、剪切等操作設置爲虛函數留給派生的各類模型自行擴展。
  • 撤銷重做棧:採用 Qt 提供的 QUndoStack 模擬撤銷重做棧,有撤銷重做需求的各個操作需繼承基本的 QUndoCommand 命令並重寫 undo 和 redo 函數即可實現。

4.4.3 模型視圖架構實現

模型視圖框架將底層的數據(模型)和上層的用戶顯示(視圖)分離開來,將表現用戶數據的模型類和 GUI 視圖代碼進行清晰的劃分,不僅減少了管理的複雜性,而且使相同數據在不同視圖下保持一致性成爲可能。

在系統實現時,考慮到模型參數信息、輸入輸出接口等屬性信息數據量較小,採用默認提供的 QListWidget,QTreeWidget 和 QTableWidget 來實現,它們均繼承於標準的視圖類並且封裝了標準模型,使用起來方便。對於文件管理窗體的實現,視圖採用基本的QAbstractItemView類,模型採用QFileSystemModel類,它不存儲數據本身,而是保存了文件在系統中的一個索引,用戶在視圖上對系統文件的增加、刪除、修改等操作都會反饋到後臺的模型,通過 QFileSystemModel 可以獲得文件的信息,甚至可以創建或者修改文件系統。

4.5自動化代碼生成框架

傳統的仿真系統進行模型編碼時總會存在大量重複性工作,導致開發人員經常要花大量的時間在一些枯燥乏味、簡單的代碼編寫上,這樣不僅會降低開發的效率,而且手動的代碼複製粘貼容易帶來很多不易察覺的錯誤。另一方面,在考慮模型代碼設計的同時,開發人員還需要考慮模型間接口的編程,這提升了系統設計的難度和複雜度,也不利於進行模型的抽象和提取。自動化代碼生成技術的引入很好地解決了這一問題,它減少了代碼的重複編寫,同時也解決了在大型軟件開發中不可避免的風格混亂問題,編碼的統一風格使得後期的升級與維護工作不會隨着軟件規模的擴大而無法展開。

基於以上分析本系統採用了代碼自動化生成技術,系統以模型作爲軟件的組件並以此爲出發點,利用模型驅動開發 MMD(Model driven development)生成代碼、文檔、測試工具甚至其它模型的延伸。對於單個基本模型,雖然各個模型功能各異,實現原理各不相同,但分析後可以抽象出一些公有的結構框架,比如模型的輸入、輸出接口以及模型的參數,將這部分信息提取出來就可以利用自動化代碼生成技術生產基本的框架代碼,然後由開發人員手動填寫主要的核心代碼,這樣減少了重複的工作並且統一編程風格。

自定義模型代碼生成流程圖 4.13 所示,首先用戶可以根據系統的需求自定義基本模型,配置相應的模型信息、輸入輸出接口以及參數信息,並依據本章設計的 XML模板規範生成相應的 XML 模型描述表;其次解析 XML 文件並參考代碼生成模板和
XML 描述表自動生成模型的 C++頭文件和源文件代碼框架,最後用戶只需要在規定函數段內填入核心的算法代碼並進行編譯鏈接就可以生成可直接使用的.lib 庫文件。將生成的模型加入到基本模型庫後,下次使用時就可以直接調用接口函數並注入相應的輸入數據,無需重新進行模型的構建和代碼編寫工作。

系統的高層模型可以在可視化編輯平臺下利用基本模型嵌套生成,和單獨的基本模型類似,模型的拓撲關係和輸入輸出、參數等各項信息最後統一存爲 XML 文件,後臺利用基本模型已經生產好的的代碼模板並將XML解析的數據信息作爲注入即可
得到可執行代碼和仿真結果。

4.6 人機交互界面設計與實現

界面展示風格的定義主要通過兩種方式:用戶對窗體樣式自定義修改和基於表單的編碼修改。用戶自定義窗體樣式修改方式允許用戶根據自己的需求對編輯區中的字體、連線和語言進行設定,這種方式和一般的可視選擇對話框類似。

基於表單的編碼修改方式彌補了 UI 開發時單個控件樣式調整粒度粗的缺點,Qt的允許程序員像 WEB 端使用 CSS 一樣使用 QSS,將頁面美化和代碼層分開,使得控件的調整更爲細微,更容易維護。

4.7 仿真順序邏輯控制及速率提升

4.7.1 串行仿真邏輯控制

在仿真場景圖中,將模型看作結點,模型輸入輸出接口間的連線看作邊,則模型的拓撲關係圖就可以映射爲圖論中的有向圖。考慮到模型的輸入輸出之間存在一定的依賴關係,爲了保證上游模型的求解順序在下游模型之前,因此可以採用拓撲排序算法來確定模型串行仿真的先後順序。假設在圖(V, E)中,則拓撲排序就是將所有結點排列成滿足如下要求的序列:若存在由結點 i 出發指結點 j 的邊,則結點 i 在序列中應出現在結點 j 的後面。可以採用廣度優先搜索來將一個有向圖(V, E)轉化成一個拓撲序列,具體流程如下:
在這裏插入圖片描述

4.7.2 仿真速率提升方案

複雜電子仿真系統內部結構複雜,計算量巨大,爲了提高仿真軟件的運行速率,一方面可以從底層矩陣運算操作的優化入手,但算法的改進是有極限的,另一方面我們可以從仿真的流程控制入手,將串行化的仿真過程並行化,以此來極大地改進系統的仿真效率。
在這裏插入圖片描述
在基本支撐層調用 BLAS 程序庫來對矩陣操作運算進行優化。BLAS 是個通用的基礎的線性代數程序庫,它爲基本的向量和矩陣運算提供了標準的構建塊,包含了功能完備、數量龐大的已編寫好的線性代數運算程序。在本系統中,底層模型的開發
統一使用 C++語言來保證軟件體系結構的通用性,在進行矩陣操作庫配置時選擇了C++開發的高質量線性代數開源庫Armadillo,它編程規範和接口非常類似於 Matlab,後期可以很方便地將 Matlab 編寫的算法移植到 C++。Armadillo 內部也結合了LAPACK 和 BLAS 等進行運算加速,但其本身的計算能力並不強,爲了得到更好的優化效果和執行高效性,本系統配合了開源的 OpenBLAS 庫作爲 Armadillo 的底層。

在基本模型層採用 OpenMP 來利用現代計算機系統的多核優勢實現並行操作。OpenMP 是一套基於共享內存的支持多線程並行編程接口,它具有跨平臺、模式可伸縮、接口靈活的特點。OpenMP 雖然通過利用現代計算機多核的運算資源對系統
進行了並行化的計算提升,但線程創建和結束也存在一定的開銷,所以當數據運算量比較小的時候不考慮進行 OpenMP 的並行優化,比如在本系統中,最典型的當處理for 循環時,只有在循環比較多的情況下進行 OpenMP 的並行加速。

在系統組件層採用MPI多機分佈式並行編程框架來處理對計算資源的分配以及多機之間的通信任務。MPI 是基於消息傳遞機制的多機並行編程接口,也是目前並行系統中被廣爲使用的一種編程模式,當系統中存在多個仿真模塊時,可採用 MPI
實現多機集羣並行計算來協同完成整個仿真任務。圖 4.20 以通信對抗電子系統爲例簡單介紹 MPI 並行計算的流程。在通信對抗電子系統中包含了雷達、偵察、干擾等多個模塊,各個模塊具備不同的功能且負責不同的仿真任務。整個系統的管理控制採用了MPI中經常見到的主從模式,程序初始化後同時對主進程和從進程進行啓動,主進程代表總體的控制調度平臺,從進程代表各個仿真模塊,可以模擬雷達、偵察等各個通信對抗電子模塊。主進程負責廣播參數等信息並向各個仿真模塊發佈仿真任務,從進程接收主進程發送的參數信息完成初始化,然後執行自己的任務,比如雷達模塊啓動搜索並進行信號處理工作,偵察模塊啓動偵察仿真並進行測頻、測向處理工作。從進程完成仿真任務後將仿真結果送回主進程進行綜合分析,進而對對方通信佈局狀況、設備參數等進行全面系統的瞭解,並將重要的信息存入系統數據庫方便日後比對

第五章 總結和展望

5.1本文工作總結

電子建模仿真系統是進行硬件模擬、電子系統設計的重要基礎設施軟件,具有代替硬件實驗、驗證系統可行性和減少人力物力資源浪費的優點。隨着電子系統功能模塊的增多,其設計的複雜度也越來越高,傳統的電子建模仿真系統使用起來已經力不從心。本文設計並實現了一款基於編輯可視化、建模和代碼生成相集成的電子仿真平臺,利用了面向對象思想,對系統模型進行標準化的設計,具有可移植、可擴展的使用特點。同時利用可視化場景模型圖結構關係和並行計算技術來實現仿真運算性能的優化,提高了系統的仿真效率。

本文首先介紹了電子建模仿真系統的發展現狀以及背景意義,主要說明了複雜電子仿真系統中所遇到的問題,突出系統複雜程度高、需求變化多樣與計算量大的特點,以及原有的建模仿真系統可擴展性差、不具備可移植能力以及複用率低的缺點。接下來我們講述了本系統中的概要設計包括系統需求分析以及所使用到的關鍵技術。其次我們詳細描述了本系統中模型的設計方法,包括採用面向對象思想的標準化模型描述及建模過程,重點突出了本系統的模塊化、複用率高以及可移植性、可維護性強的特點。同時也介紹了本系統的自動化代碼生成技術,它具有減少重複代碼編寫並且可以保持編碼風格統一的優點。然後本文描述了本系統在提高系統計算能力,提升建模仿真效率方面所做的工作,包括底層代碼所使用的用於加快矩陣運算操作的 BLAS 運算庫,以及利用拓撲排序將仿真圖分解爲多個連通子圖,每個連通子圖分別創建一個線程來進行多線程仿真操作。爲了充分發揮現代計算機系統的多核優勢,本系統使用OpenMP 編程框架將可以並行計算的部分自動進行並行化操作,最後爲了克服單機計算能力以及資源不足的缺點系統採用了 MPI 來對仿真模塊進行多機並行操作,加快了仿真系統的效率。

5.2未來工作展望

對於電子建模仿真系統的改進,主要包括以下三點,第一是系統的開發流程,第二是針對電子仿真計算量大的問題,第三是對仿真結果的分析。關於系統的開發流程的改進包括如何加快系統的開發效率,減少核心功能模塊之間的耦合性。在本系統中我們採用 C++語言的 Qt 框架來進行交互界面的編寫,C++語言龐雜並且極易出錯,不適合界面開發。未來可以採用多種語言的結合來改進開發效率,可以採用 python 等動態語言進行人機交互界面的編寫工作,採用 C 或者 C++語言進行核心模塊功能的編寫並提供接口,不僅可以提高開發效率也可以減少錯誤出現的機率,增加系統的可維護性。

關於電子仿真計算量大的特點,我們可以利用 GPU 進行並行計算,GPU 是最近流行的一種新的並行計算方法。我們可以嘗試利用 CUDA 等編程框架來實現GPU 上仿真系能的加速。

最後有關仿真結果的分析,現有系統只是簡單地呈現建模仿真的數據和波形等結果,並不具備對仿真結果進行分析的特性。可以採用模式識別、特徵提取等人工智能技術來對仿真數據進行分析甚至預測。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章