基于FPGA設計EnDat編碼器數據采集后續電路
FPGA內部分為時(shí)鐘發(fā)生模塊、發(fā)送模塊、接收模塊、雙口RAM模塊、發(fā)送使能模塊5個(gè)部分。首先,由時(shí)鐘發(fā)生模塊產(chǎn)生周期為0.5μs的方波信號,取名為CLOCK,此信號作為通訊同步時(shí)鐘信號。在CLOCK的每個(gè)時(shí)鐘上升沿計數變量COUNT自加1,變量COUNT的初始值為0。當發(fā)送使能模塊檢測到COUNT的值為3時(shí),說(shuō)明編碼器已經(jīng)將位置值保存完畢,發(fā)送使能模塊使SENT_EN信號有效,發(fā)送模塊開(kāi)始發(fā)送6位模式指令。當檢測到COUNT的值為9時(shí),停止COUNT在每個(gè)時(shí)鐘上升沿計數,停止發(fā)送數據并使接收使能信號RECEIVE_EN有效,從而使能接收模塊。接收模塊開(kāi)始檢測數據輸入信號的上升沿,一旦上升沿到來(lái)說(shuō)明收到數據起始位s,啟動(dòng)COUNT在每個(gè)時(shí)鐘上升沿計數,以后在每個(gè)時(shí)鐘信號的上升沿保存位置值,直到檢測到COUNT的值為39時(shí),停止接收數據,由接收模塊向雙口RAM模塊的A口寫(xiě)入要保存的位置值,從而結束一次FPGA與編碼器的通訊過(guò)程。由于每次通訊時(shí)間是嚴格固定的,設系統時(shí)鐘為2MHz。FPGA為主叫,當時(shí)鐘下降沿到來(lái)時(shí),編碼器保存位置值要2個(gè)時(shí)鐘周期,向編碼器發(fā)送“請求數據”控制字共6位“000111”,需時(shí)6個(gè)時(shí)鐘周期,編碼器向FPCA共發(fā)送1個(gè)起始位、2個(gè)“錯誤位”、23位位置值和5位CRC校驗位要31個(gè)時(shí)鐘周期,共39個(gè)時(shí)鐘周期,所以每次通訊需要19.5μs的時(shí)間,并且每個(gè)時(shí)刻具體需要傳遞哪一位數據也是嚴格確定
的。因此采用基于時(shí)基的設計方法(見(jiàn)圖5)。
在FPGA內部實(shí)現了128 B的雙口RAM空間,A口具有8位數據線(xiàn),7位地址線(xiàn),用于與編碼器通訊,B口具有16位數據線(xiàn),7位地址線(xiàn),用于與DSP通訊,因為T(mén)MS320F2812為16位DSP,所以與FPGA中RAM的數據傳遞極為方便。DSP在每個(gè)電流環(huán)周期發(fā)送一個(gè)有效的“BEGIN”信號,19.5μs之后,碼盤(pán)信號接收模塊將接收到數據存入FPGA內部雙口RAM的A口中,并按順序排列成16位數據的形式,然后向DSP發(fā)送“END”信號,表示一次通訊結束,DSP接收到中斷之后從FPGA的雙口RAM的B口中讀取數據,完成一次通訊。
對FPGA的開(kāi)發(fā)采用XILINX公司的ISE集成環(huán)境,硬件描述語(yǔ)言為Verilog HDL語(yǔ)言。圖6為程序流程圖。
3 結束語(yǔ)
本文設計了一種基于FPGA的編碼器接口,用以進(jìn)行編碼器和伺服驅動(dòng)器DSP處理器之間的通訊,并且具有CRC校驗等糾錯功能。本文給出了硬件連接和FPGA程序設計流程,可以實(shí)現對永磁同步交流電機磁極位置準確的讀取。
評論