《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的數(shù)字卷積加減速算法的設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA的數(shù)字卷積加減速算法的設(shè)計(jì)與實(shí)現(xiàn)
2015年電子技術(shù)應(yīng)用第8期
程文雅,高 敏,李盛培
西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng)621000
摘要: 為了減小計(jì)算量,引入了數(shù)字卷積采用FPGA硬件編程的方式實(shí)現(xiàn)加減速控制算法,提高了算法的穩(wěn)定性和運(yùn)算速度;為了減小速度誤差和位置誤差,在不同情況下采用相應(yīng)的補(bǔ)償算法來(lái)實(shí)現(xiàn)對(duì)定點(diǎn)數(shù)運(yùn)算過(guò)程中的余數(shù)處理;針對(duì)數(shù)字卷積運(yùn)算之前產(chǎn)生的余數(shù),在速度序列的末尾添加速度補(bǔ)償序列來(lái)消除余數(shù)誤差;對(duì)于數(shù)字卷積運(yùn)算過(guò)程中產(chǎn)生的余數(shù),采用余數(shù)累加的方式來(lái)減小余數(shù)誤差。
中圖分類號(hào): TH16;TP311
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2015.08.012
中文引用格式: 程文雅,高敏,李盛培. 基于FPGA的數(shù)字卷積加減速算法的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2015,41(8):43-46.
英文引用格式: Cheng Wenya,Gao Min,Li Shengpei. Design and implementation of a FPGA-based digital convolution acceleration and deceleration algorithm[J].Application of Electronic Technique,2015,41(8):43-46.
Design and implementation of a FPGA-based digital convolution acceleration and deceleration algorithm
Cheng Wenya,Gao Min,Li Shengpei
School of Information Engeneering,Southwest University of Science and Technology,Mianyang 621000,China
Abstract: In order to reduce the amount of calculation, the way of digital convolution being realized by using FPGA hardware programming is introduced to realize acceleration/deceleration motion algorithm and improves the stability and speed of the algorithm. In order to reduce the speed error and position error, corresponding compensation algorithm is used according to the different condition to realize the remainder in the process of processing operations on fixed-point number. For the remainder produced before digital convolution computation, add the speed compensation sequence to the end of the speed sequence to remove the remainder error. For the remainder produced in the process of digital convolution operation, adopt the way of accumulating remainders, to reduce the remainder error.
Key words : acceleration and deceleration;direct convolution;trapezoidal curve;S curve;FPGA

    

0 引言

    現(xiàn)代數(shù)控系統(tǒng)、工業(yè)機(jī)器人正向著高速和高精度的方向發(fā)展,而加減速控制算法在實(shí)現(xiàn)其運(yùn)動(dòng)的高速、高精度上起著至關(guān)重要的作用。哈爾濱工程大學(xué)鄭金興等[1]提出了基于梯形速度控制的變插補(bǔ)周期實(shí)時(shí)插補(bǔ)算法,該算法可有效地控制加工精度,充分發(fā)揮了各軸聯(lián)動(dòng)的加減速能力,但在運(yùn)動(dòng)的高速和實(shí)時(shí)性上不是很理想;朱明等[2]提出了一種實(shí)用的S曲線加減速控制算法,該算法加速度連續(xù)變化,速度變化平穩(wěn),減小了加工過(guò)程中速度突變?cè)斐傻臎_擊,但算法稍復(fù)雜,計(jì)算量大。目前,應(yīng)用于數(shù)控系統(tǒng)和工業(yè)機(jī)器人中的加減速運(yùn)動(dòng)控制算法有很多。如梯形曲線加減速、S形曲線加減速、多項(xiàng)式加減速、三角函數(shù)加減速[3-4]等控制算法。這些加減速算法都可以通過(guò)軟件編程的方式實(shí)現(xiàn),但由于計(jì)算量較大使得很難通過(guò)硬件編程的方式實(shí)現(xiàn)。為了減小計(jì)算量,實(shí)現(xiàn)加減速控制算法的高速與高精度,Chen和LEE[5]提出了基于FIR濾波器的加減速速度規(guī)劃算法。該算法采用濾波技術(shù)對(duì)加減速度進(jìn)行光滑處理,實(shí)現(xiàn)了加減速的連續(xù)變化,減少了加工中由于加減速突變而產(chǎn)生的振動(dòng),進(jìn)而實(shí)現(xiàn)高精度加工,同時(shí)又能達(dá)到良好的加減速性能,實(shí)現(xiàn)高速的加工;但其算法稍復(fù)雜,實(shí)現(xiàn)上有一定的難度。KIM D[6]提出了一種基于卷積的加減速運(yùn)動(dòng)規(guī)劃算法。該算法通過(guò)對(duì)速度進(jìn)行卷積,使得在計(jì)算過(guò)程中只包含加法與除法運(yùn)算,簡(jiǎn)化了復(fù)雜的計(jì)算過(guò)程,提高了加減速控制算法的運(yùn)算速度。

    本文在以上研究基礎(chǔ)上,引入數(shù)字卷積,采用FPGA硬件編程的方式實(shí)現(xiàn)數(shù)字卷積加減速控制算法,提高了運(yùn)算速度與精度。該算法采用定點(diǎn)數(shù)進(jìn)行計(jì)算,節(jié)約了FPGA的邏輯門的數(shù)量并且減小了計(jì)算誤差。

