<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 解析基于FPGA的智能控制器設(shè)計(jì)及測試方法

          解析基于FPGA的智能控制器設(shè)計(jì)及測試方法

          作者: 時(shí)間:2012-06-11 來源:網(wǎng)絡(luò) 收藏

           圖2控制器開環(huán)時(shí)序仿真圖

            圖2為基于Altera公司器件EP20K200EQC240-1的模糊自整定PID控制器閉環(huán)輸出時(shí)序仿真結(jié)果。
            其中:clk:系統(tǒng)時(shí)鐘;clkc:控制器采樣時(shí)鐘;reset:系統(tǒng)復(fù)位信號;e:偏差;ec:偏差的變化率;u:控制器輸出。
            時(shí)序仿真結(jié)果參數(shù):Total logic elements:1092 / 8,320 ( 25 % );Total memory bits:4096 / 106,496 ( 3% );Clk setup:38.86 MHz;Clkc setup:221.39MHz;Tsu:8.864ns;Tco:7.809 ns。
            圖2中控制器的激勵(lì)信號偏差e和偏差變化率ec是通過波形編輯器手工編輯獲得,輸入比較繁瑣,它們值的獲取是借助于MATLAB的仿真曲線,因此并不能完全模擬的實(shí)時(shí)激勵(lì)信號。 為了能更好的模擬控制器的輸入行為,使測試結(jié)果更加可靠,本文在上述測試基礎(chǔ)上,提出一種新的基于設(shè)計(jì)工具QuartusII、DSP Builder以及Modelsim的閉環(huán)時(shí)序測試方法。
            5 基于閉環(huán)時(shí)序測試
            在自動控制系統(tǒng)設(shè)計(jì)中,控制器的設(shè)計(jì)與測試通常采用閉環(huán)控制系統(tǒng),通過觀察對象的輸出來判斷控制器性能是否符合設(shè)計(jì)的要求。Altera公司推出的數(shù)字信號處理工具DSP Builder,結(jié)合MathWorks的Matlab和Simulink,為在QuartusII中所做的設(shè)計(jì)提供了一種新的測試方法。本次研究采用的測試流程如下:首先,在Matlab的Simulink中用DSP Builder搭建測試模塊,運(yùn)行無誤后,用Signal Compiler將(.mdl)文件轉(zhuǎn)換成Modelsim可以識別的TCL腳本文件和文件,其次,對生成的文件及TCL腳本進(jìn)行設(shè)置CONTROL ENGINEERING China版權(quán)所有,最后,在Modelsim中運(yùn)行測試文件,查看測試結(jié)果。DSP Builder下模糊自整定PID控制器的模塊圖如圖3所示。圖中fpid模塊為用戶自定義模塊,是通過DSP Builder的SubSystemBuilder模塊導(dǎo)入的,使用該模塊可以方便的將QuartusII中設(shè)計(jì)文件的輸入輸出引腳信號引入Simulink系統(tǒng)中。

          圖3 DSP Builder下模糊自整定PID控制器的模塊測試圖

            運(yùn)行Signal Compiler,生成在Modelsim中使用的TCL腳本文件控制工程網(wǎng)版權(quán)所有,因?yàn)樵赟imulink中添加的用戶自定義模塊是以黑盒的形式出現(xiàn),因此,在該測試環(huán)境中要將模糊自整定PID控制器的各個(gè)子模塊文件添加到TCL腳本文件中,例如要將子模塊文件pid.vhd添加到TCL腳本文件中,使用vcom -93 -explicit -work work "$workdir/pid.vhd"即可。
            使用DSP Builder時(shí)需要注意以下兩點(diǎn):
           ?。?)如果沒有使用來自Rate Change庫中的鎖相環(huán)模塊PLL,在Simulink設(shè)計(jì)轉(zhuǎn)換成硬件系統(tǒng)的過程中,DSP Builder將使用同步設(shè)計(jì)規(guī)則,即在設(shè)計(jì)系統(tǒng)中的所有DSP Builder時(shí)序模塊(如圖3中的Delay1模塊)都以單一時(shí)鐘的上升沿同步工作,這個(gè)時(shí)鐘頻率即為整個(gè)系統(tǒng)的采樣頻率。對于這些模塊,其時(shí)鐘引腳都不會直接顯示在Simulink設(shè)計(jì)圖上,但當(dāng)使用Signal Compiler將設(shè)計(jì)轉(zhuǎn)化為VHDL文件時(shí),系統(tǒng)會自動地把時(shí)序模塊的時(shí)鐘引腳都連在一起,并與系統(tǒng)的單一時(shí)鐘相接。
           ?。?)將一個(gè)已經(jīng)定制完成的VHDL設(shè)計(jì)實(shí)體加入到DSP Builder設(shè)計(jì)系統(tǒng)中時(shí)CONTROL ENGINEERING China版權(quán)所有,即使在原設(shè)計(jì)中已經(jīng)使用了同步復(fù)位和時(shí)鐘信號,也必須在該實(shí)體中定義同步清零和時(shí)鐘輸入信號。而且,這兩個(gè)輸入信號必須與目標(biāo)器件的全局時(shí)鐘引腳和全局同步清零引腳相接。如果實(shí)體不需要時(shí)鐘或全局同步清零腳,也應(yīng)當(dāng)定義這些輸入信號,只是不要連接。
            以被控對象G(s)=4.71×e-0.15s/(0.4s+1)(1.2s+1) 為例,考慮到A/D、D/A的影響,加入零階保持器(1-e-TS)/S,Modelsim中閉環(huán)控制系統(tǒng)的輸出曲線如圖4所示,系統(tǒng)的給定值為127(相對增益為0.992),輸出值從0上升到峰值148(相對增益為1.156)后迅速回落,最后穩(wěn)定在127,測試結(jié)果與MATLAB的仿真結(jié)果基本相同。

          圖4 系統(tǒng)閉環(huán)輸出曲線

            6 結(jié) 論
            (1) 基于FPGA構(gòu)建智能控制器具有設(shè)計(jì)靈活、能在線調(diào)整、可靠性高,開發(fā)周期短等優(yōu)點(diǎn)。特別適于中小型系統(tǒng)。
           ?。?) 利用QuartusII進(jìn)行智能控制器的VHDL設(shè)計(jì),通過DSP Builder和Modelsim對在QuartusII中所做的設(shè)計(jì)進(jìn)行閉環(huán)測試,解決了測試樣本的輸入源以及控制器的輸入樣本提取問題,能有效模擬控制器的輸入行為,提高了設(shè)計(jì)及測試的靈活性,同時(shí),測試結(jié)果可靠且更有說服力。
           ?。?) 使用DSP Builder和Modelsim使我們擺脫了以往的測試習(xí)慣,控制器的激勵(lì)輸入信號可以方便的調(diào)用Simulink的模塊,對象也可以根據(jù)需要靈活改變,不需要再用VHDL語言編寫,而且Modelsim支持信號的模擬波形顯示,使我們能夠看到最直觀的圖形。
           ?。?) 測試在系統(tǒng)設(shè)計(jì)中占有舉足輕重的作用,它貫穿整個(gè)設(shè)計(jì)的始終,采用閉環(huán)時(shí)序測試方法,結(jié)合DSP Builder和Modelsim完成智能控制器各個(gè)階段的測試經(jīng)實(shí)驗(yàn)驗(yàn)證是一較好的測試方法,適合于像控制器這類需閉環(huán)檢驗(yàn)其控制品質(zhì)的設(shè)計(jì)。


          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA VHDL 仿真測試 智能控制器

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();