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