摘 要: 介紹了一種基于DSP與USB的高速數(shù)據(jù)采集與處理" title="數(shù)據(jù)采集與處理">數(shù)據(jù)采集與處理系統(tǒng),包括整個(gè)系統(tǒng)的硬件設(shè)計(jì)與軟件設(shè)計(jì)。DSP控制整個(gè)系統(tǒng)完成CCD信號(hào)采集并進(jìn)行小波變換去噪處理,F(xiàn)PGA協(xié)同DSP實(shí)現(xiàn)整個(gè)系統(tǒng)的地址譯碼和邏輯控制。主機(jī)應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序通過USB完成與DSP的數(shù)據(jù)通信,實(shí)現(xiàn)整個(gè)采集的控制和數(shù)據(jù)顯示。這種高速的數(shù)據(jù)采集與處理系統(tǒng),可廣泛地應(yīng)用于各種智能儀表、自動(dòng)化控制設(shè)備中,有著非常好的市場(chǎng)應(yīng)用前景。
關(guān)鍵詞: DSP FPGA USB 數(shù)據(jù)采集
在圖像數(shù)據(jù)處理系統(tǒng)中,常常需要對(duì)高速信號(hào)進(jìn)行采集與處理。例如,在光傳感技術(shù)中對(duì)光脈沖散射信號(hào)的測(cè)量,在雷達(dá)工程中對(duì)電磁脈沖信號(hào)的測(cè)量等,都需要對(duì)高速信號(hào)進(jìn)行采集與運(yùn)算,而且此類高速信號(hào)的測(cè)量,往往對(duì)數(shù)據(jù)采集與處理系統(tǒng)提出嚴(yán)格的要求。本文設(shè)計(jì)并實(shí)現(xiàn)一種基于DSP和USB的高速數(shù)據(jù)采集與處理系統(tǒng)。該系統(tǒng)電路簡(jiǎn)單,可靠性好,具有一定的通用性,并且可以進(jìn)行多通道擴(kuò)展。
1 原理概述
基于DSP和USB的高速數(shù)據(jù)采集與處理系統(tǒng)的原理框圖如圖1所示。系統(tǒng)上電后,DSP、FPGA分別由各自的FLASH加載程序,采集與處理系統(tǒng)開始運(yùn)行。在A/D" title="A/D">A/D變換器完成轉(zhuǎn)換后由FPGA向DSP發(fā)送中斷0申請(qǐng)信號(hào),DSP從A/D FIFO RAM中讀取數(shù)據(jù),并進(jìn)行小波變換去噪處理,處理結(jié)束后DSP向USB控制器發(fā)送中斷申請(qǐng)信號(hào),USB控制器將處理后的數(shù)據(jù)發(fā)送至PC機(jī),由主機(jī)應(yīng)用程序顯示數(shù)據(jù)。主機(jī)應(yīng)用程序還可以對(duì)整個(gè)采集、處理系統(tǒng)進(jìn)行控制,主要設(shè)定三個(gè)功能:接收處理后的數(shù)據(jù),接收處理前的數(shù)據(jù),設(shè)定A/D的采樣頻率" title="采樣頻率">采樣頻率和采樣點(diǎn)數(shù)。
2 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件設(shè)計(jì)主要分為三大部分:DSP部分、FPGA部分、USB部分。
2.1 DSP部分設(shè)計(jì)
本系統(tǒng)使用的DSP芯片為TI(德州儀器)公司的TMS320VC33,它是TI公司推出的性價(jià)比極高的32位浮點(diǎn)型數(shù)字信號(hào)處理芯片,是目前在國(guó)內(nèi)外使用最為廣泛的浮點(diǎn)DSP之一。
TMS320VC33具有以下特點(diǎn):哈佛結(jié)構(gòu);流水線操作;專用的硬件乘法器;特殊的DSP指令;快速的指令周期。另外,TMS320VC33還具有強(qiáng)大的浮點(diǎn)運(yùn)算能力,運(yùn)算速度可達(dá) 150MFLOPS(每秒百萬(wàn)次浮點(diǎn)運(yùn)算),處理能力達(dá)到75MIPS(每秒百萬(wàn)次指令周期)。而且,它還采用3.3V I/O電壓和1.8V處理器核電壓使功耗降低到200mW。
DSP部分的電路設(shè)計(jì)主要是為TMS320VC33的外圍電路設(shè)計(jì)。TMS320VC33的STRB0和引腳分別連接存儲(chǔ)器的片選和使能引腳,實(shí)現(xiàn)程序/數(shù)據(jù)存儲(chǔ)器的擴(kuò)展;引腳接到高電平,INT2引腳接到低電平,實(shí)現(xiàn)上電后程序自加載;由TMS、TDI、TDO、TCK、、EMU0、EMU1等引腳組成程序下載口,以方便DSP程序調(diào)試。
2.2 FPGA部分設(shè)計(jì)
因?yàn)楸鞠到y(tǒng)的邏輯比較復(fù)雜,為了有效地減少硬件的體積、提高硬件系統(tǒng)的可靠性,這里把所有的邏輯控制電路、各種存儲(chǔ)器/寄存器的地址譯碼電路都用一塊超大規(guī)?,F(xiàn)場(chǎng)可編程邏輯門陣列(FPGA)XC3090來(lái)實(shí)現(xiàn)。邏輯控制電路包括:命令寄存器、采樣點(diǎn)數(shù)/采樣頻率設(shè)定寄存器、中斷申請(qǐng)信號(hào)發(fā)生器、將A/D結(jié)果寫入FIFO RAM的控制電路、USB及其FIFO和A/D FIFO狀態(tài)檢測(cè)電路。
2.3 USB部分設(shè)計(jì)
TMS320VC33與USB控制器AN2136SC之間通過雙向FIFO 交換數(shù)據(jù),握手信號(hào)使用AN2136SC的PC口。當(dāng)USB為接收緩沖器時(shí),DSP讀,AN2136SC寫;當(dāng)USB為發(fā)送緩沖器時(shí),DSP寫,AN2136SC讀。PC(0)~(3)用作二者的讀寫通道,方向可編程確定; PC(4)用于TMS320VC33向AN2136SC申請(qǐng)中斷;PC(5)用于AN2136SC復(fù)位USB接收緩沖器;PC(6)用于USB接收器滿標(biāo)志,若接收器已滿則禁止AN2136進(jìn)一步對(duì)USB接收緩沖器寫入;PC(7)用于USB發(fā)送緩沖器空標(biāo)志,若緩沖器已空則禁止AN2136SC進(jìn)一步對(duì)USB發(fā)送緩沖器讀出。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件主要包括五大部分:DSP程序(用于A/D采樣控制、數(shù)據(jù)處理、DSP與USB總線之間的信息交換)、USB總線驅(qū)動(dòng)程序、USB固件" title="固件">固件程序(用于PC機(jī)與DSP之間的數(shù)據(jù)交換與處理)、主機(jī)應(yīng)用程序、FPGA中對(duì)地址的譯碼程序和各個(gè)寄存器的實(shí)現(xiàn)程序。
3.1 DSP程序
DSP程序首先對(duì)DSP進(jìn)行初始化(中斷初始化、片外選通信號(hào)初始化、設(shè)定系統(tǒng)默認(rèn)的采樣點(diǎn)數(shù)/采樣頻率等),然后等待中斷(中斷0的程序主要用于對(duì)A/D數(shù)據(jù)的讀取和處理,并向主機(jī)發(fā)送處理后的數(shù)據(jù);中斷1的程序主要用于分析主機(jī)的命令,針對(duì)主機(jī)的命令設(shè)定系統(tǒng)的采樣點(diǎn)數(shù)/采樣頻率,并發(fā)送主機(jī)需要的數(shù)據(jù))。程序框圖如圖2所示。
3.2 USB固件程序
固件程序代碼由USB芯片集成的加強(qiáng)型8051單片機(jī)處理。當(dāng)EZ-USB設(shè)備連接到USB口時(shí),主機(jī)進(jìn)行總線枚舉,首先根據(jù)設(shè)備ID使用系統(tǒng)程序?qū)⒐碳螺d到芯片內(nèi)部,然后進(jìn)行重枚舉,固件作為用戶的功能設(shè)備開始執(zhí)行。CYPRESS公司提供的固件程序框架,用來(lái)完成控制傳輸工作和大部分的數(shù)據(jù)傳輸工作。本接口電路的固件程序就是基于此固件框架開發(fā)的,并使用Keil C進(jìn)行編譯。USB接收的DSP中斷程序如下:
void ISR_IDT(void) interrupt INT0_VECT
{FASTXFR = 0x40; 使能快速傳模式
AUTOPTRL=LSB((WORD)&IN4BUF); 將自動(dòng)指針指向端點(diǎn)4緩沖器
AUTOPTRH=MSB((WORD)&IN4BUF);
for(i=0;i<64;i++)
{AUTODATA=ACC}; 接收數(shù)據(jù)
FASTXFR=0x0;
IN4BC=64; 發(fā)送數(shù)據(jù)大小
EZUSB_IRQ_CLEAR();
IN07IRQ=bmEP4; 使能端點(diǎn)4}
3.3 主機(jī)應(yīng)用程序
為了實(shí)現(xiàn)與驅(qū)動(dòng)程序的通信,應(yīng)用程序首先創(chuàng)建一個(gè)事件和一個(gè)線程,然后將事件句柄傳遞給WDM,用線程等待WDM發(fā)送的事件消息,接收到事件消息后,就讀取驅(qū)動(dòng)程序的數(shù)據(jù),顯示數(shù)據(jù)。
在Windows中,Win32應(yīng)用程序調(diào)用的API函數(shù)有五個(gè):CreateFile()、ReadFile()、WriteFile()、DeviceIoControl()和CloseHandle()。
應(yīng)用程序?yàn)榇蜷_一個(gè)WDM設(shè)備驅(qū)動(dòng)程序,使用CreateFile()函數(shù)。它的第一個(gè)參數(shù)是一個(gè)符號(hào)鏈接名。如果用DriverWorks創(chuàng)建一個(gè)WDM驅(qū)動(dòng)程序,通常會(huì)用類KUnitizedName生成一個(gè)設(shè)備符號(hào)鏈接名。這個(gè)名字的后面有一個(gè)數(shù)字,一般是一個(gè)0。例如,若符號(hào)鏈接名為L(zhǎng)“USBDevice”,則傳遞給CreateFile()的是“.USBDevice0”。
一旦應(yīng)用程序獲得設(shè)備的有效句柄,它就能夠調(diào)用Win32函數(shù),這將產(chǎn)生對(duì)應(yīng)于此設(shè)備對(duì)象的相應(yīng)的IRP,發(fā)送給驅(qū)動(dòng)程序,完成相應(yīng)功能。
有關(guān)代碼如下:
HANDLE hDevice hDevice= CreateFile(“.USBDe-vice0”,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,NULL); //打開設(shè)備句柄
ReadFile(hDevice,buf,n,&nRead,NULL); //讀操作
4 試驗(yàn)結(jié)果
本系統(tǒng)軟硬件調(diào)試均已成功,圖3為CCD在半遮擋情況下原始信號(hào)的波形。本系統(tǒng)還可以采集和處理圖像信號(hào)(例如CCD面陣信號(hào))。
本文提出了一種基于DSP和USB的高速數(shù)據(jù)采集與處理系統(tǒng),詳細(xì)地介紹了系統(tǒng)的硬件和軟件設(shè)計(jì)方法。經(jīng)使用驗(yàn)證,系統(tǒng)很好地實(shí)現(xiàn)了對(duì)CCD信號(hào)的采集和處理。利用一塊超大規(guī)?,F(xiàn)場(chǎng)可編程邏輯門陣列,減小了PCB板的制作空間并且大大地增加了系統(tǒng)的可靠性;使用DSP處理器,提高了數(shù)據(jù)的傳輸速度和處理速度,進(jìn)而保證了系統(tǒng)的實(shí)時(shí)性;由USB主控制器完成與PC機(jī)的通信,具有熱插拔、易于使用、傳輸速率高等特點(diǎn);而且整個(gè)系統(tǒng)構(gòu)成合理、實(shí)現(xiàn)方法簡(jiǎn)單、具有實(shí)用價(jià)值。
參考文獻(xiàn)
1 官章全,劉加明.Visual C++.NET類庫(kù)大全.北京:電子工業(yè)出版社,2002
2 蘇 濤,藺麗華.DSP實(shí)用技術(shù).西安:西安電子科技大學(xué)出版社,2002
3 顏榮江.EZ-USB 2100系列單片機(jī)原理、編程及應(yīng)用.北京航空航天大學(xué)出版社,2002
4 任曉東. CPLD/FPGA高級(jí)應(yīng)用開發(fā)指南.北京:北京電子工業(yè)出版社,2003