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