《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的神經振蕩器設計及優(yōu)化
基于FPGA的神經振蕩器設計及優(yōu)化
來源:電子技術應用2011年第7期
李嘯雋,戴孝亮
(華南理工大學 機械與汽車工程學院機器人實驗室,廣東 廣州510640)
摘要: 為神經振蕩器提出了一種高效的FPGA實現方案,介紹了一種改進的分布式算法(DA),以便于最大限度地利用FPGA上的查找表(LUT)資源。整個系統(tǒng)在Matlab/Simulink下采用Altera公司的DSP Builder 構建。該方法節(jié)約了74%的查找表、75%的寄存器和100%的嵌入式乘法器資源。同時,該方案得到了令人滿意的結果,實驗結果同仿真結果的相關系數高達0.99。
中圖分類號: TP242.6
文獻標識碼: A
文章編號: 0258-7998(2011)07-0032-04
Design and optimization of FPGA-based neural oscillators
Li Xiaojun,Dai Xiaoliang
School of Mechanical & Automotive Engineering, South China University of Technology, Guangzhou 510640,China
Abstract: This paper studies designing and optimization of neural oscillators on FPGAs. We introduced a revised distributed-arithmetic(DA) algorithm in order to maximize the utilization of look up tables(LUTs) on FPGAs. The entire system is designed under Matlab/Simulink by DSP Builder from Altera. The proposed scheme performances great save in hardware resources. Meanwhile, we’ve obtained satisfactory experiment results.
Key words : neural oscillator;distributed arithmetic;FPGA;look up table


    神經振蕩器是一種能夠在缺乏感官反饋或者高級控制命令的情況下,通過協(xié)調模式自發(fā)地產生規(guī)律輸出的神經電路。神經振蕩器已經被廣泛地應用于機器人的智能控制與生物研究中[1],成為國內外的研究熱點。相比于軟件編程,神經振蕩器的硬件實現具有高速、并行處理、抗干擾等優(yōu)點,更接近于其原有的生物特性,因此引起了許多研究者的關注。在近些年來,許多神經振蕩器的硬件實現工作是基于模擬器件完成的[2-3]。雖然模擬電路能夠與生俱來地實現夠非線性函數,其功耗也相對較低,但與可編程邏輯器件(FPGA)相比,基于超大規(guī)模集成電路(VLSI)的工作需要相對長的設計周期,同時缺乏靈活性和兼容性。另一方面,FPGA已經被廣泛地應用于人工神經網絡(ANN)和智能控制電路硬件的實現[4-5],但基于FPGA的神經振蕩器實現國外才剛剛開始,國內尚未見報道。且之前的工作大多基于乘法器的直接實現方法[6],未能充分利用FPGA的資源。
1 神經振蕩器及其應用
    神經振蕩器是一種耦合振蕩系統(tǒng),通過神經元之間的相互抑制實現穩(wěn)定的相位互鎖,并產生自激振蕩激發(fā)肢體做節(jié)律運動[7]。在仿生機器人控制中,被控制對象往往存在非線性、系統(tǒng)工作點變化劇烈等特點,傳統(tǒng)的控制往往是建立在單純依靠嚴格和精確數學模型基礎上,但這種方法已難以滿足復雜多變且環(huán)境未知的機器人控制需求[8]。同時,基于模型的機器人控制方法模型復雜、解不唯一、非結構環(huán)境適應性較差等,不利于實現仿生機器人的快速穩(wěn)定運動[9]。神經振蕩器具有非線性耦合的優(yōu)點,很適合仿生機器人的節(jié)律運動控制,能達到快速穩(wěn)定的效果。此外,可以通過調整有限的神經振蕩器參數,建立滿足具體要求不同的機器人與外界環(huán)境交互的復雜運動學、動力學模型,而不需要對整個系統(tǒng)建模,機器人的控制難度降低??傊?,基于神經振蕩器控制的機器人具有以下優(yōu)點:(1)自動穩(wěn)定性;(2)較強的環(huán)境適應性;(3)參數化建模[8-9]。
    圖1為神經振蕩器應用于兩足機器人的一個例子。該兩足機器人包含七個關節(jié),其中包括一個軀關節(jié)(也可稱之為腰關節(jié))、兩個臀關節(jié)、兩個膝關節(jié)和兩個踝關節(jié)[10]。每一個神經振蕩器由一對相互抑制的神經元構成,每個關節(jié)由一個神經振蕩器控制。這樣,就可以將兩足機器人轉化為七個神經振蕩器控制的神經模式發(fā)生器系統(tǒng),圖1(a)所示為模式發(fā)生器系統(tǒng)的組成。通過調整振蕩器的參數,使各關節(jié)協(xié)調地做振蕩運動,可以實現兩足機器人穩(wěn)定地行走等運動。

