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