摘 要: 利用USB2.0接口芯片CY7C68013的特點,通過塊傳輸方式實現了視頻圖像的實時無損傳輸。詳細介紹了CY7C68013的Slave FIFO工作方式在視頻圖像傳輸中的應用以及系統硬件設計。
關鍵詞: USB2.0 塊傳輸 Slave FIFO 視頻圖像
對于數據量很大的實時數據傳輸,USB2.0協議[1][2][3]有專門的等時傳輸方式來實現,但等時傳輸不但實現困難,且由于在數據包傳輸過程中和主機不進行握手,因此當數據包出現錯誤時主機不會要求USB重新發送數據,這樣會造成數據丟失或錯誤。因此不適用于視頻圖像的精密分析與測量。而USB2.0協議中的塊傳輸方式在數據包傳輸過程中和主機進行握手,當數據包出現錯誤時會要求USB重新發送數據,這就保證了傳輸數據的準確性,而且開發相對容易。本文利用USB2.0塊傳輸方式實現了CCD視頻圖像的實時無損傳輸。
1 USB2.0接口芯片CY7C68013簡介
(1)內置USB2.0收發器和智能串口引擎(Serial Interface Engine,SIE)。
(2)增強的8051內核,其時鐘頻率可為12MHz、24MHz和48MHz,同時該芯片還帶有2個通用異步收發器(UART)、3個定時/計數器和2個數據指針,可支持外部中斷。
(3)可通過USB下載程序,也可從外部擴展的E2PROM中下載程序。
(4)支持批量傳輸、同步傳輸、中斷傳輸和控制傳輸4種傳輸方式。
(5)具有8位或16位外部數據接口。
(6)具有通用可編程接口GPIF。
(7)內置I2C接口,其工作速率為100kHz或400kHz。
(8)帶有最大達8Kb的FIFO,可運行于Master或Slave方式(本文采用)。
2 USB2.0的4種傳輸方式及其比較
(1)控制傳輸:主機發送一些控制命令字給USB設備。
(2)中斷傳輸:主機發送中斷指令給USB設備。
(3)等時傳輸(Isochronous Transfer):用于視頻或音頻等數據流的傳輸,傳輸時維持一定的速度,高速時會有一定的錯誤發生。其傳輸結構如圖1所示。

(4)塊傳輸(Bulk Transfer):傳輸的數據量大,準確性高(若出現錯誤而發生傳送失敗,會重新傳一次),且無速度上的限制(即沒有固定傳輸速率)。其傳輸結構如圖2所示。

通過比較塊傳輸和等時傳輸的結構可以發現:等時傳輸是以數據流的方式不斷傳輸數據,可以充分保證實時數據的傳送。而塊傳輸比等時傳輸多了握手的部分(ACK/NAK/STALL/NYET),實時數據必須分包傳輸,而且每個包最大為1 024b。這樣塊傳輸的速度會受到一定的影響。從理論上看,在USB2.0協議中等時傳輸最高支持480Mbps,而塊傳輸最高支持416Mbps。
對于實時視頻圖像傳輸,采集到的視頻信號為PAL制式隔行掃描黑白全電視視頻信號。該信號每幀信號由奇場和偶場信號構成,每場重復周期為20ms,場消隱脈沖寬度為1 612μs,在場消隱期間無有效數據,每行重復周期為64μs,行消隱脈沖寬度為12μs。對于分辨率為800×600的實時圖像而言,其要求的最低傳輸速度約為800×8÷64=100Mbps。因此可以看出,用Bulk方式傳輸此分辨率的實時視頻圖像在理論上是可行的。這樣每次連續采集一場的數據,如果可以在場消隱的時間內完成一場數據的處理和顯示,那么在下一場數據到來時就不會耽誤數據的繼續采集,從而可以實現圖像的實時傳輸。實驗證明,CY7C68013的塊傳輸中Slave FIFO工作方式完全可以滿足上面的要求。
3 Slave FIFO簡介及其在視頻圖像傳輸中的應用
Slave FIFO 作為USB2.0接口芯片CY7C68013的一種工作方式[4][5],其自身的特點如下:(1)采用外部Master的控制方式,減少了直接應用內部Master的繁雜。(2)直接利用芯片內部集成的FIFO進行工作,有效地將外部數據經CY7C68013進行傳遞。(3)同步和異步2種工作模式適應多種數據傳輸要求。
采用Slave FIFO方式傳輸視頻圖像數據的原理框圖如圖3所示。其中IFCLK的設置決定了Slave FIFO工作在同步還是異步模式下。同步模式下,SLWR寫信號受IFCLK上升沿控制,在異步模式下,SLWR寫信號受讀信號SLOE控制。所以,采用異步工作模式,用視頻圖像的采集時鐘作為SLOE的觸發信號。這樣可以使SLWR信號和SLOE信號保持同步,經FIFO直接將采集數據寫入主機。其寄存器配置為:IFCONFIG=0xCB。為了充分利用CY7C68013的內部FIFO進行數據的緩沖,可以采用4倍Buffer的方式,可以用端點6對數據進行讀入(IN)操作(由于只是將采集的圖像數據送入主機,所以此時不用考慮端點2和端點4這2個OUT端點。這樣就只需要對IN端點6進行配置),這樣按照其工作方式,可以應用全部8KB緩沖。其寄存器配置為:EP6CFG=0xE0;PKTEND直接決定FIFO中數據的傳輸方向及方式。應用CY7C68013芯片自身的AUTOIN方式,完全可以保證數據及時無誤地從采集設備到主機的傳輸,其配置為:EP6FIFOCFG=0x0C;端點(ENDPOINT)6的選擇可以通過對FIFOADR的寄存器進行設置來確定。這樣,就可以用最短的時間將從采集到的芯片通過CY7C68013送到主機進行處理。

