基于FPGA和PCI的高精度測速板卡的設計與實現
(1)空閑狀態為PCI從設備的初始狀態,在沒有任何操作的時候,PCI從設備將始終保持這個狀態;
(2)每次數據傳輸時首先傳出地址和命令字,根據地址和命令字確定是不是對本設備的訪問,并確定訪問的首地址;從設備則從命令字中識別該訪問是讀操作還是寫操作;
(3)讀訪問只有在信號IRDY,TRDY,DEVSEL都為低狀態時才能進行;
(4)猝發傳輸需要通過地址遞增邏輯來實現地址的自動遞加;其地址遞增的周期為數據周期和最后傳輸周期總和,在等待周期暫停遞增;
(5)主從設備中任一方沒有準備好,操作中都需要能夠引起等待狀態插入的活動;
(6)讀操作還有一個中間準備過程。
那么完成本狀態機需要6個狀態:idle表示空閑狀態;addr表示地址周期;turnad表示讀轉換周期;data表示數據傳輸周期;lasttra表示最后傳輸周期;wait表示等待周期;在各個狀態到來時還要對中間信號、輸出信號和本地信號執行相應的操作:
(1)idle,addr,turnad周期對PCI_TFRDYn和PCIDEVSELn置高電平;addr周期依據地址信號確定是否選中本機,識別是否為讀操作;addr周期輸出PCI_AD[3:2]對寄存器進行尋址,實現讀操作。
(2)data,lasttra周期對PCI_TRDYn和PCI_DEVSELn置低電平;data,lasttra周期置DATA_EN有效并輸出。
(3)addr,data,lasttra周期置奇偶校驗有效。
(4)等待周期置PCI_TRDYn和PCI_DEVSELn低電平。
根據對PCI總線傳輸時序的分析,影響各個狀態相互轉化的因素是:幀同步信號PCI_FRAMEn、主設備準備好信號PCI_IRDYn、讀識別信號READn。其中,READn用來標識狀態addr產生的中間識別信號。本文引用地址:http://www.104case.com/article/191386.htm
3 測試平臺與仿真測試
這種改進M/T數字測速及位置檢測算法的硬件采用Xilinx公司的FPGA XC3S400。使用36 000刻的增量式碼盤,速度環采樣周期T設定為1 ms,高頻時標信號的頻率為40 MHz,結合PC運算的數字測速算法可以在速度O.001~150(°)/s的范圍內獲得±2.5×10-5 s的測速精度。與此同時,高精度動態位置檢測算法可以使位置反饋的動態測量分辨率提高到10-2~10-6個脈沖當量。
對編寫好的VHDL程序采用ISE進行綜合,并編寫測試平臺,用ModelSim對其進行仿真測試。圖6為PCI控制器的仿真圖,圖中state表示狀態機在內部轉換的過程,狀態1表示空閑狀態,狀態2表示地址周期,狀態4表示讀轉換周期,狀態8表示最后傳輸周期,狀態9表示猝發讀寫周期。
該I/O讀操作,將地址為1的寄存器讀出。這里設定I/O地址為0X200~0X20F這4個雙字空間,那么在地址周期中地址0X204的2~3位尋址于寄存器的第一個雙字,其后緊跟的是讀的轉換周期,猝發讀寫周期和最后一位讀寫周期。可以看出,這兩個周期都對這個寄存器進行了讀操作。
4 結語
本文介紹了使用FPGA設計和實現基于PCI總線傳輸的改進型M/T法測速電路,它克服了經典測速方法的幾個缺點,在較大速度范圍內都具有良好的精度。同時使用FPGA設計和實現了PCI從設備控制器,使得測速電路的設計與PCI總線的設計成為一個整體,節省了板上器件,也使得整個設計信號在FPGA內部流動,具有更加良好的抗干擾能力和穩定性。
評論