《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的神經(jīng)振蕩器設(shè)計(jì)及優(yōu)化
基于FPGA的神經(jīng)振蕩器設(shè)計(jì)及優(yōu)化
來(lái)源:電子技術(shù)應(yīng)用2011年第7期
李嘯雋,戴孝亮
(華南理工大學(xué) 機(jī)械與汽車工程學(xué)院機(jī)器人實(shí)驗(yàn)室,,廣東 廣州510640)
摘要: 為神經(jīng)振蕩器提出了一種高效的FPGA實(shí)現(xiàn)方案,,介紹了一種改進(jìn)的分布式算法(DA),以便于最大限度地利用FPGA上的查找表(LUT)資源,。整個(gè)系統(tǒng)在Matlab/Simulink下采用Altera公司的DSP Builder 構(gòu)建,。該方法節(jié)約了74%的查找表、75%的寄存器和100%的嵌入式乘法器資源,。同時(shí),,該方案得到了令人滿意的結(jié)果,實(shí)驗(yàn)結(jié)果同仿真結(jié)果的相關(guān)系數(shù)高達(dá)0.99,。
中圖分類號(hào): TP242.6
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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


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

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

 

 

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

    通過(guò)系統(tǒng)仿真,該神經(jīng)振蕩器已達(dá)到設(shè)計(jì)要求,,將模型文件.mdl轉(zhuǎn)化為硬件描述語(yǔ)言文件.vhd,,并對(duì)其綜合。之后,,在QuartusⅡ環(huán)境中打開(kāi)由DSP Builder建立的QuartusⅡ工程文件,,就可以對(duì)生成的VHDL代碼進(jìn)行器件配置、引腳設(shè)定,、硬件下載等工作,。當(dāng)然,該系統(tǒng)還可以作為制定硬件模塊被集成到NIOS II 軟核中,以方便對(duì)其調(diào)用與配置,。
5 實(shí)驗(yàn)
    將程序下載到工作頻率為50 MHz的Altera Cyclone II EP2C8Q208芯片上,。通過(guò)Signal Tap II邏輯分析儀,獲得實(shí)驗(yàn)數(shù)據(jù),,并將其導(dǎo)入Matlab中進(jìn)行處理,、分析。計(jì)算可得,,u相輸出的實(shí)驗(yàn)與仿真結(jié)果相關(guān)系數(shù)為0.99,,v也為0.99,可見(jiàn)實(shí)驗(yàn)結(jié)果和仿真結(jié)果高度一致,,驗(yàn)證了實(shí)驗(yàn)的準(zhǔn)確性,。
    據(jù)分析,分布式算法節(jié)省了74%的查找表(LUT),,75%的邏輯寄存器和100%的嵌入式乘法器,。可見(jiàn),,基于分布式算法的神經(jīng)振蕩器,,顯著地節(jié)約了硬件資源。
    本文針對(duì)FPGA有限的算術(shù)乘法器提出了一個(gè)高效的神經(jīng)振蕩器實(shí)現(xiàn)方案,。首先將分布式算法進(jìn)行了改進(jìn),,使其可以直接處理同時(shí)帶有整數(shù)位和小數(shù)位的輸入信號(hào),并將改進(jìn)的分布式算法應(yīng)用到神經(jīng)振蕩器中,。在Matlab/Simulink環(huán)境下,,通過(guò)DSP Builder建立了系統(tǒng)模型。在保證了精確的實(shí)驗(yàn)結(jié)果同時(shí),,與傳統(tǒng)的基于乘法器相比,,該方案顯著地節(jié)約了硬件資源。此外,,此方法還可以被應(yīng)用到其他需要大量乘法運(yùn)算的FPGA系統(tǒng)上,,如人工神經(jīng)網(wǎng)絡(luò)或者智能控制系統(tǒng)。
參考文獻(xiàn)
[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神經(jīng)振蕩器的四足機(jī)器人步態(tài)規(guī)劃研究[J].山東大學(xué)學(xué)報(bào),,2010,1(40):6-9.
[8] 李宏凱,,孫久榮,,戴振東.動(dòng)物運(yùn)動(dòng)指令的中樞模式發(fā)生器[J].機(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模型自動(dòng)生成VHDL代碼—基于DSP Builder的FPGA設(shè)計(jì)流程[J].自動(dòng)化技術(shù),,2004(23):4-6.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。