王連浩,王占選,齊非凡,趙子晟,王月海
(1.北方工業(yè)大學(xué) 信息學(xué)院學(xué)院,北京 100144; 2.北京航天測(cè)控技術(shù)有限公司,北京 100037)
近年來,隨著國(guó)內(nèi)外情勢(shì)的變化和時(shí)代的發(fā)展,集成電路,尤其是工業(yè)級(jí)芯片的研發(fā)、設(shè)計(jì)和應(yīng)用越來越受到國(guó)家重視,集成電路發(fā)展踏上快車道,而在集成電路內(nèi)部設(shè)計(jì)研發(fā)方面,為了滿足眾多應(yīng)用領(lǐng)域需求,由模擬電路和數(shù)字電路構(gòu)成的混合電路已經(jīng)成為主流,其復(fù)雜程度和規(guī)模都在不斷增加[1-6],仿真是設(shè)計(jì)和制造工業(yè)級(jí)芯片的重要環(huán)節(jié),能夠有效地減少研發(fā)周期和成本,因此數(shù)?;旌想娐贩抡嬉殉蔀橹萍s當(dāng)代集成電路產(chǎn)業(yè)發(fā)展的卡脖子問題。
從技術(shù)層面上看,模擬電路仿真采用基于狀態(tài)方程演化的技術(shù),仿真精度高,需要仿真時(shí)間長(zhǎng);數(shù)字電路仿真采用基于事件驅(qū)動(dòng)的技術(shù),仿真速度快。兩者的仿真原理與核心技術(shù)在底層上難以直接集成。從工業(yè)應(yīng)用層面上看,模擬電路仿真和數(shù)字電路仿真均有業(yè)界影響大、仿真精度高、使用用戶多的工業(yè)界標(biāo)準(zhǔn)軟件,而且這些軟件更新及時(shí),支持目前各大芯片廠商推出的最新集成電路,如支持模擬電路仿真Spice引擎的OrCAD PSpice、HSpice、Spectre等軟件,支持?jǐn)?shù)字電路仿真的ModelSim軟件在國(guó)內(nèi)都居于業(yè)界標(biāo)準(zhǔn)地位,具有十分廣泛的應(yīng)用。
數(shù)模混合電路仿真一般可以分為本機(jī)模式和粘合模式兩種,這兩種模式的算法原理各不相同,同樣各有優(yōu)勢(shì),在目前的應(yīng)用領(lǐng)域均有典型代表[7-10]。本機(jī)模式設(shè)計(jì)方法用單一仿真器同時(shí)實(shí)現(xiàn)數(shù)字和模擬仿真算法來進(jìn)行數(shù)模混合仿真,典型代表是Mentor的ADMS仿真器和Synopsys的Saber,其中ADMS是一個(gè)支持多種設(shè)計(jì)語言、單核的數(shù)?;旌闲盘?hào)電路設(shè)計(jì)驗(yàn)證工具,而Saber主要用于外圍電路的仿真模擬,同樣是單一的混合信號(hào)仿真內(nèi)核。由于芯片廠家通常只提供業(yè)界標(biāo)準(zhǔn)的模型,所以這種模式設(shè)計(jì)的混合仿真軟件因缺乏工業(yè)級(jí)芯片模型的支持而應(yīng)用受到一定限制。粘合模式使用兩個(gè)仿真器,模擬仿真器仿真模擬電路,數(shù)字仿真器仿真數(shù)字電路,然后通過控制模塊處理兩個(gè)仿真器之間的數(shù)據(jù)交互。這種設(shè)計(jì)方式的仿真軟件可以提供業(yè)界標(biāo)準(zhǔn)的芯片及電路模塊支持,但內(nèi)部數(shù)模接口和時(shí)序控制模塊設(shè)計(jì)復(fù)雜。
目前,世界上最著名的三家EDA軟件公司分別是美國(guó)的Synopsys與Candence,以及西門子的Mentor Graphics。這三家公司在國(guó)際EDA市場(chǎng)中處于領(lǐng)先地位,而且現(xiàn)在應(yīng)用廣泛的數(shù)?;旌想娐贩抡孳浖彩莵碜赃@三家公司,主要有3個(gè):Mentor的ADMS仿真器、Synopsys的Saber仿真器和Cadence的AMS-Design仿真器[11-13]。ADMS主要用于混合信號(hào)集成電路驗(yàn)證,Saber適合開關(guān)電源領(lǐng)域的電路仿真,AMS-Design主要應(yīng)用于混合信號(hào)芯片設(shè)計(jì)。前兩者均為單核數(shù)?;旌闲盘?hào)仿真器,缺點(diǎn)在于性能與邏輯模擬器還有較大差距,而AMS-Design缺少業(yè)界標(biāo)準(zhǔn)的芯片及電路模塊支持。他們的共同特點(diǎn)在于不開源,費(fèi)用昂貴,難以二次開發(fā)形成自主產(chǎn)權(quán)。
針對(duì)設(shè)計(jì)研發(fā)工業(yè)芯片與診斷維修高精度電子設(shè)備的工業(yè)現(xiàn)狀,急需滿足以下要求的數(shù)?;旌想娐贩抡嫫脚_(tái):具有自主知識(shí)產(chǎn)權(quán),支持當(dāng)下主流模擬電路和數(shù)字電路仿真技術(shù),支持各集成電路廠商最新芯片模型且滿足設(shè)計(jì)精度需求、支持工業(yè)級(jí)集成電路應(yīng)用開發(fā)等。
針對(duì)上述需求,數(shù)?;旌想娐贩抡婀ぞ叩脑O(shè)計(jì)根據(jù)設(shè)計(jì)模式分為兩種設(shè)計(jì)方法:(1)基于Ngspice這類開源軟件進(jìn)行數(shù)?;旌想娐吩O(shè)計(jì)和模塊庫(kù)建立,這種方式性價(jià)比不高,需要花費(fèi)大量的時(shí)間和精力,所以很少有研究者進(jìn)行研究;(2)選擇不同仿真器進(jìn)行粘合,借助仿真器自帶模型庫(kù),能夠有效地減少設(shè)計(jì)時(shí)間,性價(jià)比高。因此,目前數(shù)?;旌想娐贩抡婀ぞ咴O(shè)計(jì)方法主要是第二種。
本文在第二種設(shè)計(jì)方法的基礎(chǔ)上提出了一種粘合模式的數(shù)?;旌戏抡嫫脚_(tái)模型架構(gòu),基于該架構(gòu)選擇PSpice和ModelSim在Simulink上實(shí)現(xiàn)聯(lián)合仿真,并在此基礎(chǔ)上設(shè)計(jì)了一個(gè)數(shù)模混合仿真軟件平臺(tái)。
該平臺(tái)基于Matlab Simulink技術(shù),集成了主流的模擬電路仿真PSpice引擎和數(shù)字電路仿真ModelSim引擎,是一種模塊化、圖形化、行為級(jí)的數(shù)?;旌戏抡嫫脚_(tái)。該平臺(tái)使用Simulink做為頂層,可利用Matlab眾多工具模塊,以及與C/C++等高級(jí)語言交互的程序接口,底層的模擬仿真引擎PSpice和數(shù)字仿真引擎ModelSim都是業(yè)界首選的專業(yè)仿真引擎,不僅有對(duì)最新工業(yè)芯片的完美支持,而且仿真精度和性能都是業(yè)界一流水準(zhǔn)。因此,本文設(shè)計(jì)并實(shí)現(xiàn)的數(shù)?;旌戏抡嫫脚_(tái)具有以下優(yōu)點(diǎn):基于Matlab Simulink平臺(tái),混合電路仿真界面友好,可視化程度高;采用粘合模式,選擇業(yè)界主流仿真引擎,可以獲得最新芯片模型和電路模型的支持;采用模塊化設(shè)計(jì),提供圖形化界面;支持行為級(jí)仿真,仿真精度高,性能良好;數(shù)據(jù)處理能力好,能夠靈活地完成數(shù)據(jù)轉(zhuǎn)換,以及調(diào)整數(shù)據(jù)流向。
本文設(shè)計(jì)的數(shù)模混合仿真平臺(tái)通過Matlab Simulink創(chuàng)建系統(tǒng)級(jí)行為模型,對(duì)于系統(tǒng)中具體模擬和數(shù)字電路模塊分別調(diào)用商用高精度仿真引擎PSpice和ModelSim實(shí)現(xiàn)。
數(shù)?;旌戏抡嫫脚_(tái)的架構(gòu)是C/S(Client/Server)結(jié)構(gòu),Matlab Simulink作為客戶端(client),以系統(tǒng)級(jí)仿真做為頂層結(jié)構(gòu),底層是兩個(gè)不同類型的仿真器作為服務(wù)器(server),一個(gè)模擬仿真服務(wù)器PSpice,一個(gè)數(shù)字仿真服務(wù)器ModelSim。客戶端為兩個(gè)引擎服務(wù)器提供必要的激勵(lì)信號(hào)和控制信號(hào),服務(wù)器接受客戶端的調(diào)用,并接收信號(hào),完成必要的仿真工作,將仿真數(shù)據(jù)傳回客戶端,在客戶端中完成數(shù)據(jù)的轉(zhuǎn)換和交互,這就是仿真平臺(tái)的基本運(yùn)行架構(gòu)。
Matlab是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語言和交互式環(huán)境[14-15]。借助Matlab能夠很好地完成數(shù)?;旌戏抡娴闹骺啬K設(shè)計(jì)和數(shù)據(jù)處理等功能。Simulink是Matlab的擴(kuò)展,是一種可視化仿真工具,能夠?qū)崿F(xiàn)動(dòng)態(tài)系統(tǒng)建模和仿真[16]。借助Simulink平臺(tái)的接口模塊能夠?qū)崿F(xiàn)引擎連接,再通過平臺(tái)本身的模塊和函數(shù)完成數(shù)據(jù)轉(zhuǎn)換工作。PSpice作為模擬仿真引擎,優(yōu)勢(shì)有兩方面:(1)其本身的簡(jiǎn)便性和專業(yè)性在業(yè)界都是一流水準(zhǔn),是工業(yè)界標(biāo)準(zhǔn)軟件;(2)能夠提供最新的業(yè)界標(biāo)準(zhǔn)的芯片及電路模塊支持。借助PSpice能夠很好的完成模擬子電路搭建和校驗(yàn)工作。ModelSim因其業(yè)界標(biāo)準(zhǔn)地位和作為單內(nèi)核實(shí)現(xiàn)VHDL和Verilog混合仿真等特點(diǎn)[17-18]作為本文數(shù)模混合仿真的數(shù)字仿真引擎,完成數(shù)字子電路搭建和校驗(yàn)工作。
這種架構(gòu)帶來了新的需要解決的問題,一是三者之間的數(shù)據(jù)交互問題,二是聯(lián)合仿真中的時(shí)序同步問題。
針對(duì)數(shù)據(jù)交互問題,本文提出了一種利用協(xié)同仿真技術(shù)將仿真結(jié)果數(shù)據(jù)集中在Simulink平臺(tái)中,然后利用系統(tǒng)級(jí)接口模塊實(shí)現(xiàn)模擬和數(shù)字?jǐn)?shù)據(jù)的交換。
針對(duì)時(shí)序同步問題,本文提出了一種結(jié)合了拓?fù)渑判蛩惴ǖ姆抡婵刂品绞?,并根?jù)拓?fù)潢P(guān)系進(jìn)一步確定了各模塊間的接口連接關(guān)系,解決了子電路模塊間的時(shí)序問題,模塊內(nèi)的同步通過協(xié)同仿真接口的配置實(shí)現(xiàn)。
這兩種方法在下一章節(jié)進(jìn)行了具體的介紹。
本文設(shè)計(jì)的數(shù)模混合仿真平臺(tái)主要功能包括電路維護(hù),數(shù)字電路和模擬電路聯(lián)合仿真,仿真管理,結(jié)果處理等部分,設(shè)計(jì)了電路輸入模塊、電路拆分模塊、聯(lián)合仿真模塊、流程配置模塊、仿真流程控制模塊(數(shù)據(jù)接口及時(shí)序同步)、結(jié)果輸出及打印模塊、管理模塊(文件管理、項(xiàng)目管理)等功能模塊,平臺(tái)軟件功能模塊如圖1所示。
圖1 數(shù)?;旌戏抡嫫脚_(tái)軟件功能模塊圖
電路原理圖維護(hù)模塊主要功能可以分為四部分:(1)電路輸入模塊;(2)電路拆分模塊;(3)電路維護(hù);(4)元器件模型管理。
電路輸入模塊主要目的是獲得電路原理圖,可以通過文件導(dǎo)入的方式從電路原理圖庫(kù)將所需電路原理圖讀入,也可以通過仿真引擎的原理圖編輯或代碼編輯導(dǎo)入所需電路。
電路拆分模塊將時(shí)序上可以邏輯拆分的復(fù)雜電路按照功能劃分,在專家指導(dǎo)下,進(jìn)行電路功能模塊的半自動(dòng)拆分,形成眾多功能單一的模擬子模塊序列和數(shù)字子模塊序列。
電路維護(hù)功能是對(duì)不同類型子電路進(jìn)行管理,其主要方式是將拆分后的模擬和數(shù)字子電路模塊在對(duì)應(yīng)的PSpice和ModelSim仿真器中進(jìn)行編輯,調(diào)整為能夠通過相應(yīng)校驗(yàn)的獨(dú)立電路,存入數(shù)據(jù)庫(kù)中。
元器件模型管理處理的對(duì)象是在引擎軟件模型庫(kù)中原本不存在或者需要修改的元器件,分為模擬器件模型管理和數(shù)字功能模型管理。模擬元器件建模方法主要有兩種:一種是參數(shù)建模法,適用于相對(duì)簡(jiǎn)單、已經(jīng)具有功能模型的元器件建模;另一種是子電路建模法,適用于相對(duì)復(fù)雜、比較新型的、需重新推導(dǎo)功能模型的元器件建模[19-20]。數(shù)字功能模型建模是通過在ModelSim進(jìn)行行為級(jí)建模,通過激勵(lì)源文件進(jìn)行校驗(yàn),元器件模型同樣存入數(shù)據(jù)庫(kù)中。
聯(lián)合仿真模塊是為了解決平臺(tái)和引擎之間的數(shù)據(jù)交互問題,是通過協(xié)同仿真技術(shù)實(shí)現(xiàn)的,其主要功能是建立引擎連接和實(shí)現(xiàn)單模塊聯(lián)合仿真。
引擎連接功能是實(shí)現(xiàn)平臺(tái)與底層仿真引擎的協(xié)同運(yùn)行,確保平臺(tái)和引擎之間能夠?qū)崿F(xiàn)數(shù)據(jù)交互。這部分功能是通過Simulink的接口模塊庫(kù)實(shí)現(xiàn)的,主要涉及PSpice SLPS Interface 和Link for ModelSim這兩個(gè)接口模塊。
SLPS是Cadence Design Systems公司針對(duì)PSpice仿真器與Mathworks公司的Matlab建模工具Simulink推出的接口軟件,主要功能是鏈接PSpice至Matlab中的Simulink仿真器,從而在系統(tǒng)級(jí)仿真環(huán)境中實(shí)現(xiàn)模擬電路系統(tǒng)的仿真。
Link for ModelSim聯(lián)合仿真的接口在HDL仿真器ModelSim SE/PE和Simulink間提供了一個(gè)雙向連接,從而可將Matlab工具整合到EDA工作環(huán)境中,使其應(yīng)用于FPGA和ASIC的開發(fā),以指導(dǎo)硬件的設(shè)計(jì)驗(yàn)證和聯(lián)合仿真。
單模塊聯(lián)合仿真包括模擬電路聯(lián)合仿真和數(shù)字電路聯(lián)合仿真兩種,兩者分別利用上述兩個(gè)接口模塊實(shí)現(xiàn)頂層平臺(tái)與底層引擎協(xié)同仿真。具體方法為將在引擎中已經(jīng)維護(hù)好的子電路通過接口模塊與平臺(tái)建立連接,平臺(tái)提供激勵(lì)、顯示、存儲(chǔ)等模塊,建立聯(lián)合仿真工程,將數(shù)據(jù)存儲(chǔ)于平臺(tái)內(nèi),為數(shù)?;旌戏抡嫣峁l件。
子電路模塊間的時(shí)序問題是本文設(shè)計(jì)的混合仿真平臺(tái)實(shí)現(xiàn)的關(guān)鍵。本文提出了一種結(jié)合了拓?fù)渑判蛩惴ǖ姆抡婵刂品绞?,?duì)分解好的子電路進(jìn)行正確仿真次序的排列。
該方式采用有向無環(huán)圖的方式對(duì)拆分的子電路序列及其中的先后關(guān)系進(jìn)行表示,根據(jù)Matlab存儲(chǔ)結(jié)構(gòu)選擇元胞數(shù)組存儲(chǔ)有向無環(huán)圖信息。
假定某數(shù)?;旌想娐凡鸱譃?個(gè)子電路模塊,根據(jù)數(shù)據(jù)流確定的模塊間的調(diào)用關(guān)系可表示為圖2所示的有向無環(huán)圖。下劃線前面的數(shù)字是輸入或拆分模塊時(shí)所分配的序列號(hào),下劃線后面是本模塊的仿真類型,a為模擬電路模塊,d為數(shù)字電路模塊。
圖2 某電路拆分后子電路模塊的有向無環(huán)圖
對(duì)仿真模塊進(jìn)行拓?fù)渑判蚝?,根?jù)拓?fù)潢P(guān)系可以進(jìn)一步確定了各模塊間的接口連接關(guān)系。建立表1所示的子電路模塊間的數(shù)據(jù)轉(zhuǎn)換表,記錄每個(gè)模塊的入度和出度,并輸出數(shù)據(jù)轉(zhuǎn)換關(guān)系, 以便為數(shù)?;旌戏抡娴臄?shù)據(jù)交換功能做準(zhǔn)備。表中數(shù)據(jù)轉(zhuǎn)換類型有3種:1表示無轉(zhuǎn)換,2表示模數(shù)轉(zhuǎn)換,3表示數(shù)模轉(zhuǎn)換。
表1 某電路拆分后子電路模塊的有向無環(huán)圖
聯(lián)合仿真時(shí),平臺(tái)會(huì)調(diào)用子電路模塊拓?fù)渑判驅(qū)Υ抡娴淖与娐纺K進(jìn)行邏輯排序,并在每個(gè)模塊仿真開始與結(jié)束時(shí),檢測(cè)入度值、出度值和數(shù)據(jù)轉(zhuǎn)換類型,對(duì)本模塊的輸入、輸出和數(shù)據(jù)類型進(jìn)行配置和修改,確保仿真快速、準(zhǔn)確進(jìn)行。圖3所示的電路模塊圖軟件生成的一種拓?fù)湫蛄袨?1_d,3_a,6_a,2_d,4_a,5_d)。
圖3 平臺(tái)與模擬仿真引擎數(shù)據(jù)交互圖
如何處理模擬仿真與數(shù)字仿真之間的接口是一項(xiàng)十分重要的問題,只有解決了這一問題,才能為數(shù)模混合仿真環(huán)境提供保證。因此,數(shù)?;旌戏抡嫫脚_(tái)核心算法在于時(shí)序同步和數(shù)據(jù)轉(zhuǎn)換。時(shí)序同步算法分為兩步進(jìn)行:(1)拓?fù)渑判颍?2)協(xié)同仿真的時(shí)序同步。
根據(jù)文獻(xiàn)資料,Simulink與PSpice之間的數(shù)據(jù)交互如上圖所示。Simulink的主仿真步長(zhǎng)取決于隨機(jī)抽取PSpice的仿真測(cè)點(diǎn),比PSpice的仿真步長(zhǎng)略大。Simulink與ModelSim之間的數(shù)據(jù)交互在于時(shí)鐘信號(hào)和復(fù)位信號(hào)的控制,保證仿真時(shí)間與系統(tǒng)仿真時(shí)間的對(duì)齊。
為確保數(shù)字模塊混合電路仿真的時(shí)序同步,設(shè)計(jì)的數(shù)?;旌戏抡嫫脚_(tái)利用Simulink分別與PSpice和與ModelSim之間數(shù)據(jù)交換與同步機(jī)制,并加以量程與步長(zhǎng)控制等予以調(diào)整。首先要設(shè)定Simulink和ModelSim兩個(gè)仿真引擎的相對(duì)時(shí)間量程,默認(rèn)是Simulink中的1 s時(shí)間等于HDL(Hardware Description Language,硬件描述語言)仿真器中的1 s時(shí)間,但也可以根據(jù)實(shí)際情況修改。其次要設(shè)定混合仿真的主仿真步長(zhǎng)。數(shù)?;旌戏抡嬷心M仿真決定仿真整體的速度和精度,所以主仿真步長(zhǎng)的設(shè)置與模擬仿真更為緊密。主仿真步長(zhǎng)的設(shè)置需要適度,過大會(huì)導(dǎo)致采集的數(shù)據(jù)波形失真,影響準(zhǔn)確性;設(shè)置過小又會(huì)影響分析速度,所以可以采用參考PSpice內(nèi)部仿真結(jié)果的方式設(shè)置主仿真步長(zhǎng)。
聯(lián)合仿真管理模塊主要包括仿真流程配置功能和系統(tǒng)級(jí)仿真流程控制功能。
仿真流程配置主要是將聯(lián)合仿真模塊的功能實(shí)現(xiàn)并實(shí)現(xiàn)數(shù)據(jù)交互。整個(gè)流程分為三部分配置:(1)利用電路維護(hù)功能在對(duì)應(yīng)仿真引擎分別建立模擬和數(shù)字電路子工程,并分別對(duì)其進(jìn)行調(diào)整校驗(yàn),直至能夠完整實(shí)現(xiàn)各自功能;(2)在Simulink實(shí)現(xiàn)單模塊仿真,實(shí)現(xiàn)平臺(tái)與底層仿真引擎連接,并補(bǔ)充其他模塊,如激勵(lì)源模塊和顯示模塊等,實(shí)現(xiàn)系統(tǒng)級(jí)功能仿真;(3)實(shí)現(xiàn)模擬和數(shù)字模塊之間的數(shù)據(jù)交互,利用電平調(diào)整與格式轉(zhuǎn)換等操作實(shí)現(xiàn)模/數(shù)和數(shù)/模轉(zhuǎn)換。
系統(tǒng)級(jí)仿真流程控制主要功能是對(duì)系統(tǒng)級(jí)混合仿真流程的參數(shù)配置、運(yùn)行控制、時(shí)序控制、錯(cuò)誤處理等功能。
參數(shù)配置功能是對(duì)仿真器類型、仿真類型、仿真起止時(shí)間、步長(zhǎng)以及接口配置中子電路選取、輸入輸出接口等仿真參數(shù)信息進(jìn)行配置。
運(yùn)行控制功能是在配置好參數(shù)后,利用Matlab Simulink控制邏輯,實(shí)現(xiàn)對(duì)仿真流程的啟動(dòng)、停止、單步、暫停等控制,并更新仿真進(jìn)度顯示。其中聯(lián)合仿真平臺(tái)和引擎的數(shù)據(jù)交互會(huì)影響仿真的精度和性能,需要進(jìn)行設(shè)置。
錯(cuò)誤處理功能主要是處理聯(lián)合仿真中出現(xiàn)的各類錯(cuò)誤。例如:顯示,錯(cuò)誤信息來源追蹤及可能導(dǎo)致原因等,同時(shí)暫停Simulink仿真控制,等待用戶進(jìn)一步處理。
結(jié)果處理功能主要是對(duì)仿真結(jié)果保存、顯示、分析,并將結(jié)果存入仿真結(jié)果庫(kù),以及打印查看。
本文設(shè)計(jì)的數(shù)?;旌想娐贩抡嫫脚_(tái)能夠?qū)?fù)雜電路進(jìn)行仿真操作,實(shí)現(xiàn)流程化、模塊化數(shù)模混合仿真。選擇一個(gè)時(shí)序上可以邏輯拆分的、具有典型性的混合電路作為例子研究分析數(shù)?;旌戏抡嫫脚_(tái)的各項(xiàng)功能?;旌想娐吩韴D如圖4所示。
圖4 仿真案例混合電路原理圖
根據(jù)混合電路原理圖,按照軟件流程,首先利用電路原理圖維護(hù)模塊進(jìn)行電路拆分和維護(hù),構(gòu)建能夠通過相應(yīng)校驗(yàn)的獨(dú)立子電路;然后利用聯(lián)合仿真模塊實(shí)現(xiàn)引擎調(diào)用,構(gòu)建單模塊聯(lián)合仿真工程;最后通過聯(lián)合仿真管理模塊實(shí)現(xiàn)仿真流程配置和流程控制。
為了應(yīng)對(duì)面對(duì)復(fù)雜電路時(shí)拆分模塊多且數(shù)據(jù)連接復(fù)雜的情況時(shí)平臺(tái)時(shí)序同步的能力,采取將模塊的序列號(hào)打亂設(shè)置的方式進(jìn)行檢驗(yàn),工程1序列號(hào)為3,類型為模擬電路;工程2序列號(hào)為1,類型為數(shù)字電路;工程3序列號(hào)為2,類型為模擬電路。按照序列號(hào)進(jìn)行電路模塊導(dǎo)入,并輸入每條有向邊的起始點(diǎn),進(jìn)行拓?fù)渑判?,其結(jié)果如圖5中仿真視圖窗口所示,其中一種模塊排列變?yōu)?3_a,1_d,2_a)。數(shù)據(jù)轉(zhuǎn)換如表2所示。
表2 案例電路的模塊間數(shù)據(jù)轉(zhuǎn)換表
根據(jù)上述步驟實(shí)現(xiàn)了混合電路聯(lián)合仿真,其各模塊結(jié)果圖如圖5~7所示。
圖5 工程1仿真工程電路圖與輸出波形圖
1)功能整體性分析。
工程1的功能是通過總線驅(qū)動(dòng)芯片74HC245控制電源V1的信號(hào)是否輸出,理論輸出應(yīng)該為200 Hz的脈沖信號(hào);工程2主要功能是通過集成數(shù)字電路實(shí)現(xiàn)對(duì)第一環(huán)節(jié)輸出信號(hào)進(jìn)行分頻操作,實(shí)現(xiàn)4分頻,理論輸出為50 Hz的脈沖信號(hào);工程3的主要功能是通過運(yùn)算放大器對(duì)模塊二的輸出信號(hào)進(jìn)行增益,放大倍數(shù)為2,然后用來驅(qū)動(dòng)某負(fù)載進(jìn)行工作,理論輸出為振幅為2的50 Hz脈沖信號(hào)。
根據(jù)圖5輸出波形與上述分析的理論值比較,可知工程1的仿真結(jié)果正確。工程1到工程2,會(huì)發(fā)生模數(shù)轉(zhuǎn)換,此時(shí)輸入模塊二的波形為賦值為1的200 Hz脈沖信號(hào),從圖6波形可以看出是賦值為1的50 Hz脈沖波形,與理論值相同,可以看出工程2仿真功能正常,結(jié)果正確。工程2到工程3,會(huì)發(fā)生數(shù)模轉(zhuǎn)換,圖7波形與理論值存在極小誤差,均方誤差為5.202e-08,這表明工程3仿真功能正常,且精度高。
圖6 工程2仿真工程電路圖與輸出波形圖
圖7 工程3仿真工程電路圖與輸出波形圖
綜上所述,本平臺(tái)能夠?qū)r(shí)序上可以邏輯拆分的數(shù)?;旌匣旌想娐穼?shí)現(xiàn)流程化、模塊化的數(shù)?;旌戏抡?,驗(yàn)證了平臺(tái)整體的有效性。
2)精度和性能分析。
數(shù)?;旌戏抡孳浖木群托阅芘c其設(shè)計(jì)方法有很大的聯(lián)系,表3是不同方案的對(duì)比表。
表3 不同方案的對(duì)比表
表3從理論角度對(duì)比了現(xiàn)有的設(shè)計(jì)方案和本文設(shè)計(jì)方案的特點(diǎn),可以看出本文設(shè)計(jì)的數(shù)模混合仿真平臺(tái)具有性價(jià)比高,精度和性能都是比較良好。下面通過具體實(shí)例對(duì)精度和性能進(jìn)行分析。
以工程1仿真為例,模擬電路聯(lián)合仿真結(jié)果與PSpice仿真結(jié)果比較如圖8所示。對(duì)兩者仿真結(jié)果進(jìn)行數(shù)據(jù)分析可知,模擬聯(lián)合仿真結(jié)果是從PSpice的仿真結(jié)果中采集來的,兩者數(shù)值精度完全一致。除此之外,PSpice仿真結(jié)果在初始和數(shù)據(jù)突變時(shí)會(huì)采取更加精準(zhǔn)的采集,在較小的步長(zhǎng)時(shí),這種情況會(huì)造成性能的浪費(fèi),而模擬聯(lián)合仿真結(jié)果能夠避免這種情況。既能夠發(fā)揮PSpice仿真的精確性,又能提升一定仿真性能。
圖8 模擬電路聯(lián)合仿真結(jié)果與模擬引擎仿真結(jié)果比較圖
以工程2為例,數(shù)字電路聯(lián)合仿真性能與ModelSim仿真性能比較如圖9所示。圖中每個(gè)數(shù)據(jù)是在相同環(huán)境下,經(jīng)過數(shù)十次仿真結(jié)果取得的均值,能夠比較有效地反應(yīng)相同環(huán)境下兩種方式的性能差異。由圖可知,這兩種仿真方式的仿真時(shí)間與實(shí)際用時(shí)均為線性關(guān)系,不同之處在于數(shù)字電路聯(lián)合仿真進(jìn)行需要一定的引擎連接時(shí)間,所以仿真時(shí)間起始點(diǎn)較高,但這種連接也減少了ModelSim軟件仿真中其它部分的功能,從而提高仿真的性能,節(jié)省了仿真的時(shí)間。
圖9 數(shù)字電路聯(lián)合仿真性能與數(shù)字引擎仿真性能比較圖
仿真平臺(tái)的搭建步驟主要分為三步:(1)仿真平臺(tái)界面設(shè)計(jì);(2)功能模塊設(shè)計(jì);(3)數(shù)據(jù)庫(kù)的搭建。其中,功能模塊設(shè)計(jì)和數(shù)據(jù)庫(kù)的搭建在第2章節(jié)進(jìn)行了詳細(xì)介紹。所以下面主要介紹仿真平臺(tái)界面設(shè)計(jì)和平臺(tái)的實(shí)現(xiàn)效果。
仿真平臺(tái)界面設(shè)計(jì)是采用Matlab的GUI模塊進(jìn)行設(shè)計(jì),包含菜單欄、工具欄、仿真工程目錄窗口、仿真文件視圖窗口、信息通知窗口和參數(shù)查詢窗口等6個(gè)部分。
基于Simulink的數(shù)?;旌戏抡嫫脚_(tái)主界面如圖10所示。
圖10 平臺(tái)主界面圖
菜單欄、工具欄是主要仿真功能的實(shí)現(xiàn),后四者主要功能是展示仿真流程和結(jié)果。工具欄是任務(wù)欄的圖形化表示,所以通過菜單欄功能來介紹仿真平臺(tái)效果。
工程管理實(shí)現(xiàn)仿真文件的新建、導(dǎo)入、配置和刪除等操作,以及仿真工作組的導(dǎo)入、保存和刪除等功能,能夠?qū)⒅按鎯?chǔ)的文件,工作組讀取,重新進(jìn)行仿真配置,進(jìn)行仿真工作,獲取仿真數(shù)據(jù)。
仿真配置實(shí)現(xiàn)子模塊的編輯校驗(yàn)、仿真子模塊的導(dǎo)入和模塊間數(shù)據(jù)導(dǎo)向關(guān)系的引入,并在此基礎(chǔ)上完成添加數(shù)據(jù)類型的拓?fù)渑判蚝湍K間的數(shù)據(jù)轉(zhuǎn)換。
仿真實(shí)現(xiàn)整體仿真流程的控制,包括啟動(dòng)、暫停、繼續(xù)和終止,其操作會(huì)在消息通知窗口顯示。
查看與結(jié)果是查看錯(cuò)誤位置、類型等信息,單個(gè)仿真文件結(jié)果展示,仿真工作組仿真結(jié)果顯示。
綜上所述,仿真平臺(tái)首先能夠快速地對(duì)數(shù)?;旌想娐吠瓿煞抡媪鞒痰拇罱?、修改和功能仿真,其次能夠?qū)σ呀?jīng)仿真過的工程組進(jìn)行快速重新讀取,然后可以對(duì)仿真進(jìn)程進(jìn)行觀測(cè)和有效控制,最后可以對(duì)仿真整體,包括仿真流程和數(shù)據(jù)盡心有效存儲(chǔ)和處理。
本文針對(duì)數(shù)?;旌戏抡婢扰c性能之間的矛盾問題和復(fù)雜混合電路時(shí)仿真工具存在主流芯片和電路模塊不足問題,提出了一種粘合模式的數(shù)?;旌戏抡嫫脚_(tái)模型架構(gòu),基于該架構(gòu)選擇PSpice和ModelSim在Simulink上實(shí)現(xiàn)聯(lián)合仿真,并在此基礎(chǔ)上設(shè)計(jì)了一個(gè)數(shù)?;旌戏抡孳浖脚_(tái)對(duì)該模型結(jié)構(gòu)進(jìn)行驗(yàn)證。本文設(shè)計(jì)并實(shí)現(xiàn)的數(shù)模混合仿真平臺(tái)針對(duì)工業(yè)級(jí)復(fù)雜電路能夠?qū)崿F(xiàn)流程化、模塊化、行為級(jí)的混合仿真,仿真速度和精確性均有較為良好的效果。數(shù)模混合電路仿真平臺(tái)以Simulink以系統(tǒng)級(jí)仿真作為頂層,通過協(xié)同仿真技術(shù)調(diào)用具有主流芯片和電路模型支持的業(yè)界標(biāo)準(zhǔn)仿真軟件PSpice和ModelSim作為底層的仿真引擎,實(shí)現(xiàn)數(shù)據(jù)交互,通過添加電路模塊拓?fù)渑判蚝蛿?shù)據(jù)轉(zhuǎn)換的方法控制數(shù)據(jù)流流向,實(shí)現(xiàn)快速,高效的數(shù)?;旌戏抡妗?/p>
優(yōu)點(diǎn):通過黏合模式設(shè)計(jì)思想和協(xié)同仿真技術(shù),將PSpice軟件的高精度與ModelSim的高性能有效的結(jié)合起來,使得基于Simulink的數(shù)?;旌戏抡婕夹g(shù)有良好的性能和精確性。
同樣存在不足之處,電路拆分功能過于依賴專家能力,降低了本平臺(tái)的自動(dòng)化程度,后續(xù)需要做出改進(jìn),故障仿真功能還未完善,后續(xù)需要添加。