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