1 數(shù)字卷積加減速算法

    基于數(shù)字卷積加減速算法[7]卷積算子表達(dá)式為:

wdz3-gs1-2.gif

    由于式(2)是迭代表達(dá)式,并且只包含加法和除法運(yùn)算,因此采用FPGA硬件去實(shí)現(xiàn)將極大地降低計(jì)算量。

    對(duì)于固定速度Vmax輸入經(jīng)過(guò)一次數(shù)字卷積后得到如圖1所示的梯形加減速曲線。其中,總的運(yùn)行時(shí)間nTs等于曲線的長(zhǎng)度除以固定速度Vmax。經(jīng)過(guò)數(shù)字卷積后速度的位移距離必須保持一致,因此,H1的值取為1/n1Ts。如果想要得到光滑、高柔性的S形加減速速度曲線,可以對(duì)固定速度輸入進(jìn)行兩次數(shù)字卷積,即對(duì)得到的梯形速度曲線再進(jìn)行一次數(shù)字卷積如圖2所示。另外,為了確保在經(jīng)過(guò)兩次數(shù)字卷積后能夠達(dá)到最大速度Vmax,n2Ts的時(shí)間必須小于n1Ts,否則在經(jīng)過(guò)數(shù)字卷積后得到的最大速度將小于固定的速度值Vmax。

wdz3-t1.gif

wdz3-t2.gif

2 數(shù)字卷積加減速算法的硬件實(shí)現(xiàn)

2.1 梯形加減速算法的實(shí)現(xiàn)

    對(duì)于單軸點(diǎn)對(duì)點(diǎn)的梯形加減速運(yùn)動(dòng),S為總的運(yùn)動(dòng)距離,Vmax為最大速度,N1為梯形加減速數(shù)字卷積序列長(zhǎng)度??偟倪\(yùn)行時(shí)間為S除以Vmax;在FPGA硬件設(shè)計(jì)時(shí)采用定點(diǎn)數(shù)進(jìn)行計(jì)算,在運(yùn)算過(guò)程中涉及到除法運(yùn)算。因此,為了減小誤差要考慮余數(shù)的問(wèn)題。文中的運(yùn)動(dòng)距離S、速度Vmax及余數(shù)之間的關(guān)系表達(dá)式如式(3):

    wdz3-gs3.gif

    其中,N表示速度為Vmax時(shí)的速度序列脈沖數(shù),R為余數(shù)。另外,輸入速度序列為X1[k],如圖3所示。

    wdz3-gs4.gif

