新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于PXI總線的數據傳輸接口設計與實現方案

        基于PXI總線的數據傳輸接口設計與實現方案

        作者: 時間:2011-09-26 來源:網絡 收藏
        圖4 PCI DMA 狀態轉移圖

        本文引用地址:http://www.104case.com/article/150167.htm

          圖 4 中,S0 為空閑狀態;S1 若在PCI9054 對Local Bus 進行寫的操作中為數據接收狀態,若在PCI9054 讀Local Bus 的操作中為數據準備狀態;S2 為PCI 9054 讀Local Bus 的操作中的數據發送狀態;S3 為讀寫操作的終止狀態。圖中各狀態轉移觸發信號均為PCI 9054Local Bus 端的控制信號。

          

        圖 5 PCI 9054 內部寄存器讀寫操作的狀態轉移圖

          圖 5 PCI 9054 內部寄存器讀寫操作的狀態轉移圖

          圖 5 中,S0為空閑狀態,在讀寫啟動信號en_rwreg=1的情況下進入工作狀態;S1為讀寫周期開始狀態,有效Local Bus 端的讀寫周期開始信號;S2 為讀寫周期等待狀態,等待PCI9054 的LREADY#有效;S3 為突發讀寫方式下的響應狀態,突發讀寫方式下,PCI9054的LREADY#有效后,使能內部邏輯進行相應的響應;S4 為讀寫周期響應狀態,在非突發讀寫方式下或者突發讀寫的終止周期中的響應狀態。

          在了上述兩個狀態機模塊后,FPGA的程序還需要包括對FFT處理器的輸出數據進行數據幀封裝,即給每一次FFT 處理器根據相應的配置參數進行處理輸出的數據加上幀頭,幀頭中包含了此次傳輸的FFT 數據所覆蓋的頻段以及數據的長度信息。這樣做的好處是上位機不需要額外的同步信息,只需要根據幀頭中的頻段信息以及長度信息就可以判斷當前數據幀所表示的頻譜信息。利用PCI9054 內部寄存器中的MailBox 寄存器組來數字頻譜儀與上位機之間的參數傳遞。由于數字頻譜儀需要的參數信息比較少,只需要頻段選擇信息,以及開始和結束數字頻譜儀的控制信號,選擇MailBox 寄存器組中的第七個位寬為32 位的寄存器來傳遞控制信息。

          整個 FPGA 程序的流程示意圖如圖6 所示。

          

        圖6 FPGA程序流程示意圖

          圖6 FPGA程序流程示意圖

          3.2 驅動程序的

          驅動程序的可以通過兩種方式,一種是通過專用的驅動程序開發工具進行驅動程序的,如DDK、DriverStudio 和WinDriver 等,另外一種方式是通過PLX 公司提供的PCI軟件工具包SDK(Software Development Kit)實現的驅動設計,它提供了能夠實現各種傳輸方式所需要的基本API 函數。

          為了縮短開發周期,本文采用由PLX 公司提供的SDK 工具包進行驅動程序的開發。運用其SDK 提供的工作API 函數實現Block DMA 模式下的Burst Forever(無限突發)方式的。主要用到的函數如表1 所示。

          由于本系統的特殊應用,還需要增加一些上層的應用程序,才能實現整個數字頻譜儀數據的正常工作,主要包括數字頻譜儀的參數控制字的生成和寫PCI9054 內部寄存器MailBoxReg7,以及對接收的數據幀進行解封裝的相關程序開發。

          表1 Block DMA 模式下的SDK API 函數應用列表

          

        表1 Block DMA 模式下的SDK API 函數應用列表

          本文使用了 PCI9054 的DMA傳輸方式,并且在Local端發起DMA傳輸,在上位機上采用中斷的形式進行響應,可以減少占用上位機CPU 處理時間,使得上位機在進行的同時可以進行其他的操作。 接口加上PCI9054 的開發模式,使得開發周期縮短了很多,避免了復雜的 協議的邏輯設計和驗證工作。本系統采用的 的傳輸位寬32 位,采用無限突發的傳輸方式,在數據傳輸周期中的數據傳輸速率為132MB/s,但是由于增加了額外的控制周期以及其他的一些控制邏輯,使得數據的平均傳輸速率并沒有達到這個值,但是完全可以匹配目前FFT 處理器的處理速率,可以保證數據傳輸的實時性。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 准格尔旗| 沙田区| 留坝县| 齐河县| 呈贡县| 金平| 义马市| 襄垣县| 都匀市| 油尖旺区| 海林市| 安阳县| 龙海市| 甘肃省| 格尔木市| 望奎县| 新晃| 夹江县| 青川县| 玉环县| 凤城市| 高淳县| 印江| 荃湾区| 谷城县| 夏邑县| 扎赉特旗| 太白县| 政和县| 曲阳县| 团风县| 玛纳斯县| 南澳县| 泽库县| 安义县| 扶绥县| 砚山县| 申扎县| 南开区| 郎溪县| 遂川县|