現(xiàn)代模擬仿真技術(shù)[1]廣泛應(yīng)用在系統(tǒng)設(shè)計(jì)、系統(tǒng)分析以及教育訓(xùn)練中。在模擬過程中,存在大量向前端模擬裝置或仿真模塊發(fā)送指令數(shù)據(jù),以及從模擬工作設(shè)備上讀取狀態(tài)參量的情況。在對(duì)大型工業(yè)設(shè)備和系統(tǒng)進(jìn)行模擬仿真時(shí),數(shù)據(jù)采集控制的復(fù)雜程度愈加惡劣[2]。通過改進(jìn)數(shù)據(jù)采集控制器的結(jié)構(gòu),提高數(shù)據(jù)采集控制器的自動(dòng)化和集成化程度,可以有效地提高大型模擬仿真設(shè)備數(shù)據(jù)采集和控制的效率。
FPGA及SoPC技術(shù)的發(fā)展為此提供了新的解決方案。IP核(IP Core)是具有特定電路功能的硬件描述語言程序,可較方便地進(jìn)行修改和定制,以提高設(shè)計(jì)效率[3]。本文研究了基于FPGA的數(shù)據(jù)采集控制器IP 核的設(shè)計(jì)方案和實(shí)現(xiàn)方法,該IP核既可以應(yīng)用在獨(dú)立IC芯片上,還可作為合成系統(tǒng)的子模塊直接調(diào)用,實(shí)現(xiàn)IP核的復(fù)用。
1 系統(tǒng)結(jié)構(gòu)
數(shù)據(jù)采集控制器主要分為發(fā)送機(jī)制和接收機(jī)制兩部分。在傳統(tǒng)的模擬仿真系統(tǒng)[4]中,發(fā)送機(jī)制負(fù)責(zé)將模擬仿真系統(tǒng)主機(jī)控制程序模擬運(yùn)算的數(shù)據(jù)傳給事先定義的變量,通過專用接口卡將其放在絕對(duì)內(nèi)存地址單元中,再借助智能雙端口的工控機(jī)將數(shù)據(jù)發(fā)至前端,以驅(qū)動(dòng)前端設(shè)備(如儀表、顯示燈等)進(jìn)行顯示,或使前端設(shè)備(如開關(guān)、閥門、步進(jìn)電機(jī)等)進(jìn)行動(dòng)作;接收機(jī)制與之相反,即實(shí)時(shí)地將從前端工控機(jī)采集的模擬設(shè)備的動(dòng)作量和狀態(tài)量(包括模擬實(shí)際情況的溫度量、壓力量等)讀到計(jì)算機(jī)內(nèi)存地址單元中,并通過專寫程序把這些變量值轉(zhuǎn)換成主控程序所需要的數(shù)據(jù)。
前端設(shè)備種類繁多,因此實(shí)際中需有針對(duì)性地進(jìn)行設(shè)計(jì),以實(shí)現(xiàn)工控機(jī)對(duì)前端設(shè)備的控制。此外,工控機(jī)與主機(jī)之間還必須通過專用接口進(jìn)行通信,如圖1所示。其結(jié)構(gòu)復(fù)雜,不利于設(shè)計(jì)和調(diào)試,同時(shí)降低了模擬仿真系統(tǒng)的實(shí)時(shí)性和效率。
本文設(shè)計(jì)的IP 核將傳統(tǒng)結(jié)構(gòu)中工控機(jī)和接口卡兩級(jí)的數(shù)據(jù)采集控制系統(tǒng)結(jié)合起來,設(shè)計(jì)了一個(gè)集成的控制器,由其完全承擔(dān)主機(jī)與前端設(shè)備的數(shù)據(jù)交換與通信任務(wù)。這樣,主機(jī)僅負(fù)責(zé)對(duì)整個(gè)系統(tǒng)的監(jiān)控以及對(duì)模擬仿真模型的規(guī)格運(yùn)算,而不再分出資源來管理前端模擬設(shè)備的控制和數(shù)據(jù)采集,從而降低了系統(tǒng)的復(fù)雜度。結(jié)構(gòu)如圖2所示。
2 系統(tǒng)設(shè)計(jì)
基于前述數(shù)據(jù)采集控制過程,本IP核分發(fā)送數(shù)據(jù)和采集數(shù)據(jù)兩種處理機(jī)制進(jìn)行設(shè)計(jì)。相應(yīng)地,將本IP核內(nèi)部劃分為IP核控制邏輯模塊、數(shù)據(jù)模式轉(zhuǎn)換模塊、網(wǎng)絡(luò)通信模塊、寄存器模塊、總線模塊以及時(shí)鐘模塊六部分。其相互關(guān)系如圖3所示。
主要模塊功能及其特征描述如下:
(1)IP核控制邏輯模塊:負(fù)責(zé)整個(gè)IP核的控制與運(yùn)行,當(dāng)接收到主機(jī)發(fā)來的工作命令后,該模塊根據(jù)命令的種類(發(fā)送數(shù)據(jù)或采集數(shù)據(jù))向相應(yīng)的模塊發(fā)送控制命令;出現(xiàn)異常時(shí),本模塊根據(jù)事先定義好的規(guī)則對(duì)異常情況進(jìn)行處理;
(2)數(shù)據(jù)模式轉(zhuǎn)換模塊:該模塊在接收到IP核控制邏輯模塊發(fā)來的工作命令后,啟動(dòng)數(shù)字信號(hào)——模擬信號(hào)的轉(zhuǎn)換;
(3)網(wǎng)絡(luò)通信模塊:采用專用的快速以太網(wǎng)控制器,利用其內(nèi)部集成的控制器及協(xié)議棧,可以方便地與前端模擬設(shè)備連接通信;同時(shí)利用其支持10/100 M全雙工傳輸模式的性能,實(shí)現(xiàn)快速收發(fā)數(shù)據(jù)的目的;
(4)寄存器模塊:包括寄存器訪問和寄存器單元兩部分。寄存器訪問部分的作用在于,當(dāng)寄存器訪問程序被IP核控制邏輯選中調(diào)用時(shí),IP核控制邏輯可通過其對(duì)寄存器單元進(jìn)行讀或?qū)懖僮髟L問;寄存器單元部分作為發(fā)送或采集機(jī)制流水線工作時(shí),數(shù)據(jù)流動(dòng)的中間暫存介質(zhì)?;诒鞠到y(tǒng)的設(shè)計(jì)目標(biāo),選擇SDRAM作為寄存器單元的硬件支撐,因其讀寫時(shí)序較復(fù)雜,需在本系統(tǒng)中集成專用的SDRAM控制器IP 核與其對(duì)接[5];
(5)總線模塊:負(fù)責(zé)各模塊之間信息的傳輸,如提供Avalon接口供寄存器訪問時(shí)使用,它使用Avalon必需的信號(hào)來訪問寄存器,并支持任務(wù)邏輯傳輸類型[6];
(6)時(shí)鐘模塊:產(chǎn)生相應(yīng)頻率的時(shí)鐘供給IP核,時(shí)鐘的頻率由系統(tǒng)時(shí)鐘頻率分頻所得。