基于Virtex-6 FPGA的雙緩沖模式PCIe總線(xiàn)設計方案和
3.4 雙緩沖PCIE協(xié)議
以寫(xiě)操作為例,雙緩沖PCIE協(xié)議如圖7所示。初始化時(shí),驅動(dòng)程序在內存中分配兩塊緩沖區Buff 1a/2a,然后將Buff 1a的地址信息寫(xiě)入DMA控制/狀態(tài)寄存器DMA_Reg1(圖1)中并開(kāi)始寫(xiě)操作;DMA引擎將FIFO中的數據以數據包的形式通過(guò)PCIE總線(xiàn)發(fā)送至緩沖區Buff 1a中,期間驅動(dòng)程序將Buff 2a的地址信息發(fā)送至DMA控制/狀態(tài)寄存器DMA_Reg2中;當Buff 1a寫(xiě)操作完成時(shí),MSI中斷控制器產(chǎn)生MSI中斷并通知驅動(dòng),此時(shí)驅動(dòng)和DMA控制器同時(shí)切換緩沖區,即驅動(dòng)將緩沖區切換至Buff 2a,DMA控制器將TLP頭信息切換至DMA_Reg2,如此繼續傳輸數據。

圖7 雙緩沖PCIE操作協(xié)議(寫(xiě)操作)
將MSI中斷與新緩沖區配置間的時(shí)間間隔稱(chēng)為中斷延時(shí),如圖2和圖7所示。雙緩沖模式的引入消除了中斷延時(shí)的影響,使SRSE在中斷延時(shí)期間仍能傳輸數據,節約了硬件資源,驅動(dòng)程序也有更多時(shí)間來(lái)處理緩沖區的數據。
4 PCIE調試與性能
提供了Root Port的Test Bench,它可以模擬PC和驅動(dòng)程序,如初始化DMA引擎、產(chǎn)生下行數據流并發(fā)送至PCIE設備,也可以接收來(lái)自PCIE設備的上行數據流等,使整個(gè)系統(PCIE核+DMA引擎+DSP核)可以在Modelsim SE環(huán)境下仿真。這大大縮短了開(kāi)發(fā)周期,提高了開(kāi)發(fā)效率。功能仿真通過(guò)后,使用Xilinx ISE 軟件完成代碼的輸入、綜合、實(shí)現、驗證和下載。
硬件平臺為DELL T3400型PC和Xilinx ML605開(kāi)發(fā)套件。PC端基于Ubuntu 10.10操作系統運行驅動(dòng)程序,FPGA端DSP核(圖6)通過(guò)Matlab Simulink調用Xilinx元件庫實(shí)現。本文DSP核由32位計數器和加法器組成:計數器將值寫(xiě)入TX_FIFO,PC端檢測接收數據以驗證寫(xiě)操作(SRSE→PC);同樣地,PC端產(chǎn)生+1計數值并將數據寫(xiě)入RX_FIFO,DSP核的加法器用來(lái)驗證讀操作(PC→SRSE)。
結語(yǔ)
本文設計了基于Xilinx Virtex6 FPGA的通用軟件無(wú)線(xiàn)電平臺,利用C語(yǔ)言開(kāi)發(fā)了基于Linux系統的驅動(dòng)程序,利用Verilog語(yǔ)言設計基于Xilinx PCIE硬核的雙緩沖DMA控制器。雙緩沖消除了中斷延時(shí)的影響,節約了硬件資源,提高了數據傳輸速度。
評論