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