基于FPGA的步進電動機伺服控制器通信系統(tǒng)設(shè)計
吳喜橋,劉景林
(西北工業(yè)大學自動化學院,西安710129)
摘要:為實現(xiàn)某掃描機構(gòu)伺服控制器與上位機的串行通信,提出了應(yīng)用于該系統(tǒng)的專用異步
串行通信和同步串行通信的FPGA設(shè)計方法。介紹了掃描機構(gòu)伺服控制系統(tǒng)的構(gòu)成;詳述了異步
串行通信各個功能模塊及光電編碼器脈沖計數(shù)值同步串行發(fā)送到上位機的FPGA設(shè)計與仿真實
現(xiàn)。分析證明該設(shè)計時序正確,實現(xiàn)了功能指標,確保了伺服控制器與上位機的通信。
關(guān)鍵詞:FPGA;異步串行通信;同步串行通信;伺服控制系統(tǒng);步進電動機
O 引 言
步進電機伺服控制器是掃描機構(gòu)的核心,而通信系統(tǒng)是伺服控制器的關(guān)鍵。本系統(tǒng)采用霍爾傳感器和光電編碼器采集步進電機的速度和角度信息,伺服控制器傳統(tǒng)的設(shè)計方法是利用單片機或DsP和上位機進行通信。本文采用FPGA作為下位機、采用硬件描述語言Verilog HDL,設(shè)計了掃描機構(gòu)伺服控制器通信系統(tǒng)。FPGA可移植性強,只需要簡單地修改硬件接口和串口通信格式即可實現(xiàn)FPGA和不同的上位機的高速串行通信。
l伺服控制系統(tǒng)構(gòu)成
某掃描機構(gòu)系統(tǒng)框圖如圖l所示。本系統(tǒng)采用閉環(huán)控制方式驅(qū)動步進電機做變速的連續(xù)圓周掃描,帶動掃描機構(gòu)實現(xiàn)精確掃描定位。
根據(jù)不同時刻的速度,由FPGA設(shè)計的細分驅(qū)動模塊(EP2c5T144c6)產(chǎn)生不同頻率的脈沖。此脈沖控翩輸出存儲在FPGA內(nèi)的細分數(shù)據(jù),功率驅(qū)動芯片根據(jù)細分數(shù)據(jù)進行斬波控制步進電機轉(zhuǎn)動,從而控制掃描機構(gòu)按照預(yù)定方式轉(zhuǎn)動【1】;魻杺鞲衅髯鳛樗欧刂破魑恢没鶞,輸出的信號與光電編碼器的零位信號來確定機械零點。配置芯片選用EPcS4,掉電后、上電時對FPGA進行配置。
FPGA對光電編碼器輸出的脈沖信號進行4細分計數(shù),按照要求通過同步串口發(fā)送給Pc機。FPGA在接收到Pc機指令后通過異步串口返回遙測數(shù)據(jù)包。Pc機根據(jù)返回的數(shù)據(jù)包和光電編碼器計數(shù)值,通過異步串口向FPGA發(fā)出指令來控制步進電機。
本系統(tǒng)中異步串行通信的物理接口為RS485、半雙工主從應(yīng)答式,波特率為9 600 bps。采用Verilog語言編寫程序,完成數(shù)據(jù)的接收與發(fā)送。電平轉(zhuǎn)換采用MAⅪM公司生產(chǎn)的MAX3160。這是一款高性能的多協(xié)議收發(fā)器件,可編程控制半雙工或全雙工Rs一485/422,RS232模式。
2 FPGA異步串行通信模塊
異步串行通信模塊在FPGA芯片內(nèi)部的硬件邏輯設(shè)計包括波特率發(fā)生器、Rs一485接收器和Rs一485發(fā)送器【3-5】,如圖2所示。
2.1波特率發(fā)生器
波特率發(fā)生器產(chǎn)生的分頻時鐘,不是波特率時鐘,而是波特率時鐘頻率的16倍,對輸入rxd不斷進行采樣,保持接收器與Pc機同步,目的是為了在接收時進行精確地采樣,以提取異步的串行數(shù)據(jù)。波特率發(fā)生器根據(jù)給定的系統(tǒng)時鐘頻率和要求的波特率計算出波特率分頻因子,已算出的波特率分頻因子作為分頻器的分頻數(shù)。計算公式為:分頻數(shù)=全局時鐘/(16×期望波特率)一1。
2.2 Rs-485接收器
RS一485接收器接收Pc機發(fā)送的指令,并將其轉(zhuǎn)化為并行數(shù)據(jù)。FPGA控制單元根據(jù)此數(shù)據(jù)來控制步進電機的轉(zhuǎn)動。Pc機發(fā)送信號字符格式為:1位起始位,8位數(shù)據(jù)位,1位可程控位(標識地址幀),1位停止位。
由于串行數(shù)據(jù)幀和接收時鐘是異步的,由邏輯l轉(zhuǎn)化為邏輯O可以被視為一個數(shù)據(jù)幀的起始位。為了避免毛刺影響,需要至少4個連續(xù)bclk的邏輯O被接收到,才認為起始位接收到。
Rs.485接收器的接收狀態(tài)機流程圖如圖3(a)所示。狀態(tài)機一共有6個狀態(tài):sO(等待起始位)、s1(求出位的中點)、s2(等待采樣數(shù)據(jù)位和程控位)、s3(數(shù)據(jù)位采樣)、s4(程控位采樣)、s5(存儲數(shù)據(jù)和停止位接收)。
sO狀態(tài):接收器異步復(fù)位后,接收狀態(tài)機將處于這一狀態(tài),一旦確定起始位到來,狀態(tài)機將轉(zhuǎn)入sl狀態(tài)。圖4(a)中的rxd—syne O、Ⅸd—syncl、rxd—sync信號是rxd的同步信號。為了排除干擾信號,檢測經(jīng)過同步后的rxd—sync信號。
s1狀態(tài):對于異步串行信號,在每位的中點檢測位信號,能保證在較后的數(shù)據(jù)位檢測的時累計誤差較小。在本狀態(tài),就是由起始 |