基于PCD656的高速PCI總線(xiàn)接口的設計與實(shí)現
4 局部總線(xiàn)端設計
本設計中,局部總線(xiàn)端采用了C模式。C模式下可配置3種數據傳輸方式:?jiǎn)沃芷诜绞剑⊿ingle Cycle Mode)、4字方式(Brust-4 Mode)和連續突發(fā)傳輸方式(Continuous Mode),在本設計中采用了連續突發(fā)方式,可以有效地提高輸出效率。
PCI9656在局部總線(xiàn)為為主設備,始終占用局部總線(xiàn),局部總線(xiàn)端的FPGA始終響應PCI9656的操作。方案中使用PCI9656的DMA傳輸模式,在本地端不需要進(jìn)行地址譯碼,因此可以對PCI9656的控制信號進(jìn)行簡(jiǎn)化處理,PCI9656的局部端主要控制信號如下
ADS#:一次總線(xiàn)訪(fǎng)問(wèn)開(kāi)始;
Blast#:總線(xiàn)訪(fǎng)問(wèn)結束;
LW/R#:讀寫(xiě)控制信號;
Ready#:從設備準備好信號,有效時(shí)表示總線(xiàn)訪(fǎng)問(wèn)進(jìn)行中;
LHOLD:PCI9656占用本地總線(xiàn)申請信號;
LHOLDA:占用本地總線(xiàn)應答信號;
Wait#:主設備傳輸暫停信號;
EOT#:數據傳輸異常中止信號,用于FIFO溢出或空時(shí)中斷數據傳輸;
Lint#:用于引起CompaetPCI總線(xiàn)端的中斷信號;
LRST#:本地總線(xiàn)復位信號;
CCS#:配置寄存器選擇信號。
在DMA傳輸過(guò)程中主要關(guān)心的信號可簡(jiǎn)化為:ADS#、Blast#、LW/R#、Ready#、LHOLD、LHOLDA,如圖3所示。
圖3 PCI局部總線(xiàn)控制時(shí)序
圖3中,lclk為本地總線(xiàn)時(shí)鐘,當PCI9656要發(fā)起一次DMA操作時(shí),先發(fā)送lhold信號申請本地總線(xiàn),若本地總線(xiàn)空閑則FPGA發(fā)出lholda信號響應PCI9656,然后PCI有效ads_n信號以示總線(xiàn)傳輸開(kāi)始,FPGA使ready_n有效以示總線(xiàn)傳輸正在進(jìn)行中,此時(shí)本地數據通過(guò)局部數據線(xiàn)傳送到PCI總線(xiàn),或著(zhù)數據由PCI總線(xiàn)傳送到局部邏輯。一次傳輸結束時(shí)PCI使blast_n信號有效并使lhold信號無(wú)效,然后FPGA使lholda信號和ready_n信號無(wú)效,一次DMA傳輸完成。傳輸中若是DMA讀操作則lwr信號拉低,若為寫(xiě)操作則拉高。
本地總線(xiàn)位寬為32位,因此本地總線(xiàn)理論速度為264MB·s-1,由于應用程序的效率問(wèn)題和傳輸中一些無(wú)效狀態(tài)的存在,目前PCI總線(xiàn)平均速率達到212 MB·s-1,可以滿(mǎn)足目前高速數據采集、傳輸對總線(xiàn)傳輸速度的要求。
PCI9656本地總線(xiàn)時(shí)序設計中需要注意blast_n信號有效說(shuō)明為突發(fā)傳輸最后一個(gè)時(shí)鐘周期,此時(shí)ready_n信號仍然為有效,否則會(huì )造成總線(xiàn)等待;在正常讀寫(xiě)訪(fǎng)問(wèn)中CCS#信號應置高,否則總線(xiàn)訪(fǎng)問(wèn)將指向配置空間而非內存或I/O空間。
5 結束語(yǔ)
利用PCI9656和FPGA實(shí)現了一種高速PCI總線(xiàn)接口,較全面地論述了總線(xiàn)驅動(dòng)開(kāi)發(fā)和局部時(shí)序設計的過(guò)程。這種設計提高了總線(xiàn)傳輸速度,為高速數據采集系統的實(shí)現創(chuàng )造了條件。
評論