2 分布式算法的改進
    傳統(tǒng)的分布式算法要求輸入為小數或整數。在FPGA系統(tǒng)中,一般的輸入信號通過二進制小數點轉換模塊轉換為純小數(或者是整數),輸出則剛好相反。本文對分布式算法做了修改,使其不需要小數點轉移過程。對于某一有符號的定點數xk,若其同時包含整數部分和小數部分,xk可以用一個二進制數bN-1,…,b1,b0,b-1,…,b-M表示(共N+M=Q位,N位整數位,M位小數位)。bk,N-1為符號位,當bk,N-1=1時,xk為負數,bk,N-1=0時,xk為正數;bk,m為最低有效位,代表xk能達到的最高精度。
    
    同傳統(tǒng)的分布式方法一樣,這里的Lm事先輸入到查找表中,通過加權累加器對查找表的輸出進行變更、求和。對于K個輸入且輸出為y的分布式算法的原理如圖2所示[10]。

 

 

    分布式算法按時間周期進行運算。一個時鐘周期是指變量xk的二進制編碼依次輸入到查找表(LUT)中累加求和所用的時間。一個時鐘周期包含M個時段,每時段輸入二進制的一位,第m=M-1位最先輸入,第m=0位最后輸入。每輸入一位,通過加權累加器求和。m=0的時間段稱為符號位時間,其余時間段為非符號位時間。一個時鐘周期包括符號位時間和非符號時間,當符號位時間到來并結束,代表一個時間周期的結束和下一個時間周期的開始,如圖2所示,符號時間結束,開關從位置①打到位置②,同時輸出y值。
3 基于分布式算法的神經振蕩器
    神經振蕩器的設計可以在多個層次實現,如生物模型、類神經網絡模型和耦合振蕩器[1]。最廣泛使用的是神經振蕩器,其實質是交互抑制的非線性耦合振蕩器。常見的耦合振蕩器模型有Amari-Hopfield、Van De Pol和Matsuoka等,這些模型遵循相似的原理。例如,Amari-Hopfield振蕩器[2]的動力學方程如下式所示:
  
其中,u和v為神經元的輸出;Su(t)和Sv(t)為外部輸入;α1、α2、β1、β2、μ為控制參數;fμ(x)為傳遞函數。如式(4)所示,振蕩器的實現需要幾個基本操作:加減、乘、積分求導和傳遞函數(可選)。一個單獨的振蕩器只需要幾個乘法器。然而,更大的振蕩器網絡需要更多抑制路徑與更多的乘法器來實現,如果要實現一個7自由度的雙足機器人控制系統(tǒng),將會需要上百的片上乘法器,資源消耗十分巨大;另一方面,大多數FPGA有大量的查找表(LUT)資源。為了提高乘法效率,引入了分布式算法(DA)來優(yōu)化神經振蕩器的FPGA實現,分布式算法利用了查找表而并非乘法器。關于傳遞函數的FPGA實現問題,Tommiska已經做了詳細的討論[11]。在這里使用飽和函數來取代雙級sigmoid函數。兩者的曲線圖十分相近,將式(4)中傳遞函數f?滋(x)用飽和函數代替,替換后的振蕩模型的質量沒有明顯降低。
    
