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