摘要:利用VHDL硬件描述語(yǔ)言在FPGA中設(shè)計(jì)直流伺服電機(jī)控制器.其含4路PWM控制器,每個(gè)控制囂均分配一個(gè)lD。當(dāng)?shù)刂肪€Addrcss選中某個(gè)ID時(shí),表明對(duì)誼PWM控制器操作.利用ALE、WR信號(hào)將地址線信號(hào)鎖存.電機(jī)縭碼器捕獲單元?jiǎng)t獲得電機(jī)碼盤信號(hào),再通過(guò)總線控制器送給MPU讀取.由此判斷電機(jī)轉(zhuǎn)動(dòng)速度。
關(guān)鍵詞:FPGA;硬件描述語(yǔ)言;直流伺服電機(jī)控制器
引言
直流伺服電機(jī)處理器.如單片機(jī),DSP具有產(chǎn)生PWM信號(hào)和捕獲電機(jī)編碼器信號(hào)的能力,但對(duì)IC產(chǎn)生PWM信號(hào)的通道數(shù)目和電機(jī)編碼器捕獲通道數(shù)目有限。對(duì)多個(gè)直流電機(jī)的伺服控制很難滿足要求。故設(shè)計(jì)基于FPGA直流伺服電機(jī)控制器。
1、控制器構(gòu)成
在Cyclone EP2C5T FPGA內(nèi)部設(shè)計(jì)各4路PWM發(fā)生器和編碼器脈沖捕獲單元。其PWM信號(hào)通道和編碼器脈沖捕獲單元數(shù)目可基于VHDL硬件描述語(yǔ)言按需調(diào)整。如圖1。包括總線和4路PWM控制器、4路脈沖捕獲單元、分頻器l,分頻器2。總線控制器根據(jù)WR、RD、ALE信號(hào)完成FPGA內(nèi)部地址鎖存及8位OUTPUT總線.8位INPUT總線的控制。FPGA外接20 MHz有源晶振,時(shí)鐘信號(hào)經(jīng)分頻器1分頻后得到20kHz占空比為50%的方波信號(hào).4路PWM控制器以該信號(hào)為基準(zhǔn),產(chǎn)生頻率為20kHz,占空比可調(diào)的4路PWM信號(hào).4路PWM信號(hào)可依4位地址線獨(dú)立控制。4路脈沖捕獲單元用于對(duì)電機(jī)編碼器脈沖信號(hào)進(jìn)行捕獲.通過(guò)總線控制器將脈沖捕獲值讀出到8位I/O口上。
分頻器2將20 kHz方波信號(hào)20000分頻得到IHz占空比為50%的方波信號(hào),直接驅(qū)動(dòng)LED燈,指示系統(tǒng)狀態(tài).EP2C5FPGA內(nèi)部邏輯在Qoartusll。6.0環(huán)境下使用VHDL硬件描述語(yǔ)言實(shí)現(xiàn)。
2、VHDL設(shè)計(jì)伺服電機(jī)控制器
2.1總線控制器設(shè)計(jì)
寫入伺服電機(jī)控制器是PWM調(diào)節(jié)值,讀出的是電機(jī)編碼器數(shù)值.因此.需設(shè)計(jì)總線控制器完成上述過(guò)程.基于FPGA的直流伺服電機(jī)控制器為外部處理器(如單片機(jī)等)提供總線接口。類似8051的MCU地址線、數(shù)據(jù)線復(fù)用的特點(diǎn)設(shè)計(jì)了總線控制器.控制總線包括WR、RD、ALE;數(shù)據(jù)/地址總線為8位I/O。
總線控制器邏輯電路如圖2,使用2片74244實(shí)現(xiàn)。WR、RD信號(hào)使輸入/輸出總線交替進(jìn)入高阻態(tài),實(shí)現(xiàn)伺服電機(jī)控制器數(shù)據(jù)的寫入或讀出。
2.2 PWM控制器設(shè)計(jì)
PWM控制器的VHDL硬件描述語(yǔ)言如下:

因設(shè)計(jì)中有4路PWM控制器,為每個(gè)控制器分配一個(gè)ID。上面程序中setAddress為該P(yáng)WM控制器的ID,當(dāng)?shù)刂肪€Address選中該ID時(shí),表明對(duì)該P(yáng)WM控制器操作.利用ALE、WR信號(hào)將地址線信號(hào)鎖存。每個(gè)clk信號(hào)上升沿到來(lái)時(shí)將count加l處理。比較count與databus的值,實(shí)現(xiàn)PWM信號(hào)占空比的調(diào)整。并可根據(jù)需要在FPGA資源允許前提下,任意增加PWM控制器。
2.3電機(jī)編碼器捕獲單元設(shè)計(jì)
電機(jī)編碼器捕獲單元獲得電機(jī)碼盤信號(hào)后,通過(guò)總線控制器送給MPU讀取,來(lái)判斷電機(jī)的轉(zhuǎn)動(dòng)速度。VHDL硬件描述語(yǔ)言的程序源碼如下:

多個(gè)編碼器用setAddressL、setAddressH定義每個(gè)編碼器的地址。當(dāng)Address與setAddressL、setAddressH相同時(shí)選中該編碼器捕獲單元.同時(shí)用RD、ALE控制將捕獲的數(shù)據(jù)傳到總線上。
2.4分頻器l設(shè)計(jì)
FPGAEP2C5T全局時(shí)鐘信號(hào)外接20MHz有源品振,為得到20kHz的PWM信號(hào),在EP2C5T內(nèi)用VHDL設(shè)計(jì)了分頻器.VHDL程序如下:

分頻器2的原理與分頻器1相同.將20 kHz方波信號(hào)20000分頻得到l Hz的方波信號(hào)。
3、結(jié)語(yǔ)
利用VHDL硬件描述語(yǔ)言在FPGA中設(shè)計(jì)的直流伺服電機(jī)控制器,可滿足對(duì)多路直流電機(jī)的伺服控制。該控制器在4路直流伺服電機(jī)控制系統(tǒng)中可穩(wěn)定可靠的運(yùn)行。