計算機數字化仿真測試設計

時間:2022-06-04 05:53:00

導語:計算機數字化仿真測試設計一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

計算機數字化仿真測試設計

1概述

目前,嵌入式計算機系統向著網絡化、平臺化和智能化發展,原由多個計算機分別完成的任務功能集由單一綜合化、集成化的計算機系統來完成[1]。原各計算機完成的使命任務由綜合化計算機上相應的硬件模塊和軟件來完成,模塊之間的通信由綜合化計算機的高速總線來完成,而且,許多模塊還包括FPGA、DSP等。該類嵌入式計算機系統的大多數為強實時、具有關鍵或重要安全的等級,基于分區高安全可靠操作系統來開發,軟件固化或動態加載到相應的模塊上,基于總線消息驅動的執行。由于綜合化嵌入式計算機系統各硬件模塊上的軟件基于高速總線自動交互以及各模塊軟件間的運行時序復雜,傳統的測試方法已難以確保各模塊軟件間的交互和時序、功能協調性、一致性的驗證,各種安全型故障模式難以實施充分性的測試,軟件安全性測試要求的路徑測試難以完成。為了確保綜合化計算機系統的軟件安全性、可靠性、互操作性和功能處理的正確性,本文提出相應的數字化仿真測試系統,以保證測試的充分性。

2系統框架

數字化仿真測試系統由嵌入式計算機數字化仿真系統、仿真測試支撐框架、仿真測試控制臺及系統數據庫組成,其系統框架如圖1所示。其中,嵌入式計算機數字化仿真系統包括嵌入式系統硬件結構仿真、嵌入式仿真系統運行控制及嵌入式操作系統[2]。嵌入式系統硬件結構仿真以構件技術模擬硬件系統中的基本芯片單元,包括CPU、寄存器、存儲器、定時器等,組裝這些仿真構件形成有具體功能的模塊;嵌入式仿真系統運行控制模塊監控所有的仿真構件、構件接口及各個總線,動態維護整個系統的運行,實現信號路由,時鐘管理及仿真構件的管理。通過仿真構件、仿真系統運行控制模塊及嵌入式操作系統這個3個部分搭建起與真實硬件系統功能相同的仿真系統。下文以此測試框架為基礎,重點研究數字化仿真運行環境相關模塊的設計。

3數字化仿真環境的設計

3.1體系結構

數字化仿真環境由仿真運行控制器、仿真環境配置器、時鐘管理模塊、信號路由模塊及仿真構件對象集組成,如圖2所示。圖2數字化仿真系統體系結構仿真環境啟動后,仿真控制模塊根據仿真環境配置器的配置結果,加載構件的DLL庫文件,創建這些即將在仿真環境中運行的對象;同時實例化信號路由器對象及仿真時鐘管理對象,信號路由器對象維護所有構件的引腳連接關系,動態地管理信號的傳輸。仿真時鐘管理對象以仿真構件中最高的時鐘精度為基本的仿真時鐘周期,對所有監控的構件進行時鐘同步。仿真控制模塊以線程的方式啟動構件對象、時鐘管理對象及信號路由對象,使它們可以并發運行。

3.2芯片級仿真

嵌入式硬件系統在靜態結構上由連接和邏輯功能部件組成[3]。邏輯功能部件包括微控制器芯片、存儲器芯片、AD轉換器及各種傳感器,這些部件功能獨立,運行時相互間的影響較小。因此,可以將硬件芯片設計為低耦合、高內聚的仿真構件。仿真構件是數字化仿真系統的基礎,對整個系統的性能及擴展性影響較大。因此,采用構件化的技術實現,便于用戶對構件庫的擴充并且增加了仿真構件的復用性。仿真構件在邏輯結構上可以劃分為屬性集合功能集。屬性集為芯片的GUI特性以及芯片的引腳特性。GUI特性用于支持仿真構件的可視化及模塊化配置,引腳特性描述芯片的各引腳傳輸信號的類型。具有模擬和數字2種。功能集是對芯片的邏輯功能的仿真實現,這些功能的運行會對仿真構件的GUI特性及芯片引腳特性做出相應的改變。

3.3模塊級仿真

