一種基FPGA和DSP的高性能PCI數(shù)據(jù)采集處理卡設(shè)計(jì)
數(shù)據(jù)采集處理技術(shù)是現(xiàn)代信號(hào)處理的基礎(chǔ),廣泛應(yīng)用于雷達(dá)、通信、遙測(cè)遙感等領(lǐng)域。隨著信息科學(xué)的飛速發(fā)展,人們面臨的信號(hào)處理任務(wù)愈來(lái)愈繁重,對(duì)數(shù)據(jù)采集處理系統(tǒng)的要求也愈來(lái)愈高。特別是在圖像處理、瞬態(tài)信號(hào)檢測(cè)、軟件無(wú)線電等領(lǐng)域,更是要求高速度、高精度、高實(shí)時(shí)性的數(shù)據(jù)采集與處理技術(shù)。
在傳統(tǒng)高速信號(hào)處理中,數(shù)字信號(hào)處理算法一般是通過(guò)專門優(yōu)化的數(shù)字信號(hào)處理器實(shí)現(xiàn)的,目前主要有TI公司的DSP和AD公司的ADSP用于高端信號(hào)處理器應(yīng)用。當(dāng)這些處理器仍無(wú)法滿足高速信號(hào)處理要求時(shí),可以使用專用的信號(hào)處理ASIC芯片,然而使用ASIC在設(shè)計(jì)上受ASIC廠商設(shè)計(jì)思路限制,使電路設(shè)計(jì)變得困難和缺乏靈活性。而最近幾年具有乘法器及內(nèi)存塊資源的大容量FPGA以及基于IP核嵌入的FPGA開發(fā)技術(shù)的出現(xiàn),可以將嵌入式微處理器、專用數(shù)字器件和高速DSP算法以IP核的形式方便的嵌入FPGA,以硬件編程的方法實(shí)現(xiàn)高速信號(hào)處理算法,這種形式的嵌入為高端應(yīng)用領(lǐng)域提供了超高性價(jià)比的解決方案。
2 高速數(shù)據(jù)采集處理卡工作原理及主要器件選用
該高速數(shù)據(jù)采集處理卡是基于DSP+FPGA架構(gòu)來(lái)設(shè)計(jì)的。FPGA是整個(gè)系統(tǒng)的時(shí)序控制中心和數(shù)據(jù)交換橋梁,而且能夠?qū)崿F(xiàn)對(duì)底層的信號(hào)快速預(yù)處理,在很多信號(hào)處理系統(tǒng)中,底層的信號(hào)預(yù)處理算法要處理的數(shù)據(jù)量很大,對(duì)處理速度要求很高,但算法結(jié)構(gòu)相對(duì)比較簡(jiǎn)單,適于用FPGA進(jìn)行硬件編程實(shí)現(xiàn)。而高層處理算法的特點(diǎn)是速據(jù)量較低,但算法控制結(jié)構(gòu)復(fù)雜,適于用運(yùn)算速度快、尋址靈活、通信機(jī)制強(qiáng)大的DSP芯片來(lái)實(shí)現(xiàn)。
整個(gè)高速數(shù)據(jù)采集處理系統(tǒng)的主要硬件構(gòu)成為:高速ADC、RAM、高性能DSP和PCI接口、大容量FPGA。模擬輸入經(jīng)AD采樣進(jìn)入FPGA,經(jīng)過(guò)FPGA里的信號(hào)預(yù)處理模塊處理后進(jìn)入DSP,由DSP軟件進(jìn)行后續(xù)高級(jí)算法處理,DSP通過(guò)PCI接口與主機(jī)交換數(shù)據(jù)。系統(tǒng)的原理框圖如圖1所示。
圖1:數(shù)據(jù)采集處理卡總體結(jié)構(gòu)框圖
DSP采用TI公司的TMS320C6000系列定點(diǎn)DSP中的TMS320C6416;ADC采用2片AD公司的AD9288,從而實(shí)現(xiàn)4路8位采樣,最高采樣頻率為100 MSPS;PCI接口采用TMS320C6416 芯片內(nèi)集成的PCI2.2控制器,理論最大數(shù)據(jù)傳輸速率為132MBps; DSP程序存儲(chǔ)在Flash存儲(chǔ)器中,器件選用AM29LV160。下面逐一介紹各個(gè)主要器件的特性:
2.1 AD9288
AD9288是一款雙8bit 高速模數(shù)轉(zhuǎn)換器,兩個(gè)ADC可以獨(dú)立工作,最高采樣率100MSPS,內(nèi)部集成了跟蹤保持電路和基準(zhǔn)電路,單電源工作。平行輸出接口,兼容TTL/CMOS格式,工業(yè)標(biāo)準(zhǔn)溫度工作范圍, 48PIN LQFP封裝。適合應(yīng)用與高速信號(hào)測(cè)量?jī)x器,無(wú)線通訊設(shè)備。
2.2 XC2V1000
單片XILINX公司的XC2V1000芯片,芯片集成度達(dá)100萬(wàn)門,具有40個(gè)18×18乘法器及40個(gè)18Kbit塊內(nèi)存等資源,并有豐富的內(nèi)部邏輯及路由資源,非常適合實(shí)現(xiàn)高速DSP算法,并具有8個(gè)DCM可實(shí)現(xiàn)復(fù)雜的時(shí)鐘管理,支持不同形式的I/O接口。
圖2:Virtex2 結(jié)構(gòu)圖
2.3 TMS320C6416
本設(shè)計(jì)選用的TMS320C6416是TI公司近年推出的高性能定點(diǎn)DSP,其時(shí)鐘頻率達(dá)600MHz,最高處理能力4800MIPS,采用先進(jìn)的甚長(zhǎng)指令結(jié)構(gòu)(VLIW)的DSP內(nèi)核有8個(gè)運(yùn)算功能單元,每個(gè)時(shí)鐘周期可以執(zhí)行8條指令,所有指令可以條件執(zhí)行。該DSP具有VITERBI譯碼協(xié)處理器(VCP)和turbo譯碼協(xié)處理器(TCP);采用二級(jí)緩存結(jié)構(gòu),一級(jí)緩存(L1)由128Kbit的程序緩存和128Kbit的數(shù)據(jù)緩存組成,二級(jí)緩存(L2)為8Mbit;有2個(gè)擴(kuò)展存儲(chǔ)器接口EMIF,一個(gè)為64bit(EMIFA),一個(gè)為16bit(EMIFB),可以與異步(SRAM、EPROM)/同步存儲(chǔ)器的DMA通道;主機(jī)接口(HPI)總線寬度可由用戶配置(32/16bit),具有32bit/33MHz,3.3V的PCI主從接口,該接口符合PCI標(biāo)準(zhǔn)2.2版,有3個(gè)多通道串口(McBSPs),片內(nèi)還有一個(gè)16針的通用輸入輸出接口(GPIO)。
3 高速數(shù)據(jù)采集處理系統(tǒng)的硬件連接
3.1 模擬信號(hào)輸入接口設(shè)計(jì)
AD9288的模擬信號(hào)輸入采用差分輸入方式。單端輸入方式連接比較簡(jiǎn)單,但抗噪性能差,采取差分輸入方式可以盡量減少信號(hào)噪聲以及電磁的干擾。其AD芯片的單路AD輸入電路如圖2所示:
圖3:模擬信號(hào)輸入電路
3.2 AD9288與FPGA芯片的連接
AD采樣時(shí)鐘ENC、采樣輸出數(shù)據(jù)AD_DATA及輸出數(shù)據(jù)格式選擇DFS等控制信號(hào)均接入FPGA,由FPGA靈活編程控制AD采樣。
圖4:AD與FPGA連接結(jié)構(gòu)圖
3.3 FPGA 與DSP芯片的連接
DSP 通過(guò)EMIFA口數(shù)據(jù)線、地址線、片選信號(hào)及其它接口控制信號(hào)與FPGA的IO連接,實(shí)現(xiàn)FPGA內(nèi)部生成FIFO或RAM等緩存組件與DSP連接,該部分電路主要功能是可以將FPGA內(nèi)存儲(chǔ)器映射到DSP地址空間,從而實(shí)現(xiàn)DSP對(duì)FPGA的直接高速數(shù)據(jù)交換。另將DSP 外部中斷IO信號(hào)、及定時(shí)器信號(hào)接入FPGA,以靈活的實(shí)現(xiàn)FPGA與DSP的控制通信。
圖5: FPGA與DSP連接結(jié)構(gòu)圖
3.4 PCI硬件接口
TMS320C6416內(nèi)部集成33MHz/32位支持PCI主/從接口的PCI2.2接口控制器,無(wú)需額外的PCI控制芯片即可方便的與具有PCI接口的主機(jī)直接互連。DSP通過(guò)內(nèi)部的EDMA控制器實(shí)現(xiàn)集成的PCI接口控制器與DSP的接口。
圖6:PCI接口功能模塊圖
4 PCI接口軟件設(shè)計(jì)
PCI接口開發(fā)中有相當(dāng)大的工作量是關(guān)于PCI軟件的開發(fā),PCI軟件主要包括兩方面的工作:驅(qū)動(dòng)程序設(shè)計(jì)和主機(jī)端應(yīng)用程序的設(shè)計(jì)。本系統(tǒng)軟件的設(shè)計(jì)目標(biāo)是實(shí)現(xiàn)數(shù)據(jù)采集卡與主機(jī)高速的DMA傳輸及對(duì)主機(jī)對(duì)DSP內(nèi)存空間的讀寫。
4.1 驅(qū)動(dòng)程序設(shè)計(jì)
驅(qū)動(dòng)程序根據(jù)Windows 驅(qū)動(dòng)程序模型(WDM)設(shè)計(jì),運(yùn)行在Win2000 平臺(tái)上。支持即插即用,采用基于數(shù)據(jù)包的DMA 傳輸方式,采用Numega公司的開發(fā)包Driver Works和Microsoft公司的2000DDK,并以VC++6.0作為輔助開發(fā)環(huán)境。
當(dāng)應(yīng)用程序請(qǐng)求從采集卡讀數(shù)據(jù)時(shí),內(nèi)核I/O 管理器將此請(qǐng)求打包成一個(gè)IRP(I/O 請(qǐng)求包),驅(qū)動(dòng)程序調(diào)用相關(guān)例程把應(yīng)用程序發(fā)來(lái)控制信息寫入DSP設(shè)置的控制寄存器,并調(diào)用驅(qū)動(dòng)程序的讀例程。如果數(shù)據(jù)處理卡不忙,數(shù)據(jù)處理卡作為PCI主設(shè)備就啟動(dòng)DMA傳輸;當(dāng)本次DMA 傳輸完成時(shí),處理卡產(chǎn)生中斷,I/O 管理器調(diào)用驅(qū)動(dòng)程序的中斷服務(wù)例程和DpcForIsr完成此IRP,并從IRP 隊(duì)列中取出下一個(gè)IRP,啟動(dòng)下一次DMA。下一次中斷發(fā)生時(shí)同樣處理。這樣不斷地進(jìn)行DMA 傳輸,直到IRP 隊(duì)列空為止。
4.2 應(yīng)用程序設(shè)計(jì)
主機(jī)應(yīng)用程序是主要實(shí)現(xiàn)從高速數(shù)據(jù)采集處理板該取處理后的數(shù)據(jù)、存儲(chǔ)、顯示處理及結(jié)果以及向數(shù)據(jù)采集處理板發(fā)送控制命令。在Windows 2000下,我們使用的應(yīng)用程序開發(fā)工具是VC++6.0。通過(guò)CreatFile()函數(shù)得到PCI句柄,用DeviceIoControl()函數(shù)來(lái)向設(shè)備驅(qū)動(dòng)程序發(fā)送請(qǐng)求及命令,完成數(shù)據(jù)的讀取與寫入。用ReadFile()函數(shù)調(diào)用驅(qū)動(dòng)啟動(dòng)DMA傳輸實(shí)現(xiàn)高速數(shù)據(jù)傳輸。
5 結(jié)束語(yǔ)
本高速采集數(shù)據(jù)處理卡應(yīng)用了大容量FPGA及高性能數(shù)字信號(hào)處理器DSP技術(shù)和PCI總線技術(shù)。DSP是為數(shù)字信號(hào)處理專門開發(fā)的芯片,其內(nèi)部的總線結(jié)構(gòu)和指令非常適合于數(shù)字信號(hào)處理,而FPGA高速硬件實(shí)現(xiàn)算法的特點(diǎn)使得大容量高速FPGA成為數(shù)據(jù)處理板級(jí)設(shè)計(jì)重要的選擇,PCI接口的高速可靠的傳輸速率滿足了與主機(jī)應(yīng)用軟件數(shù)據(jù)傳輸?shù)男枨?。本設(shè)計(jì)主要是為了軟件無(wú)線電接收機(jī)預(yù)研所設(shè)計(jì)的實(shí)驗(yàn)平臺(tái),經(jīng)實(shí)際驗(yàn)證,系統(tǒng)運(yùn)行可靠,是一種比較好的高速數(shù)據(jù)采集與處理的解決方案,有著廣泛的應(yīng)用前景,也可以用于圖像處理、雷達(dá)信號(hào)處理等數(shù)據(jù)采集處理領(lǐng)域。
評(píng)論