wdz3-t3.gif

    卷積算子序列Y1[i]如圖4所示,數(shù)字卷積序列長(zhǎng)度為N1,其中N1<N/2。通過(guò)對(duì)X1[k]與Y1[i]進(jìn)行一次數(shù)字卷積得到梯形加減速運(yùn)動(dòng)控制速度序列如圖5所示,其表達(dá)式為式(5):

    wdz3-gs5.gif

wdz3-t4-5.gif

    如果忽略余數(shù)R,在運(yùn)動(dòng)過(guò)程中將出現(xiàn)速度誤差,進(jìn)而導(dǎo)致位置誤差。為了解決這個(gè)問(wèn)題,本文采用速度補(bǔ)償?shù)姆绞剑谒俣刃蛄械哪┪蔡砑友a(bǔ)償速度序列來(lái)消除余數(shù)誤差,得到的速度輸出序列如圖6所示。

wdz3-t6.gif

2.2 S形曲線加減速算法的實(shí)現(xiàn)

    如果對(duì)X1[k]進(jìn)行兩次數(shù)字卷積將得到S形加減速曲線;對(duì)于S曲線加減速,第二次數(shù)字卷積的序列長(zhǎng)度為N2。為了保證在經(jīng)過(guò)兩次數(shù)字卷積后,能夠達(dá)到最大速度Vmax,N2的取值必須小于N1,卷積算子序列Y2[n]如圖7所示。通過(guò)X2[j]與Y2[n]進(jìn)行數(shù)字卷積可得到S形加減速曲線速度序列X4[q],如圖8所示。

    wdz3-gs6.gif

wdz3-t7-8.gif

    與梯形加減速類似,如果忽略余數(shù)R將導(dǎo)致速度誤差和位置誤差。為了解決這個(gè)問(wèn)題,本文采用速度補(bǔ)償?shù)姆绞?,在速度序列的末尾添加補(bǔ)償速度序列來(lái)消除余數(shù)誤差,得到的速度輸出序列X5(h)如圖9所示。

wdz3-t9.gif

2.3 余數(shù)補(bǔ)償算法

    由于在通過(guò)FPGA實(shí)現(xiàn)的過(guò)程中采用定點(diǎn)數(shù)進(jìn)行計(jì)算,因此,在卷積計(jì)算的除法運(yùn)算過(guò)程中,需要考慮余數(shù)問(wèn)題[8]。事實(shí)上,在整個(gè)數(shù)字卷積的計(jì)算中有兩種情況會(huì)產(chǎn)生余數(shù):第一種情況是在數(shù)字卷積之前卷積序列長(zhǎng)度N的計(jì)算,如式(3)所示;另一種情況是在數(shù)字卷積計(jì)算過(guò)程中產(chǎn)生的余數(shù)如式(2)所示。為了解決上述問(wèn)題,針對(duì)不同情況下的余數(shù)問(wèn)題采用不同的算法來(lái)實(shí)現(xiàn)補(bǔ)償。

    對(duì)于在數(shù)字卷積之前產(chǎn)生的余數(shù),余數(shù)R的計(jì)算如式(3)所示,這種情況下采用在速度序列的末尾添加速度補(bǔ)償序列。梯形加減速的卷積序列X2[N1+N-1]如式(5)所示,余數(shù)R可表示為:

    wdz3-gs7.gif

    其中,V是X2[N1+N-1]序列的值;A表示速度為V時(shí)的速度補(bǔ)償序列脈沖數(shù);B表示最終補(bǔ)償脈沖序列的誤差值。另外,P表示在圖7中總的添加的補(bǔ)償速度序列脈沖數(shù)。

    wdz3-gs8.gif

    類似地,對(duì)于S形曲線加減速速度序列X4[N+N1+N2-1]如式(6)所示,余數(shù)R可以表示為:

    wdz3-gs9.gif

    其中,W是X4[N+N1+N2-1]序列的值;C表示速度為W時(shí)的速度補(bǔ)償序列脈沖數(shù);D表示最終補(bǔ)償脈沖序列的誤差值。另外,P表示總的添加補(bǔ)償速度序列脈沖數(shù)。

    wdz3-gs10.gif

