USB2.0在視頻壓縮存儲系統(tǒng)中的應(yīng)用
68013片內(nèi)集成了4 kB的內(nèi)部FIFO,可以分成4個端點雙緩沖區(qū),即1個端點包括1個 輸入緩沖區(qū)和1個輸出緩沖區(qū),1個緩沖區(qū)的大小是512 B,4個緩沖區(qū)的選擇由FIFOADR [1:0]的4個狀態(tài)決定,例如初始化后FIFOADR[1:0]=00,此時選中ENPOINT2,當MB 86391有 數(shù)據(jù)要傳輸時,STEN出現(xiàn)高電平,CPLD把STDATA的8位數(shù)據(jù)送往FD總線,在IFCLK同步時 鐘的控制下,向端點2的輸入緩沖區(qū)FIFO寫入數(shù)據(jù),CPLD同時對時鐘進行計數(shù),當達到188時 ,送出PKTEN,表示1幀的數(shù)據(jù)傳輸完畢,USB核心收到這個幀結(jié)束的標志后讀端點2的 輸入FIFO,響應(yīng)IN請求把數(shù)據(jù)送出;CPLD除了設(shè)定N=188的計數(shù)器外,還設(shè)定了一個N =4的計數(shù)器,每當一個幀滿后,以00,01,10,11的狀態(tài)翻轉(zhuǎn),并把這狀態(tài)當作FIFOADR [1:0]的輸入,使得CPLD能持續(xù)接受數(shù)據(jù)并輪流向68013的4個輸入緩沖區(qū)寫入。FLAG 設(shè)置為Indexed Mode,并且FLAGB表示當前FIFO滿狀態(tài),而FLAGC表示當前FIFO空狀態(tài),CPLD 只有檢測到FLAGC的有效狀態(tài)時,才會往MB86391發(fā)請求STREQ,告訴MB86391已準備好接收。 E2USB FX2 Slave FIFO工作模式下數(shù)據(jù)接口如圖2所示。 3軟件結(jié)構(gòu)
開發(fā)USB接口的應(yīng)用系統(tǒng)最重要的就是USB驅(qū)動程序和固件程序的編制。本文采 用賽普拉斯公司提供的CY7C68013芯片及其開發(fā)板,我們可以從復(fù)雜的USB驅(qū)動程序中解 脫出來,而把主要精力放在芯片的固件程序的編寫上。軟件結(jié)構(gòu)如圖3所示。 3.1應(yīng)用程序
應(yīng)用程序把USB設(shè)備看成一個文件,對設(shè)備的操作相當于讀寫文件一樣的簡單,應(yīng) 用程序與驅(qū)動程序的通信主要是通過以下幾個函數(shù)來實現(xiàn)的:
(1) 打開設(shè)備句柄函數(shù)
(3)寫設(shè)備函數(shù)
在實際編寫應(yīng)用程序時只需將上述3個函數(shù)加入到相應(yīng)的功能模塊中便可完成Win 32應(yīng)用 程序?qū)SB設(shè)備進行打開、讀、寫操作,實現(xiàn)二者之間的通信。
評論