• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      FPGA的雙緩沖模式PCI Express總線設(shè)計(jì)

      2011-06-22 08:19:06朱偉杰陸探朱萬(wàn)經(jīng)
      關(guān)鍵詞:驅(qū)動(dòng)程序緩沖區(qū)寄存器

      朱偉杰,陸探,朱萬(wàn)經(jīng)

      (電子科技大學(xué)電子工程學(xué)院,成都611731)

      引 言

      近年來(lái)軟件無(wú)線電(SDR)得到了飛速的發(fā)展,在很多領(lǐng)域已顯示出其優(yōu)越性。本文的項(xiàng)目背景是通過(guò)軟件無(wú)線電方式實(shí)現(xiàn)數(shù)字音頻廣播(DAB)的基帶信號(hào)處理,這要求軟件無(wú)線電平臺(tái)具有高速實(shí)時(shí)數(shù)字信號(hào)處理與傳輸能力。高速可編程邏輯器件(FPGA)和豐富的IP核提供了能高效實(shí)現(xiàn)軟件無(wú)線電技術(shù)的理想平臺(tái)。

      1 PCⅠE總線方案論證

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

      1.1 PCⅠE總線實(shí)現(xiàn)方式

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

      1.2 雙緩沖與單緩沖比較

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

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

      圖1 雙緩沖PCⅠE系統(tǒng)框圖

      與雙緩沖相對(duì)應(yīng)的是單緩沖模式。以寫操作為例,驅(qū)動(dòng)程序每次在內(nèi)存上分配一個(gè)緩沖區(qū)WR_BUF,該緩沖區(qū)的地址信息存儲(chǔ)在DMA寄存器DMA_Reg中。當(dāng)寫滿緩沖區(qū)WR_BUF時(shí),DMA引擎會(huì)產(chǎn)生MSI中斷,并通過(guò)PCIE核通知驅(qū)動(dòng)程序。驅(qū)動(dòng)分配新的緩沖區(qū),并將該緩沖區(qū)地址通過(guò)PCIE總線寫入DMA寄存器DMA_Reg中。中斷的傳輸和DMA寄存器的更新會(huì)產(chǎn)生一定延時(shí),這需要較大的 TX_FIFO來(lái)存取延時(shí)期間DSP核產(chǎn)生的數(shù)據(jù)。

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

      與單緩沖模式相比,雙緩沖模式優(yōu)點(diǎn)歸納如下:

      ①更新緩沖區(qū)不會(huì)引入中斷延時(shí),這意味著較小的FIFO即可滿足需求,節(jié)約了硬件資源。

      ②雙緩沖模式延長(zhǎng)了驅(qū)動(dòng)程序處理中斷的時(shí)間,也使緩沖區(qū)數(shù)據(jù)的處理更加容易,丟包率大大減小。

      ③數(shù)據(jù)的傳輸和內(nèi)存緩沖區(qū)的數(shù)據(jù)處理可以并行處理,系統(tǒng)的實(shí)時(shí)性得到保證。

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

      2 軟件無(wú)線電平臺(tái)設(shè)計(jì)

      軟件無(wú)線電基于可編程、可重構(gòu)的通用硬件平臺(tái),通過(guò)加載不同的軟件實(shí)現(xiàn)不同的無(wú)線電功能,廣泛應(yīng)用于軍用和民用領(lǐng)域。為了能夠?qū)崿F(xiàn)復(fù)雜的算法,其平臺(tái)需要具備高速數(shù)據(jù)交換和實(shí)時(shí)信號(hào)處理的能力。該設(shè)計(jì)參考Xilinx ML605開發(fā)套件,基于 Xilinx Virtex-6 LX240T FPGA芯片,通過(guò)增加相應(yīng)的模塊搭建通用的軟件無(wú)線電平臺(tái)。

      軟件無(wú)線電原理框圖如圖3所示。信號(hào)獲取模塊采用兩片ADC和DAC以實(shí)現(xiàn)I-Q兩路信號(hào)的數(shù)模轉(zhuǎn)換;通信模塊由以太網(wǎng)和USB-RS232接口組成;擴(kuò)展卡可以是射頻發(fā)射機(jī)或接收機(jī),通過(guò)擴(kuò)展卡接口與母板相連;JTAG接口提供在線編程和內(nèi)部測(cè)試功能;存儲(chǔ)器件包括512 MB DDR3內(nèi)存和128 MB平臺(tái)Flash,分別用于動(dòng)態(tài)數(shù)據(jù)存儲(chǔ)和配置FPGA;人機(jī)接口由 LED/LCD、按鍵和開關(guān)等元件組成,實(shí)現(xiàn)人機(jī)對(duì)話;200 MHz有源晶振和SMA時(shí)鐘接口組成時(shí)鐘輸入模塊,向FPGA提供時(shí)鐘基準(zhǔn);8通道PCIE接口和IP核實(shí)現(xiàn)平臺(tái)與PC間高速數(shù)據(jù)交換。

      圖2 PCⅠE總線中斷延遲測(cè)量

      圖3 軟件無(wú)線電原理框圖

      3 雙緩沖模式PCⅠE總線設(shè)計(jì)

      3.1 PCⅠE驅(qū)動(dòng)設(shè)計(jì)

      PC端基于Linux(Ubuntu 10.10)操作系統(tǒng)。該操作系統(tǒng)免費(fèi)開源,安全穩(wěn)定靈活,適合低成本軟件開發(fā)。驅(qū)動(dòng)程序包含數(shù)據(jù)流接口和控制接口。數(shù)據(jù)流接口用于Linux用戶空間和SRSE平臺(tái)間高速的數(shù)據(jù)交換;控制接口使用戶可以觀察和配置SRSE平臺(tái)寄存器,例如通過(guò)控制接口,用戶可以在PC端改變SRSE平臺(tái)的調(diào)諧頻率等參數(shù)。數(shù)據(jù)流接口是雙向獨(dú)立的,支持雙/單工,即可以同時(shí)讀和寫數(shù)據(jù)。以數(shù)據(jù)發(fā)送(從PC到SRSE)為例,用戶空間調(diào)用write()函數(shù)將任意數(shù)量的數(shù)據(jù)發(fā)送至驅(qū)動(dòng),驅(qū)動(dòng)整理數(shù)據(jù)碎片以滿足PCIE對(duì)數(shù)據(jù)對(duì)齊和傳輸塊數(shù)據(jù)量的要求。當(dāng)數(shù)據(jù)滿足4096字節(jié),驅(qū)動(dòng)將數(shù)據(jù)塊發(fā)送至 Root Complex并保留已發(fā)送數(shù)據(jù)的列表,等待接收來(lái)自SRSE平臺(tái)的寫操作中斷。PCIE驅(qū)動(dòng)數(shù)據(jù)接收的原理如圖4所示。當(dāng)用戶空間調(diào)用read()函數(shù)或者驅(qū)動(dòng)接收到來(lái)自PCIE設(shè)備的數(shù)據(jù)時(shí),驅(qū)動(dòng)初始化讀操作。驅(qū)動(dòng)程序?qū)⒈3肿枞?blocking),直到用戶空間調(diào)用 read()函數(shù),并且已接收到足夠的數(shù)據(jù)包,從而能夠填滿read()請(qǐng)求的數(shù)據(jù)量。碎片整理模塊對(duì)已接收的數(shù)據(jù)進(jìn)行整理,然后將數(shù)據(jù)塊返回至用戶空間,并通知其解除驅(qū)動(dòng)阻止。

      圖4 PCⅠE驅(qū)動(dòng)中的數(shù)據(jù)接收

      3.2 PCⅠE核配置

      Virtex-6 PCIE Endpoint Block[4]集成了傳輸層(TL)、數(shù)據(jù)鏈路層(DLL)和物理層(PL)協(xié)議,它完全符合PCIE基本規(guī)范,可配置性增加了設(shè)計(jì)的靈活性,降低了成本。其功能框圖與接口如圖5所示。其中收發(fā)器通過(guò)PCIE總線與Root Complex實(shí)現(xiàn)數(shù)據(jù)包的傳遞,PCIE總線由系統(tǒng)接口和PCIE接口組成;系統(tǒng)接口由復(fù)位和時(shí)鐘信號(hào)組成,PCIE接口由8條差分傳輸和接收對(duì)組成(8-lane)。TX/RX Block RAM用來(lái)存儲(chǔ)來(lái)自DMA引擎和系統(tǒng)內(nèi)存的數(shù)據(jù),其大小可以通過(guò)Xilinx Core Generator配置。傳輸接口為用戶提供了產(chǎn)生和接收TLP的機(jī)制;物理層接口使用戶能夠觀測(cè)和控制鏈路的狀態(tài);配置接口使用戶能夠觀察和配置PCIE終端的配置空間,即DMA寄存器;中斷接口實(shí)現(xiàn)DMA與PCIE核之間的中斷傳輸。用戶通過(guò)這些接口設(shè)計(jì)符合其需要的DMA引擎。

      圖5 PCⅠE功能框圖與接口

      本文使用Xilinx CORE Generator生成PCIE核,其主要配置參數(shù)如表1所列。

      表1 PCⅠE核主要配置參數(shù)

      3.3 總線主控DMA傳輸

      參考 Xilinx應(yīng)用實(shí)例 XAPP1052[5],本文設(shè)計(jì)的DMA結(jié)構(gòu)框圖如圖6所示,各部分功能介紹如下:

      ①發(fā)射引擎。發(fā)射引擎產(chǎn)生傳輸層數(shù)據(jù)包(TLP)并通過(guò)傳輸接口發(fā)送至PCIE核,數(shù)據(jù)包的數(shù)據(jù)來(lái)自 TX_FIFO,頭信息來(lái)自DMA控制/狀態(tài)寄存器,也負(fù)責(zé)驅(qū)動(dòng)對(duì)DMA寄存器的讀取。

      ②接收引擎。接收引擎將來(lái)自上位機(jī)的數(shù)據(jù)包解碼并轉(zhuǎn)存至RX_FIFO中,也接收來(lái)自驅(qū)動(dòng)的配置信息并將寄存器值寫入DMA控制/狀態(tài)寄存器中。

      ③DMA控制/狀態(tài)寄存器。該模塊是DMA的主控制器,控制著DMA復(fù)位、讀寫等操作;內(nèi)存緩沖區(qū)的地址信息和TLP包長(zhǎng)度等信息也存儲(chǔ)在該寄存器中。

      ④MSI中斷控制器。該模塊產(chǎn)生讀寫中斷,然后通過(guò)中斷接口通知PCIE核,進(jìn)而通知驅(qū)動(dòng)程序。

      ⑤TX/RX_FIFO。通過(guò)Xilinx Core Generator將FIFO配置為獨(dú)立時(shí)鐘異步模式,實(shí)現(xiàn)不同時(shí)鐘域的數(shù)據(jù)緩沖和位寬轉(zhuǎn)換。本文PCIE時(shí)鐘為250 MHz、位寬64位,而DSP核時(shí)鐘為 200 MHz、位寬32位。

      ⑥PCIE核。該模塊為例化的PCIE集成塊,框圖和參數(shù)詳見圖5和表1。

      ⑦DSP核。該模塊為用戶設(shè)計(jì)的算法或者功能模塊,例如通過(guò)Simulink調(diào)用Xilinx庫(kù)實(shí)現(xiàn)某種功能。

      圖6 DMA結(jié)構(gòu)框圖

      3.4 雙緩沖PCⅠE協(xié)議

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

      圖7 雙緩沖PCⅠE操作協(xié)議(寫操作)

      將MSI中斷與新緩沖區(qū)配置間的時(shí)間間隔稱為中斷延時(shí),如圖2和圖7所示。雙緩沖模式的引入消除了中斷延時(shí)的影響,使SRSE在中斷延時(shí)期間仍能傳輸數(shù)據(jù),節(jié)約了硬件資源,驅(qū)動(dòng)程序也有更多時(shí)間來(lái)處理緩沖區(qū)的數(shù)據(jù)。

      4 PCⅠE調(diào)試與性能

      [4]提供了Root Port的Test Bench,它可以模擬PC和驅(qū)動(dòng)程序,如初始化DMA引擎、產(chǎn)生下行數(shù)據(jù)流并發(fā)送至PCIE設(shè)備,也可以接收來(lái)自PCIE設(shè)備的上行數(shù)據(jù)流等,使整個(gè)系統(tǒng)(PCIE核+DMA引擎+DSP核)可以在Modelsim SE環(huán)境下仿真。這大大縮短了開發(fā)周期,提高了開發(fā)效率。功能仿真通過(guò)后,使用Xilinx ISE軟件完成代碼的輸入、綜合、實(shí)現(xiàn)、驗(yàn)證和下載。

      硬件平臺(tái)為DELL T3400型PC和Xilinx ML605開發(fā)套件。PC端基于Ubuntu 10.10操作系統(tǒng)運(yùn)行驅(qū)動(dòng)程序,FPGA端DSP核(圖6)通過(guò)Matlab Simulink調(diào)用Xilinx元件庫(kù)實(shí)現(xiàn)。本文DSP核由32位計(jì)數(shù)器和加法器組成:計(jì)數(shù)器將值寫入 TX_FIFO,PC端檢測(cè)接收數(shù)據(jù)以驗(yàn)證寫操作(SRSE→PC);同樣地,PC端產(chǎn)生+1計(jì)數(shù)值并將數(shù)據(jù)寫入 RX_FIFO,DSP核的加法器用來(lái)驗(yàn)證讀操作(PC→SRSE)。

      結(jié) 語(yǔ)

      本文設(shè)計(jì)了基于Xilinx Virtex-6 FPGA的通用軟件無(wú)線電平臺(tái),利用C語(yǔ)言開發(fā)了基于Linux系統(tǒng)的驅(qū)動(dòng)程序,利用Verilog語(yǔ)言設(shè)計(jì)基于Xilinx PCIE硬核的雙緩沖DMA控制器。雙緩沖消除了中斷延時(shí)的影響,節(jié)約了硬件資源,提高了數(shù)據(jù)傳輸速度。

      編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。

      參考文獻(xiàn)

      [1]Xilinx Inc.Understanding Performance of PCI Express Systems,2008.

      [2]C Sauer,M Gries,J I Gomez,et al.Developing a Flexible Interface for RapidIO,Hypertransport,and PCI-Express[C]//IEEE International Conference on Parallel Computing in Electrical Engineering,January 2004.

      [3]R Budruk,D Anderson,T Shanley.PCI Express System Architecture[M].London:Pearson Education,2003.

      [4]Xilinx Inc.Virtex-6 FPGA Integrated Block for PCI Express User Guide,2010.

      [5]Xilinx Inc.Bus M aster DMA Performance Demonstration Reference Design for the Xilinx Endpoint PCI Express Solutions,2009.

      猜你喜歡
      驅(qū)動(dòng)程序緩沖區(qū)寄存器
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
      電視技術(shù)(2012年1期)2012-06-06 08:13:58
      高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
      一種可重構(gòu)線性反饋移位寄存器設(shè)計(jì)
      驅(qū)動(dòng)程序更新與推薦
      驅(qū)動(dòng)程序更新與推薦
      正阳县| 昭通市| 绥滨县| 乌审旗| 酒泉市| 梅州市| 博爱县| 望江县| 龙江县| 通道| 马尔康县| 湛江市| 夏津县| 马尔康县| 威宁| 咸阳市| 彭水| 喜德县| 宁国市| 班戈县| 万安县| 化隆| 永春县| 南郑县| 景德镇市| 阿坝| 故城县| 秭归县| 金塔县| 治县。| 遂昌县| 马鞍山市| 武隆县| 岳普湖县| 安庆市| 凤山县| 海丰县| 汕尾市| 肃南| 韩城市| 尼勒克县|