基于Virtex-6 FPGA的雙緩沖模式PCIe總線設(shè)計方案和
2 軟件無線電平臺設(shè)計
軟件無線電基于可編程、可重構(gòu)的通用硬件平臺,通過加載不同的軟件實現(xiàn)不同的無線電功能,廣泛應(yīng)用于軍用和民用領(lǐng)域。為了能夠?qū)崿F(xiàn)復(fù)雜的算法,其平臺需要具備高速數(shù)據(jù)交換和實時信號處理的能力。該設(shè)計參考Xilinx ML605開發(fā)套件,基于Xilinx Virtex6 LX240T FPGA芯片,通過增加相應(yīng)的模塊搭建通用的軟件無線電平臺。
軟件無線電原理框圖如圖3所示。信號獲取模塊采用兩片ADC和DAC以實現(xiàn)IQ兩路信號的數(shù)模轉(zhuǎn)換;通信模塊由以太網(wǎng)和USBRS232接口組成;擴展卡可以是射頻發(fā)射機或接收機,通過擴展卡接口與母板相連;JTAG接口提供在線編程和內(nèi)部測試功能;存儲器件包括512 MB DDR3內(nèi)存和128 MB平臺Flash,分別用于動態(tài)數(shù)據(jù)存儲和配置FPGA;人機接口由LED/LCD、按鍵和開關(guān)等元件組成,實現(xiàn)人機對話;200 MHz有源晶振和SMA時鐘接口組成時鐘輸入模塊,向FPGA提供時鐘基準(zhǔn);8通道PCIE接口和IP核實現(xiàn)平臺與PC間高速數(shù)據(jù)交換。

圖3 軟件無線電原理框圖
3 雙緩沖模式PCIE總線設(shè)計
3.1 PCIE驅(qū)動設(shè)計
PC端基于Linux(Ubuntu 10.10)操作系統(tǒng)。該操作系統(tǒng)免費開源,安全穩(wěn)定靈活,適合低成本軟件開發(fā)。驅(qū)動程序包含數(shù)據(jù)流接口和控制接口。數(shù)據(jù)流接口用于Linux用戶空間和SRSE平臺間高速的數(shù)據(jù)交換;控制接口使用戶可以觀察和配置SRSE平臺寄存器,例如通過控制接口,用戶可以在PC端改變SRSE平臺的調(diào)諧頻率等參數(shù)。數(shù)據(jù)流接口是雙向獨立的,支持雙/單工,即可以同時讀和寫數(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肿枞?blocking),直到用戶空間調(diào)用read()函數(shù),并且已接收到足夠的數(shù)據(jù)包,從而能夠填滿read()請求的數(shù)據(jù)量。碎片整理模塊對已接收的數(shù)據(jù)進行整理,然后將數(shù)據(jù)塊返回至用戶空間,并通知其解除驅(qū)動阻止。

圖4 PCIE驅(qū)動中的數(shù)據(jù)接收
評論