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