<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Virtex-6 FPGA的雙緩沖模式PCIe總線設(shè)計(jì)方案和實(shí)現(xiàn)

          基于Virtex-6 FPGA的雙緩沖模式PCIe總線設(shè)計(jì)方案和實(shí)現(xiàn)

          作者: 時(shí)間:2013-12-31 來(lái)源:網(wǎng)絡(luò) 收藏

            與單緩沖模式相比,優(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 Virtex6 LX240T FPGA芯片,通過(guò)增加相應(yīng)的模塊搭建通用的軟件無(wú)線電平臺(tái)。

            軟件無(wú)線電原理框圖如圖3所示。信號(hào)獲取模塊采用兩片ADC和DAC以實(shí)現(xiàn)IQ兩路信號(hào)的數(shù)模轉(zhuǎn)換;通信模塊由以太網(wǎng)和USBRS232接口組成;擴(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ù)交換。

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

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

            3 PCIE總線設(shè)計(jì)

            3.1 PCIE驅(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肿枞╞locking),直到用戶空間調(diào)用read()函數(shù),并且已接收到足夠的數(shù)據(jù)包,從而能夠填滿read()請(qǐng)求的數(shù)據(jù)量。碎片整理模塊對(duì)已接收的數(shù)據(jù)進(jìn)行整理,然后將數(shù)據(jù)塊返回至用戶空間,并通知其解除驅(qū)動(dòng)阻止。

            PCIE驅(qū)動(dòng)中的數(shù)據(jù)接收

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

            3.2 PCIE核配置

            Virtex6 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ì)組成(8lane)。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引擎。

            PCIE功能框圖與接口

            圖5 PCIE功能框圖與接口

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

            PCIE核主要配置參數(shù)

            表1 PCIE核主要配置參數(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寄存器的讀取。



          關(guān)鍵詞: Virtex-6 雙緩沖模式 PCIe總線

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();