新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 基于Virtex-6 FPGA的雙緩沖模式PCIe總線設計方案和

        基于Virtex-6 FPGA的雙緩沖模式PCIe總線設計方案和

        作者: 時間:2013-02-27 來源:網絡 收藏

        引言

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

        近年來軟件無線電(SDR)得到了飛速的發展,在很多領域已顯示出其優越性。本文的項目背景是通過軟件無線電方式實現數字音頻廣播(DAB)的基帶信號處理,這要求軟件無線電平臺具有高速實時數字信號處理與傳輸能力。高速可編程邏輯器件()和豐富的IP核提供了能高效實現軟件無線電技術的理想平臺。

        1 PCIE總線方案論證

        PCIE是第3代I/O總線互聯技術,如今已成為個人電腦和工業設備中主要的標準互聯總線。與傳統的并行PCI總線相比,PCIE采用串行總線點對點連接,具有更高的傳輸速率和可擴展性。例如本文采用的8通道1代PCIE 2.0硬核的理論傳輸速率是4 GB/s[1],其總線位寬亦可根據需求選擇×1、×2、×4和×8通道。與其他的串行接口(如RapidIO和Hypertransport)相比,PCIE具有更好的性能和更高的靈活性[2].

        1.1 PCIE總線實現方式

        目前,PCI Express總線的實現方式主要有兩種:基于專用接口芯片ASIC和基于IP核的可編程邏輯器件方案。前者通常采用ASIC+/DSP的組合方式,專用PCIE接口芯片(如PEX8311)避免用戶過多地接觸PCIE協議,降低了開發難度;但其硬件電路設計復雜,功能固定,靈活性和可擴展性較差。后者使用IP核實現PCIE協議,用戶可以開發其所需的功能和驅動,具有可編程性和可重配置能力;另外,單片FPGA降低了成本和電路復雜程度,更符合片上系統(SoC)的設計思想。本文采用Xilinx公司6 FPGA和PCIE集成塊,實現雙緩沖的高速PCIE接口設計。

        1.2 雙緩沖與單緩沖比較

        以寫操作(數據從FPGA到內存)為例,雙緩沖PCIE系統框圖如圖1所示。為描述方便,將該FPGA片上系統命名為SRSE(Software Radio System with PCI Express)。

        基于Virtex-6 FPGA的雙緩沖模式PCIe總線設計方案和實現

        圖1 雙緩沖PCIE系統框圖

        PC端的驅動程序在系統內存上為SRSE分配了兩個緩沖區(WR_BUF1/2)用于數據存儲,這兩個緩沖區的地址信息分別存儲在FPGA端的DMA寄存器(DAM_Reg1/2)中。Root Complex連接CPU、內存和PCIE器件,它代表CPU產生傳輸請求[3];PCIE核是Xilinx公司提供的集成塊程序,實現PCIE協議的處理;DMA(直接存儲器訪問)引擎用于實現DSP核和PCIE器件間的高速數據存儲與交換;DSP(數字信號處理)核是用戶設計的算法或應用程序。以圖1為例,DSP核將產生的數據寫入TX_FIFO,DMA引擎將數據以傳輸層數據包(TLP)的形式發送至PCIE核,其中數據包的頭信息來自寄存器DMA_Reg1.當SRSE將數據寫入緩沖區WR_BUF1時,驅動分配另外一塊緩沖區WR_BUF2并將該緩沖區的地址信息寫入寄存器DMA_Reg2中;當DMA引擎發出WR_BUF1的寫操作消息中斷(MSI)后,DMA控制器將數據包的頭信息切換至DMA_Reg2,驅動將緩沖區切換至WR_BUF2,繼續傳輸數據。

        基于Virtex-6 FPGA的雙緩沖模式PCIe總線設計方案和實現

        圖2 PCIE總線中斷延遲測量

        與雙緩沖相對應的是單緩沖。以寫操作為例,驅動程序每次在內存上分配一個緩沖區WR_BUF,該緩沖區的地址信息存儲在DMA寄存器DMA_Reg中。當寫滿緩沖區WR_BUF時,DMA引擎會產生MSI中斷,并通過PCIE核通知驅動程序。驅動分配新的緩沖區,并將該緩沖區地址通過PCIE總線寫入DMA寄存器DMA_Reg中。中斷的傳輸和DMA寄存器的更新會產生一定延時,這需要較大的TX_FIFO來存取延時期間DSP核產生的數據。

        為精確測量中斷延時時間,搭建了基于DELL T3400型PC和ML605開發套件的平臺,通過ChipScope觀察的波形結果如圖2所示。DMA中斷發生在時刻0(mwr_done:0博1);然后PCIE核向驅動發出MSI中斷,驅動程序查詢中斷寄存器發生在時刻2241(irq_wr_accessed:1博0);驅動程序分配新的內存緩沖區,然后更新DMA寄存器發生在時刻2802(wr_dma_buff0_rdy:0博1)。在這2802個時鐘周期內,PCIE器件無法將數據寫入內存。PCIE的時鐘頻率為250 MHz,所以中斷延時T=2802×(1/250 MHz)=11.2 μs.假定DSP核產生數據的速率為200 MB/s,中斷延時期間將產生11.2 μs×200 MB/s=2241 B大小的數據。考慮到其他不可預測因素,如中斷堵塞等,為了不丟失數據,TX_FIFO至少需要幾KB的空間。這對于FPGA內寶貴的硬件資源(如Block RAM)來說是嚴峻的挑戰。

        與單緩沖相比,雙緩沖模式優點歸納如下:

        ①更新緩沖區不會引入中斷延時,這意味著較小的FIFO即可滿足需求,節約了硬件資源。

        ②雙緩沖模式延長了驅動程序處理中斷的時間,也使緩沖區數據的處理更加容易,丟包率大大減小。

        ③數據的傳輸和內存緩沖區的數據處理可以并行處理,系統的實時性得到保證。

        ④雙緩沖更適合Scatter/Gather DMA,取代block DMA,從而提高內存效率。


        上一頁 1 2 3 4 下一頁

        關鍵詞: Virtex FPGA PCIe 模式

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 米易县| 巴马| 浦江县| 安溪县| 调兵山市| 马关县| 江永县| 湟源县| 卢湾区| 广河县| 灵石县| 闻喜县| 凤阳县| 武夷山市| 若尔盖县| 乳源| 达孜县| 仲巴县| 永福县| 肇庆市| 武平县| 林甸县| 丰宁| 石棉县| 封丘县| 涿州市| 浪卡子县| 安塞县| 灵川县| 依兰县| 夹江县| 德惠市| 揭东县| 项城市| 酒泉市| 滕州市| 康定县| 佛坪县| 饶阳县| 金门县| 宁陵县|