一種數據反壓的處理方法和裝置的製作方法
2023-10-17 19:22:24 1
專利名稱:一種數據反壓的處理方法和裝置的製作方法
技術領域:
本發明涉及通信領域,尤其涉及一種數據反壓的處理方法和裝置。
背景技術:
在邏輯設計過程中,數據從發送端到達數據接收端一般都要經過一個 流水線過程。在數據傳輸過程中,接收端和發送端之間通常要建立一套握 手機制來實現正常的數據傳輸。在數據傳輸過程中,接收端出現異常無法 正常接收或者需要暫停接收數據時,就需要通過控制握手信號來通知數據 發送端停止或暫停發送數據,接收端出現異常停止接收數據的現象稱為數 據反壓。
由於數據發送端和數據接收端之間存在時間上的延遲,因此處理數據 反壓時需要進行一定的特殊處理,不然就會導致丟失數據現象。處理數據 反壓,現有技術中 一般是通過握手信號來控制寄存器緩存數據的方法。
現有技術中,通過握手信號來控制兩個或更多個中間數據信號,當產 生數據反壓時握手信號拉低,暫停取數據,對於已經取出來的數據使用中 間寄存器緩存起來;當數據反壓結束,握手信號重新置位時,再把緩存在 中間寄存器中的數據和數據輸入端的數據輸出,從而實現數據反壓過程的 不丟數據。
在實施本發明的過程中,發明人發現現有技術中至少存在以下缺點 數據反壓頻繁時,對數據傳送的處理過程複雜,容易導致數據的丟失 或出錯。
發明內容
本發明實施例提供一種數據反壓的處理方法和裝置,以實現簡化數據 的接收和發送過程,從而避免數據反壓頻繁時導致數據丟失或出錯。本發明實施例提供一種數據反壓的處理方法,包括以下步驟 將從發送端接收的數據存儲在先入先出隊列中;
接收端發生數據反壓時,記錄所述先入先出隊列中下一個待發送數據的 地址;
所述接收端的數據反壓結束時,根據所述下一個待發送數據的地址,從 所述先入先出隊列中依次讀取數據並向所述接收端發送。
本發明實施例提供一種數據反壓的處理裝置,包括一晶片和一先入先出 隊列,其中,
所述晶片,用於接收端發生數據反壓時,記錄所述先入先出隊列中下一 個待發送數據的地址;
所述先入先出隊列,用於存儲發送端發送的數據,並在所述接收端的數 據反壓結束時,根據所述晶片記錄的下一個待發送數據的地址,依次讀取數 據並向所述接收端發送。
本發明實施例提供一種邏輯控制器,包括寫地址產生邏輯、先入先出 隊列和讀地址產生邏輯,其中,
所述寫地址產生邏輯,用於接收發送端發送的寫信號後,為待寫入先
所述先入先出隊列,用於根據所述寫地址產生邏輯分配的寫入地址存 儲來自所述發送端的數據,並在接收端的數據反壓結束時,根據所述讀地址 產生邏輯分配的讀取地址,讀取數據並向所述接收端發送;
所述讀地址產生邏輯,用於所述接收端發生數據反壓時,才艮據記錄的先 入先出隊列中下一個待發送數據的地址,分配所述先入先出隊列中數據的讀
數據並向所述接收端發送。
由上可以看出,將接收到的數據存儲在先入先出隊列中,當接收端數據 反壓時,記錄下一個待發送數據的地址,數據反壓結束後,從記錄的地址開
始依次讀取數據向數據接收端發送,避免數據反壓頻繁時數據的丟失或出誇 等問題。
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對 實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地, 下面描述中的附圖僅僅是本發明的 一些實施例,對於本領域普通技術人員 來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附 圖。
圖1為本發明實施例提供的方法的流程示意圖2為本發明實施例提供的方法的詳細流程示意圖3為本發明實施例提供的邏輯控制器的結構示意圖4為本發明實施例提供的裝置的結構示意圖5為本發明實施例提供的裝置的詳細結構示意圖。
具體實施例方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進 行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例, 而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒 有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的 範圍。
本發明實施例提供一種數據反壓的處理方法,如圖l所示,包括步驟 步驟s101 ,將從發送端接收的數據存^(渚在先入先出隊列中; 步驟sl02,接收端發生數據反壓時,記錄先入先出隊列中下一個待發送 數據的地址;
步驟sl03,接收端的數據反壓結束時,根據下一個待發送數據的地址, 從先入先出隊列中依次讀取數據向接收端發送。
通過採用本發明實施例提供的方法,將接收到的數據存儲在先入先出 隊列中,當接收端數據反壓時,記錄下一個待發送數據的地址,數據反壓結 束後,從記錄的地址開始依次讀取數據向數據接收端發送,避免頻繁數據反壓造成數據的丟失或出錯等問題。
下面結合具體應用場景對本發明進行進一步介紹。
本發明實施例提供一種數據反壓的處理方法,利用 一種特殊結構的
FIFO (First In First Out,先入先出)隊列來避免lt據反壓頻繁時數據丟失 或出錯的問題。利用該FIFO隊列可以起到隔離接收端對數據的接收和發 送端對數據的發送的作用,從而可以避免發送端數據中斷對接收端的影響; 同時更重要的是可以在出現數據反壓,即數據接收端出現異常停止接收數 據時,通過數據接收端和發送端的相對隔離,避免對發送端的影響。
如圖2所示,該數據反壓的處理方法,包括
步驟s201,接收數據發送端發送的數據。
接收到的數據淨皮存儲到FIFO隊列中,該FIFO隊列中包括N個單元 Cell,每個Cell具有一地址高位,N個Cell的地址高位為0 N-1;每個Cell 中還具有一定的地址低位,該地址低位最大為K-l,即每個Cell最多可以 存儲K個數據,K值根據數據發送端發送的每一幀數據的個數M設定,K 值大於或等於M值。
接收數據發送端發送數據的流程為數據發送端首先檢測是否收到滿 信號,當檢測結果為否時,先後發出寫信號以及要寫入的一幀數據。收到 寫信號時,為數據在FIFO隊列中分配地址高位,將隨後的一幀數據存儲 到FIFO隊列中該地址高位的Cell。數據發送端在該幀悽t據發送後、下一 幀數據發送之前,發送寫Eop信號。收到寫Eop信號後則將FIFO隊列中 分配的地址高位轉為下一 Cell的地址高位,在下一 Cell內存儲下一幀寫數 據,已寫入一幀數據的上一Cell狀態為滿。
其中,為待寫入的數據分配地址為將FIFO隊列中最新寫入的地址的 地址高位加l,作為下一幀數據存儲的地址的地址高位;當最新寫入的地址的 地址高位為預:沒的最大值N-1時,下一幀數據存儲的地址的地址高位為0。例 如,若最新寫入的地址的地址高位為N-l,則接收到數據發送端發送的寫 Eop信號後,將下一幀數據存儲的地址的地址高位設為0,即將下一幀數 據存儲到地址高位為0的Cell內。數據在Ceil內的存儲可以為該Cell內的地址低位不等於預設的最大值時,寫入一數據後,寫地址低位加1,
作為下一數據在該Cell內存^f渚的地址^f氐位。
上述為待寫入的數據分配地址中,如果下一幀數據存儲的地址的地址高 位上的Cell存儲狀態為滿,則向數據發送端發送滿信號,通知數據發送端 停止向FIFO隊列發送數據。
步驟s202,將存儲的數據向數據接收端發送。
具體的,向數據接收端發送數據為
數據接收端發送讀信號,要求讀取FIFO隊列內的一幀數據;接收到 數據接收端發送的讀信號後,根據先入先出的規則選擇FIFO隊列內的地 址的地址高位,取選擇的地址高位上的一幀數據向數據接收端發送。
上述讀取地址的地址高位的選擇具體為首次接收到數據接收端發送 的讀信號後,將最新讀取的地址的地址高位加1,作為讀取下一幀數據的地 址的地址高位;當最新讀取的地址的地址高位為預設的最大值時,下一幀數 據讀取的地址的地址高位為0;該Cell內數據的讀取按照先入先出的規則, 可以在當前讀取的地址低位不為預設的最大值時,讀取一數據後將地址低位 加l,作為下一讀取數據的地址低位。向數據接收端發送第一幀數據後,如果 接收到數據接收端發送的讀Eop信號,則將最新讀取的地址的地址高位加 1,作為讀取下一幀數據的地址的地址高位;當最新讀取的地址的地址高位為 預設的最大值時,下一幀數據讀取的地址的地址高位為0。
上述讀:f又地址的地址高位的選擇中,如果讀:f又下一幀lt據的地址的地址 高位上的Cell存儲狀態為空,則向數據接收端發送空信號。數據接收端不 再發送讀信號,即不再要求讀取數據。
向數據接收端發送數據還可以為數據發送端發送消息要求向數據接 收端發送Cell內的數據,接收該消息後,將該Cell內的數據向數據接收端 發送。
步驟s203,當出現數據反壓時,停止向數據接收端發送數據。 當數據接收端出現數據反壓時,數據接收端不再發送讀信號。此時, 獲知數據反壓,停止向數據接收端發送數據。如果此時FIFO隊列不為滿,則不會向數據發送端發送滿信號,可以繼續接收並存儲數據發送端發送的 數據。
記錄數據寫地址和讀地址的變化,並在每一次寫地址或讀地址發生變
化時,計算寫地址和讀地址的差值,根據兩者的差值判斷FIFO隊列的存 儲狀態。當前讀地址與寫地址相同,且讀取的速率大於寫入的速率時,判 斷FIFO隊列為空,向數據接收端發送空信號,通知數據接收端停止讀取 數據;當前讀地址與寫地址相同,且寫入的速率大於讀取的速率時,判斷 FIFO隊列為滿,向數據發送端發送滿信號,通知數據發送端停止發送數據。
當數據發送端收到FIFO隊列的滿信號時,停止向FIFO隊列發送數據 直到FIFO隊列非滿為止。即只要FIFO隊列中有一個Cell非滿,則數據發 送端就不用停止發送數據。由於通常數據反壓的時間並不長,不足以使 FIFO隊列中的所有Cell達到滿的狀態,從而利用FIFO隊列基本屏蔽掉了 數據反壓對數據發送端帶來的影響。
步驟s204,數據反壓結束後,將存儲的數據向數據接收端發送。
數據反壓結束後,數據接收端發送讀信號。接收該讀信號後,獲知反 壓結束,根據對讀地址的記錄得到下一待發送數據的讀地址,從該下一待 發送數據的讀地址起分配FIFO隊列的數據讀取地址,將該下一待發送數 據的讀地址作為數據反壓結束後FIFO隊列的第一個數據讀取地址,讀取 數據向數據接收端發送。
此外,數據發送端與數據接收端在數據的讀寫上可以靈活設置,即數 據發送端寫數據的速度可以比數據接收端讀數據的速度大或者小,或者兩 者相等。
通過採用本發明實施例提供的方法,將接收到的數據存儲在先入先出 隊列中,當接收端數據反壓時,記錄下一個待發送數據的地址,數據反壓結 束後,從記錄的地址開始依次讀取數據向數據接收端發送,避免頻繁數據反 壓造成數據的丟失或出錯等問題。
現,下面對該邏輯控制器進行介紹。如圖3所示,該邏輯控制器可以包括寫地址產生邏輯31、 FIFO隊列 32、讀地址產生邏輯33以及空、滿信號產生邏輯34。其中,
寫地址產生邏輯31,用於接收發送端發送的寫信號後,為待寫入FIFO 隊列的數據分配在FIFO隊列32中的寫入地址;該寫入地址可以包括地址高 位和地址低位。
FIFO隊列32,用於根據寫地址產生邏輯31分配的寫入地址寫入來自 發送端的數據;並在接收端的數據反壓結束時,根據讀地址產生邏輯33分配 的讀取地址依次讀取Jt據並向接收端發送。
其中,FIFO隊列32擁有兩個埠, 一個埠用於tt據輸入,與數據 發送端相連;另一個埠用於數據輸出,與數據接收端相連。
讀地址產生邏輯33,用於接收端發生數據反壓時,根據記錄的FIFO隊 列32中下一個待發送數據的地址,分配FIFO隊列32中數據的讀取地址。 具體可以為該讀地址產生邏輯33接收到接收端發送的讀信號後,分配FIFO 隊列32中的讀取地址,使FIFO隊列32將該讀取地址上的數據向接收端發送。 接收端發生數據反壓時,停止向讀地址產生邏輯33發送讀信號,則讀地址產 生邏輯33停止分配讀取數據地址,記錄下一待發送數據的地址,FIFO隊列 32停止向接收端發送數據。接收端數據反壓結束後,重向讀地址產生邏輯33 發送讀信號,讀地址產生邏輯33根據記錄的FIFO隊列32中下一個待發送 數據的地址,分配FIFO隊列32中數據的讀取地址,FIFO隊列32向接收 端發送數據。
更進一步,該邏輯控制器還包括空、滿信號產生邏輯34,用於記錄寫 地址產生邏輯31分配的FIFO隊列32中數據寫入的地址和讀地址產生邏輯 33分配的FIFO隊列32中數據讀取的地址,噹噹前讀耳又的地址與寫入的地 址相同,且讀取的速率大於寫入的速率時,判斷數據的存儲狀態為空,向 數據接收端發送空信號,通知數據接收端停止讀取數據;噹噹前讀取的地 址與寫入的地址相同,且寫入的速率大於讀取的速率時,判斷數據的存儲 狀態為滿,向數據發送端發送滿信號,通知數據發送端停止發送數據。
通過採用本發明實施例提供的邏輯控制器,將接收到的數據存儲在先入先出隊列中,當接收端數據反壓時,記錄下一個待發送數據的地址,數據 反壓結束後,從記錄的地址開始依次讀取數據向數據接收端發送,避免頻繁 數據反壓時造成數據的丟失或出錯等問題。
本發明實施例提供一種數據反壓的處理裝置,如圖4所示,包括一晶片
41和一先入先出隊列42,其中,
晶片41,用於接收端發生數據反壓時,記錄先入先出隊列42中下一個待 發送數據的地址;
先入先出隊列42,用於存儲發送端發送的數據,並在接收端的數據反壓 結束時,根據晶片41記錄的下一個待發送數據的地址,依次讀取數據並向接 收端發送。
該先入先出隊列42中包括N個Cell,每個Cell具有一地址高位,N個 Cell的地址高位為0~N-1;每個Cell中還具有一定的地址低位,該地址低 位最大為K-l,即每個Cell最多可以存儲K個數據,K值根據數據發送端 發送的每一幀數據的個數M設定,K值大於或等於M值。先入先出隊列 32接收到發送端發送的一幀數據後,將該幀數據存儲到一Cell中,接收到 下一幀數據時,則向下一Cell中存儲。
如圖5所示,晶片41可以包括
寫地址單元411,用於為先入先出隊列分配來自發送端的數據的寫入地 址,使先入先出隊列42根據分配的寫入地址存儲發送端發送的數據。
具體的,寫地址單元411可以將先入先出隊列中最新寫入的地址的地址 高位加l,作為下一幀數據存儲的地址的地址高位;當最新寫入的地址的地址 高位為預設的最大值N-l時,下一幀數據存儲的地址的地址高位為0。數據 在Cell內的存儲可以為該Cell內的地址低位不等於預i殳的最大值時,寫 入一數據後,寫地址低位加1,作為下一數據在該Cell內存儲的地址低位。
讀地址單元412,用於接收端發生數據反壓時,根據記錄的先入先出隊列 中下一個待發送數據的地址,分配先入先出隊列中數據的讀取地址,使先入 先出隊列42根據分配的讀取地址依次讀取數據並向接收端發送。
具體的,該單元接收到數據接收端發送的讀信號後,可以將最新讀取的地址的地址高位加1,作為讀取下一幀數據的地址的地址高位;當最新讀 取的地址的地址高位為預設的最大值時,下一幀數據讀取的地址的地址高位 為0;該Cell內數據的讀取按照先入先出的規則,可以在當前讀取的地址低 位不為預設的最大值時,讀取一數據後將地址低位加1,作為下一讀取數據的 地址低位。向數據接收端發送第一幀數據後,如果接收到數據接收端發送的 讀Eop信號,則將最新讀取的地址的地址高位加1,作為讀取下一幀數據的 地址的地址高位;當最新讀取的地址的地址高位為預設的最大值時,下一幀 數據讀取的地址的地址高位為0。
判斷單元413,用於記錄寫地址單元411分配的先入先出隊列中數據寫 入的地址和讀地址單元412分配的先入先出隊列中悽t據讀耳又的地址,當前讀 取的地址與寫入的地址相同,且讀取的速率大於寫入的速率時,判斷數據
的存儲狀態為空,向接收端發送空信號,通知接收端停止讀取數據;還用 於當前讀耳又的地址與寫入的地址相同,且寫入的速率大於讀取的速率時,
判斷數據的存儲狀態為滿,向發送端發送滿信號,通知發送端停止發送數 據。
通過採用本發明實施例提供的裝置,將接收到的數據存儲在先入先出 隊列中,當接收端數據反壓時,記錄下一個待發送數據的地址,數據反壓結 束後,從記錄的地址開始依次讀取數據向數據接收端發送,避免頻繁數據反 壓造成數據的丟失或出錯等問題。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發 明可以通過硬體實現,也可以藉助軟體加必要的通用硬體平臺的方式來實現。 基於這樣的理解,本發明的技術方案可以以軟體產品的形式體現出來,該軟 件產品可以存儲在一個非易失性存儲介質(可以是CD-ROM, U盤,移動硬 盤等)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服 務器,或者網絡設備等)執行本發明各個實施例所述的方法。
總之,以上所述僅為本發明的較佳實施例而已,並非用於限定本發明的 保護範圍。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改 進等,均應包含在本發明的保護範圍之內。
權利要求
1、一種數據反壓的處理方法,其特徵在於,包括將從發送端接收的數據存儲在先入先出隊列中;接收端發生數據反壓時,記錄所述先入先出隊列中下一個待發送數據的地址;所述接收端的數據反壓結束時,根據所述下一個待發送數據的地址,從所述先入先出隊列中依次讀取數據並向所述接收端發送。
2、 如權利要求l所述的方法,其特徵在於,所述將從發送端接收的數據 存儲在先入先出隊列前包括為從所述發送端接收到的數據分配寫入地址;所述地址包括地址高位和 地址低位。
3、 如權利要求2所述的方法,其特徵在於,所述為從所述發送端接收到 的數據分配寫入地址,包括將所述先入先出隊列中最新寫入的地址的地址高位加1,作為下一幀數 據寫入的地址的地址高位;當所述最新寫入的地址的地址高位為預設的最大 值時,下一幀數據寫入的地址的地址高位為0。
4、 如權利要求l所述的方法,其特徵在於,所述從先入先出隊列中依次 讀取數據並向所述接收端發送,包括將所述先入先出隊列中當前讀取的地址的地址高位加1,作為下一讀取 數據的地址的地址高位;當所述當前讀取的地址的地址高位為預設的最大值 時,下一幀數據讀取的地址的地址高位為0。
5、 如權利要求l所述的方法,其特徵在於,還包括噹噹前讀耳又的地址與寫入的地址相同,且讀取的速率大於寫入的速率時,判斷數據的存儲狀態為空,向所述數據接收端發送空信號,通知數據 接收端停止讀取數據;噹噹前讀取的地址與寫入的地址相同,且寫入的速率大於讀取的速率 時,判斷數據的存儲狀態為滿,向所述數據發送端發送滿信號,通知數據 發送端停止發送數據。
6、 一種數據反壓的處理裝置,其特徵在於,包括晶片和先入先出隊列, 其中,所述晶片,用於接收端發生數據反壓時,記錄所述先入先出隊列中下一個待發送數據的地址;所述先入先出隊列,用於存儲發送端發送的數據,並在所述接收端的數 據反壓結束時,根據所述晶片記錄的下一個待發送數據的地址,讀取數據並 向所述接收端發送。
7、 如權利要求6所述的裝置,其特徵在於,所述晶片包括入地址,使所述先入先出隊列根據所述寫入地址存儲發送端發送的數據。
8、 如權利要求7所迷的裝置,其特徵在於,所述晶片還包括 讀地址單元,用於所述接收端發生數據反壓時,4艮據記錄的先入先出隊列中下一個待發送數據的地址,分配所述先入先出隊列中數據的讀取地址,發送。
9、 如權利要求8所述的裝置,其特徵在於,所述晶片還包括 判斷單元,用於記苦它""必壬乂、;前讀取的地址與寫入的地址相同,且讀取的速率大於寫入的速率時,判斷 數據的存儲狀態為空,向所述接收端發送空信號,通知所述接收端停止讀 取數據;當前讀^f又的地址與寫入的地址相同,且寫入的速率大於讀取的速 率時,判斷數據的存儲狀態為滿,向所述發送端發送滿信號,通知所述發 送端停止發送數據。
10、 一種邏輯控制器,其特徵在於,包括寫地址產生邏輯、先入先出 隊列和讀地址產生邏輯,其中,所述寫地址產生邏輯,用於接收發送端發送的寫信號後,為待寫入先 所述先入先出隊列,用於根據所述寫地址產生邏輯分配的寫入地址存儲來自所述發送端的數據,並在接收端的數據反壓結束時,根據所迷讀地址產生邏輯分配的讀取地址,讀取數據並向所述接收端發送;所述讀地址產生邏輯,用於所述接收端發生數據反壓時,根據記錄的先 入先出隊列中下一個待發送數據的地址,分配所述先入先出隊列中數據的讀數據並向所述接收端發送。
11.U、如權利要求IO所述的邏輯控制器,其特徵在於,所述邏輯控制器還 包括空、滿信號產生邏輯,所述空、滿信號產生邏輯,用於記錄所述寫地址 產生邏輯分配的所述先入先出隊列中數據寫入的地址和所述讀地址產生邏輯 分配的所述先入先出隊列中數據讀取的地址,噹噹前讀取的地址與寫入的地 址相同,且讀取的速率大於寫入的速率時,判斷數據的存儲狀態為空,向 所述接收端發送空信號,通知所述接收端停止讀取數據;噹噹前讀取的地 址與寫入的地址相同,且寫入的速率大於讀取的速率時,判斷數據的存儲 狀態為滿,向所述發送端發送滿信號,通知所述發送端停止發送數據。
全文摘要
本發明實施例公開了一種數據反壓的處理方法和裝置,該方法包括以下步驟將從發送端接收的數據存儲在先入先出隊列中;接收端發生數據反壓時,記錄所述先入先出隊列中下一個待發送數據的地址;所述接收端的數據反壓結束時,根據所述下一個待發送數據的地址,從所述先入先出隊列中依次讀取數據並向所述接收端發送。本發明實施例將接收到的數據存儲在先入先出隊列中,當接收端數據反壓時,記錄下一個待發送數據的地址,數據反壓結束後,從記錄的地址開始依次讀取數據向數據接收端發送,避免數據反壓頻繁時造成數據的丟失或出錯等問題。
文檔編號H04L1/18GK101442387SQ200810187288
公開日2009年5月27日 申請日期2008年12月22日 優先權日2008年12月22日
發明者亮 丁, 琴 張, 徐長遠, 劍 梁, 邢繼元 申請人:華為技術有限公司