專利名稱:一種主機(jī)與usb設(shè)備之間進(jìn)行數(shù)據(jù)傳輸?shù)姆椒跋鄳?yīng)的usb設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,特別涉及基于USB協(xié)議的數(shù)據(jù)傳輸。
背景技術(shù):
通用串行總線(Universal Serial Bus)是新一代的外圍設(shè)備接口,這種接口的傳輸速率比個人計算機(jī)所使用的并行端口或是串行端口的速度都快了許多。一條通用串行總線最多可以連接127個設(shè)備,如光盤驅(qū)動器、掃描儀、打印機(jī)等等。這些設(shè)備通過相同的接口連接到主機(jī)(host)例如個人計算機(jī)上,從而簡化了作為主機(jī)的個人計算機(jī)連接接口類型。
如圖1所示,在利用USB總線進(jìn)行數(shù)據(jù)傳輸過程中,主機(jī)發(fā)送數(shù)據(jù)或接收數(shù)據(jù)的時鐘和USB設(shè)備接收或發(fā)送數(shù)據(jù)的時鐘總會存在一定的誤差,因此設(shè)備內(nèi)部的緩沖器就可能會出現(xiàn)沒有數(shù)據(jù)可以輸出(下溢underflow)或者數(shù)據(jù)量超出緩沖器存儲最大空間限制(上溢overflow)的現(xiàn)象。在數(shù)據(jù)傳送過程中,一般有兩種情況,一種是數(shù)據(jù)輸入(in),表示數(shù)據(jù)流向主機(jī);一種是數(shù)據(jù)輸出(out),表示數(shù)據(jù)流出主機(jī)。對于這兩種情況,都要考慮主機(jī)與設(shè)備時鐘不對稱所帶來的問題。下面以數(shù)據(jù)輸入(in)為例進(jìn)行介紹。如圖2所示,在5ms以后緩沖器占有率還在持續(xù)升高,而且很快就達(dá)到了所述緩沖器的存儲上限。這樣在主機(jī)自所述緩沖器中讀出數(shù)據(jù)并使緩沖器的占有率再次下降之前,就會有一部分來自于設(shè)備的數(shù)據(jù)因為不能被寫入所述緩沖器而被丟棄。如圖3所示,在5ms以后緩沖器占有率還是持續(xù)下降,并且很快所述緩沖器中的數(shù)據(jù)就被讀空,這樣在USB設(shè)備向緩沖器寫入數(shù)據(jù)并使緩沖器的占有率再次上升之前,就會沒有可以數(shù)據(jù)可以傳輸給主機(jī)。
無論在視頻還是音頻應(yīng)用中采用USB數(shù)據(jù)傳輸,緩沖器的上溢或是下溢都會導(dǎo)致圖像或者聲音的間斷或者不必要的干擾。
發(fā)明內(nèi)容
本發(fā)明的目的是避免在數(shù)據(jù)傳輸過程中USB設(shè)備中發(fā)生緩沖器的上溢或下溢。為實現(xiàn)上述發(fā)明目的,本發(fā)明記載了如下的技術(shù)方案一種在主機(jī)與USB設(shè)備之間進(jìn)行數(shù)據(jù)傳輸?shù)姆椒òz測USB設(shè)備中的緩沖器數(shù)據(jù)占有率的操作;對所述緩沖器數(shù)據(jù)占有率的情況進(jìn)行判斷的操作;根據(jù)判斷結(jié)果進(jìn)行增加采樣數(shù)據(jù)或者丟棄采樣數(shù)據(jù)的操作。
其中,若所述緩沖器數(shù)據(jù)占有率低于預(yù)先設(shè)定好的存儲下限標(biāo)記,進(jìn)行所述增加采樣數(shù)據(jù)的操作;若緩沖器數(shù)據(jù)占有率高于預(yù)先設(shè)定好的存儲上限標(biāo)記,進(jìn)行所述丟棄采樣數(shù)據(jù)的操作。
優(yōu)選的,當(dāng)緩沖器占有率高于預(yù)先設(shè)定好的存儲上限標(biāo)記時,記錄緩沖器輸出數(shù)據(jù)次數(shù)的操作;及當(dāng)所述緩沖器輸出數(shù)據(jù)次數(shù)達(dá)到預(yù)先設(shè)定好的一個計數(shù)值一時,進(jìn)行所述丟棄采樣數(shù)據(jù)的操作。若所述緩沖器數(shù)據(jù)占有率低于預(yù)先設(shè)定好的存儲下限標(biāo)記,開始記錄緩沖器輸出數(shù)據(jù)次數(shù)的操作;當(dāng)所述緩沖器輸出數(shù)據(jù)次數(shù)達(dá)到預(yù)先設(shè)定好的一個計數(shù)值二時,進(jìn)行所述增加采樣數(shù)據(jù)的操作。所述增加采樣數(shù)據(jù)的操作可以是插值操作,特別是線性插值操作。
本發(fā)明還記載了一種USB設(shè)備,包括一控制模塊以及緩沖器,以及對所述緩沖器的數(shù)據(jù)占有率進(jìn)行檢測的檢測模塊,該檢測模塊將檢測結(jié)果發(fā)送給所述控制模塊,所述控制模塊根據(jù)檢測結(jié)果增加采樣數(shù)據(jù)或者丟棄采樣數(shù)據(jù)。
其中,所述USB設(shè)備還包括一插值器,所述控制模塊通過對該插值器的控制增加采樣數(shù)據(jù)。所述插值器是可以是線性插值器。
在所述USB設(shè)備的所述檢測模塊內(nèi)部存儲有預(yù)先設(shè)定好的上限和下限標(biāo)記值;若所述檢測模塊得到的檢測結(jié)果為緩沖器占有率低于所述下限標(biāo)記,所述控制模塊增加采樣數(shù)據(jù);若所述檢測模塊得到的檢測結(jié)果為緩沖器占有率高于所述上限標(biāo)記,所述控制模塊丟棄采樣數(shù)據(jù)。
另外,若所述檢測模塊得到的檢測結(jié)果為緩沖器占有率高于所述上限標(biāo)記,則所述計數(shù)器開始計數(shù);當(dāng)所述計數(shù)器計數(shù)到一設(shè)定好的記數(shù)值一時,檢測模塊發(fā)送檢測結(jié)果給控制模塊,控制模塊丟棄采樣數(shù)據(jù)。所述USB設(shè)備還包括一計數(shù)器;若所述檢測模塊得到的檢測結(jié)果為緩沖器占有率低于所述下限標(biāo)記,則所述計數(shù)器開始計數(shù);當(dāng)所述計數(shù)器計數(shù)到一設(shè)定好的記數(shù)值二時,檢測模塊發(fā)送檢測結(jié)果給控制模塊,控制模塊增加采樣數(shù)據(jù)。
另外,所述上限標(biāo)記、下限標(biāo)記、計數(shù)值一以及計數(shù)值二都是可配置的。
本發(fā)明所記載技術(shù)方案有效的避免了由于主機(jī)和USB設(shè)備時鐘不對稱的所帶來的緩沖器上/下溢問題,并且在保證了數(shù)據(jù)的順利傳輸。
圖1是現(xiàn)有技術(shù)USB系統(tǒng)結(jié)構(gòu)圖;圖2是USB設(shè)備發(fā)生緩沖器上溢的情況示意圖;圖3是USB設(shè)備發(fā)生緩沖器下溢的情況示意圖;圖4是本發(fā)明USB數(shù)據(jù)傳輸方法的一個優(yōu)選實施例的流程圖;圖5是本發(fā)明USB設(shè)備防止緩沖器上溢的情況示意圖;圖6是本發(fā)明USB設(shè)備防止緩沖器下溢的情況示意圖;圖7是本發(fā)明USB設(shè)備的結(jié)構(gòu)圖;圖8是本發(fā)明USB設(shè)備的另一結(jié)構(gòu)圖。
具體實施例方式
本發(fā)明為實現(xiàn)前述的發(fā)明目的,提供了一種新的USB數(shù)據(jù)傳輸方法。在數(shù)據(jù)傳輸過程中,一般有兩種情況,一種是數(shù)據(jù)輸入(in),表示數(shù)據(jù)流向主機(jī);一種是數(shù)據(jù)輸出(out),表示數(shù)據(jù)流出主機(jī)。對于這兩種情況,都要考慮主機(jī)與設(shè)備時鐘不對稱所帶來的問題。下面以數(shù)據(jù)輸入(in)為例進(jìn)行介紹,數(shù)據(jù)輸出(out)的情況與輸入(in)類似。
圖4所示為本發(fā)明所述USB數(shù)據(jù)傳輸方法的一個優(yōu)選實施例。在數(shù)據(jù)傳輸?shù)哪骋粫r刻,對于USB設(shè)備中的緩沖器的數(shù)據(jù)占有率進(jìn)行檢測。如果該占有率高于一個預(yù)先設(shè)定好的存儲上限標(biāo)記值,那么就開始計數(shù),當(dāng)計數(shù)值等于一預(yù)先設(shè)定好的計數(shù)值一時,就丟棄將要寫入所述緩沖器的采樣數(shù)據(jù),并再次檢測所述緩沖器的數(shù)據(jù)占有率。如果此時該數(shù)據(jù)占有率沒有降低到某一水平,例如緩沖器最大存儲空間的50%,則重新開始計數(shù),當(dāng)計數(shù)到所述計數(shù)值一時再次丟棄一個采樣數(shù)據(jù)。這樣操作直到數(shù)據(jù)占有率降低到所需要的水平。
在數(shù)據(jù)傳輸?shù)哪骋粫r刻,對于USB設(shè)備中的緩沖器的數(shù)據(jù)占有率進(jìn)行檢測。如果該占有率低于一個預(yù)先設(shè)定好的存儲下限標(biāo)記值,同樣的也就開始計數(shù),當(dāng)計數(shù)值等于一預(yù)先設(shè)定好的計數(shù)值二時,就增加一個采樣數(shù)據(jù)并將其輸送給主機(jī),并再次檢測所述緩沖器的數(shù)據(jù)占有率。如果此時該數(shù)據(jù)占有率沒有提高到某一水平,例如緩沖器最大存儲空間的50%,則重新開始計數(shù),當(dāng)計數(shù)到所述計數(shù)值二時再次增加一個采樣數(shù)據(jù)并輸送給主機(jī)。這樣操作直到數(shù)據(jù)占有率提高到所需要的水平。其中,增加采樣數(shù)據(jù)的操作可以通過插值操作來實現(xiàn),比如線形插值操作或者二次插值操作。
所述上限標(biāo)記值、下限標(biāo)記值是可以配置的,可以根據(jù)USB設(shè)備以及主機(jī)的數(shù)據(jù)傳送和讀取速度來設(shè)定。同樣的,計數(shù)值一、二也是可以配置的,同樣可以根據(jù)USB設(shè)備以及主機(jī)的數(shù)據(jù)傳送和讀取速度,以及系統(tǒng)可以接受的丟棄或增加采樣數(shù)據(jù)的程度而設(shè)定。
圖5中顯示的是在采用了本發(fā)明所記載的數(shù)據(jù)傳輸方法后,在5ms以后當(dāng)緩沖器中的數(shù)據(jù)要繼續(xù)增加時,緩沖器的占有率就會被限制在上限標(biāo)記的水平附近,并且通過丟棄采樣數(shù)據(jù)的操作使存儲器的占有率下降到某一水平。
圖6顯示的是在采用了本發(fā)明所記載的數(shù)據(jù)傳輸方法后,在5ms以后當(dāng)緩沖器中的數(shù)據(jù)要繼續(xù)減少時,緩沖器的占有率就會被被限制在下限標(biāo)記的水平附近,并且通過增加采樣數(shù)據(jù)的操作使存儲器的占有率提高到某一水平。
本發(fā)明還提供了一種新的USB設(shè)備如圖7所示。所述USB設(shè)備S包括一個檢測模塊T,該檢測模塊T中儲存著所述緩沖器B占有率的上限標(biāo)記和下限標(biāo)記的值。緩沖器B的數(shù)據(jù)占有率水平會被實時的輸送到所述檢測模塊T,經(jīng)過T比較,如果所述緩沖器B的數(shù)據(jù)占有率水平高于所述上限標(biāo)記,例如緩沖器最大存儲空間的80%,那么檢測模塊T發(fā)送信號到控制模塊C,C便放棄下一個要寫入所述緩沖器的數(shù)據(jù)。優(yōu)選的來說,如圖8所示,所述USB設(shè)備還包括一個計數(shù)器O。當(dāng)所述檢測模塊T得知所述緩沖器B的占有率已經(jīng)超過上限標(biāo)記時,檢測模塊T在發(fā)送信號給控制模塊C的同時還發(fā)送啟動信號給所述計數(shù)器O,計數(shù)器O開始計數(shù)。當(dāng)計數(shù)器O的計數(shù)值達(dá)到某一預(yù)先設(shè)定好的計數(shù)值一時,計數(shù)器O發(fā)送命令到控制模塊C,則C便放棄下一個要寫入所述緩沖器B的數(shù)據(jù)。這時,計數(shù)器O歸零并開始重新計數(shù),當(dāng)再次計數(shù)到所述計數(shù)值一時,控制模塊C再次放棄一個將要寫入緩沖器B的數(shù)據(jù)。這樣的操作一直重復(fù)直到檢測模塊T檢測到所述緩沖器B的占有率已經(jīng)降低到遠(yuǎn)低于緩沖器最大容量的水平,例如50%,才停止丟棄數(shù)據(jù)。
如圖7所示,在緩沖器B的數(shù)據(jù)占有率水平被實時的輸送到所述檢測模塊T后,經(jīng)過T的比較,如果所述緩沖器B的數(shù)據(jù)占有率水平低于所述下限標(biāo)記,例如緩沖器B最大存儲空間的20%,那么檢測模塊T發(fā)送信號到控制模塊C,C便增加一個新的采樣數(shù)據(jù)并輸送給主機(jī)H。優(yōu)選的來說,如圖8所示,所述USB設(shè)備還包括一個計數(shù)器O和插值器I。當(dāng)所述檢測模塊T得知所述緩沖器B的占有率已經(jīng)低于下限標(biāo)記時,檢測模塊T在發(fā)送信號到控制模塊C的同時還發(fā)送啟動信號給所述計數(shù)器O,計數(shù)器O開始計數(shù)。當(dāng)計數(shù)器O的計數(shù)值達(dá)到某一預(yù)先設(shè)定好的計數(shù)值二時,計數(shù)器O發(fā)送命令到控制模塊C,則C便命令插值器I產(chǎn)生新的數(shù)據(jù)并輸送給主機(jī)H。這時,計數(shù)器O歸零并開始重新計數(shù),當(dāng)O再次計數(shù)到所述計數(shù)值二時,控制模塊C再次命令插值器I產(chǎn)生新的采樣數(shù)據(jù)并輸送給主機(jī)H。這樣的操作一直重復(fù),直到檢測模塊T檢測到所述緩沖器B的占有率已經(jīng)提升到一定的容量水平,例如緩沖器最大存儲空間的50%,才停止插入數(shù)據(jù)。優(yōu)選的,所述插值器I可以是線性插值器,通過從緩沖器中讀出前一個采樣數(shù)據(jù)和后一個采樣數(shù)據(jù),并對這兩項采樣數(shù)據(jù)取算術(shù)平均值得到一個新的數(shù)據(jù)輸出給主機(jī)H。當(dāng)然,I也可以是其它插值器如二次插值器。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種在主機(jī)與USB設(shè)備之間進(jìn)行數(shù)據(jù)傳輸?shù)姆椒?,其特征在于該方法包括檢測USB設(shè)備中的緩沖器數(shù)據(jù)占有率的操作;對所述緩沖器數(shù)據(jù)占有率的情況進(jìn)行判斷的操作;根據(jù)判斷結(jié)果進(jìn)行增加采樣數(shù)據(jù)或者丟棄采樣數(shù)據(jù)的操作。
2.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于若緩沖器數(shù)據(jù)占有率高于預(yù)先設(shè)定好的存儲上限標(biāo)記,進(jìn)行所述丟棄采樣數(shù)據(jù)的操作;若所述緩沖器數(shù)據(jù)占有率低于預(yù)先設(shè)定好的存儲下限標(biāo)記,進(jìn)行所述增加采樣數(shù)據(jù)的操作。
3.如權(quán)利要求2所述的數(shù)據(jù)傳輸方法,其特征在于當(dāng)緩沖器占有率高于預(yù)先設(shè)定好的存儲上限標(biāo)記時,記錄緩沖器輸出數(shù)據(jù)次數(shù)的操作;及當(dāng)所述緩沖器輸出數(shù)據(jù)次數(shù)達(dá)到預(yù)先設(shè)定好的一個計數(shù)值一時,進(jìn)行所述丟棄采樣數(shù)據(jù)的操作;若所述緩沖器數(shù)據(jù)占有率低于預(yù)先設(shè)定好的存儲下限標(biāo)記,開始記錄緩沖器輸出數(shù)據(jù)次數(shù)的操作;當(dāng)所述緩沖器輸出數(shù)據(jù)次數(shù)達(dá)到預(yù)先設(shè)定好的一個計數(shù)值二時,進(jìn)行所述增加采樣數(shù)據(jù)的操作。
4.如權(quán)利要求1所述的數(shù)據(jù)傳輸方法,其特征在于所述增加采樣數(shù)據(jù)的操作是插值操作。
5.如權(quán)利要求4所述的數(shù)據(jù)傳輸方法,其特征在于所述插值操作是線性插值操作。
6.如權(quán)利要求2或3所述的數(shù)據(jù)傳輸方法,其特征在于所述上限標(biāo)記、下限標(biāo)記,計數(shù)值一以及計數(shù)值二都是可以配置的。
7.一種USB設(shè)備,包括一控制模塊以及緩沖器,其特征在于該USB設(shè)備還包括對所述緩沖器的數(shù)據(jù)占有率進(jìn)行檢測的檢測模塊,該檢測模塊將檢測結(jié)果發(fā)送給所述控制模塊,所述控制模塊根據(jù)檢測結(jié)果增加采樣數(shù)據(jù)或者丟棄采樣數(shù)據(jù)。
8.如權(quán)利要求7所述的USB設(shè)備,其特征在于所述USB設(shè)備還包括一插值器,所述控制模塊通過對該插值器的控制增加采樣數(shù)據(jù)。
9.如權(quán)利要求8所述的USB設(shè)備,其特征在于所述插值器是線性插值器。
10.如權(quán)利要求7所述的USB設(shè)備,其特征在于在所述檢測模塊內(nèi)部存儲有預(yù)先設(shè)定好的上限和下限標(biāo)記值;若所述檢測模塊得到的檢測結(jié)果為緩沖器占有率低于所述下限標(biāo)記,所述控制模塊增加采樣數(shù)據(jù);若所述檢測模塊得到的檢測結(jié)果為緩沖器占有率高于所述上限標(biāo)記,所述控制模塊丟棄采樣數(shù)據(jù)。
11.如權(quán)利要求10所述的USB設(shè)備,其特征在于該設(shè)備還包括一計數(shù)器;若所述檢測模塊得到的檢測結(jié)果為緩沖器占有率高于所述上限標(biāo)記,則所述計數(shù)器開始計數(shù);當(dāng)所述計數(shù)器計數(shù)到一設(shè)定好的記數(shù)值一時,檢測模塊發(fā)送檢測結(jié)果給控制模塊,控制模塊丟棄采樣數(shù)據(jù);若所述檢測模塊得到的檢測結(jié)果為緩沖器占有率低于所述下限標(biāo)記,則所述計數(shù)器開始計數(shù);當(dāng)所述計數(shù)器計數(shù)到一設(shè)定好的記數(shù)值二時,檢測模塊發(fā)送檢測結(jié)果給控制模塊,控制模塊增加采樣數(shù)據(jù)。
12.如權(quán)利要求10或11所述的USB設(shè)備,其特征在于所述上限標(biāo)記、下限標(biāo)記、計數(shù)值一以及計數(shù)值二都是可配置的。
全文摘要
為了防止USB數(shù)據(jù)傳輸過程中由于主機(jī)與USB設(shè)備時鐘不一致產(chǎn)生的緩沖器上溢或下溢問題,本發(fā)明提供了一種USB數(shù)據(jù)傳輸方法,通過實時的對緩沖器占有率水平進(jìn)行檢測并與預(yù)先設(shè)定的存儲限定標(biāo)記相比較而放棄或增加采樣值。本發(fā)明還提供了一種USB設(shè)備,該設(shè)備包括一檢測模塊用來檢測緩沖器占有率水平,并通過一控制模塊增加或丟棄采樣數(shù)據(jù),從而避免發(fā)生緩沖器的上溢或下溢。
文檔編號G06F13/38GK1776656SQ20051013048
公開日2006年5月24日 申請日期2005年12月13日 優(yōu)先權(quán)日2005年12月13日
發(fā)明者張倩, 朱小琳 申請人:北京中星微電子有限公司