在場消隱期間的處理工作是利用Slave FIFO方式傳遞實時視頻圖像的一個關鍵。當USB傳完一場信息后,可以在IBN(IN Bulk NAK)中斷中應用判斷標志來實現。可以在固件中自定義一個函數proc(void),在USB Interrupt Handlers中利用該函數調用IBN中斷,proc(void)定義如下:
void proc(void)
{
{
PE0=0x00;
}
IBNIRQ=bmEP6IBN;//clear the IBN IRQ
IBNIE|=bmEP6IBN;
}
在IBN中斷定義中,部分程序如下:
void ISR_Ibn(void) interrupt 0
{
EZUSB_IRQ_CLEAR( );
IBNIRQ=bmEP6IBN;
NAKIRQ|=bmBIT0;
PE0=0x01;
}
PE0為一個外部輸出腳,利用PE0輸出的高電平控制外圍采集邏輯采集數據的時間。每次調用IBN中斷前都設置PE0=0x00,一旦調用IBN中斷后,PE0=0x01,輸出為高電平。可以利用該高電平控制CPLD的場同步信號,利用CPLD把每場頭信號A0找出來。這樣利用PE0和A0做“與”運算,就可以從每場開始時就采集數據,不會造成數據的丟失。隨后AD按照采樣時鐘進行采集,通過設置所要求的分辨率和采集時鐘的大小,可以得到每場需要采集的數據點數,當數據采集完畢后,通過CPLD產生中斷請求送給INT。這時固件程序進入中斷服務,同時又將PE0設置為0x01,重復IBN中斷的工作過程。由于在場消隱期間沒有場頭信號,PE0始終為高,AD不會采集數據,因此可以利用場消隱的這段時間對數據進行處理,實現和主機的數據傳輸。在主機端的上位機處理程序中,初始時通過在驅動中定義MaximumTransferSize的大小可以使其足夠大于一場數據(800×600)。這樣當USB通過線程中的DeviceIoControl將全部一場的數據送到主機的內存后,就可以通過IBN中斷利用場消隱期間將采集的一場數據在主機中顯示出來。實驗證明,主機將存儲于內存中的一場圖像數據顯示出來大約用300~500μs,大大小于場消隱的1 612μs,所以此方法是完全可行的。當場消隱結束后,IBN中斷自動解除,又可以重新采集圖像數據,實現每場圖像數據和主機中的傳輸和顯示,達到實時處理的效果。
4 系統硬件設計
結合CCD視頻圖像采集和Slave FIFO的外圍Master的控制及設計,確定了無損視頻圖像采集系統的硬件設計方案,系統硬件結構如圖4所示。系統由A/D轉換器、同步分離電路、鎖相環電路、CPLD及USB2.0傳輸模塊(CY7C68013)構成。系統中A/D轉換器采用視頻采集芯片TDA8709,具有8位數據寬度,最高數據采樣率可達32MHz,內置視頻放大及鉗位電路,可外加增益控制。同步分離芯片采用LM1881,可以方便地從0.5~2V標準負極性NTSC、PAL或SECAM制式視頻信號中提取行、場同步信息。鎖相環芯片采用高速鎖相環NE564,最高工作頻率可達到50MHz。CPLD采用ALTERA公司的EPM7128,可用門單元為2 500個,管腳間最大延遲5ns。系統中的邏輯控制功能由CPLD和USB2.0傳輸模塊配合完成,比外加其他處理器速度快。

標準視頻輸入由同步分離電路分離出標準行同步信號HSYN和場同步信號VSYN,場同步信號送至CPLD,行同步信號經鎖相環電路鎖相,產生每行N個點的鎖相脈沖VCOOUT輸入到CPLD。一個工作周期開始時,主機首先發出塊請求命令,USB2.0傳輸模塊響應并設置位信號線PE0,指示CPLD開始采集。CPLD檢測到場同步信號有效后,則將鎖相脈沖CLK加至A/D的轉換脈沖輸入端及USB2.0模塊的寫脈沖輸入端。每次A/D轉換完畢,D[7..0]有效,并在CLK作用下將采集到的圖像數據寫入USB2.0傳輸模塊并傳回主機。CPLD內置一計數器,對鎖相脈沖進行計數,并由場同步信號復位,計數滿一場后置位信號線INT,輸入到USB2.0傳輸模塊的中斷端,USB2.0傳輸模塊響應中斷并撤銷信號PE0,此時主機也已接收滿一場圖像,一個工作周期結束。下一個工作周期仍然由主機發出塊傳輸請求開始。現場采集的視頻圖像中的一幀如圖5所示,完全可以滿足精密分析和測量的需要。

5 結束語
綜上所述,根據CY7C68013的結構特點,使其工作在Slave FIFO模式下,應用USB的Bulk傳輸方式實現了CCD視頻圖像的實時無損傳輸和顯示,不存在傳輸圖像失真或數據丟失的現象。目前這一系統已成功運用于液體中化工試劑、油珠、微細顆粒的粒徑測量和統計上。
參考文獻
1 Compaq Hewlett-Packard Interetc.Universal Serial Bus Specification Revision 2.0.2000
2 Anderson D,Dzatko D.Universal Serial Bus Susterm Architecture(Second Edition).MindShare INC,2001
3 周振宇,谷海穎.基于USB總線的實時數據采集系統設計. 電子技術應用,2002;28(2)
4 Cypress Semiconductor.EZ-USB FX2 Technical Reference Manual.2001
5 許永和.EZ-USB FX系列單片機USB外圍設備設計與應用.北京:北京航空航天大學出版社,2002
