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

(3)寫設(shè)備函數(shù)

在實(shí)際編寫應(yīng)用程序時(shí)只需將上述3個(gè)函數(shù)加入到相應(yīng)的功能模塊中便可完成Win 32應(yīng)用 程序?qū)SB設(shè)備進(jìn)行打開(kāi)、讀、寫操作,實(shí)現(xiàn)二者之間的通信。
評(píng)論