基于Virtex-6 FPGA的雙緩沖模式PCIe總線設(shè)計方案和實(shí)現(xiàn)
與單緩沖模式相比,雙緩沖模式優(yōu)點(diǎn)歸納如下:
?、?更新緩沖區(qū)不會引入中斷延時,這意味著較小的FIFO即可滿足需求,節(jié)約了硬件資源。
?、?雙緩沖模式延長了驅(qū)動程序處理中斷的時間,也使緩沖區(qū)數(shù)據(jù)的處理更加容易,丟包率大大減小。
?、?數(shù)據(jù)的傳輸和內(nèi)存緩沖區(qū)的數(shù)據(jù)處理可以并行處理,系統(tǒng)的實(shí)時性得到保證。
?、?雙緩沖更適合Scatter/Gather DMA,取代block DMA,從而提高內(nèi)存效率。
2 軟件無線電平臺設(shè)計
軟件無線電基于可編程、可重構(gòu)的通用硬件平臺,通過加載不同的軟件實(shí)現(xiàn)不同的無線電功能,廣泛應(yīng)用于軍用和民用領(lǐng)域。為了能夠?qū)崿F(xiàn)復(fù)雜的算法,其平臺需要具備高速數(shù)據(jù)交換和實(shí)時信號處理的能力。該設(shè)計參考Xilinx ML605開發(fā)套件,基于Xilinx Virtex6 LX240T FPGA芯片,通過增加相應(yīng)的模塊搭建通用的軟件無線電平臺。
軟件無線電原理框圖如圖3所示。信號獲取模塊采用兩片ADC和DAC以實(shí)現(xiàn)IQ兩路信號的數(shù)模轉(zhuǎn)換;通信模塊由以太網(wǎng)和USBRS232接口組成;擴(kuò)展卡可以是射頻發(fā)射機(jī)或接收機(jī),通過擴(kuò)展卡接口與母板相連;JTAG接口提供在線編程和內(nèi)部測試功能;存儲器件包括512 MB DDR3內(nèi)存和128 MB平臺Flash,分別用于動態(tài)數(shù)據(jù)存儲和配置FPGA;人機(jī)接口由LED/LCD、按鍵和開關(guān)等元件組成,實(shí)現(xiàn)人機(jī)對話;200 MHz有源晶振和SMA時鐘接口組成時鐘輸入模塊,向FPGA提供時鐘基準(zhǔn);8通道PCIE接口和IP核實(shí)現(xiàn)平臺與PC間高速數(shù)據(jù)交換。
圖3 軟件無線電原理框圖
3 雙緩沖模式PCIE總線設(shè)計
3.1 PCIE驅(qū)動設(shè)計
PC端基于Linux(Ubuntu 10.10)操作系統(tǒng)。該操作系統(tǒng)免費(fèi)開源,安全穩(wěn)定靈活,適合低成本軟件開發(fā)。驅(qū)動程序包含數(shù)據(jù)流接口和控制接口。數(shù)據(jù)流接口用于Linux用戶空間和 SRSE平臺間高速的數(shù)據(jù)交換;控制接口使用戶可以觀察和配置SRSE平臺寄存器,例如通過控制接口,用戶可以在PC端改變SRSE平臺的調(diào)諧頻率等參數(shù)。數(shù)據(jù)流接口是雙向獨(dú)立的,支持雙/單工,即可以同時讀和寫數(shù)據(jù)。以數(shù)據(jù)發(fā)送(從PC到SRSE)為例,用戶空間調(diào)用write()函數(shù)將任意數(shù)量的數(shù)據(jù)發(fā)送至驅(qū)動,驅(qū)動整理數(shù)據(jù)碎片以滿足PCIE對數(shù)據(jù)對齊和傳輸塊數(shù)據(jù)量的要求。當(dāng)數(shù)據(jù)滿足4096字節(jié),驅(qū)動將數(shù)據(jù)塊發(fā)送至Root Complex并保留已發(fā)送數(shù)據(jù)的列表,等待接收來自SRSE平臺的寫操作中斷。PCIE驅(qū)動數(shù)據(jù)接收的原理如圖4所示。當(dāng)用戶空間調(diào)用read()函數(shù)或者驅(qū)動接收到來自PCIE設(shè)備的數(shù)據(jù)時,驅(qū)動初始化讀操作。驅(qū)動程序?qū)⒈3肿枞╞locking),直到用戶空間調(diào)用read()函數(shù),并且已接收到足夠的數(shù)據(jù)包,從而能夠填滿read()請求的數(shù)據(jù)量。碎片整理模塊對已接收的數(shù)據(jù)進(jìn)行整理,然后將數(shù)據(jù)塊返回至用戶空間,并通知其解除驅(qū)動阻止。
圖4 PCIE驅(qū)動中的數(shù)據(jù)接收
3.2 PCIE核配置
Virtex6 PCIE Endpoint Block[4]集成了傳輸層(TL)、數(shù)據(jù)鏈路層(DLL)和物理層(PL)協(xié)議,它完全符合PCIE基本規(guī)范,可配置性增加了設(shè)計的靈活性,降低了成本。其功能框圖與接口如圖5所示。其中收發(fā)器通過PCIE總線與Root Complex實(shí)現(xiàn)數(shù)據(jù)包的傳遞,PCIE總線由系統(tǒng)接口和PCIE接口組成;系統(tǒng)接口由復(fù)位和時鐘信號組成,PCIE接口由8條差分傳輸和接收對組成(8lane)。TX/RX Block RAM用來存儲來自DMA引擎和系統(tǒng)內(nèi)存的數(shù)據(jù),其大小可以通過Xilinx Core Generator配置。傳輸接口為用戶提供了產(chǎn)生和接收TLP的機(jī)制;物理層接口使用戶能夠觀測和控制鏈路的狀態(tài);配置接口使用戶能夠觀察和配置 PCIE終端的配置空間,即DMA寄存器;中斷接口實(shí)現(xiàn)DMA與PCIE核之間的中斷傳輸。用戶通過這些接口設(shè)計符合其需要的DMA引擎。
圖5 PCIE功能框圖與接口
本文使用Xilinx CORE Generator生成PCIE核,其主要配置參數(shù)如表1所列。
表1 PCIE核主要配置參數(shù)
3.3 總線主控DMA傳輸
參考Xilinx應(yīng)用實(shí)例XAPP1052[5],本文設(shè)計的DMA結(jié)構(gòu)框圖如圖6所示,各部分功能介紹如下:
?、?發(fā)射引擎。發(fā)射引擎產(chǎn)生傳輸層數(shù)據(jù)包(TLP)并通過傳輸接口發(fā)送至PCIE核,數(shù)據(jù)包的數(shù)據(jù)來自TX_FIFO,頭信息來自DMA控制/狀態(tài)寄存器,也負(fù)責(zé)驅(qū)動對DMA寄存器的讀取。
評論