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

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

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

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