1 引 言 隨著市場(chǎng)需求的增長(zhǎng),超大規(guī)模集成電路的集成度和工藝水平不斷提高,在一個(gè)芯片上完成系統(tǒng)級(jí)的設(shè)計(jì)已成為可能。FPGA固有的并行運(yùn)算處理能力,使得它能夠提供各種數(shù)字化所需要的大量復(fù)雜運(yùn)算,適合于設(shè)計(jì)一些對(duì)處理速度和實(shí)時(shí)性要求較高的智能控制器。近幾年,基于VHDL描述,F(xiàn)PGA實(shí)現(xiàn)的控制器設(shè)計(jì)研究比較活躍,如Torralba等人完成了4輸入、12個(gè)隸屬度、64條規(guī)則的模糊邏輯控制器的FPGA實(shí)現(xiàn),Cirstea等人基于FPGA設(shè)計(jì)模糊控制器,成功的用于變速器的控制。另外,由于FPGA設(shè)計(jì)的靈活性和通用性,使得基于FPGA的控制器開發(fā)效率高,成本低,上市時(shí)間短。 由于FPGA在智能控制器方面的大量使用,設(shè)計(jì)后的測(cè)試便成了設(shè)計(jì)者在開發(fā)過程中必須重點(diǎn)考慮的問題,同時(shí),一種好的測(cè)試方法不僅能及早發(fā)現(xiàn)設(shè)計(jì)中存在的問題,而且能提高設(shè)計(jì)的可靠性。目前基于VHDL描述的智能控制器測(cè)試一般是通過開環(huán)時(shí)序仿真來驗(yàn)證其邏輯設(shè)計(jì)的正確性,而對(duì)于一些輸入激勵(lì)信號(hào)不固定或比較多的智能控制器來說,開環(huán)時(shí)序仿真并不能確切模擬控制器的激勵(lì)輸入信號(hào)。由此,本文在開環(huán)時(shí)序仿真的基礎(chǔ)上提出一種基于QuartusII、DSP Builder和Modelsim的閉環(huán)時(shí)序仿真測(cè)試方法,并借助于某一特定智能控制器的設(shè)計(jì)對(duì)該閉環(huán)測(cè)試方法進(jìn)行了較為深入的研究。 2 FPGA設(shè)計(jì)與測(cè)試平臺(tái) 研究采用QuartusII4.0、 DSP Builder3.0以及Modelsim SE6.0作為FPGA的設(shè)計(jì)及測(cè)試平臺(tái)。 QuartusII4.0是Altera公司的第四代可編程邏輯器件集成開發(fā)環(huán)境,提供從設(shè)計(jì)輸入、設(shè)計(jì)編譯、 功能仿真、設(shè)計(jì)處理、時(shí)序仿真到器件編程的全部功能。同時(shí),它可以產(chǎn)生并識(shí)別EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog HDL網(wǎng)表文件,并且為其它EDA工具提供了方便的接口。可以在上面自動(dòng)運(yùn)行其它EDA工具,包括Synplicity的Synplify/Synplify Pro、Mentor Graphics子公司Exemplar Logic 的LeonardoSpectrum以及Synopsys的FPGA CompilerII等。這些綜合軟件能以很高的效率將VHDL/Verilog設(shè)計(jì)軟件轉(zhuǎn)換為針對(duì)選定器件的標(biāo)準(zhǔn)網(wǎng)表文件。此外,QuartusII4.0里還集成了一個(gè)SOPC Builder開發(fā)工具,支持SOPC開發(fā)。 DSP Builder以Matlab/Simulink的Blockset形式出現(xiàn),可以在Simulink中進(jìn)行圖形化設(shè)計(jì)和仿真,同時(shí)通過Signal Compiler可以將Matlab/Simulink的設(shè)計(jì)文件(.mdl)轉(zhuǎn)換成相應(yīng)的VHDL文件(.vhd),以及用于控制綜合與編譯的TCL腳本。 Mentor Graphics公司的Modelsim是業(yè)界中比較好的仿真工具,其仿真功能強(qiáng)大,支持模擬波形顯示,且圖形化界面友好,具有結(jié)構(gòu)、信號(hào)、波形、進(jìn)程和數(shù)據(jù)流等窗口。 通過綜合使用上述三種平臺(tái),可以很好的規(guī)劃設(shè)計(jì)流程,充分利用各個(gè)工具的優(yōu)點(diǎn),提高開發(fā)效率,所得的測(cè)試結(jié)果也更加可靠。 3 智能控制器的VHDL設(shè)計(jì)及測(cè)試特點(diǎn) 以模糊自整定PID控制器為例,其位置式控制算法為: ui = Kp ei+Ki T∑ei+Kd/T(ei-ei-1)+u0 ; 3.1 其中:Kp = kp+tp×△Kp、Ki = ki+ti×△Ki、Kd = kd+td×△Kd為PID控制器實(shí)時(shí)參數(shù);△Kp、△Ki、△Kd為模糊推理得出的修正值。模糊推理過程采取Mamdani直接推理法,采用質(zhì)心法求取相應(yīng)的最終精確值。 基于VHDL描述的模糊自整定PID控制器設(shè)計(jì)采用自頂向下設(shè)計(jì)方法,在RTL級(jí)對(duì)各個(gè)單元模塊進(jìn)行設(shè)計(jì)描述,用結(jié)構(gòu)VHDL將各個(gè)單元通過單元映射(PORT MAP)聯(lián)系起來,組成整個(gè)控制器芯片。控制器芯片的核心是控制與運(yùn)算單元,涉及基本的數(shù)據(jù)處理、存儲(chǔ)和I/O控制。其頂層模塊的電路原理圖如圖1所示。 圖1控制器頂層模塊電路原理圖 其中:control:控制模塊,產(chǎn)生存儲(chǔ)器內(nèi)數(shù)據(jù)的讀寫地址;ram:存儲(chǔ)模塊,存儲(chǔ)外部采集來的數(shù)據(jù);accum:累加模塊,累加10次,讀進(jìn)存儲(chǔ)器的數(shù)據(jù);max_min:求Max/Min模塊,對(duì)采集來的數(shù)據(jù)進(jìn)行最大最小值求解;sub:減法模塊,剔除Max/Min;average_8:濾波模塊,對(duì)剔除后的數(shù)據(jù)進(jìn)行8次平均濾波;compare:比較模塊,與給定值相比較,產(chǎn)生偏差e;delay:延遲模塊,產(chǎn)生偏差的變化率ec;fpid:模糊自整定PID控制器模塊,產(chǎn)生控制器的輸出信號(hào)。 本系統(tǒng)中,A/D采用AD574A,其轉(zhuǎn)換速度最大為35μs,轉(zhuǎn)換精度小于等于0.05%。在用VHDL設(shè)計(jì)A/D的I/O模塊時(shí),采用的是狀態(tài)機(jī)描述。狀態(tài)機(jī)分為5個(gè)狀態(tài):STATE0:實(shí)現(xiàn)A/D574的初始化;STATE1:產(chǎn)生片選信號(hào),啟動(dòng)轉(zhuǎn)換;STATE2:STATUS電平監(jiān)測(cè),狀態(tài)切換;STATE3:8位輸出數(shù)據(jù)有效;STATE4:由Lock信號(hào)對(duì)數(shù)據(jù)進(jìn)行鎖存。 基于VHDL語言描述的智能控制器測(cè)試特點(diǎn)是:控制器模塊可以作為一個(gè)獨(dú)立模塊通過開環(huán)時(shí)序測(cè)試基準(zhǔn)對(duì)其邏輯功能的正確性進(jìn)行測(cè)試。但是,對(duì)于控制系統(tǒng)來說,我們更關(guān)心的是在典型輸入信號(hào)作用下,系統(tǒng)輸出的時(shí)間響應(yīng)過程,包括動(dòng)態(tài)過程和穩(wěn)態(tài)過程,因此采用閉環(huán)時(shí)序測(cè)試顯得尤為必要。 4 基于FPGA的智能控制器開環(huán)時(shí)序測(cè)試 基于FPGA的智能控制器開環(huán)時(shí)序測(cè)試機(jī)理是:通過連接激勵(lì)實(shí)體和在測(cè)模塊,將在測(cè)模塊的輸出響應(yīng)值同期望值相比較來驗(yàn)證控制器設(shè)計(jì)是否符合設(shè)計(jì)要求,設(shè)計(jì)者可以用QuartusII軟件的波形編輯器產(chǎn)生作為仿真器激勵(lì)的向量波形文件(.vwf),也可以使用基于文本的向量文件(.vec)作為仿真器的激勵(lì)。其中VWF使用圖形化的波形形式描述了仿真器的輸入向量和仿真的輸出結(jié)果,而VEC則使用一種特殊格式的文件為模塊中的輸入信號(hào)和向量添加激勵(lì),這是目前設(shè)計(jì)中最常采用的測(cè)試方法。模糊自整定PID控制器開環(huán)時(shí)序仿真測(cè)試如圖2所示。 圖2控制器開環(huán)時(shí)序仿真圖 圖2為基于Altera公司FPGA器件EP20K200EQC240-1的模糊自整定PID控制器閉環(huán)輸出時(shí)序仿真結(jié)果。 其中:clk:系統(tǒng)時(shí)鐘;clkc:控制器采樣時(shí)鐘;reset:系統(tǒng)復(fù)位信號(hào);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ì)信號(hào)偏差e和偏差變化率ec是通過波形編輯器手工編輯獲得,輸入比較繁瑣,它們值的獲取是借助于MATLAB的仿真曲線,因此并不能完全模擬智能控制器的實(shí)時(shí)激勵(lì)信號(hào)。 為了能更好的模擬控制器的輸入行為,使測(cè)試結(jié)果更加可靠,本文在上述測(cè)試基礎(chǔ)上,提出一種新的基于FPGA設(shè)計(jì)工具QuartusII、DSP Builder以及Modelsim的智能控制器閉環(huán)時(shí)序測(cè)試方法。 5 基于FPGA的智能控制器閉環(huán)時(shí)序測(cè)試 在自動(dòng)控制系統(tǒng)設(shè)計(jì)中,控制器的設(shè)計(jì)與測(cè)試通常采用閉環(huán)控制系統(tǒng),通過觀察對(duì)象的輸出來判斷控制器性能是否符合設(shè)計(jì)的要求。Altera公司推出的數(shù)字信號(hào)處理工具DSP Builder,結(jié)合MathWorks的Matlab和Simulink,為在QuartusII中所做的設(shè)計(jì)提供了一種新的測(cè)試方法。本次研究采用的測(cè)試流程如下:首先,在Matlab的Simulink中用DSP Builder搭建測(cè)試模塊,運(yùn)行無誤后,用Signal Compiler將(.mdl)文件轉(zhuǎn)換成Modelsim可以識(shí)別的TCL腳本文件和VHDL文件,其次,對(duì)生成的VHDL文件及TCL腳本進(jìn)行設(shè)置,最后,在Modelsim中運(yùn)行測(cè)試文件,查看測(cè)試結(jié)果。DSP Builder下模糊自整定PID控制器的模塊圖如圖3所示。圖中fpid模塊為用戶自定義模塊,是通過DSP Builder的SubSystemBuilder模塊導(dǎo)入的,使用該模塊可以方便的將QuartusII中VHDL設(shè)計(jì)文件的輸入輸出引腳信號(hào)引入Simulink系統(tǒng)中。 圖3 DSP Builder下模糊自整定PID控制器的模塊測(cè)試圖 運(yùn)行Signal Compiler,生成在Modelsim中使用的TCL腳本文件,因?yàn)樵赟imulink中添加的用戶自定義模塊是以黑盒的形式出現(xiàn),因此,在該測(cè)試環(huán)境中要將模糊自整定PID控制器的各個(gè)子模塊文件添加到TCL腳本文件中,例如要將子模塊文件pid.vhd添加到TCL腳本文件中,使用vcom -93 -explicit -work work "$workdir/pid.vhd"即可。 使用DSP Builder時(shí)需要注意以下兩點(diǎn): (1)如果沒有使用來自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)的采樣頻率。對(duì)于這些模塊,其時(shí)鐘引腳都不會(huì)直接顯示在Simulink設(shè)計(jì)圖上,但當(dāng)使用Signal Compiler將設(shè)計(jì)轉(zhuǎn)化為VHDL文件時(shí),系統(tǒng)會(huì)自動(dòng)地把時(shí)序模塊的時(shí)鐘引腳都連在一起,并與系統(tǒng)的單一時(shí)鐘相接。 (2)將一個(gè)已經(jīng)定制完成的VHDL設(shè)計(jì)實(shí)體加入到DSP Builder設(shè)計(jì)系統(tǒng)中時(shí),即使在原設(shè)計(jì)中已經(jīng)使用了同步復(fù)位和時(shí)鐘信號(hào),也必須在該實(shí)體中定義同步清零和時(shí)鐘輸入信號(hào)。而且,這兩個(gè)輸入信號(hào)必須與目標(biāo)器件的全局時(shí)鐘引腳和全局同步清零引腳相接。如果實(shí)體不需要時(shí)鐘或全局同步清零腳,也應(yīng)當(dāng)定義這些輸入信號(hào),只是不要連接。 以被控對(duì)象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(相對(duì)增益為0.992),輸出值從0上升到峰值148(相對(duì)增益為1.156)后迅速回落,最后穩(wěn)定在127,測(cè)試結(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)。 (2) 利用QuartusII進(jìn)行智能控制器的VHDL設(shè)計(jì),通過DSP Builder和Modelsim對(duì)在QuartusII中所做的設(shè)計(jì)進(jìn)行閉環(huán)測(cè)試,解決了測(cè)試樣本的輸入源以及控制器的輸入樣本提取問題,能有效模擬控制器的輸入行為,提高了設(shè)計(jì)及測(cè)試的靈活性,同時(shí),測(cè)試結(jié)果可靠且更有說服力。 (3) 使用DSP Builder和Modelsim使我們擺脫了以往的測(cè)試習(xí)慣,控制器的激勵(lì)輸入信號(hào)可以方便的調(diào)用Simulink的模塊,對(duì)象也可以根據(jù)需要靈活改變,不需要再用VHDL語言編寫,而且Modelsim支持信號(hào)的模擬波形顯示,使我們能夠看到最直觀的圖形。 (4) 測(cè)試在系統(tǒng)設(shè)計(jì)中占有舉足輕重的作用,它貫穿整個(gè)設(shè)計(jì)的始終,采用閉環(huán)時(shí)序測(cè)試方法,結(jié)合DSP Builder和Modelsim完成智能控制器各個(gè)階段的測(cè)試經(jīng)實(shí)驗(yàn)驗(yàn)證是一較好的測(cè)試方法,適合于像控制器這類需閉環(huán)檢驗(yàn)其控制品質(zhì)的設(shè)計(jì)。 參考文獻(xiàn): .T Lund. The architecture of an FPGA-style programmable fuzzy logic controller chip. 5th Australasian Computer Archit ecture Conference, 2000. Cirstea, et.al.. FPGA fuzzy logic controller for variable speed generators. Proceedings of the IEEE International Conference on Control Application, 2001,301~304. Altera Corporation, QuartusⅡVersion 4.0 Software. . 王遠(yuǎn),魏震生,張衛(wèi)杰,路平. 軟件自動(dòng)測(cè)試技術(shù)在硬件描述語言中的應(yīng)用. 測(cè)控技術(shù),2001, |