根據以上的方程,可以方便地算出查找表的內容,在這里不再贅述。
4 分布式神經振蕩器的FPGA硬件實現
    在Matlab/Simulink環(huán)境下,使用Altera公司提供的DSP Builder工具箱[12]對基于分布式算法的神經振蕩器進行建模,按照式(5)在Simulink中組建模塊,得到的分布式神經振蕩器的結構。該系統(tǒng)主要包含了DA分布式算法、adder加法器、integrator積分器、transfer傳遞函數4個子模塊,系統(tǒng)采用20位定點數據的表述形式(整數部分為8位)。
    Matlab/Simulink環(huán)境下仿真結果的極限環(huán)吸引子如圖3(a)所示。其表明,對于從靜止狀態(tài)開始運動的神經振蕩器,經過有限的時間,最終會處于李雅普諾夫意義下的穩(wěn)定,即神經振蕩器處于穩(wěn)定的振蕩過程而能量不衰減。u和v的輸出波形如圖3(b)所示。經過約20 ?滋s的時間,神經振蕩器進入穩(wěn)定的振蕩過程。

    通過系統(tǒng)仿真,該神經振蕩器已達到設計要求,將模型文件.mdl轉化為硬件描述語言文件.vhd,并對其綜合。之后,在QuartusⅡ環(huán)境中打開由DSP Builder建立的QuartusⅡ工程文件,就可以對生成的VHDL代碼進行器件配置、引腳設定、硬件下載等工作。當然,該系統(tǒng)還可以作為制定硬件模塊被集成到NIOS II 軟核中,以方便對其調用與配置。
5 實驗
    將程序下載到工作頻率為50 MHz的Altera Cyclone II EP2C8Q208芯片上。通過Signal Tap II邏輯分析儀,獲得實驗數據,并將其導入Matlab中進行處理、分析。計算可得,u相輸出的實驗與仿真結果相關系數為0.99,v也為0.99,可見實驗結果和仿真結果高度一致,驗證了實驗的準確性。
    據分析,分布式算法節(jié)省了74%的查找表(LUT),75%的邏輯寄存器和100%的嵌入式乘法器??梢?,基于分布式算法的神經振蕩器,顯著地節(jié)約了硬件資源。
    本文針對FPGA有限的算術乘法器提出了一個高效的神經振蕩器實現方案。首先將分布式算法進行了改進,使其可以直接處理同時帶有整數位和小數位的輸入信號,并將改進的分布式算法應用到神經振蕩器中。在Matlab/Simulink環(huán)境下,通過DSP Builder建立了系統(tǒng)模型。在保證了精確的實驗結果同時,與傳統(tǒng)的基于乘法器相比,該方案顯著地節(jié)約了硬件資源。此外,此方法還可以被應用到其他需要大量乘法運算的FPGA系統(tǒng)上,如人工神經網絡或者智能控制系統(tǒng)。
參考文獻
[1] IJSPEERT A J.Central pattern generators for locomotion  control in animals and robots:A review[J].Neural Net  works,May 2008(21):642-653.
[2] NAKADA K,ASAI T,AMEMIYA Y.An analog CMOS central pattern generator for interlimb coordination in  quadruped locomotion[J].IEEE T Neural Networ,2003(14):1356-65.
[3] VOGELSTEIN R J,TENORE F V G,GUEVREMONT L,et al.A silicon central pattern generator controls locomotion in  Vivo[J].IEEE T Biomed Circ S.2008(2):212-22.
[4] MISRA J,SAHA I.Artificial neural networks in hardware:a survey of two decades of progress[J].Neurocomputing.2010(74):239-55.
[5] MONMASSON E.FPGAs in industrial control applications[C]. Industrial Informatics,IEEE Transactions on.2011.
[6] TORRES H C,GIRAU B.Implementation of central pattern generator in an FPGA-based embedded system[A].Artificial Neural Networks-ICANN.2010,6353:276-285.
[7] 李彬.基于Wilson Cowan神經振蕩器的四足機器人步態(tài)規(guī)劃研究[J].山東大學學報,2010,1(40):6-9.
[8] 李宏凱,孫久榮,戴振東.動物運動指令的中樞模式發(fā)生器[J].機器人,2008,3(37):279-288.
[9] GENTARO T.A  model  of  the  neuro-musculo-skeletal system  for  human  locomotion[J].Biological Cybernetics,1995(73):97-111.
[10] STANLEY A W.Applications of distributed arithmetic to digital signal processing:a tutorial review[J].IEEE ASSP Magazine,1989:4-15.
[11] TOMMISKA M T.Efficient digital implementation of the sigmoid function for reprogrammable logic[J].IEE P-Comput Dig T,2003:403-411.
[12] 張志亮,趙剛,齊星剛.從Simulink模型自動生成VHDL代碼—基于DSP Builder的FPGA設計流程[J].自動化技術,2004(23):4-6.

此內容為AET網站原創(chuàng),未經授權禁止轉載。