在芯片級仿真的基礎上,產生了用于搭建虛擬系統的各種仿真構件,包括微控制器構件、存儲器構件、寄存器構件及串口通信構件等。而嵌入式是硬件系統由各個模塊組成,因此需要對仿真構件進行模塊化配置。本文設計了仿真環境配置器用于進行仿真構件的模塊化配置,生成模塊化的虛擬系統。仿真環境配置器圖形配置模塊和環境配置模塊2個部分組成,如圖3所示。其中,圖形配置模塊為用戶提供可視化的仿真構件配置途徑;環境配置模塊生成模塊化的配置文件,便于仿真環境動態運行時,對仿真構件的調度與配置。圖3仿真環境配置器結構用戶在進行虛擬系統的模塊化配置時,根據目標硬件系統的藍圖,在仿真構件庫中選擇對應的仿真構件,將其拖至配置區。在配置區可以獲取構件的基本信息,并根據設計需求,修改構件的部分外部特性及電氣屬性,得到與真實目標系統中硬件部件一致的仿真構件。得到需要的所有仿真構件后,可以用拖放的方式改變構件的圖形外觀大小及占用區域,使它們能合理的分布在配置區中。然后根據設計需求連接構件的引腳,搭建起數字化的目標系統硬件仿真平臺。設計中采用事件驅動的方式,驅動配置器的運行,實現系統的配置功能,如圖4所示。其中,箭頭代表事件。

3.4仿真運行控制

仿真運行控制器是數字化仿真系統的核心部分,其性能決定了數字化仿真系統與真實硬件系統的逼真程度。仿真運行控制器協調仿真構件集的運行;根據用戶的配置結果,在宿主機操作系統上對硬件系統進行虛擬化;為仿真環境中各模塊的運行提供仿真時鐘,保證運行時序的正確;另外仿真運行控制器為調試工具及測試工具與仿真硬件系統的交互提供支持。其體系結構如圖5所示。仿真運行控制器信號路由模塊仿真控制模塊仿真構件對象時鐘管理模塊工具對象圖5仿真運行控制器體系結構仿真環境啟動后,仿真運行控制器創建運行控制器對象和仿真環境配置器對象。依次加載工具、構件的DLL庫文件,創建這些即將在仿真環境中運行的對象。然后實例化維護仿真時鐘的時鐘管理對象及維護信號傳輸的信號路由對象,使它為環境運行提供服務。接著以線程的形式啟動工具、仿真構件、時鐘管理對象及信號路由器對象,進入它們的主工作流程。仿真運行控制器的設計采用面向對象的編程思想,所有功能都由對象完成,每個模塊對應一個主對象,只能通過對象對外輸出的方法訪問模塊的屬性??刂颇K是仿真運行控制器的主體,以對象形式管理內部屬性和方法,但它主要操作外部對象獲取信息或控制其運行,這些部分無法直接訪問或操作它,只有在外部啟動仿真運行環境時在主線程中創建和實例化。

3.5仿真時鐘的實現

