基于Virtex-6的PCI Express高速采集卡設計
3.2 DMA傳輸實(shí)現
采用DMA傳輸能極大的減輕主機處理負擔,特別適用于大數據量處理系統。采用DriverWorks提供的KDmaAdapter類(lèi)可輕松建立一個(gè)DMA傳輸鏈路,實(shí)現DMA讀寫(xiě)操作。用于FPGA總線(xiàn)協(xié)議模塊軟件層完成了相關(guān)DMA傳輸的控制,所以驅動(dòng)程序DMA傳輸只需子在系統啟動(dòng)DMA傳輸時(shí),身心相應的內存作為公共緩沖區,用于外部DMA控制器存入數據文件,這里需要調用DriverWorks提供的KCommonDmaBuffer類(lèi),該類(lèi)常用函數如表2所示。本文引用地址:http://dyxdggzs.com/article/192810.htm
VirtaulAddress()函數返回的內核模式地址是提供給驅動(dòng)程序讀寫(xiě)公用緩沖區用的,而進(jìn)行DMA傳輸時(shí)需要用到緩沖區的物理地址,也即需要寫(xiě)入DMA參數寄存器的是緩沖區的物理地址。
3.3 總線(xiàn)中斷處理
采集卡一共需要處理三種中斷請求,分別是DMA寫(xiě)完成,DMA讀完成和錯誤中斷請求。在Driver Works平臺中,KInterrupt類(lèi)可用于處理硬件中斷,其主要函數包括中斷寄存器初始化,中斷連接函數,實(shí)現了將一個(gè)中斷服務(wù)例程連接到一個(gè)中斷和解除其連接等。
中斷處理函數首先在驅動(dòng)程序構造的函數中調用MEMBER_ISR(class_name,fuction_name),聲明中斷服務(wù)例程為該類(lèi)的一個(gè)成員函數,接著(zhù)在驅動(dòng)程序驅動(dòng)例程中調用InitializeAndConnect(),初始化中斷類(lèi)實(shí)例,并與中斷服務(wù)例程連接起來(lái)。
這樣就完成了對外部硬件中斷的處理,當每次驅動(dòng)程序檢測到硬件產(chǎn)生中斷脈沖時(shí),中斷服務(wù)函數隨即被調用,從而轉入相應中斷處理程序中執行。
4 采集卡性能測試
為測試采集系統性能,自行設計了應用軟件對采集卡數據傳輸速率進(jìn)行統計,在Windows環(huán)境下,采用多種數據量進(jìn)行DMA方式讀寫(xiě)。應用端軟件根據數設定的數據包大小,申請不同的內存空間,并將虛擬地址映射到FPGA的DMA寄存器。實(shí)際測試采集速率結果如圖4所示。
根據圖4的測試結果,總線(xiàn)DMA傳輸速率與數據塊大小相關(guān)。當設定系統數據塊(即開(kāi)辟的主機內存)大于32 Mb時(shí),采集卡的采集速率穩定在5.6 Gb/s。實(shí)驗結果表明,該系統大幅度地提高了數據交互速度,發(fā)揮了PCI Express總線(xiàn)的優(yōu)越性能。
5 結語(yǔ)
本文應用Xilinx公司的VirteX-6芯片設計了PCIExpress高速采集卡,通過(guò)調用FPGA內部的PCIE集成協(xié)議硬核,配合總線(xiàn)DMA控制器,能夠快速可靠地采集外部差分數據,具有解碼、整形,高速采集存儲的功能,是大數據量交互的有效解決方案。
評論