摘要:VHDL是系統(tǒng)設(shè)計(jì)領(lǐng)域的硬件描述語言。文章針對用于位置與速度反饋測量的光電編碼器信號的特點(diǎn),介紹了運(yùn)用VHDL在FPGA中實(shí)現(xiàn)編碼器倍頻、鑒相電路的方法,它對提高編碼器分辨率與實(shí)現(xiàn)高精度、高穩(wěn)定性的信號檢測及位置伺服控制具有一定的現(xiàn)實(shí)意義。
關(guān)鍵詞:編碼器;倍頻;鑒相;FPGA;VHDL
0 引言
VHDL誕生于1982年,于1987年被IEEE和美國國防部確認(rèn)為標(biāo)準(zhǔn)的硬件描述語言,即IEEESTD1076。HDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。與其它的硬件描述語言相比,VHDL具有更強(qiáng)的行為描述能力,因而成為系統(tǒng)設(shè)計(jì)領(lǐng)域的硬件描述語言。FPGA(現(xiàn)場可編程門陣列,Field Programmable Gate Array)器件集成度高,體積小,具有通過用戶編程實(shí)現(xiàn)專門應(yīng)用的功能。采用FPGA器件可以將原來的電路板級產(chǎn)品集成為芯片級產(chǎn)品,從而降低功耗,提高可靠性,同時還可以方便地對設(shè)計(jì)進(jìn)行在線修改。目前,VHDL語言已經(jīng)成為FPGA設(shè)計(jì)輸入的主要方法之一。本文即運(yùn)用VHDL設(shè)計(jì)輸入方法在FPGA中實(shí)現(xiàn)編碼器的倍頻、鑒相電路。
1 在FPGA中實(shí)現(xiàn)倍頻、鑒相電路的優(yōu)越性
在數(shù)控系統(tǒng)和工業(yè)機(jī)器人控制系統(tǒng)及一些使用光電編碼器作為位置反饋和速度反饋組成的系統(tǒng)中,總是要用到對光電編碼器(或光柵)的輸出脈沖進(jìn)行倍頻、鑒相的電路,如圖1所示。其目的是提高位置分辨率,獲取電機(jī)的實(shí)際轉(zhuǎn)動方向(或工作臺移動方向),提高抗干擾能力。而在以往的控制系統(tǒng)中經(jīng)常用由RC電路及門電路構(gòu)成的倍頻、鑒相電路,該電路體積大且穩(wěn)定性、可靠性差、調(diào)試煩瑣,而且當(dāng)電阻、電容等組件參數(shù)變化時,會導(dǎo)致脈寬發(fā)生變化或不能產(chǎn)生具有穩(wěn)定寬度的脈沖。此外,RC電路抗干擾能力差,反饋部分易受外界的干擾,在實(shí)際應(yīng)用中會出現(xiàn)丟失脈沖現(xiàn)象,以至影響控制系統(tǒng)的精度和可靠性。本文介紹的運(yùn)用VHDL在FPGA中實(shí)現(xiàn)的四倍頻、鑒相電路采用全數(shù)字反饋電路的設(shè)計(jì)方法,由于倍頻、鑒相電路設(shè)計(jì)在同一芯片上,一方面,芯片內(nèi)部的門電路、觸發(fā)器的參數(shù)特性完全—致,能保證在相同轉(zhuǎn)速下四倍頻脈沖信號的周期保持一致。另一方面,FPGA是板級芯片,電路做在芯片內(nèi)部,其抗干擾能力比分離器件有了很大提高。同時,由于現(xiàn)場可編程,可以方便地實(shí)現(xiàn)對電路的重新設(shè)計(jì)或修改,增強(qiáng)了系統(tǒng)的靈活性、通用性和可靠性。
圖1 編碼器倍頻、鑒相示意圖
2 4倍頻、鑒相電路在FPGA中的VHDL實(shí)現(xiàn)
測試和應(yīng)用表明,4倍頻、鑒相電路具有結(jié)構(gòu)簡單、可靠性高、抗干擾能力強(qiáng)等優(yōu)點(diǎn),因此在大多數(shù)系統(tǒng)的編碼器反饋回路都采用4倍頻、鑒相電路。在FPGA中設(shè)計(jì)4倍頻、鑒相電路一般有兩種方法:一種是兩路輸出,一路輸出方向,一路輸出脈沖;另一種也是兩路輸出,一路輸出正向脈沖,一路輸出反向脈沖。本文采用前一種方法,這種方法易于與可逆計(jì)數(shù)器連接。光電編碼器一般都輸出兩個相位相差90°的脈沖信號A、B,同時還輸出其反相脈沖序列/A、/B。當(dāng)編碼器順時針旋轉(zhuǎn)時,A相超前于B相90°;逆時針旋轉(zhuǎn)時,A相滯后于B相90°。據(jù)此可進(jìn)行方向判別與信號倍頻處理。當(dāng)電機(jī)正轉(zhuǎn)時,方向信號輸出為1,可逆計(jì)數(shù)器對4倍頻后的脈沖進(jìn)行加記數(shù);當(dāng)電機(jī)反轉(zhuǎn)時,方向信號輸出為0,可逆計(jì)數(shù)器對4倍頻后的脈沖進(jìn)行減記數(shù)。
本文應(yīng)用ACTEL的集成開發(fā)軟件Libero IDE v5.2進(jìn)行設(shè)計(jì)、仿真,用Syplify 7.2進(jìn)行綜合。設(shè)計(jì)過程如圖2所示。設(shè)計(jì)輸入可以采用原理圖方式,也可以采用HDL語言方式,當(dāng)然也可以采用混合方式。
圖2 Libero IDE設(shè)計(jì)流程
本文采用流行的VHDL方式,其VHDL語言實(shí)現(xiàn)如下所示。
3 仿真結(jié)果
由VHDL語言程序產(chǎn)生的符號(即在開發(fā)軟件中用Create Symbol產(chǎn)生的圖形)如圖3所示。由圖3可以清楚地看到本模塊有3個輸入A、B和CLK和兩個輸出DIR和F4OUT。其中A、B即為差分整形電路的輸出,CLK為時鐘信號;DIR是方向信號輸出,F4OUT是4倍頻后的脈沖輸出。圖4和圖5是本模塊的仿真結(jié)果,其中圖4為A相超前B相90°的仿真波形,圖5為B相超前A相90°的仿真波形。由圖4和圖5可以看出,當(dāng)A相超前B相90°時,即電機(jī)正轉(zhuǎn)時方向信號DIR為1;當(dāng)電機(jī)反轉(zhuǎn)時DIR為0,即鑒相。同時,在A或B信號的一個周期中F4OUT輸出了4個脈沖,即4倍頻。
4 結(jié)果分析
時鐘信號CLK的頻率要遠(yuǎn)遠(yuǎn)高于輸入信號(A或B)頻率(一般fCLK≥8f,其中,f為編碼器輸出頻率),才能獲得穩(wěn)定的4倍頻脈沖輸出。改變CLK的頻率可以改變4倍頻后的脈沖信號的占空比,因此可以靠調(diào)節(jié)CLK的頻率來獲得合適占空比的脈沖輸出。
5 結(jié)語
本文關(guān)于運(yùn)用VHDL在FPGA中實(shí)現(xiàn)的編碼器倍頻、鑒相電路,已經(jīng)在筆者參加的雕刻機(jī)的研發(fā)中得到了驗(yàn)證,它在系統(tǒng)中存在抖動及毛刺等干擾的情況下,仍能獲得穩(wěn)定可靠的測量結(jié)果,這對于正確和合理地使用編碼器,提高它的功能效益,從而在數(shù)控及機(jī)器人的死循環(huán)位置和速度控制系統(tǒng)中,提高位置調(diào)節(jié)精度,擴(kuò)大速度調(diào)節(jié)范圍,都有良好的效果,是一種提高編碼器分辨率、實(shí)現(xiàn)角位移或轉(zhuǎn)速測量的優(yōu)選電路。