3 仿真與驗(yàn)證分析

    仿真驗(yàn)證過(guò)程在Matlab和Quartus II 13.1開(kāi)發(fā)環(huán)境下采用硬件描述語(yǔ)言Verilog,在Altera的Cyclone IV器件上進(jìn)行仿真和驗(yàn)證實(shí)現(xiàn)。圖10為在MATLAB上S=250,Vmax=10,N1=7時(shí)的梯形曲線加減速運(yùn)動(dòng)控制實(shí)驗(yàn)結(jié)果;圖11為S=250,Vmax=10,N1=7,N2=4時(shí)的S形曲線加減速運(yùn)動(dòng)控制實(shí)驗(yàn)結(jié)果;圖12、圖13分別為梯形和S形曲線加減速速度誤差圖,從圖中可以看出速度的誤差保持在±0.02范圍內(nèi)。圖14為S=250,Vmax=10,N1=7時(shí)的梯形曲線加減速通過(guò)FPGA硬件實(shí)現(xiàn)后在Modelsim上的仿真波形圖,圖15為S=250,Vmax=10,N1=7,N2=4時(shí)的S形曲線加減速通過(guò)FPGA硬件實(shí)現(xiàn)后的仿真波形,其中,標(biāo)有圓圈部分為添加的余數(shù)補(bǔ)償速度部分。

wdz3-t10.gif

wdz3-t11.gif

wdz3-t12.gif

wdz3-t13.gif

wdz3-t14.gif

wdz3-t15.gif

4 結(jié)論

    針對(duì)工業(yè)機(jī)器人、數(shù)控系統(tǒng)中的加減速控制算法引入了數(shù)字卷積,減小了計(jì)算量,并通過(guò)FPGA硬件編程的方式實(shí)現(xiàn)了數(shù)字卷積的梯形曲線、S形曲線加減速控制算法。本文詳細(xì)分析了采用定點(diǎn)數(shù)計(jì)算數(shù)字卷積加減速算法過(guò)程的余數(shù)的處理方式。對(duì)與數(shù)字卷積運(yùn)算之前產(chǎn)生的余數(shù),在速度序列的末尾添加速度補(bǔ)償序列來(lái)消除余數(shù)誤差;對(duì)于數(shù)字卷積運(yùn)算過(guò)程中產(chǎn)生的余數(shù),采用余數(shù)累加的方式,來(lái)減小余數(shù)誤差。采用FPGA硬件編程的方式實(shí)現(xiàn)加減速控制算法,簡(jiǎn)化系統(tǒng)結(jié)構(gòu),提高運(yùn)算效率和算法的穩(wěn)定性。

參考文獻(xiàn)

[1] 鄭金興,張銘鈞.梯形速度控制變插補(bǔ)周期的實(shí)時(shí)插補(bǔ)算法研究[J].機(jī)床與液壓,2007(1):77-80.

[2] 朱明,游有鵬,何均.S形加減速算法前瞻處理研究[J].小型微型計(jì)算機(jī)系統(tǒng),2011(10):2140-2144.

[3] 陳曉兵,廖文和.基于分段刀軌S曲線加減速控制的進(jìn)給速度優(yōu)化研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2012(10):44-47.

[4] 劉筱,吳文江,鄭飂默.柔性S型加減速控制算法研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2014(3):66-68.

[5] CHEN C S,LEE A C.Design of acceleration deceleration profiles in motion control based on digital FHR filters[J].Journal of Machine Tools & Manufacture,2001,38:799-825.

[6] KIM D I,JEON J W,KIM S.Software acceleration/deceleration methods for industrial robots and cnc maching tools[J].Mechatronics,1994,4(1):37-53.

[7] 陳偉娜,賴乙宗,李松,等.數(shù)控系統(tǒng)線性加減速算法分析與實(shí)現(xiàn)[J].科學(xué)技術(shù)與工程,2012(3):546-550.

[8] 王昕,王均偉,饒志,等.基于NURBS曲線軌跡規(guī)劃與速度規(guī)劃的研究[J].系統(tǒng)仿真學(xué)報(bào),2008(15):3973-3980.

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