1 引言
數(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開(kāi)發(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接口開(kāi)發(fā)中有相當(dāng)大的工作量是關(guān)于PCI軟件的開(kāi)發(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公司的開(kāi)發(fā)包Driver Works和Microsoft公司的2000DDK,,并以VC++6.0作為輔助開(kāi)發(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)用程序開(kāi)發(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)處理專門開(kāi)發(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)域,。