虛擬的仿真系統是基于仿真構件的集合,構件采用消息驅動的方式運行,為了保證系統運行時序的正確性,需要提供時鐘同步機制[4]。本文設計時鐘管理模塊,為仿真運行環境中的各個構件提供仿真時鐘,保證時序的正確性。仿真時鐘的一個tick設定為仿真環境中最小的時鐘周期。仿真運行開始,時鐘管理模塊向所有監控的構件傳輸仿真時鐘t0,各個構件接收到時鐘t0后啟動構件運行單元,執行一個時鐘周期的任務,任務完成后通知時鐘管理模塊;時鐘管理模塊接收到所有監控的構件任務完成消息后繼續傳輸仿真時鐘t1。整個虛擬的仿真環境以此方式順序執行。另外,時鐘管理模塊要能夠為系統其他部件提供定時功能。為了保證系統的效率,采用如下所述的Δ時間鏈算法:要提高查找效率需要良好的數據結構支持,算法中采用散列表來記錄所有的構件的定時請求及定時到達請求,如圖6所示。NULL指向定時消息列表NULL指向定時消息列表指向定時消息列表指向定時消息列表NULLNULL散列基倍數構件ID線程ID定時器IDNEXT散列基倍數構件ID線程ID定時器IDNULL散列指針圖6定時消息散列表散列表的主鏈為循環鏈表,其每個節點可以掛接子鏈表,用于記錄定時請求時刻同時到達的構件信息;主鏈表的長度為散列基數,當定時請求時間較長,超出散列基數時,則將其換算成散列基數的倍數與余數的和,倍數記錄在鏈表節點中,按照余數將鏈表節點插入到對應的子鏈表中。這樣所有的定時請求都可以記錄在循環散列表中,處理定時請求的操作即為循環往復地訪問散列表,每次循環中,將子鏈表節點中的倍數遞減,若倍數遞減至0,則對應的定時時刻到達,通知相應的構件。具體表述如下(為便于描述,使用了部分符號):Ticks指定時時間的長度;BaseSum代表散列基數;MultipleSum是散列基數的倍數;ComplimentSum代表在當前循環中時鐘還要計數多少刻度才觸發該定時事件;指針TimerInfPointer指向當前待喚醒的定時消息列表。若新定時請求到達,時鐘管理模塊記錄構件的基本信息,然后計算其在散列表中的位置,計算過程為:MultipleSum=(Ticks+TimerInfPointer)/BaseSumComplimentSum=(Ticks+TimerInfPointer)modBaseSum按ComplimentSum將此節點插入到對應的子鏈表中,子鏈表中的各節點按照其MultipleSum的值進行排序。仿真時鐘每計數一次,則檢查當前散列指針指向的子鏈表,子鏈表節點中的MultipleSum為0,則定時時刻到達,通知相應的構件,然后將該子鏈表中剩余節點的MultipleSum減1,將散列指針TimerInfPointer移向下一個單元,繼續處理下一個時刻到達的定時請求。

3.6信號路由的設計

目標板上的硬件部件通過發送和接收物理信號的方式,實現對外的控制和接收外來的觸發事件。物理信號在硬件系統中靠電壓驅動,其路徑由導體(導線)引導[2]。在數字化仿真環境中信號傳輸通過消息驅動來實現,為了保證信號傳輸路徑的正確性,本文設計路由模塊來維護系統的通信。仿真系統動態運行時,仿真構件是一個獨立的運行實體,它只需要關心如何把數據輸送到自己的引腳上,實際的傳輸過程由信號路由器來實現。信號路由器要傳送信號,首先要找到信號流向通路,即仿真構件之間的引腳連接關系,這些相互間的連接關系在配置硬件平臺時已經確定,因此,信號路由器需要在系統配置完成后,根據構件間的引腳連接關建立起仿真系統的引腳信號路由表,當構件從引腳輸出信號時,信號路由器查詢路由表,找到與該引腳連接的所有構件引腳,將信號組裝成消息發送到目標構件。具體設計中,路由表使用多級鏈表實現,如圖7所示。

當構件發出傳輸信號請求時,信號路由器依次處理該構件的每個引腳,檢查每個引腳的連接關系,如果連接對象合法,則針對該連接對象創建一個消息結構保存這個引腳上待傳輸的信號,把它掛接到連接對象的輸入信號鏈表上,并且記錄該結構地址;處理完所有引腳之后,依次向連接的對象發送消息,并通知連接的對象有信號需要接收。當構件接到通知有信號輸入請求時,進入臨界區,讀取消息輸入鏈表,依次取出保存引腳信號的數據結構,把信號填入自己的接收單元,取完信號后退出臨界區,進入內部處理過程。

4結束語

針對綜合化嵌入式軟件測試,本文提出數字化仿真測試方案,論述硬件系統仿真技術,設計數字化仿真運行環境。數字化仿真運行環境提供時鐘管理及信號路由服務,使仿真的數字化硬件系統能夠動態運行,并且在邏輯和時序上與真實硬件系統保持一致,為嵌入式軟件的仿真測試提供了保證。嵌入式系統越來越復雜和集成化,軟件在整個系統中所占比重也日益增加,嵌入式軟件的仿真測試顯得尤為重要,因此,嵌入式系統數字化仿真測試環境有著良好的前景和市場需求。隨著嵌入式軟件數字化仿真測試環境的不斷完善與發展,特別是仿真構件庫的不斷擴充,數字化仿真的建模速度和通用性都將得到改善。