專利名稱:異步串行數(shù)據(jù)接口的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有在電纜上的數(shù)據(jù)流的串行通信系統(tǒng),例如通用異步接收機(jī)/發(fā)送機(jī)(UART)。所述數(shù)據(jù)是分組數(shù)據(jù)。
UART具有一個(gè)把發(fā)送機(jī)連接到接收機(jī)的數(shù)據(jù)連接器。從發(fā)送機(jī)發(fā)送到接收機(jī)的數(shù)據(jù)可以是分組數(shù)據(jù)。一個(gè)分組是由多個(gè)數(shù)據(jù)字節(jié)構(gòu)成的。當(dāng)發(fā)送機(jī)把分組異步發(fā)送到接收機(jī)時(shí),重要的是接收機(jī)知道在哪里一個(gè)分組結(jié)束以及下一個(gè)分組開始。
接收機(jī)知道從通信的開始來對(duì)于接收到的比特/字節(jié)進(jìn)行計(jì)數(shù)。接收機(jī)接收的最初的數(shù)據(jù)字節(jié)必須是一個(gè)分組的開始。接收機(jī)知道關(guān)于所述分組的長(zhǎng)度信息,并且接收機(jī)根據(jù)該信息能夠計(jì)算何時(shí)接收到分組的結(jié)束。因此,它接收的下面的字節(jié)必須是下一個(gè)分組的開始。這樣,發(fā)送機(jī)和接收機(jī)在分組等級(jí)上保持同步。
現(xiàn)在,如果因?yàn)槲粗獢?shù)量的字節(jié)不再裝入接收機(jī)緩存器而丟失這些未知數(shù)量的字節(jié)(“緩存器溢出”),則接收機(jī)會(huì)丟失分組同步,也就是丟失關(guān)于下一個(gè)分組何時(shí)開始的知識(shí)。為了阻止接收機(jī)中的緩存器溢出,需要一個(gè)流量控制機(jī)制。
UART具有一個(gè)把發(fā)送機(jī)連接到接收機(jī)的數(shù)據(jù)連接器以及連接發(fā)送機(jī)和接收機(jī)的控制連接器。經(jīng)由數(shù)據(jù)連接器來把以比特串行格式的數(shù)據(jù)從發(fā)送機(jī)傳送到接收機(jī)??刂七B接器運(yùn)送一個(gè)控制信號(hào)RTS/CTS,它通過指示“流量打開“(RTS/CTS激活)或者“流量關(guān)閉”(RTS/CTS非激活)來實(shí)現(xiàn)從接收機(jī)到發(fā)送機(jī)的流量控制。流量控制阻止發(fā)送機(jī)發(fā)送太多的數(shù)據(jù)以及引起接收機(jī)緩沖存儲(chǔ)器的溢出。
在發(fā)送機(jī)中存在一個(gè)要求來控制發(fā)送并且如果指示了“流量關(guān)閉”,則在當(dāng)前字節(jié)的最后一個(gè)比特之后應(yīng)當(dāng)停止發(fā)送。這給出如此嚴(yán)格的定時(shí)需求,所以只有一個(gè)硬件要求能夠足夠快地控制RTS/CTS。該硬件能夠立即對(duì)于RTS/CTS信號(hào)做出反應(yīng)(內(nèi)部延遲只是一個(gè)單獨(dú)比特長(zhǎng)度的一部分)。如果這個(gè)要求由一個(gè)微處理器(軟件流量控制)來處理,該微處理器在某個(gè)時(shí)刻,也就是在某個(gè)延遲的情況下發(fā)現(xiàn)RTS/CTS被設(shè)置成為”流量關(guān)閉“,則必須停止UART繼續(xù)發(fā)送,所述延遲可以在多個(gè)字節(jié)的范圍內(nèi),并且在最壞的情況下,精確的延遲是不可預(yù)測(cè)的。
對(duì)于硬件控制的RTS/CTS,當(dāng)RTS/CTS激活時(shí),發(fā)送機(jī)按照連續(xù)的數(shù)據(jù)流來發(fā)送數(shù)據(jù)。在RTS/CTS保持激活的時(shí)候,發(fā)送機(jī)連續(xù)發(fā)送數(shù)據(jù)(一個(gè)字節(jié)跟著一個(gè)字節(jié))。當(dāng)RTS/CTS成為表示“流量關(guān)閉”的非激活時(shí),發(fā)送機(jī)停止發(fā)送數(shù)據(jù)。不過,發(fā)送機(jī)不是立即停止發(fā)送數(shù)據(jù),而是它繼續(xù)進(jìn)行發(fā)送直到當(dāng)前字節(jié)結(jié)束為止。接收機(jī)中的接收緩存器是以字節(jié)方式實(shí)現(xiàn)的。接收機(jī)在某個(gè)緩存器等級(jí)上把RTS/CTS設(shè)置為非激活。通常,在最后一個(gè)字節(jié)正在被寫入的時(shí)候。不過,發(fā)送機(jī)也可能協(xié)商一個(gè)更長(zhǎng)的時(shí)間,以便對(duì)于一個(gè)“流量關(guān)閉”指示進(jìn)行反應(yīng)。(例如1999年11月29日的藍(lán)牙規(guī)范VI.OB中的H3 RS232協(xié)議)。這里,發(fā)送機(jī)告知接收機(jī)它有一個(gè)例如100微秒的等待時(shí)間?,F(xiàn)在,接收機(jī)必須那么早地設(shè)置“流量關(guān)閉”,以致于它仍然能夠接收和存儲(chǔ)發(fā)送機(jī)將在下一個(gè)100微秒中發(fā)送的數(shù)據(jù)量。因此,當(dāng)接收機(jī)緩存器中剩余只用于某個(gè)數(shù)量的字節(jié)(例如10個(gè)字節(jié))的空間時(shí),它可能把“流量關(guān)閉”指示RTS/CTS設(shè)置為非激活。
硬件流量控制通過在一個(gè)預(yù)定義的時(shí)間內(nèi)用信號(hào)通知“流量關(guān)閉”,從而100%地阻止緩存器溢出。這樣,分組不被丟失。當(dāng)沒有用于流量控制的硬件支持時(shí),出現(xiàn)一個(gè)困難的情況。如果接收機(jī)和發(fā)送機(jī)中的軟件沒有足夠快地做出反應(yīng)來阻止緩存器溢出,則字節(jié)會(huì)丟失。在這種情況下,接口上的分組同步被丟失。
當(dāng)使用軟件流量控制時(shí),為了克服同步丟失的問題,使用了“分組定界”機(jī)制。將某個(gè)作為分組定界符的模式放置在分組的前面/后面。不過,因?yàn)橄嗤亩ń缒J娇赡艹霈F(xiàn)在要被發(fā)送的分組中,所以會(huì)存在某些問題。例如可以通過SLIP軟件協(xié)議來解決這個(gè)問題,在所述SLIP軟件協(xié)議中,必須用“轉(zhuǎn)義序列”來替換數(shù)據(jù)流中的定界符的任何出現(xiàn)。不過,這種協(xié)議的軟件實(shí)現(xiàn)是計(jì)算密集的。
因此,當(dāng)不存在用于流量控制的硬件支持時(shí),如果軟件沒有足夠快地做出反應(yīng)來阻止緩存器溢出,則字節(jié)會(huì)丟失,并且一個(gè)復(fù)雜的并且計(jì)算密集的軟件協(xié)議被使用來對(duì)于分組進(jìn)行定界,或者接口上的分組同步被丟失。
希望提供一種替代的流量控制機(jī)制,該機(jī)制提供分組同步。
希望以軟件形式利用非常低的處理成本來提供所述機(jī)制。
希望在不會(huì)改變分組的內(nèi)容或尺寸的情況下來提供所述機(jī)制。
根據(jù)本發(fā)明的第一方面,提供了一種用于從發(fā)送機(jī)接收分組數(shù)據(jù)的接收機(jī),該接收機(jī)包括用于把流量控制信號(hào)發(fā)送到發(fā)送機(jī)的輸出端;用于從發(fā)送機(jī)接收數(shù)據(jù)的輸入端;用于存儲(chǔ)從發(fā)送機(jī)接收的數(shù)據(jù)的存儲(chǔ)器;用于檢測(cè)所述存儲(chǔ)器中是否具有足夠的空間來存儲(chǔ)數(shù)據(jù)分組的第一檢測(cè)裝置;以及用于響應(yīng)于所述第一檢測(cè)裝置來在所述輸出端上提供流量控制信號(hào)的流量控制信號(hào)裝置。
所述流量控制裝置可以響應(yīng)于所述第一檢測(cè)裝置來提供第一流量控制信號(hào),使得發(fā)送機(jī)能夠發(fā)送下一個(gè)數(shù)據(jù)分組。
所述接收機(jī)還額外地包括用于檢測(cè)何時(shí)接收到一個(gè)分組的第一部分的第二檢測(cè)裝置,其中流量控制信號(hào)裝置根據(jù)所述第二檢測(cè)裝置來提供第二流量控制信號(hào)。第二流量控制信號(hào)停止發(fā)送機(jī)發(fā)送下一個(gè)數(shù)據(jù)分組。第一個(gè)位置可以被預(yù)先確定并且它可能在分組標(biāo)題的末端、分組的末端或者分組中的其它地方。
根據(jù)本發(fā)明的這個(gè)方面,提供了一種控制把分組數(shù)據(jù)從發(fā)送機(jī)發(fā)送到接收機(jī)的方法,該方法包括步驟在接收機(jī)中檢測(cè)接收機(jī)是否具有足夠可用的存儲(chǔ)器來接收數(shù)據(jù)分組;以及如果有足夠可用的存儲(chǔ)器,則允許把一個(gè)數(shù)據(jù)分組從發(fā)送機(jī)發(fā)送到接收機(jī)并且如果沒有足夠可用的存儲(chǔ)器,則阻止把一個(gè)數(shù)據(jù)分組從發(fā)送機(jī)發(fā)送到接收機(jī)。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種用于從發(fā)送機(jī)接收分組數(shù)據(jù)的接收機(jī),該接收機(jī)包括用于把流量控制信號(hào)發(fā)送到發(fā)送機(jī)的輸出端;用于從發(fā)送機(jī)接收數(shù)據(jù)的輸入端;用于存儲(chǔ)從發(fā)送機(jī)接收的數(shù)據(jù)的存儲(chǔ)器;用于檢測(cè)何時(shí)接收到一個(gè)分組的第一部分的第二檢測(cè)裝置;以及用于響應(yīng)于所述第二檢測(cè)裝置來在所述輸出端上提供流量控制信號(hào)的流量控制信號(hào)裝置。
第一位置可以被預(yù)先確定并且它可以在分組標(biāo)題的末端、分組的末端或者分組中的其它地方。
流量控制裝置響應(yīng)于第二檢測(cè)裝置來提供第二流量控制信號(hào),停止發(fā)送機(jī)發(fā)送下一個(gè)數(shù)據(jù)分組。
所述接收機(jī)還額外地包括用于檢測(cè)存儲(chǔ)器是否具有足夠的空間來存儲(chǔ)要被接收的下一個(gè)分組的第一檢測(cè)裝置,其中流量控制信號(hào)裝置根據(jù)第一檢測(cè)裝置來提供第一流量控制信號(hào)。第一流量控制信號(hào)使得發(fā)送機(jī)能夠發(fā)送下一個(gè)分組。
根據(jù)本發(fā)明的這個(gè)方面,提供了一種通過從接收機(jī)向發(fā)送機(jī)發(fā)送流量控制信號(hào)來控制從發(fā)送機(jī)到接收機(jī)的分組數(shù)據(jù)發(fā)送的方法,該方法包括步驟發(fā)送一個(gè)流量控制信號(hào)用于禁止數(shù)據(jù)分組的進(jìn)一步發(fā)送,同時(shí)一個(gè)當(dāng)前的分組正在被接收并且及時(shí)允許發(fā)送機(jī)軟件對(duì)其做出響應(yīng)并且在開始發(fā)送下一個(gè)分組之前停止發(fā)送。
流量控制信號(hào)最好是一個(gè)電壓轉(zhuǎn)變。第一和第二信號(hào)最好是問候信號(hào)。第一流量控制信號(hào)最好對(duì)應(yīng)于RTS/CTS中的一個(gè)肯定位置。第二流量控制信號(hào)最好對(duì)應(yīng)于RTS/CTS中的一個(gè)否定位置。
所述分組可以包括一個(gè)標(biāo)題和一個(gè)有效負(fù)荷。它可以是可變的尺寸。標(biāo)題最好把所述分組尺寸標(biāo)識(shí)給接收機(jī)。接收機(jī)可以具有用于確定分組開始的裝置和用于計(jì)數(shù)從分組的開始接收的比特/字節(jié)的裝置。接收機(jī)可以具有用于從接收的標(biāo)題中讀取當(dāng)前的分組的分組長(zhǎng)度的裝置。
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,第一檢測(cè)裝置可以檢測(cè)到對(duì)于每個(gè)分組,存儲(chǔ)器具有足夠的空間用來存儲(chǔ)要被接收的下一個(gè)分組。接收機(jī)具有用于保留用于最大分組尺寸N的足夠存儲(chǔ)器的裝置。保留的成功表示有足夠的空間用來存儲(chǔ)下一個(gè)分組。流量控制裝置可以響應(yīng)于檢測(cè)裝置來提供第一流量控制信號(hào),使得發(fā)送機(jī)能夠只發(fā)送下一個(gè)數(shù)據(jù)分組。接收機(jī)每個(gè)分組斷言一次第一流量控制信號(hào)。接收機(jī)獨(dú)立于存儲(chǔ)器的狀態(tài)并且每個(gè)分組斷言一次第二流量控制信號(hào)。
根據(jù)另一個(gè)實(shí)施例,流量控制裝置響應(yīng)于所述第一檢測(cè)裝置來提供第一流量控制信號(hào),使得發(fā)送機(jī)能夠重新開始發(fā)送數(shù)據(jù)。流量控制裝置可以根據(jù)所述第一檢測(cè)裝置來提供第二流量控制信號(hào),禁止發(fā)送機(jī)發(fā)送數(shù)據(jù)。
根據(jù)本發(fā)明的另一個(gè)實(shí)施例,提供了一種把分組數(shù)據(jù)發(fā)送到接收機(jī)的發(fā)送機(jī),包括用于從接收機(jī)接收流量控制信號(hào)的輸入端;用于把分組數(shù)據(jù)發(fā)送到接收機(jī)的輸出端;用于在輸入端檢測(cè)流量控制信號(hào)的第三檢測(cè)裝置;以及被安排來響應(yīng)于第三檢測(cè)裝置而完成已經(jīng)部分發(fā)送的分組的發(fā)送然后停止進(jìn)一步的分組的發(fā)送的發(fā)送裝置。
因此,發(fā)送機(jī)響應(yīng)于第二流量控制信號(hào)(RTS/CTS從激活到非激活)而完成當(dāng)前分組的發(fā)送。
根據(jù)本發(fā)明的這個(gè)方面,提供了一種控制從發(fā)送機(jī)到接收機(jī)的分組數(shù)據(jù)發(fā)送的方法,該方法包括步驟把第一流量控制信號(hào)從接收機(jī)發(fā)送到發(fā)送機(jī),以便停止從發(fā)送機(jī)到接收機(jī)的數(shù)據(jù)發(fā)送,在發(fā)送機(jī)接收第一流量控制信號(hào),但是完成已經(jīng)部分發(fā)送的數(shù)據(jù)分組的發(fā)送;然后停止數(shù)據(jù)分組的發(fā)送,直到第一流量控制信號(hào)被從接收機(jī)發(fā)送到發(fā)送機(jī)。
與硬件協(xié)議相比,本發(fā)明阻止了硬件開銷。本發(fā)明實(shí)施例的一個(gè)重要優(yōu)點(diǎn)是當(dāng)硬件固定并且不能改變時(shí),這些實(shí)施例仍然能夠?qū)崿F(xiàn)。
當(dāng)前的移動(dòng)電話可以使用集成電路,而無需在它的I/O接口上的硬件流量控制。因?yàn)榧呻娐芬呀?jīng)被生產(chǎn),所以不再可能改變電路以及添加硬件流量控制。特別有利的是能夠?yàn)楝F(xiàn)有的移動(dòng)電話添加一個(gè)模塊來增強(qiáng)該電話的功能。一種這樣的模塊可以是藍(lán)牙收發(fā)信機(jī)。對(duì)于這樣一個(gè)模塊,必須在不丟失分組同步的情況下能夠在模塊與電話之間傳送數(shù)據(jù)分組??梢愿鶕?jù)本發(fā)明來提供這種傳送。
電話的“通用IO(輸入/輸出)”可以由軟件來設(shè)置(當(dāng)作為一個(gè)輸出端時(shí))或者在電平改變上引起一個(gè)中斷(當(dāng)作為輸入端時(shí))。一個(gè)IO可以用于接收的RTS/CTS,一個(gè)IO用作發(fā)送的RTS/CTS。
因此,本發(fā)明的實(shí)施例還特別涉及計(jì)算機(jī)程序產(chǎn)品,該產(chǎn)品根據(jù)本發(fā)明可以添加到一個(gè)設(shè)備中來對(duì)于通用I/O進(jìn)行編程并且允許它作為發(fā)送機(jī)和/或接收機(jī)來工作。
根據(jù)本發(fā)明的另一方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,該產(chǎn)品在具有用于接收數(shù)據(jù)的輸入端、存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器和輸出端的接收機(jī)中提供用于檢測(cè)存儲(chǔ)器是否具有足夠的空間來存儲(chǔ)數(shù)據(jù)分組的第一檢測(cè)裝置以及用于響應(yīng)于第一檢測(cè)裝置而在輸出端提供一個(gè)流控制信號(hào)的流控制信號(hào)裝置。
根據(jù)本發(fā)明的另一方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,該產(chǎn)品在具有用于接收數(shù)據(jù)的輸入端、存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器和輸出端的接收機(jī)中提供用于檢測(cè)何時(shí)接收到分組的第一部分的第二檢測(cè)裝置;以及用于響應(yīng)于第二檢測(cè)裝置而在輸出端提供流控制信號(hào)的流控制信號(hào)裝置。
根據(jù)本發(fā)明的另一個(gè)方面,提供了一種計(jì)算機(jī)程序產(chǎn)品,該產(chǎn)品在具有用于發(fā)送數(shù)據(jù)的輸出端以及輸入端的發(fā)送機(jī)中提供用于檢測(cè)輸入端的流控制信號(hào)的第三檢測(cè)裝置和被安排來響應(yīng)于第三檢測(cè)裝置而完成已經(jīng)部分發(fā)送的分組的發(fā)送然后停止進(jìn)一步分組的發(fā)送的發(fā)送裝置。
與利用“轉(zhuǎn)義序列”的軟件協(xié)議相比,本發(fā)明顯著減少了用于處理協(xié)議的處理器的使用。它還阻止了增加分組尺寸,因此使得緩存器使用更可預(yù)測(cè)。
如果傳輸?shù)姆纸M是可變長(zhǎng)度的,則必須告知接收機(jī)一個(gè)特定分組的長(zhǎng)度以便維持分組同步。優(yōu)選地,這是通過在分組標(biāo)題中具有分組長(zhǎng)度信息來實(shí)現(xiàn)的。一旦接收機(jī)接收到了含有長(zhǎng)度信息的最初的分組字節(jié),接收機(jī)就獲得分組長(zhǎng)度信息。不過,如果在接收機(jī)與發(fā)送機(jī)之間的電纜上有比特故障,接收機(jī)就會(huì)獲得被破壞的分組長(zhǎng)度信息。因此,接收機(jī)將會(huì)假定分組中錯(cuò)誤的字節(jié)數(shù)。這是分組同步丟失的另一個(gè)起因。本發(fā)明的優(yōu)選實(shí)施例還解決了這個(gè)問題。
為了更好地理解本發(fā)明并且進(jìn)一步理解如何實(shí)現(xiàn)本發(fā)明,現(xiàn)在舉例參考附圖,在附圖中
圖1表示具有一個(gè)串行通信接口的系統(tǒng);圖2表示分組結(jié)構(gòu);以及圖3表示協(xié)議的信令定時(shí)。
圖1說明可能在每個(gè)方向上具有在一個(gè)單獨(dú)電纜上的分組數(shù)據(jù)流的串行通信系統(tǒng)1。
系統(tǒng)1具有經(jīng)由接口10互連的發(fā)送機(jī)30和接收機(jī)20。所述接口具有把發(fā)送機(jī)的管腳32連接到接收機(jī)的管腳22的數(shù)據(jù)連接器12并且具有把接收機(jī)的管腳24連接到發(fā)送機(jī)的管腳34的控制連接器14。經(jīng)由管腳32、數(shù)據(jù)連接器12和管腳22而把以比特串行格式的數(shù)據(jù)從發(fā)送機(jī)發(fā)送到接收機(jī)。控制連接器14運(yùn)送在接收機(jī)的管腳24上斷言的控制信號(hào)RTS/CTS。控制信號(hào)通過指示“流量打開”(RTS/CTS激活)或“流量關(guān)閉”(RTS/CTS非激活)來實(shí)現(xiàn)從接收機(jī)到發(fā)送機(jī)的流量控制。因此,能夠?qū)崿F(xiàn)具有流量控制的從左到右的數(shù)據(jù)傳輸。
如果需要從右到左的數(shù)據(jù)傳輸,則設(shè)備20可以充當(dāng)發(fā)送機(jī),而設(shè)備30則充當(dāng)接收機(jī)。經(jīng)由管腳26、數(shù)據(jù)連接器16然后經(jīng)由管腳36來把以比特串行格式的數(shù)據(jù)從發(fā)送機(jī)20發(fā)送到接收機(jī)30??刂七B接器18把接收機(jī)的管腳38上斷言的控制信號(hào)RTS/CTS運(yùn)送到發(fā)送機(jī)的管腳28。
由軟件來控制接收機(jī)在數(shù)據(jù)連接器上產(chǎn)生RTS/CTS以及對(duì)于發(fā)送機(jī)中的RTS/CTS進(jìn)行響應(yīng)。
RTS/CTS的基本使用是傳統(tǒng)的,這是因?yàn)樗馕吨?dāng)設(shè)置激活/非激活時(shí)的“流量打開/關(guān)閉”。RTS/CTS的產(chǎn)生以及對(duì)于RTS/CTS的響應(yīng)不是傳統(tǒng)的,并且是由接收機(jī)和發(fā)送機(jī)中的被編程的處理器來控制的。
每個(gè)發(fā)送機(jī)都具有用于在發(fā)送之前臨時(shí)存儲(chǔ)數(shù)據(jù)分組的輸出緩存器、微處理器、存儲(chǔ)由處理器使用來執(zhí)行本發(fā)明的軟件的存儲(chǔ)器以及用于檢測(cè)來自接收機(jī)的控制信號(hào)并且用于把分組數(shù)據(jù)放置到數(shù)據(jù)連接器上的I/O控制器。
每個(gè)接收機(jī)都具有一個(gè)用于臨時(shí)存儲(chǔ)進(jìn)入的接收分組數(shù)據(jù)的輸入緩存器、一個(gè)微處理器、一個(gè)存儲(chǔ)由處理器使用來執(zhí)行本發(fā)明的軟件的存儲(chǔ)器以及用于斷言一個(gè)控制信號(hào)和用于在數(shù)據(jù)連接器上接收分組數(shù)據(jù)的I/O控制器。
在通信系統(tǒng)1中,數(shù)據(jù)分組40(如圖2所示)將通過接口來發(fā)送。這些數(shù)據(jù)分組含有具有分組長(zhǎng)度信息的分組標(biāo)題42以及用戶數(shù)據(jù)部分44(例如藍(lán)牙HCI命令)。分組沒有固定尺寸并且是可變的。不過,分組尺寸具有一個(gè)上限。在分組中沒有對(duì)于分組進(jìn)行定界的結(jié)構(gòu),所述定界就是告知你“這是標(biāo)題”。標(biāo)題不需要具有固定尺寸。協(xié)議只需要知道在哪里找到長(zhǎng)度信息。
分組含有完整的字節(jié)(也就是8比特的倍數(shù))?!疤畛浔忍亍?0或者隨機(jī)數(shù)據(jù))可以被用于使得數(shù)據(jù)分組“字節(jié)對(duì)準(zhǔn)”。
由于分組被異步發(fā)送,所以維持分組同步是重要的。
接收機(jī)從通信開始對(duì)于接收的比特/字節(jié)進(jìn)行計(jì)數(shù)。接收機(jī)接收的最初的數(shù)據(jù)字節(jié)必須是分組的開始。接收機(jī)知道關(guān)于該分組的長(zhǎng)度信息。這是從分組標(biāo)題中讀取的。根據(jù)該信息,接收機(jī)能夠計(jì)算何時(shí)接收到分組的結(jié)束。因此,它接收的下面的字節(jié)必須是下一個(gè)分組的開始。這樣,發(fā)送機(jī)和接收機(jī)在分組等級(jí)保持同步。
對(duì)于本發(fā)明來說還重要的是,發(fā)送機(jī)要知道分組邊界,這一點(diǎn)將由于下面的描述而變得更清楚。發(fā)送機(jī)從某個(gè)更高的軟件層獲得分組。這個(gè)另外的軟件層使分組成幀或者把分組放置到某個(gè)位置以便發(fā)送機(jī)總是知道分組邊界(或者至少是分組開始)。替代地,可以在分組中查找分組長(zhǎng)度,其方式與接收機(jī)利用的方式一樣,并且發(fā)送的字節(jié)被計(jì)數(shù)。
優(yōu)選實(shí)施例按照分組的方式來處理發(fā)送機(jī)與接收機(jī)之間的流量控制。RTS/CTS的上升沿的檢測(cè)只允許一個(gè)分組的發(fā)送。一旦分組標(biāo)題被接收到,接收機(jī)就對(duì)于RTS/CTS非激活解除斷言(de-assert)。不允許發(fā)送機(jī)發(fā)送下一個(gè)分組,直到檢測(cè)到RTS/CTS信號(hào)的另一個(gè)上升沿。圖3示出了流量控制處理。當(dāng)RTS/CTS進(jìn)入非激活時(shí),發(fā)送機(jī)完成當(dāng)前分組的發(fā)送。當(dāng)RTS/CTS從非激活變?yōu)榧せ顣r(shí),這用信號(hào)通知下一個(gè)單獨(dú)分組的發(fā)送。
參見圖3,RTS/CTS在時(shí)刻T1進(jìn)入激活。存在用于在發(fā)送機(jī)中檢測(cè)上升沿的等待時(shí)間t1。發(fā)送機(jī)在T2檢測(cè)上升沿。發(fā)送機(jī)利用t2來發(fā)送分組標(biāo)題并且在時(shí)刻T3利用t3來開始發(fā)送分組的剩余部分。發(fā)送機(jī)在T5完成發(fā)送分組。在接收機(jī)中存在一個(gè)檢測(cè)被發(fā)送的分組標(biāo)題的等待時(shí)間t4,并且該檢測(cè)發(fā)生在T4=T3+t4,RTS/CTS進(jìn)入非激活。
在各個(gè)和每個(gè)分組標(biāo)題被接收到之后,接收機(jī)把RTS/CTS置為非激活。然后,接收機(jī)在把RTS/CTS從非激活置為激活之前檢查是否有足夠的空間用于下一個(gè)分組。發(fā)送機(jī)發(fā)送一個(gè)單獨(dú)的分組,然后在發(fā)送下一個(gè)單獨(dú)分組之前等待RTS/CTS非激活-激活轉(zhuǎn)換(上升沿)。這樣,發(fā)送是按照分組方式并且由RTS/CTS非激活-激活轉(zhuǎn)換來啟動(dòng)。
接收機(jī)能夠a)知道最大分組尺寸N(這可以由軟件來定義)。
b)保留足夠的緩沖存儲(chǔ)器用于最大分組尺寸N。
c)響應(yīng)于所述保留而把RTS/CTS從非激活改變?yōu)榧せ?這向發(fā)送機(jī)表明接收機(jī)能夠接收整個(gè)下一個(gè)分組)。
d)檢測(cè)何時(shí)接收到下一個(gè)分組的預(yù)定部分(例如尺寸為n的標(biāo)題)。
e)響應(yīng)于所述檢測(cè)而把RTS/CTS激活改變?yōu)榉羌せ睢?br>
f)進(jìn)入a)。
檢測(cè)可以如下進(jìn)行。接收機(jī)具有維持接收的比特計(jì)數(shù)C的計(jì)數(shù)器。在分組的開始,計(jì)數(shù)器被復(fù)位成零。當(dāng)C=n時(shí),進(jìn)行檢測(cè)??梢詮慕邮盏臉?biāo)題中讀取分組N’的尺寸。在C=N’(分組的末端)之后,計(jì)數(shù)器C被復(fù)位成零。
接收機(jī)保留用于與從分組標(biāo)題中讀取的實(shí)際分組尺寸相對(duì)的最大分組尺寸的空間。接收機(jī)在從接收的標(biāo)題中評(píng)估尺寸之后來分配緩存器,但是由于緩存器分配花費(fèi)一些時(shí)間,所以存在某些定時(shí)問題。在所述時(shí)間中,數(shù)據(jù)被連續(xù)接收。所以在處理器進(jìn)行對(duì)于正確的分組尺寸N’的完整緩存器分配之前,最好某個(gè)緩存器尺寸N已經(jīng)被分配來存儲(chǔ)數(shù)據(jù)。
發(fā)送機(jī)進(jìn)行如下操作a)知道分組尺寸N’(這可以在軟件中從更高層被傳送或者從要被發(fā)送的分組標(biāo)題中推導(dǎo)出來)。
b)檢測(cè)何時(shí)使得RTS/CTS成為非激活。
c)確定何時(shí)發(fā)送了所有當(dāng)前分組。
d)響應(yīng)于所述確定而停止發(fā)送。
e)檢測(cè)何時(shí)使得RTS/CTS成為激活。
f)響應(yīng)于RTS/CTS激活的檢測(cè)而開始一個(gè)單獨(dú)分組的發(fā)送。
g)進(jìn)入a)。
所述確定可以如下進(jìn)行。發(fā)送機(jī)具有一個(gè)用于維持被發(fā)送的比特/字節(jié)計(jì)數(shù)C的計(jì)數(shù)器。在分組的開始,該計(jì)數(shù)器被復(fù)位成為零。發(fā)送機(jī)繼續(xù)發(fā)送直到C=N’-1,然后停止發(fā)送。
步驟b)是可選的。后面跟隨著RTS/CTS的一個(gè)上升沿(非激活到激活)的每個(gè)下降沿(激活到非激活)表明一個(gè)分組應(yīng)當(dāng)被發(fā)送或者替代地,RTS/CTS的每個(gè)上升沿(非激活到激活)表明一個(gè)分組應(yīng)當(dāng)被發(fā)送。發(fā)送機(jī)的CTS輸入引起每個(gè)電平改變上的中斷,或者替代地,只引起上升沿上的中斷。
對(duì)于一個(gè)已經(jīng)開始的分組,RTS/CTS電平改變不會(huì)引起任何效果(無論發(fā)生什么,都會(huì)繼續(xù)發(fā)送,這是因?yàn)榻邮諜C(jī)已經(jīng)利用“流量打開”電平來表明它能夠接收最大分組尺寸)。
實(shí)施例2當(dāng)RTS/CTS變?yōu)榈蜁r(shí),發(fā)送機(jī)完成當(dāng)前分組的發(fā)送。當(dāng)RTS/CTS從非激活變?yōu)榧せ顣r(shí),這用信號(hào)通知下一個(gè)分組的發(fā)送。
接收機(jī)監(jiān)視剩余的存儲(chǔ)器,并且當(dāng)剩余的存儲(chǔ)器降低到某個(gè)閾值之下時(shí),產(chǎn)生一個(gè)告警,并且當(dāng)可用存儲(chǔ)器增加到所述閾值之上時(shí),所述告警被復(fù)位。只有當(dāng)存在一個(gè)告警并且在接收到一個(gè)分組標(biāo)題之后,接收機(jī)才把RTS/CTS置為非激活。也就是,代替象優(yōu)選實(shí)施例中那樣在每個(gè)分組標(biāo)題被接收到之后,把RTS/CTS從激活改變?yōu)榉羌せ睿D(zhuǎn)換只發(fā)生在存在溢出風(fēng)險(xiǎn)的時(shí)候。當(dāng)RTS/CTS保持激活時(shí),發(fā)送機(jī)將一個(gè)分組接著一個(gè)分組地進(jìn)行連續(xù)發(fā)送,并且當(dāng)RTS/CTS進(jìn)入非激活-激活時(shí),重新開始一個(gè)分組接著一個(gè)分組地進(jìn)行連續(xù)發(fā)送(也就是非激活-激活轉(zhuǎn)換表明與“只發(fā)送一個(gè)分組”相對(duì)的“重新開始數(shù)據(jù)流”)。
接收機(jī)執(zhí)行如下操作1.檢測(cè)用于進(jìn)入數(shù)據(jù)的可用緩沖存儲(chǔ)器何時(shí)低于一個(gè)閾值,該閾值例如是兩倍的最大分組尺寸N2.檢測(cè)何時(shí)接收到下一個(gè)分組的預(yù)定部分(尺寸為n的標(biāo)題)3.響應(yīng)于兩個(gè)檢測(cè)而把RTS/CTS激活改變?yōu)榉羌せ?這向發(fā)送機(jī)表明在當(dāng)前的分組之后,數(shù)據(jù)流應(yīng)當(dāng)停止)4.檢測(cè)用于進(jìn)入數(shù)據(jù)的可用緩沖存儲(chǔ)器何時(shí)在所述閾值之上5.響應(yīng)于所述檢測(cè)而把RTS/CTS非激活改變?yōu)榧せ?這向發(fā)送機(jī)表明數(shù)據(jù)流可以重新開始)6.進(jìn)入1)在2)中的檢測(cè)可以如下進(jìn)行。接收機(jī)具有一個(gè)保持接收的比特計(jì)數(shù)C的計(jì)數(shù)器。在分組的開始,該計(jì)數(shù)器被復(fù)位成為零。當(dāng)C=n時(shí),進(jìn)行檢測(cè)??梢詮慕邮盏臉?biāo)題中讀取分組的尺寸N’。在C=N’(分組的末端)之后,計(jì)數(shù)器C被復(fù)位成為零。
發(fā)送機(jī)進(jìn)行如下操作1.知道分組尺寸N’(這可以在軟件中從更高層被傳送或者從要被發(fā)送的分組標(biāo)題中推導(dǎo)出)2.檢測(cè)何時(shí)使得RTS/CTS非激活3.確定何時(shí)所有當(dāng)前分組都被發(fā)送4.響應(yīng)于所述確定而停止發(fā)送5.檢測(cè)何時(shí)使RTS/CTS成為激活6.響應(yīng)于RTS/CTS激活的檢測(cè)而開始分組發(fā)送
7.進(jìn)入1)所述確定可以如下進(jìn)行。發(fā)送機(jī)具有一個(gè)保持被發(fā)送的比特/字節(jié)計(jì)數(shù)C的計(jì)數(shù)器。在分組的開始,計(jì)數(shù)器被復(fù)位成為零。發(fā)送機(jī)繼續(xù)發(fā)送,直到C=N’-1,然后停止發(fā)送。
對(duì)于一個(gè)已經(jīng)開始的分組,RTS/CTS電平改變將不會(huì)引起任何效果(無論發(fā)生什么,都繼續(xù)發(fā)送,這是因?yàn)榻邮諜C(jī)已經(jīng)利用一個(gè)“流量打開”電平表明它能夠接收最大的分組尺寸)。
在前面的實(shí)施例中,存在一個(gè)步驟,用來檢測(cè)何時(shí)下一個(gè)分組的預(yù)定部分(尺寸為n的標(biāo)題)已經(jīng)被接收到用于把RTS/CTS置為非激活。盡管給出了一個(gè)預(yù)定部分(標(biāo)題)的實(shí)例,但是這并不是決定性的。
盡管在前面的描述中著重說明了被認(rèn)為是特別重要的本發(fā)明的那些特征,但是應(yīng)當(dāng)理解,申請(qǐng)人要求保護(hù)前面描述的和/或在無論是否其中強(qiáng)調(diào)了重點(diǎn)的附圖中所示出的可專利的特征或者特征的組合。
權(quán)利要求
1.一種用于從發(fā)送機(jī)接收分組數(shù)據(jù)的接收機(jī),包括用于把流量控制信號(hào)發(fā)送到發(fā)送機(jī)的輸出端;用于從發(fā)送機(jī)接收數(shù)據(jù)的輸入端;用于存儲(chǔ)從發(fā)送機(jī)接收的數(shù)據(jù)的存儲(chǔ)器;用于檢測(cè)存儲(chǔ)器是否具有足夠的空間來存儲(chǔ)數(shù)據(jù)分組的第一檢測(cè)裝置;以及用于響應(yīng)于所述第一檢測(cè)裝置而在所述輸出端上提供流量控制信號(hào)的流量控制信號(hào)裝置。
2.根據(jù)權(quán)利要求1所述的接收機(jī),其中流量控制裝置響應(yīng)于所述第一檢測(cè)裝置來提供第一流量控制信號(hào),使得發(fā)送機(jī)能夠發(fā)送下一個(gè)數(shù)據(jù)分組。
3.根據(jù)權(quán)利要求1或2所述的接收機(jī),其中第一檢測(cè)裝置對(duì)于每個(gè)分組檢測(cè)存儲(chǔ)器是否具有足夠的空間來存儲(chǔ)下一個(gè)數(shù)據(jù)分組,并且流量控制信號(hào)裝置每個(gè)分組提供一次第一流量控制信號(hào)。
4.根據(jù)前面任何一個(gè)權(quán)利要求所述的接收機(jī),還包括第二檢測(cè)裝置,用于檢測(cè)何時(shí)接收到一個(gè)分組的第一部分,其中流量控制信號(hào)裝置根據(jù)第二檢測(cè)裝置來提供第二流量控制信號(hào),停止下一個(gè)數(shù)據(jù)分組的發(fā)送。
5.根據(jù)權(quán)利要求4或5所述的接收機(jī),其中與存儲(chǔ)器的可用性無關(guān)地提供第二流量控制信號(hào)并且每個(gè)分組提供一次。
6.一種控制從發(fā)送機(jī)到接收機(jī)的分組數(shù)據(jù)發(fā)送的方法,包括步驟在接收機(jī)中檢測(cè)接收機(jī)是否具有足夠的可用存儲(chǔ)器用來接收一個(gè)數(shù)據(jù)分組;以及如果有足夠可用的存儲(chǔ)器,則允許把一個(gè)數(shù)據(jù)分組從發(fā)送機(jī)發(fā)送到接收機(jī),如果沒有足夠可用的存儲(chǔ)器,則阻止把一個(gè)數(shù)據(jù)分組從發(fā)送機(jī)發(fā)送到接收機(jī)。
7.一種用于從發(fā)送機(jī)接收分組數(shù)據(jù)的接收機(jī),包括用于把流量控制信號(hào)發(fā)送到發(fā)送機(jī)的輸出端;用于從發(fā)送機(jī)接收數(shù)據(jù)的輸入端;用于存儲(chǔ)從發(fā)送機(jī)接收的數(shù)據(jù)的存儲(chǔ)器;用于檢測(cè)何時(shí)接收到分組的第一部分的第二檢測(cè)裝置;以及用于響應(yīng)于所述第二檢測(cè)裝置而在所述輸出端上提供流量控制信號(hào)的流量控制信號(hào)裝置。
8.根據(jù)權(quán)利要求7所述的接收機(jī),其中流量控制裝置響應(yīng)于第二檢測(cè)裝置而提供第二流量控制信號(hào),停止發(fā)送機(jī)發(fā)送下一個(gè)數(shù)據(jù)分組。
9.根據(jù)權(quán)利要求7或8所述的接收機(jī),其中與存儲(chǔ)器的可用性無關(guān)地提供第二流量控制信號(hào)并且每個(gè)分組提供一次。
10.根據(jù)權(quán)利要求7到9中的任何一個(gè)所述的接收機(jī),還包括第一檢測(cè)裝置,用于檢測(cè)存儲(chǔ)器是否具有足夠的空間來存儲(chǔ)要被接收的下一個(gè)分組,其中流量控制信號(hào)裝置根據(jù)第一檢測(cè)裝置來提供第一流量控制信號(hào),使得能夠發(fā)送下一個(gè)分組。
11.根據(jù)權(quán)利要求10所述的接收機(jī),其中第一檢測(cè)裝置對(duì)于每個(gè)分組檢測(cè)存儲(chǔ)器是否具有足夠的空間來存儲(chǔ)要被接收的下一個(gè)分組,并且流量控制信號(hào)裝置每個(gè)分組提供一次第一流量信號(hào)控制。
12.一種通過把流量控制信號(hào)從接收機(jī)發(fā)送到發(fā)送機(jī)來控制從發(fā)送機(jī)到接收機(jī)的分組數(shù)據(jù)發(fā)送的方法,包括步驟在一個(gè)當(dāng)前分組被接收時(shí),發(fā)送一個(gè)流量控制信號(hào)用來禁止數(shù)據(jù)分組的進(jìn)一步發(fā)送,并且及時(shí)允許發(fā)送機(jī)軟件對(duì)其做出響應(yīng)并且在開始發(fā)送下一個(gè)分組之前停止發(fā)送。
13.一種用于把分組數(shù)據(jù)發(fā)送到接收機(jī)的發(fā)送機(jī),包括用于從接收機(jī)接收流量控制信號(hào)的輸入端;用于把分組數(shù)據(jù)發(fā)送到接收機(jī)的輸出端;用于在輸入端檢測(cè)流量控制信號(hào)的第三檢測(cè)裝置;以及被安排來響應(yīng)于第三檢測(cè)裝置來完成部分發(fā)送的分組的發(fā)送并且然后停止進(jìn)一步分組的發(fā)送的分組方式發(fā)送裝置。
14.一種控制從發(fā)送機(jī)到接收機(jī)的分組數(shù)據(jù)發(fā)送的方法,包括步驟把第一流量控制信號(hào)從接收機(jī)發(fā)送到發(fā)送機(jī),用于停止從發(fā)送機(jī)到接收機(jī)的數(shù)據(jù)發(fā)送;在發(fā)送機(jī)中接收第一流量控制信號(hào),但是完成部分發(fā)送的數(shù)據(jù)分組的發(fā)送;然后停止數(shù)據(jù)分組的發(fā)送,直到第一流量控制信號(hào)被從接收機(jī)發(fā)送到發(fā)送機(jī)。
15.一種用于連接到包括根據(jù)權(quán)利要求1到5和7到11中的任何一個(gè)所述的接收機(jī)的移動(dòng)電話的移動(dòng)電話或設(shè)備。
16.一種用于連接到包括如權(quán)利要求13所述的發(fā)送機(jī)的移動(dòng)電話的移動(dòng)電話或設(shè)備。
全文摘要
一種用于從發(fā)送機(jī)接收分組數(shù)據(jù)的接收機(jī),發(fā)送機(jī)以及用于控制發(fā)送的方法。所述接收機(jī)包括用于檢測(cè)其存儲(chǔ)器是否具有足夠的空間用來存儲(chǔ)一個(gè)數(shù)據(jù)分組的第一檢測(cè)裝置以及用于響應(yīng)于所述第一檢測(cè)裝置而把一個(gè)最好是第一流量控制信號(hào)的流量控制信號(hào)提供給發(fā)送機(jī)的流量控制信號(hào)裝置。所述接收機(jī)包括第二檢測(cè)裝置,用于檢測(cè)何時(shí)從發(fā)送機(jī)接收到分組的第一部分,并且包括流量控制信號(hào)裝置,用于響應(yīng)于所述第二檢測(cè)裝置而把第二流量控制信號(hào)提供給發(fā)送機(jī)。所述發(fā)送機(jī)包括用于檢測(cè)由接收機(jī)發(fā)送的第二流量控制信號(hào)的第三檢測(cè)裝置以及被安排來響應(yīng)于第三檢測(cè)裝置而完成部分發(fā)送的分組的發(fā)送并且然后停止進(jìn)一步分組的發(fā)送的分組方式發(fā)送裝置。
文檔編號(hào)G06F13/38GK1602475SQ02824752
公開日2005年3月30日 申請(qǐng)日期2002年2月25日 優(yōu)先權(quán)日2001年12月11日
發(fā)明者G·施奈德, D·本卡克 申請(qǐng)人:諾基亞有限公司