TMS320VC5502圖像傳輸系統的USB接口擴展
0 引言
本文引用地址:http://dyxdggzs.com/article/82131.htm一個(gè)典型的水下圖像傳輸系統采用DSP(數字信號處理器)作為實(shí)時(shí)圖像處理的核心單元,并用PC機建立良好的人機界面,以完成圖像的采集和顯示。因此,PC上位機與DSP間需進(jìn)行一種高效、快速的數據傳輸。目前PC機和DSP常采用RS-232串口通信方式實(shí)現數據交換,其通信協(xié)議簡(jiǎn)單,但在大數據量的圖像信息傳輸中,很難滿(mǎn)足系統的實(shí)時(shí)性要求。此外,PC機本身串口資源也十分有限。而USB(通用串行總線(xiàn))作為一種快速且有彈性的新式接口,可以滿(mǎn)足多數情況下大數據量實(shí)時(shí)交換的要求。
本文提出一種基于USB接口的圖像傳輸系統方案,介紹DSP和上位機間的USB接口設計,利用TI公司的DSP芯片TMS320VC5502和Cypress公司Ez-USB SX系列芯片CY7C68001,完成USB接口擴展的軟硬件設計,實(shí)現DSP與上位機間的高速數據傳輸。
1系統整體方案
系統整體結構如圖1所示。
在發(fā)送端,PC機將待發(fā)送圖像轉換為數據比特流送到USB總線(xiàn)上,同時(shí),在主機屏幕上顯示原圖像。圖像數據經(jīng)DSP和外圍電路的處理后送人信道。接收機對接收信號進(jìn)行處理后,通過(guò)USB總線(xiàn)把圖像數據傳回上位機并顯示接收圖像。其中,DSP和上位機間的USB接口設計是本文的重點(diǎn)。
2硬件設計
USB接口擴展的硬件設計如圖2所示。
TMS320VC5502是一款定點(diǎn)16位芯片,作為T(mén)I公司TMS320C5000 DSP平臺上性?xún)r(jià)比最佳的新型產(chǎn)品,其運算速度高達600億次乘加運算每秒。它具有1條32 bit的程序讀總線(xiàn)和5條16 bit的數據總線(xiàn),片上集成有ROM(16 k×16 bit)、DARAM(32 k×16 bit)等存儲器和豐富的外設資源,可滿(mǎn)足大數據量的圖像處理要求。此外,芯片低功耗(不到200 mW)的特點(diǎn)使它可以應用到水下圖像傳輸系統中。
由于DSP的I/O口資源有限,系統采用FP-GA芯片EPF10k10A完成地址譯碼。它具有66個(gè)用戶(hù)IO口,將DSP的部分地址線(xiàn)連接到FPGA的IO口并配置為輸入端口,通過(guò)FPGA程序模擬譯碼器邏輯,可以產(chǎn)生Flash存儲器、SDRAM、USB、UART等所有與DSP通信的模塊片選信號,從而實(shí)現DSP的I/O口擴展。
USB通信協(xié)議較復雜,因此,本系統采用Cypress公司的CY7C68001芯片實(shí)現USB2.0接口,該芯片集成了USB2.0收發(fā)器和SIE(串行接口引擎),分別完成物理層和鏈路層的數據通信管理,USB的應用層協(xié)議由TMS320VC5502編程實(shí)現。
CY7C68001芯片支持高速(480 Mbit/s)或全速(12 Mbit/s)USB數據傳輸;內部有4個(gè)端點(diǎn)(End-point)共享4 kB的FIFO,每個(gè)端點(diǎn)對應的FIFO空間大小及FIFO狀態(tài)可編程;芯片還具有智能SIE功能,可在不借助微處理器中斷的前提下完成枚舉。
CY7C68001具有16根數據總線(xiàn)FD[15:0],3根地址線(xiàn)FIFOADR[2:0]用于選通命令接口或指定的FIFO。此外,/INT信號表明CY7C68001有中斷事件發(fā)生,或通知DSP對CY7C68001的讀操作結束;READY信號表明CY7C68001處于可讀寫(xiě)狀態(tài)。
3軟件編程
3.1主機端程序
USB協(xié)議中包含控制型(contro1)、等時(shí)型(Isoch-ronous)、中斷型(Interrupt)和批量型(Bulk)4種基本的數據傳輸類(lèi)型。其中,批量傳輸特別適合大數據量的傳輸,在沒(méi)有帶寬和間隔時(shí)間要求時(shí),可以保證快速準確的傳輸。因此,本系統采用批量傳輸方式進(jìn)行PC機與DSP間的圖像數據傳輸。
主機端軟件包括3個(gè)部分:
a)CY7C68001的驅動(dòng)程序,用于實(shí)現USB設備的發(fā)現、配置和關(guān)閉,實(shí)現數據傳送接口與控制等功能。結合EZ-USB的GPD(通用設備驅動(dòng)程序),在Windows WDM DDK環(huán)境下編譯生成驅動(dòng)程序的系統文件(.sys)。
b)安裝USB時(shí)的信息文件(.inf),用于將驅動(dòng)程序綁定到特定設備的Verdor ID(VID)和Product ID(PID)。當USB設備插入計算機時(shí),計算機檢測到設備插入后自動(dòng)發(fā)出查詢(xún)請求;USB設備回應該請求,并送出設備的VID/PID。計算機根據這兩個(gè)ID裝載相應設備驅動(dòng)程序,完成枚舉。
c)系統上位機(PC)處理程序,采用Microsoft Vis-ual C++軟件編寫(xiě),通過(guò)對界面上控件的操作產(chǎn)生消息,使CPU執行相應的動(dòng)作。以發(fā)送端為例,主機程序流程如圖3所示。
驅動(dòng)程序與應用程序的接口函數定義如下:
對用戶(hù)而言,所有應用程序均通過(guò)IO控制來(lái)訪(fǎng)問(wèn)EZ-USB GPD。以上接口函數主要調用兩個(gè)Win32API函數:首先通過(guò)CreatFile()連接USB設備并獲取訪(fǎng)問(wèn)設備驅動(dòng)程序的句柄;再調用DeviceIoControl()提交I/O控制碼(IOCTL),向驅動(dòng)程序發(fā)送相應命令,并為CreatFile()返回的設備句柄設置I/O緩沖區。部分源代碼如下:
3.2 DSP端程序
USB主機與設備間的數據傳輸是通過(guò)設備中的端點(diǎn)(Endpoint)進(jìn)行的。這些端點(diǎn)通過(guò)端點(diǎn)號和輸入輸出方向來(lái)進(jìn)行標識,并為數據傳輸分配固定FIFO存儲區。本系統在初始化時(shí)將CY7C68001的4個(gè)端點(diǎn)配置為批量傳輸類(lèi)型。其中,FIF02、FIF04為輸出端點(diǎn),用于接收上位機傳來(lái)的數據;FIF06、FIF08為輸入端點(diǎn),用于存放待發(fā)送的數據。各個(gè)FIFO設置為異步工作模式。
DSP經(jīng)初始化后打開(kāi)USB外部中斷,向CY7C68001寫(xiě)入描述符表,等待其枚舉中斷。枚舉成功后,DSP對CY7C68001進(jìn)行其他配置并清空FIFO,然后等待主機發(fā)送用戶(hù)請求并進(jìn)行相應處理。
程序流程如圖4所示。程序在TI CCS 2.2集成開(kāi)發(fā)環(huán)境下進(jìn)行編譯并調試通過(guò)。
3.2.1 USB的初始化
在每個(gè)USB設備的內部都有一個(gè)設備描述符(descriptor)表,它包含了設備的全部要求和特性。通過(guò)主機與設備間的控制傳輸來(lái)辨識并配置新連接上的USB設備的過(guò)程稱(chēng)為設備枚舉(enumeration)。CY7C68001芯片內有一個(gè)大小為500字節的描述符RAM,用于存放描述符表,內部寄存器DESC用于存放描述符表的長(cháng)度。
CY7C68001的枚舉方式有EEPROM自舉和通過(guò)DSP自舉(默認)2種。本系統采用默認方式,先由DSP向DESC寄存器寫(xiě)入2字節的描述符表長(cháng)度,再通過(guò)命令口將描述符表按字節寫(xiě)入描述符RAM。描述符表寫(xiě)入后,DSP等待CY7C68001的枚舉成功中斷。枚舉成功后,CY7C68001完成對各端點(diǎn)的配置。
3.2.2 CY7C68001的寄存器讀寫(xiě)
DSP采用二次尋址方式對CY7C68001寄存器進(jìn)行讀寫(xiě),即首先通過(guò)命令口將要尋址的寄存器子地址和操作類(lèi)型(讀/寫(xiě))寫(xiě)入,然后通過(guò)命令口將數據讀出或寫(xiě)入。具體步驟可參考CY7C68001芯片手冊。
3.2.3 CY7C68001的中斷
SX2共有以下6個(gè)中斷源:
SETUP:SX2收到無(wú)法自動(dòng)處理的上位機請求;
EPOBUF:端點(diǎn)0的緩沖區處于可讀/寫(xiě)狀態(tài);
FLAGS:OUT端點(diǎn)FIFO轉為非空狀態(tài);
ENUMOK:SX2枚舉成功;
BUSACTIVITY:總線(xiàn)掛起/恢復;
READY:從低功耗通過(guò)WAKEUP引腳被喚醒。
當有中斷事件發(fā)生時(shí),CY7C68001通過(guò)INT信號觸發(fā):DSP中斷。DSP在USB的ISR(中斷服務(wù)子程序)中通過(guò)讀命令口來(lái)判斷中斷源,并設置相應中斷標志。若為SETUP中斷,即SX2收到無(wú)法自動(dòng)處理的用戶(hù)請求(如用戶(hù)定義的批量讀/寫(xiě)),則在隨后的中斷處理中,ISR從命令口依次讀入8個(gè)字節,存入用戶(hù)命令緩沖區中,再由主程序解析執行。
4結束語(yǔ)
本系統利用USB2.0接口芯片CY7C68001實(shí)現上位機和DSP的高速圖像數據傳輸,為水下圖像傳輸系統建立良好的人機界面,用戶(hù)利用PC機將待發(fā)送的圖像送入發(fā)送機的DSP,接收機的DSP將收到的圖像數據送回PC機并顯示,用戶(hù)可對發(fā)送和接收到的圖像進(jìn)行直觀(guān)對比。
c++相關(guān)文章:c++教程
評論