隨著數(shù)字信號(hào)處理理論和計(jì)算機(jī)的不斷發(fā)展,現(xiàn)代工業(yè)生產(chǎn)和科學(xué)技術(shù)研究都需要借助于數(shù)字處理方法。進(jìn)行數(shù)字處理的先決條件是將所研究的對(duì)象進(jìn)行數(shù)字化,因此數(shù)據(jù)采集與處理技術(shù)日益得到重視。在圖像處理、瞬態(tài)信號(hào)檢測(cè)、軟件無(wú)線電等一些領(lǐng)域,更是要求高速度、高精度、高實(shí)時(shí)性的數(shù)據(jù)采集與處理技術(shù)。現(xiàn)在的高速數(shù)據(jù)采集處理卡一般采用高性能數(shù)字信號(hào)處理器(DSP)和高速總線技術(shù)的框架結(jié)構(gòu)。
DSP用于完成計(jì)算量巨大的實(shí)時(shí)處理算法,高速總線技術(shù)則完成處理結(jié)果或者采樣數(shù)據(jù)的快速傳輸。DSP主要采用TI或者ADI公司的產(chǎn)品,高速總線可以采用ISA、PCI、USB等總線技術(shù)。目前,使用比較廣泛的是PCI總線,雖然其有很多優(yōu)點(diǎn),但是存在如下嚴(yán)重缺陷;易受機(jī)箱內(nèi)環(huán)境的影響,受計(jì)算機(jī)插槽數(shù)量的地址、中斷資源的限制而不可能掛接很多設(shè)備等。
USB總線由于具有安裝方便、高帶這、易擴(kuò)展等優(yōu)點(diǎn),其中USB2.0標(biāo)準(zhǔn)有著高達(dá)4800bps的傳輸速率,已經(jīng)逐漸成為計(jì)算機(jī)接口的主流。本文介紹一個(gè)采用USB2.0接口和高性能DSP的高速數(shù)據(jù)采集處理系統(tǒng),主要是為光纖通信中密集波分復(fù)用系統(tǒng)的波長(zhǎng)檢測(cè)與調(diào)整所設(shè)計(jì)的,也可以應(yīng)用于像圖像處理、雷達(dá)信號(hào)處理等相關(guān)領(lǐng)域。
1 高速數(shù)據(jù)采集處理系統(tǒng)原理及器件選用
整個(gè)高速數(shù)據(jù)采集處理系統(tǒng)的硬件構(gòu)成為:高速ADC、高速大容量數(shù)據(jù)緩沖、高性能DSP和USB2.0接口。系統(tǒng)的原理框圖如圖1所示。
高性能DSP采用TI公司的TMS320C6000系列定點(diǎn)DSP中的 TMS320C6203B;高速ADC采用TI公司的ADS5422,14位采樣,最高采樣頻率為62MHz;PC機(jī)接口采用USB2.0,理論最大數(shù)據(jù)傳輸速率為480Mbps,器件選用Cypress公司EZ-USB FX2系列中的CY7C68013;數(shù)據(jù)緩沖采用IDT公司的高速大容量FIFO器件IDT72V2113;程序存儲(chǔ)在Flash存儲(chǔ)器中,器件選用 SST291E010。下面逐一介紹各個(gè)器件的主要特性。
(1)TMS320C6203B
TMS320C6203B是美國(guó)TI公司高性能數(shù)字信號(hào)處理器TMS320C6000系列的一種,采用修正的哈佛總線結(jié)構(gòu),共有1套256位的程序總線、兩套32位的程序總線和1套32位的DMA專用總線;內(nèi)部有8個(gè)功能單元可以并行操作,工作頻率最大為300MHz,最大處理能力為2400MIPS;內(nèi)部集成了外圍設(shè)備接口,如外部存儲(chǔ)器接口(EMIF)、外部擴(kuò)展總線(XB)、多通道緩沖串口(McBSPs)和主機(jī)接口(HPI),與外部存儲(chǔ)器、協(xié)處理器、主機(jī)以及串行設(shè)備的連接非常方便。
(2)ADS5422
ADS5422是由美國(guó)TI公司生產(chǎn)的高速并行14位模數(shù)轉(zhuǎn)換器,其最高采樣頻率達(dá)到 62MHz,采樣頻率為100MHz時(shí),SNR為72dB,SFDR為85dB。模擬信號(hào)輸入可以是單端輸入方式或者差分輸入方式,最高輸入信號(hào)峰峰值為 4V,單一5V電源供電。輸出數(shù)字信號(hào)完全兼容3.3V器件,并且提供輸入信號(hào)滿量程標(biāo)志以及輸出數(shù)字信號(hào)有效標(biāo)志,從而方便和其它器件的連接。
(3)IDT72V2113
IDT72V2113是由美國(guó)IDT公司生產(chǎn)的高速大容量先進(jìn)先出存儲(chǔ)器件(FIFO)。其最高工作頻率為133MHz;容量為512KB,可以通過(guò)引腳方便地將容量設(shè)置成512K×9bit或者256K×18bit兩種方式; IDT72V2113可以設(shè)置標(biāo)準(zhǔn)工作模式或者FWFT(First Word Fall Through)工作模式,并提供全滿、半滿、全空、將滿以及將空等五種標(biāo)志信號(hào);非常方便進(jìn)行容量擴(kuò)展。容量擴(kuò)展是IDT72V2113的一大特點(diǎn),擴(kuò)展方式可分為字長(zhǎng)擴(kuò)展和字深擴(kuò)展。通過(guò)容易擴(kuò)展可以由多片IDT72V2113形式更大容量的緩沖,并且電路連接簡(jiǎn)單、可靠。
(4)CY7C68013
CY7C68013是美國(guó)Cypress公司推出的USB2.0芯片,是一個(gè)全面集成的解決方案,它占用更少的電路板空間,并縮短開(kāi)發(fā)時(shí)間。CY7C68013主要結(jié)構(gòu)如下:包括1個(gè)8051處理器、1個(gè)智能串行接口引擎(SIE)、1個(gè) USB收發(fā)器、16KB片上RAM(其中包括4KB FIFO)存儲(chǔ)器以主1個(gè)通用可編程接口(GPIF)。
CY7C68013獨(dú)特的架構(gòu)具有如下特點(diǎn):
①包括1個(gè)智能串行的接口引擎(SIE),它執(zhí)行所有基本的USB功能,將嵌入的MCU解放出來(lái)以用于實(shí)現(xiàn)其它豐富的功能,以保證持續(xù)高速有效的數(shù)據(jù)傳輸;
②具有4KB的大容量FIFO用于數(shù)據(jù)緩沖,當(dāng)作為從設(shè)備時(shí),可采用 Synchronous/Asynchronous FIFO接口與主設(shè)備(如ASIC,DSP等)連接;當(dāng)作為主設(shè)備時(shí),可通過(guò)通用可編程接口(GPIF)形式任意的控制波形來(lái)實(shí)現(xiàn)與其它從設(shè)備連接,能夠輕易地兼容絕大多數(shù)總線標(biāo)準(zhǔn),包括ATA、UTOPIA、EPP和PCMCIA等;
③固件軟配置,可將需要在CY7C68013上運(yùn)行的固件,存放在主機(jī)上,當(dāng)USB設(shè)備連上主機(jī)后,下載到設(shè)備上,這樣就實(shí)現(xiàn)了在不改動(dòng)硬件的情況下很方便地修改固件;
④能夠充分實(shí)現(xiàn)USB2.0(2000版)協(xié)議,并向下兼容USB1.1。
2 高速數(shù)據(jù)采集處理系統(tǒng)的硬件連接
2.1 模擬信號(hào)輸入電路
ADS5422的模擬信號(hào)輸入可以采取單端輸入方式或者差分輸入方式。單端輸入方式連接比較簡(jiǎn)單,但抗噪性能差,所以我們采取差分輸入方式,以盡量減少信號(hào)噪聲以及電磁的干擾,尤其是采用差分輸入方式可以將所有偶次諧波通過(guò)正反反個(gè)輸入信號(hào)基本上互相抵消。
ADS5422的模擬信號(hào)差分輸入方式需要同時(shí)使用IN和IN引腳,其硬件連接方法如圖2 所示。圖中,首先使用放大器OPA687以及RF變壓器將單端信號(hào)轉(zhuǎn)換成差分信號(hào),然后輸入到ADS5422,其中ADS5422的公共端CM和RF變壓器的公共端連接,RF變壓器的匝數(shù)比應(yīng)該根據(jù)信號(hào)確定。為了增強(qiáng)信號(hào)的穩(wěn)定性,在ADS5422每個(gè)信號(hào)的輸入前加上RC低通濾波電路,圖2中推薦Rt為 50Ω,Rin為22Ω,Cin為10pF,這些元件也可以根據(jù)具體的信號(hào)進(jìn)行調(diào)整,一般情況下電阻值在10~100Ω之間,電容值在10~200pF之間。
2.2 ADS5422與IDT72V2113的連接
雖然ADS5422的供電電壓為5V,但其輸出的數(shù)字信號(hào)電平兼容3.3V電平,因此不需要電平轉(zhuǎn)換芯片,只要將ADS5422的數(shù)據(jù)線與IDT72V2113的數(shù)據(jù)線相連即可。但是,ADS5422采樣和存儲(chǔ)采樣數(shù)據(jù)到IDT72V3113 中,這兩個(gè)操作對(duì)時(shí)序配置要求非常嚴(yán)格,如果兩者時(shí)序關(guān)系配合得不是很好,就會(huì)發(fā)生數(shù)據(jù)存儲(chǔ)出錯(cuò)或者掉數(shù)。如何簡(jiǎn)單、可靠地實(shí)現(xiàn)采樣和存儲(chǔ)是設(shè)計(jì)這部分電路的難點(diǎn)。一般的方法是,通過(guò)可編程邏輯器件(CPLD或FPGA)來(lái)實(shí)現(xiàn)ADC與FIFO存儲(chǔ)器之間的時(shí)序,即由CPLD或FPGA來(lái)控制ADC采樣和 FIFO存儲(chǔ)器的寫操作。但是,通過(guò)仔細(xì)查看ADS5422和IDT72V2113的工作時(shí)序圖,找到了一種簡(jiǎn)單可靠的實(shí)現(xiàn)方法,此方法不需要CPLD或 FPGA就可以實(shí)現(xiàn)兩者的時(shí)序配合。
首先分析ADS5422的工作時(shí)序圖,如圖3所示,其中t1為采樣時(shí)鐘上跳沿到輸出數(shù)據(jù)無(wú)效之間的時(shí)間間隔,即數(shù)據(jù)保持時(shí)間,其大小為3ns。查看IDT72V2113的相關(guān)文檔可知,對(duì)其進(jìn)行寫操作時(shí),數(shù)據(jù)線的保持時(shí)間大于1ns即可滿足要求。因此,ADS5422與IDT72V2113之間的時(shí)序配合可以采用以下簡(jiǎn)單的實(shí)現(xiàn)方法:ADS5422的采樣時(shí)鐘和IDT72V2113的寫時(shí)鐘采用同一個(gè)時(shí)鐘源,這樣,每一個(gè)時(shí)鐘的上跳沿,ADS5422進(jìn)行模數(shù)轉(zhuǎn)換,同時(shí)將上個(gè)時(shí)鐘周期內(nèi)輸出的采樣數(shù)據(jù)存儲(chǔ)到DT72V2113內(nèi)部。
2.3 C6203B與IDT72V2113的連接
C6203B與IDT72V2113的連接是通過(guò)C6203B外部擴(kuò)展總線(XB)。 C6203B的外部擴(kuò)展總線(XB)寬度為32位,可以實(shí)現(xiàn)與同步FIFO無(wú)縫連接,可以同時(shí)無(wú)縫實(shí)現(xiàn)四個(gè)FIFO寫接口或者實(shí)現(xiàn)3個(gè)FIFO寫接口及1 個(gè)FIFO讀接口。通過(guò)無(wú)縫連接實(shí)現(xiàn)FIFO讀接口,F(xiàn)IFO必須連接到XCE3上,數(shù)據(jù)通過(guò)DMA方式從IDT72V2113傳送到C6203B的片內(nèi) RAM中,具體連接如圖4所示。圖4中,4片IDT72V2113經(jīng)過(guò)字長(zhǎng)和字深擴(kuò)展形成2MB的數(shù)據(jù)輸入緩沖,輸入數(shù)據(jù)總線(D0~D15)、輸出數(shù)據(jù)總線(Q0~Q15)、讀使能(REN)、讀時(shí)鐘(RCLK)、寫使能(WEN)、寫時(shí)鐘(WCLK)和將空標(biāo)志信號(hào)(PAE)是由4片 IDT72V2113的相應(yīng)信號(hào)組合形成的;XCE3為外部擴(kuò)展總線(XB)的空間選擇信號(hào),XFCLK為外部擴(kuò)展總線(XB)的輸出時(shí)鐘, EXT_INT4是C6203B的外部中斷信號(hào)4,DX0用作通用輸出口,控制IDT72V2113的寫使能信號(hào)。
2.4 CY7C68013與C6203B的連接
CY7C68013是一個(gè)非常方便的USB2.0實(shí)現(xiàn)方案,它提供與DSP或者M(jìn)CU連接的接口,連接方法有兩種:Slave FIFOs和Master可編程接口GPIF。在本方案中,選用了Slave FIFOs方式,異步讀寫。Slave FIFOs方式是從機(jī)方式,DSP可以像讀寫普通FIFO一樣對(duì)CY7C68013內(nèi)部的多層緩沖FIFO進(jìn)行讀寫。具體的電路連接如圖5所示。 FLAGA、FLAGB和FLAGC是CY7C68013內(nèi)部FIFO的狀態(tài)標(biāo)志,C6203B通過(guò)通用I/O口來(lái)獲得FIFO的空、半滿(由用戶設(shè)定半滿的閾值)和滿等狀態(tài)信息。C6203B對(duì)CY7C68013內(nèi)部FIFO的選擇,以及數(shù)據(jù)包的提交也是通過(guò)通用I/O口來(lái)實(shí)現(xiàn)。C6203B通過(guò) EMIF接口的CE2空間對(duì)CY7C68013進(jìn)行讀寫操作。工作過(guò)程為:DSP通過(guò)USB向PC發(fā)送數(shù)據(jù)時(shí),首先查看空、半滿和滿這三個(gè)狀態(tài)信號(hào),然后向USB寫入適當(dāng)大小的數(shù)據(jù),以保證數(shù)據(jù)不會(huì)溢出;PC機(jī)通過(guò)USB向DSP發(fā)送命令字時(shí),USB通過(guò)中斷方式通知DSP讀取命令字。
3 USB軟件設(shè)計(jì)
USB接口開(kāi)發(fā)中有相當(dāng)大的工作量是關(guān)于USB軟件的開(kāi)發(fā),USB軟件包括三方面的工作:固件(firmware)設(shè)計(jì),驅(qū)動(dòng)程序設(shè)計(jì)和主機(jī)端應(yīng)用程序的設(shè)計(jì)。
3.1 固件設(shè)計(jì)
固件是運(yùn)行在CY7C68013上的程序,可采用匯編語(yǔ)言或C語(yǔ)言設(shè)計(jì),其主要功能是控制 CY7C68013接收并處理USB驅(qū)動(dòng)程序的請(qǐng)求(如請(qǐng)求設(shè)備描述符、請(qǐng)求或設(shè)置設(shè)備狀態(tài),請(qǐng)求或設(shè)置設(shè)備接口等USB2.0標(biāo)準(zhǔn)請(qǐng)求)、控制 CY7C68013接收應(yīng)用程序的控制指令、通過(guò)CY7C68013存放數(shù)據(jù)并實(shí)時(shí)上傳至PC等。
本方案中的固件設(shè)計(jì)思路如下:
①使CY7C68013工作于異步從FIFO(Asynchronous Slave FIFO)模式。相應(yīng)的寄存器操作為:IFCONFIG=0xCB。
CY7C68013具有多種工作方式,除了可以作為能夠產(chǎn)生任意控制波形的主控芯片外,即使作為從設(shè)備,也可選擇異步還是同步方式。由于DSP的關(guān)系,本方案選擇異步從方式。
②將4KB的FIFO對(duì)應(yīng)兩個(gè)端點(diǎn)(EndPoint),即EndPoint2和EndPoint6。相應(yīng)的寄存器操作為:EP2CFG=0xA0,EP6CFG=0xF2。
EndPoint2與EndPoint6分別對(duì)應(yīng)2KB的內(nèi)裝中FIFO(下文分別稱為 FIFO2、FIFO6),存放USB需要上傳與接收的數(shù)據(jù)。其中EndPoint2為OUT型,負(fù)責(zé)從主機(jī)接收數(shù)據(jù);EndPoint6為IN型,負(fù)責(zé)向主機(jī)發(fā)送數(shù)據(jù)。另外,EndPoint2與EndPoint6均采用批量(BULK)傳輸方式,這種方式相對(duì)于其它USB2.0定義的傳輸方式具有數(shù)據(jù)可靠、傳輸速率高等特點(diǎn),是最常用的傳輸方式。
③對(duì)FIFO進(jìn)行配置。相應(yīng)的寄存器操作為:EP2FIFOCFG=0x11,EP6FIFOCFG=0x0D。
本方案將FIFO2、FIFO6設(shè)置成自動(dòng)方式。這里所謂“自動(dòng)”,是指在數(shù)據(jù)的傳輸過(guò)程中,不需要CY7C68013的8051內(nèi)核參與。如有特殊需要可以設(shè)成手動(dòng)方式,這樣8051就可以對(duì)數(shù)據(jù)進(jìn)行修改,如圖6所示。另外還將FIFO配置成16位接口。
④其它操作。為了完善整個(gè)USB傳輸功能,提高固件的健壯性,還必須配以其它設(shè)計(jì),這包括FIFO的自動(dòng)清空復(fù)位,個(gè)性化命令等功能,在此就不進(jìn)行詳細(xì)討論了。
3.2 驅(qū)動(dòng)程序設(shè)計(jì)
USB系統(tǒng)驅(qū)動(dòng)程序采用分層結(jié)構(gòu)模型,分別為較高級(jí)的USB設(shè)備驅(qū)動(dòng)程序和較低級(jí)的USB 函數(shù)層。其中USB函數(shù)層由兩部分組成:較高級(jí)的通用串行總線驅(qū)動(dòng)程序模塊(USBD)和較低級(jí)的主控制器驅(qū)動(dòng)程序模塊(HCD)。在上述USB分層模塊中,USB函數(shù)層(USBD及HCD)由Windows提供,負(fù)責(zé)管理USB設(shè)備驅(qū)動(dòng)程序和USB控制器之間的通信;加載及卸載USB驅(qū)動(dòng)程序;與USB 設(shè)備通用端點(diǎn)(EndPoint)建立通信并執(zhí)行設(shè)備配置、數(shù)據(jù)與USB協(xié)議框架和打包格式的雙向轉(zhuǎn)換任務(wù)。目前Windows提供有多種USB設(shè)備驅(qū)動(dòng)程序,但并不針對(duì)實(shí)時(shí)數(shù)據(jù)采集設(shè)備,因此USB設(shè)備驅(qū)動(dòng)程序需由開(kāi)發(fā)者自己編寫。
開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng)程序,可采用Numega公司的開(kāi)發(fā)包Driver Works和Microsoft公司的2000DDK,并以VC++6.0作為輔助開(kāi)發(fā)環(huán)境。Driver Works提供的驅(qū)動(dòng)向?qū)?,可根?jù)用戶的需要,自動(dòng)生成代碼框架,減少了開(kāi)發(fā)的難度,縮短了開(kāi)發(fā)的周期。但是,Cypress公司為了方便用戶開(kāi)發(fā)USB 接口,在CY7C68013的開(kāi)發(fā)包中提供了一個(gè)通用驅(qū)動(dòng)程序,該程序可不加修改,經(jīng)DDK編譯后直接使用。在本設(shè)計(jì)方案中,采用的就是這個(gè)通用驅(qū)動(dòng)程序。
3.3 應(yīng)用程序設(shè)計(jì)
主機(jī)應(yīng)用程序是主要實(shí)現(xiàn)從高速數(shù)據(jù)采集處理板該取處理后的數(shù)據(jù)、存儲(chǔ)、顯示處理結(jié)構(gòu)以及向數(shù)據(jù)采集處理板發(fā)送控制命令。在Windows 2000下,我們使用的應(yīng)用程序開(kāi)發(fā)工具是VC++6.0。
4 系統(tǒng)工作原理
上電后,ADS5422一直工作,采樣產(chǎn)生的數(shù)據(jù)是否存儲(chǔ)到IDT72V2113中,由 C6203B的DX0引腳狀態(tài)來(lái)決定。C6203B進(jìn)行初始化,外部擴(kuò)展總線的XCE3設(shè)置為同步FIFO讀操作模式。DMA通道0配置為每次傳輸1幀,每幀 1024個(gè)半字,同步事件設(shè)置為外部中斷4,觸發(fā)極性為高電平,初始化定時(shí)器0,定時(shí)間隔為22ms。當(dāng)外部同步信號(hào)到來(lái)時(shí),啟動(dòng)定時(shí)器0,手動(dòng)啟動(dòng) DMA通道0,同時(shí)設(shè)置DX0為低電平。
ADS5422采樣產(chǎn)生的數(shù)據(jù)開(kāi)始寫入IDT72V2113,當(dāng)定時(shí)器0中斷到來(lái)時(shí),設(shè)置DX0為高電平,關(guān)閉 IDT72V2113的寫使能,采樣數(shù)據(jù)不再存儲(chǔ)到IDT72V2113內(nèi)。隨著數(shù)據(jù)不斷寫入IDT72V2113,當(dāng)其內(nèi)部的數(shù)據(jù)量大于1023個(gè)半字時(shí),IDT72V2113的將空標(biāo)志信號(hào)(PAE)由低電平變?yōu)楦唠娖?,使得C6203B的外部中斷信號(hào)有效,從而觸發(fā)DMA傳輸,C6203B的DMA 通道0通過(guò)外部擴(kuò)展總線(XB)讀取1024個(gè)半字的數(shù)據(jù),存儲(chǔ)于內(nèi)部RAM中,傳輸結(jié)束后向C6203B發(fā)送中斷,通知C6203B處理數(shù)據(jù)。 C6203B處理完數(shù)據(jù)后,通過(guò)USB2.0接口發(fā)送處理結(jié)果,然后重新啟動(dòng)DMA通道0,進(jìn)行下一次DMA傳輸。如此循環(huán),直到處理完所有數(shù)據(jù)。當(dāng)下一個(gè)外部同步信號(hào)到來(lái)時(shí),進(jìn)行下一輪數(shù)據(jù)采集處理過(guò)程。
5 總結(jié)
本文詳細(xì)介紹了基于USB2.0接口和DSP的高速數(shù)據(jù)采集處理系統(tǒng)的系統(tǒng)構(gòu)成、硬件連接以及USB2.0驅(qū)動(dòng)程序和固件程序的開(kāi)發(fā)。經(jīng)實(shí)際驗(yàn)證,系統(tǒng)運(yùn)行可靠,是一種比較好的高速數(shù)據(jù)采集與處理的解決方案。
責(zé)任編輯:gt
-
dsp
+關(guān)注
關(guān)注
552文章
7959瀏覽量
347926 -
usb
+關(guān)注
關(guān)注
60文章
7876瀏覽量
263697 -
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7360瀏覽量
87632
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論