文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2011)11-0048-04
1 Xilinx System Generator簡介
Xilinx System Generator 是專門為數(shù)字信號(hào)算法處理而推出的模型化設(shè)計(jì)平臺(tái),可以快速、簡單地將DSP系統(tǒng)的抽象算法轉(zhuǎn)換成可綜合的、可靠的硬件系統(tǒng),彌補(bǔ)了大部分對(duì)C語言以及Matlab工具很熟悉的DSP工程師對(duì)于硬件描述語言VHDL和Verilog HDL認(rèn)識(shí)不足的缺陷[1]。
System Generator作為一個(gè)硬件設(shè)計(jì)工具包安裝在Matlab軟件中,提供了相當(dāng)豐富的應(yīng)用子模塊[2]。設(shè)計(jì)者如同使用Matlab中其他模塊一樣,通過拖拽和連接就可以將子模塊搭建成一個(gè)完整的應(yīng)用系統(tǒng)。
2 增量式PID數(shù)字算法原理
在PID控制算法的應(yīng)用中有位置式和增量式兩種[3-4]。位置式PID控制算法中因運(yùn)用了誤差的累加,控制的輸出量與過去所有時(shí)間的狀態(tài)有關(guān),所以位置式PID控制算法的累積誤差相對(duì)較大。而增量式PID控制算法中的調(diào)整量只是與當(dāng)前及前兩個(gè)狀態(tài)有關(guān),并且增量式PID算法只是控制每次的輸出增量,而且一般執(zhí)行機(jī)構(gòu)都帶有記憶功能,一旦控制器出錯(cuò),能保持住原位,不會(huì)嚴(yán)重影響到系統(tǒng)的工作。
PID數(shù)學(xué)模型:
3 在System Generator中建立PID算法模型
根據(jù)公式(4)的增量式數(shù)字PID模型,可在Xilinx System Generator工具包中調(diào)用相關(guān)子函數(shù)模塊來構(gòu)建整個(gè)函數(shù)[5],如圖1所示。
設(shè)計(jì)中使用了自定義函數(shù)模塊(Mcode),該模塊是Xilinx System Generator中提供給DSP設(shè)計(jì)者的可編程邏輯模塊,可以使用Matlab語言編寫符合設(shè)計(jì)者要求的子函數(shù)。Mcode模塊分別支持控制邏輯、狀態(tài)邏輯、二位除法運(yùn)算以及定點(diǎn)數(shù)運(yùn)算等邏輯運(yùn)算,并可靈活地定義輸入輸出的個(gè)數(shù)以及輸出數(shù)據(jù)的類型。最終在生成硬件邏輯時(shí)自動(dòng)將Mcode中的代碼轉(zhuǎn)換成VHDL/Verilog硬件描述語言。另外,由于生成的是邏輯控制,對(duì)設(shè)計(jì)者來說運(yùn)用起來十分便利,并且該模塊中的代碼在生成為硬件邏輯以后,幾乎是并行直接輸出,速度和效率都非常高。如圖2所示,在Mcode模塊中寫入了代碼之后,會(huì)生成對(duì)應(yīng)的自定義函數(shù)模塊。
4 控制對(duì)象與控制算法的級(jí)聯(lián)
在PID算法模塊構(gòu)建完成以后,需要嵌入到實(shí)際的控制對(duì)象中以達(dá)到預(yù)期的控制目的。
實(shí)驗(yàn)采用的是一階RC控制對(duì)象,該對(duì)象在實(shí)驗(yàn)中可以明顯有效地將控制效果反映出來。PID閉環(huán)控制系統(tǒng)框圖如圖3所示。對(duì)于一階RC控制對(duì)象,選擇電壓作為輸出的控制量,在設(shè)計(jì)中加入了A/D 以及D/A轉(zhuǎn)換模塊來完成采樣和控制量的輸出。
實(shí)驗(yàn)平臺(tái)采用Xilinx公司的Spartan3E Start Kit,其中帶有兩路14 bit的A/D(LTC1407)輸入以及4路16 bit
(2)在PID算法的輸入與輸出端搭建數(shù)據(jù)轉(zhuǎn)換模塊。由于通過A/D采樣得到的數(shù)據(jù)和D/A輸出的數(shù)據(jù)都是二進(jìn)制,而PID算法模塊中使用的是十進(jìn)制數(shù)據(jù),并且小數(shù)點(diǎn)的位數(shù)也不一樣,所以需要在PID算法的輸入和輸出端插入數(shù)據(jù)轉(zhuǎn)換模塊。另外還必須加入Gateway in和Gateway out來實(shí)現(xiàn)數(shù)據(jù)的前端輸入和后端輸出。PID控制器完整模型如圖5所示。
(3)用System Generator生成PID算法工程文件后導(dǎo)入到ISE工程中。雙擊圖5中的System Generator模塊,選擇HDL\netlist和生成路徑后點(diǎn)擊Generator,就能自動(dòng)生成相應(yīng)的VHDL/Verilog硬件語言代碼。在工程的頂層文件下把生成的sgp工程添加進(jìn)去,例化后嵌入到工程中。
(4)在頂層文件中由狀態(tài)機(jī)安排好各個(gè)模塊之間的時(shí)序。
(5)綜合工程,分析時(shí)鐘時(shí)序是否滿足工程要求,工程時(shí)序分析如表1所示。需要時(shí)可添加時(shí)鐘管理器(DCM)確保時(shí)序的正常進(jìn)行。
(6)連線并把BIT文件下載到開發(fā)板中,用示波器察看實(shí)際效果。
5 實(shí)驗(yàn)數(shù)據(jù)分析
實(shí)驗(yàn)中使用了D/A 4路輸出信號(hào)中的2路:A路輸出控制量;B路輸出1 V~2 V的方波電壓作為給定值,同時(shí)方波電壓接到另一個(gè)完全相同的一階RC電路上,讓其與通過PID調(diào)節(jié)后的被控對(duì)象作對(duì)比。圖6(a)~圖6(d)表示了頻率為100 Hz時(shí),在不同參數(shù)條件下的實(shí)驗(yàn)結(jié)果。
從實(shí)驗(yàn)結(jié)果可知,在FPGA中構(gòu)建的PID控制器完全能達(dá)到預(yù)期的效果,而且實(shí)驗(yàn)結(jié)果是通過示波器觀測到的實(shí)測結(jié)果,證明了在FPGA中實(shí)現(xiàn)算法硬件化是可行的,并且控制算法在硬件中運(yùn)行的實(shí)測數(shù)據(jù)和仿真出來的模擬數(shù)據(jù)相比,實(shí)測數(shù)據(jù)更有說服力。
用FPGA作為嵌入式算法平臺(tái),在算法運(yùn)行速度上與其他嵌入式算法平臺(tái)相比有著特定的優(yōu)勢,利用Xilinx的System Generator工具能夠快速簡單地完成算法構(gòu)建并可直接完成硬件實(shí)現(xiàn)。雖然本文采用的是一階RC電路作為控制對(duì)象,即使換成是二階或者是耦合控制對(duì)象同樣能夠達(dá)到比較理想的控制效果。特別是對(duì)于大運(yùn)算量的算法(如矩陣運(yùn)算等),在FPGA資源充裕的情況下,可以達(dá)到其他控制器無法達(dá)到的處理速度,而且基于FPGA的可編程性,對(duì)于算法的修正、升級(jí)和驗(yàn)證都十分靈活,更使算法的硬件實(shí)現(xiàn)變得實(shí)用。缺點(diǎn)是FPGA對(duì)于時(shí)序較為嚴(yán)格,在工程中需要對(duì)整個(gè)工程的時(shí)序進(jìn)行分析,以確保滿足時(shí)序要求,而且如果是自己編寫一些執(zhí)行機(jī)構(gòu)的驅(qū)動(dòng),仍需要將驅(qū)動(dòng)部分也考慮進(jìn)去,必要時(shí)需要添加約束。
參考文獻(xiàn)
[1] 孟憲元,錢偉康.FPGA嵌入式系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2007.
[2] 紀(jì)志成.FPGA數(shù)字信號(hào)處理設(shè)計(jì)教程—System Generator入門與提高[M].西安:西安電子科技大學(xué)出版社,2008.
[3] 彭小衛(wèi).基于System Generator的Gardner 算法設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2010(7):16-18.
[4] 蔡曉寧.數(shù)字PID控制器的硬件優(yōu)化設(shè)計(jì)[J].中國科學(xué)院研究生院學(xué)報(bào),2010(9):690-694.
[5] Shi Changchun,Hwang James,McMILLAN S,et al.A system level resource estimation tool for FPGAs[C].14th International Conference,F(xiàn)PL 2004,Leuven,Belgium,2004:424-433.