王忠良 肖 華
摘 要:PID神經(jīng)網(wǎng)絡(luò)模塊是單變量或多變量非線性PID神經(jīng)網(wǎng)絡(luò)控制器的核心部分。從分析PID神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)原理入手,給出了PID神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)的環(huán)形電路結(jié)構(gòu),采用自頂向下的設(shè)計(jì)方法,利用VHDL語言設(shè)計(jì)和實(shí)現(xiàn)了3層PID神經(jīng)網(wǎng)絡(luò)模塊。仿真結(jié)果表明該模塊功能完全正確。綜合結(jié)果表明,該網(wǎng)絡(luò)的實(shí)現(xiàn)僅使用了175個(gè)LE和9個(gè)嵌入式硬件乘法器,最高時(shí)鐘頻率可達(dá)116 MHz。
關(guān)鍵詞:PID;神經(jīng)網(wǎng)絡(luò);VHDL;FPGA
中圖分類號(hào):TP18 文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)01-101-03
Realization of PID Neural Network Based on VHDL
WANG Zhongliang,XIAO Hua
(Tongling University,Tongling,244000,China)
Abstract:The core of nonlinear PID neural network controller with one variable and multi- variable is PID neural network module.The paper analyses the design theory of PID neural network,provids a ring circuit configuration to realize PID neural network module,designs and realizes 3-layer PID neural network module with top-down design methodology based on VHDL.The simulation suggests the module operates well.The synthesizing result shows that the realization of network only uses 175 LEs and 9 embedded hardware multipliers,the maximal frequency can reach 116 MHz.
Keywords:PID;neural network;VHDL;FPGA
0 引 言
數(shù)字PID控制是在生產(chǎn)過程中被普遍采用的控制方法,具有結(jié)構(gòu)簡(jiǎn)單、容易控制、參數(shù)能夠靈活整定的特點(diǎn)。但當(dāng)被控對(duì)象存在非線性和時(shí)變特性時(shí),傳統(tǒng)的PID控制器往往難以獲得滿意的控制效果。神經(jīng)網(wǎng)絡(luò)以其強(qiáng)大的信息綜合能力為解決復(fù)雜控制系統(tǒng)問題提供了理論基礎(chǔ),許多學(xué)者也通過軟件仿真的形式驗(yàn)證了神經(jīng)網(wǎng)絡(luò)控制的可行性并提出了一些新的算法,但由于沒有相應(yīng)的硬件支持,只通過軟件編程,利用串行方法來實(shí)現(xiàn)神經(jīng)網(wǎng)絡(luò)控制必然導(dǎo)致運(yùn)算速度低,難以保證實(shí)時(shí)控制。為此,研究人員提出了多種神經(jīng)網(wǎng)絡(luò)專用硬件實(shí)現(xiàn)的方法和技術(shù),包括FPGA(Field Programmable Gate Array)實(shí)現(xiàn)[1,2]、神經(jīng)芯片[3-6]以及DSP加速板等。近年來,隨著工藝的進(jìn)步,數(shù)字FPGA結(jié)構(gòu)靈活、通用性強(qiáng)、速度快、功耗低,用它來構(gòu)造神經(jīng)網(wǎng)絡(luò),可以靈活地實(shí)現(xiàn)各種運(yùn)算功能和學(xué)習(xí)規(guī)則,并且設(shè)計(jì)周期短、系統(tǒng)速度快、可靠性高。
隨著FPGA技術(shù)的不斷發(fā)展,各種智能控制策略的FPGA固核實(shí)現(xiàn)的研究隨之活躍。同時(shí),FPGA技術(shù)不但可作為ASIC的快速原型樣機(jī)驗(yàn)證,而且其低成本大容量的FPGA用于實(shí)現(xiàn)控制器已有可能與傳統(tǒng)的MCU相抗衡。FPGA的大容量、并行性、快速性、靈活性及可重配置性,將使它成為一種新型而有效的單片控制器。PID神經(jīng)網(wǎng)絡(luò)控制器的核心部件是PID神經(jīng)網(wǎng)絡(luò)[7,8],這里基于硬件描述語言(VHDL)描述PID神經(jīng)網(wǎng)絡(luò)并綜合成硬件電路,借助
FPGA現(xiàn)場(chǎng)可編程的特點(diǎn)完成PID神經(jīng)網(wǎng)絡(luò)的FPGA設(shè)計(jì)。
1 PID神經(jīng)網(wǎng)絡(luò)算法原理
PID神經(jīng)網(wǎng)絡(luò)是具有非線性特性的3層前向網(wǎng)絡(luò)。隱層節(jié)點(diǎn)分別為比例(P)、積分(I)、微分(D)單元,因此是動(dòng)態(tài)前饋網(wǎng)絡(luò)。PID神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,輸入層、隱層、輸出層節(jié)點(diǎn)為2,3,1個(gè)[9]。
其中,輸入層神經(jīng)元的輸入:
u(k)=[u1(k),u2(k)]
其輸出與輸入相等。
隱層第i個(gè)神經(jīng)元的輸入:
xi(k)=∑2j=1w ijuj(k), i=1,2,3
式中,w ij是輸入層第j個(gè)節(jié)點(diǎn)至隱層第i個(gè)節(jié)點(diǎn)的權(quán)值。
隱層比例、積分、微分神經(jīng)元的輸出qi(k),i=1,2,3,計(jì)算如下:
比例:q1(k)=x1(k);
積分:q2(k)=q2(k-1)+x2(k);
微分:q3(k)=x3(k)-x3(k-1)。
圖1 PID神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
輸出層神經(jīng)元的輸入是隱層各節(jié)點(diǎn)輸出的加權(quán)和:
x′(k)=∑3i=1hiqi(k)
式中,hi是隱層節(jié)點(diǎn)i至輸出節(jié)點(diǎn)的權(quán)值。
輸出層神經(jīng)元的輸出,即網(wǎng)絡(luò)的輸出:
y(k)=x′(k)
式中,k為時(shí)鐘信號(hào)。
PID神經(jīng)網(wǎng)絡(luò)是神經(jīng)PID控制的核心部分,網(wǎng)絡(luò)的輸入與輸出的函數(shù)關(guān)系為單調(diào)上升的非線性關(guān)系,它們之間的連接采用權(quán)的辦法實(shí)現(xiàn),每層網(wǎng)絡(luò)的輸入是其他神經(jīng)元輸出的加權(quán)和,因此在電路實(shí)現(xiàn)中需要完成:
(1) 實(shí)現(xiàn)兩個(gè)信號(hào)的相乘。在神經(jīng)網(wǎng)絡(luò)中權(quán)的數(shù)量很多,加權(quán)的計(jì)算都用乘法完成,因此對(duì)應(yīng)于兩個(gè)信號(hào)相乘的電路必不可少。
(2) 實(shí)現(xiàn)加權(quán)后脈沖累加。
(3) 實(shí)現(xiàn)比例、積分、微分運(yùn)算。
2 PID神經(jīng)網(wǎng)絡(luò)電路模型
PID神經(jīng)網(wǎng)絡(luò)中,乘法是利用與門進(jìn)行的。兩個(gè)脈沖序列通過“與”以后的輸出即為二者的乘積;兩個(gè)脈沖序列的占空比為1/2和1/3相“與”后,脈沖序列的占空比為1/6,從而達(dá)到相乘的目的。
權(quán)值存儲(chǔ)在寄存器中,寄存器可以與外界的計(jì)算機(jī)內(nèi)存或EPROM相聯(lián),因而權(quán)值可從外面寫入。這意味著權(quán)值的存儲(chǔ)和權(quán)值的改變沒有什么困難,可以設(shè)計(jì)出可重構(gòu)的神經(jīng)網(wǎng)絡(luò)模型。
累加器是用計(jì)數(shù)器完成的,從乘法器輸出的脈沖串經(jīng)過計(jì)數(shù)器實(shí)現(xiàn)累加,當(dāng)累加到達(dá)閾值時(shí)即作為神經(jīng)元的一個(gè)狀態(tài)輸出。
比例、積分、微分運(yùn)算可利用寄存器的延遲特性來完成。
圖2給出了PID神經(jīng)網(wǎng)絡(luò)的環(huán)形電路結(jié)構(gòu)示意圖[10]。圖中自下而上把網(wǎng)絡(luò)分成3層結(jié)構(gòu),輸入層xi值的確定,隱層比例、積分、微分運(yùn)算,輸出層y值的確定。輸入層在水平方向上有個(gè)大的環(huán)形移位寄存器結(jié)構(gòu),只使用一個(gè)輸入端口加載所有的權(quán)值,權(quán)值按照順序移位,直到每個(gè)寄存器都存儲(chǔ)相應(yīng)的權(quán)值,然后權(quán)值與輸入相乘并累加。輸出層也用環(huán)形移位寄存器來加載權(quán)值hi。
圖2 PID神經(jīng)網(wǎng)絡(luò)的環(huán)形電路結(jié)構(gòu)示意圖
3 PID神經(jīng)網(wǎng)絡(luò)FPGA實(shí)現(xiàn)
應(yīng)用Altera公司的Quartus Ⅱ工具和目標(biāo)芯片EP2C8Q208C7設(shè)計(jì)PID神經(jīng)網(wǎng)絡(luò)模塊。采用電路圖與 VHDL相結(jié)合、自上而下、分層次的方法設(shè)計(jì),其頂層原理圖如圖3所示。在頂層將PID神經(jīng)網(wǎng)絡(luò)模塊分四個(gè)功能模塊,然后再用VHDL語言實(shí)現(xiàn)各功能模塊,并對(duì)其進(jìn)行仿真驗(yàn)證。
圖3 PID神經(jīng)網(wǎng)絡(luò)頂層原理圖
圖3中pid_1,pid_2,pid_3分別實(shí)現(xiàn)xi,qi和y的計(jì)算,由于pid_3實(shí)現(xiàn)y輸出計(jì)算時(shí),采用環(huán)形移位寄存器實(shí)現(xiàn)h值的輸入需要3個(gè)時(shí)鐘周期,所以采用clk_3實(shí)現(xiàn)3分頻。主時(shí)鐘信號(hào)直接送給pid_3,分頻后的時(shí)鐘信號(hào)clkout送給pid_1和pid_2。
采用Quartus Ⅱ集成開發(fā)環(huán)境,PID神經(jīng)網(wǎng)絡(luò)的綜合結(jié)果如圖4所示。clk的最高頻率為116 MHz。
圖4 PID神經(jīng)網(wǎng)絡(luò)綜合結(jié)果
4 仿 真
PID神經(jīng)網(wǎng)絡(luò)運(yùn)算的仿真波形如圖5所示,為了觀測(cè)方便,在仿真時(shí)把輸入信號(hào)固定為 u1=
3,u2=4,clk時(shí)鐘周期為1 μs,分頻后的時(shí)鐘信號(hào)clkout為3 μs。程序中利用clkout來對(duì)權(quán)值w的移入,完成輸入層的計(jì)算需要6個(gè)clkout,隱層的PID運(yùn)算需要1個(gè)clkout。所以在圖5中,當(dāng)?shù)?個(gè)clkout上升沿到來時(shí), q值由第6個(gè)clkout上升沿到來后x的情況確定,此時(shí)的計(jì)算x值對(duì)應(yīng)的權(quán)值w[1..6]分別為[6,5,4,3,2,1],計(jì)算得q1=38,q2=54,q3=7。權(quán)值h的移入通過clk來完成,在第7個(gè)clkout上升沿后,權(quán)值h的輸入有3種:當(dāng)h[1,2,3]分別為[10,9,8]時(shí),計(jì)算出y=922,當(dāng)h[1,2,3]分別為[1,10,9]時(shí),計(jì)算出y=641;當(dāng)h[1,2,3]分別為[2,1,10]時(shí),計(jì)算出y=200。
圖5 PID神經(jīng)網(wǎng)絡(luò)仿真波形
5 結(jié) 語
神經(jīng)網(wǎng)絡(luò)隨著神經(jīng)元的增多,其在線計(jì)算量增大,硬件實(shí)現(xiàn)是最理想的方式,研究中采用VHDL語言在RTL級(jí)描述神經(jīng)網(wǎng)絡(luò),層次化設(shè)計(jì),時(shí)序驗(yàn)證方便,易于FPGA實(shí)現(xiàn)。在此利用VHDL語言設(shè)計(jì)和實(shí)現(xiàn)了PID神經(jīng)網(wǎng)絡(luò)模塊,此模塊可以應(yīng)用到單變量或多變量
非線性PID神經(jīng)網(wǎng)絡(luò)控制器上。
當(dāng)對(duì)神經(jīng)網(wǎng)絡(luò)的速度有較高要求時(shí),可利用FPGA的可編程特點(diǎn)進(jìn)行面積和速度的折衷考慮,適當(dāng)增加面積占用率來相應(yīng)提高芯片運(yùn)動(dòng)速度。這在串行時(shí)序機(jī)應(yīng)用系統(tǒng)中是難以實(shí)現(xiàn)的,也是FPGA實(shí)現(xiàn)智能算法的優(yōu)勢(shì)所在。同時(shí)由于PID神經(jīng)網(wǎng)絡(luò)具有3層結(jié)構(gòu),利用FPGA芯片的可重構(gòu)特點(diǎn)可以進(jìn)一步降低芯片規(guī)模。
參考文獻(xiàn)
[1]Wang Q,Yi B,XIE Y,et al.The Hardware Structure Design of Perceptron with FPGA Implementation.Proceedings of IEEE International Conference on Systems,Man and Cybernetics.Washington D.C.,2003.
[2]Ferreira P,R [3]Hammerstrom D.A VLSI Architecture for Hign Perfor-mance,Low-cost,On-chip Learning.Proceedings of International Joint Conference on Neural Networks.San Diego,1990. [4]Murtagh P J,Tsoi A C.A Reconfigurable bit-serial VLSI Systolic Array Neuro-chip.Parallel Distrib Comput,1997,44(1):53-70. [5]Hikawa H.A New Digital pulse-mode Neuron with Adjustable Transfer Function.IEEE Trans.Neural Networks,2003,14(1):236-242. [6]Faiedh H,Gafsi Z,Torki K,et al.Digital Hardware are Implementation of a Neural Network Used for Classification.Proceeding of the 16th International Conference on Microelectronics.Tunis,2004. [7]付學(xué)志,姚旺生,茍偉,等.基于FPGA的高速PID控制器設(shè)計(jì)與仿真.電子技術(shù)應(yīng)用,2007,33(1):87-89. [8]戢方,雷勇,王俊.自頂向下基于DSP Builder的PID控制系統(tǒng)開發(fā).現(xiàn)代電子技術(shù),2007,30(9):127-129. [9]徐麗娜.神經(jīng)網(wǎng)絡(luò)控制.北京:電子工業(yè)出版社,2003. [10]Volnei A Pedroni.VHDL數(shù)字電路設(shè)計(jì)教程.北京:電子工業(yè)出版社,2005. 作者簡(jiǎn)介王忠良 男,1980年出生,安徽省舒城縣人,銅陵學(xué)院電氣工程系教師,碩士。主要從事FPGA應(yīng)用研究。 肖 華 女,1977年出生,山東省沂水縣人,銅陵學(xué)院計(jì)算機(jī)系教師,碩士。主要進(jìn)行算法研究。