專利名稱:網絡信息交換中多端口收發包數統計方法
技術領域:
本發明涉及一種在網絡信息交換中對多端口的收發包數進行統計計數的方法,尤其涉及在網絡處理器與接口芯片對接時需要現場可編程門陣列電路FPGA(Field Programmable Gate Array)進行總線轉換時對多端口的收發包數進行統計計數的方法。
背景技術:
目前大多數的網絡處理器的總線接口并沒有形成統一的規范,這樣在與接口芯片對接的時候免不了要進行總線轉換。例如INTEL公司的網絡處理器IXP1200有自己的總線規范IXBUS,而下一代處理器IXP2400的總線接口又改為POSPHY總線接口。而10/100M以太網接口芯片雖然有一些芯片支持上述總線,如IXF400支持IXBUS。但是由于芯片本身的設計,在對接端口數目超過八個以上時,一些指標并不能很好的滿足要求,如錯包過多。
圖1給出現有技術中網絡處理器與十六路以太網對接的技術方案。其中網絡處理器101用于進行包處理,可編程邏輯器件FPGA102用于總線轉換,以太網控制器MAC103用于將物理幀進行緩存并上傳,以太網物理層芯片PHY104用于完成從物理層信號將物理幀提取出來的功能。
PHY將十六路以太網信號接入進來,通過RMII總線接口或MII總線接口與MAC對接。MAC匯聚16路以太網到一路總線接口與FPGA對接,IXFF440是IXBUS總線接口。FPGA內部將這一路總線接口轉換成網絡處理器適用的總線。在FPGA處,可以進行一定數量的包緩存,以補充MAC層緩沖能力不足的缺點。
在FPGA處需要對十六個端口進行包數統計,包括包個數計數,包長度的分類計數以及錯誤包分類計數。例如,針對錯誤類型進行計數,錯誤類型分為四種a、b、c、d,傳統計數模式如圖2所示。計數模塊201、202、203和204分別是a類,b類,c類,d類錯誤的計數單元。譯碼器205根據輸入的計數類型信號譯出四個計數器的允許計數信號。每一個包處理完畢,均會發出允許計數信號和計數類型信號,此時由譯碼器進行統一譯碼或分別譯碼,產生出各自類型的允許計數信號,每個計數器均根據允許計數信號進行計數。
圖3給出了一個三十二位計數器的基本模型。標號301是加法器,標號302是觸發器,Cnt[31:0]和計數允許位相加,在每個時鐘CLK的上升沿,輸出一次更新Cnt[31:0]。在這個三十二位計數器的模型中,使用了三十二個D觸發器資源。如果一個FPGA設計中需要對于十六個通道的四種錯誤類型進行統計,每種錯誤類型有八種錯誤,那么需要16×4×8×32=16384個觸發器的資源。這些資源是進行總線轉換而消耗的資源,這就必須選擇價格更高的FPGA,增加了成本。由于是針對數據包進行的統計,包與包之間有一定間隙,也就是說計數并不是連續加1,而是幾個時鐘才加1。現有技術中空操作太多,資源浪費大;FPGA內部的資源主要是LUT(查找表),觸發器,RAM三種資源。而RAM資源,特別是RAM塊資源在一般的設計中,均不會被全部用掉。在現有技術的總線轉換應用中未使用的RAM塊被無謂浪費掉。
發明內容
本發明的目的是為了克服現有技術中統計消耗和閑置資源過多,造成統計成本過高的不足之處,提出一種增強硬件資源利用,提高工作效率、降低成本的方法。在綜合考慮FPGA資源情況后,給出了一種可以有效節約觸發器資源的方法。
本發明的基本設想就是用RAM資源代替觸發器資源保存計數器的計數值,從而達到減少統計消耗觸發器過多的問題。最終,可以達到用幾個RAM塊資源來代替大量消耗的觸發器資源,達到只用價格較低的FPGA器件即可以完成設計的目的,從而降低成本。
本發明的目的可以采用以下措施來達到設計、采用一種網絡信息交換中多端口收發包數統計方法,使用現場可編程門陣列電路FPGA在總線轉換過程中進行包緩存與分類計數;在所述FPGA內部設置隨機存儲器RAM;其特征在于采用FPGA中的RAM存放分類計數的結果。
按照本發明的設計進行比較,用XILING公司的XC2V2000FF896-4芯片作為硬件,并且用與之配套的ISE4.2軟件進行編譯。原有設計需要16384個觸發器占76%的觸發器資源。現在的設計只用不到200個觸發器和2個RAM塊,分別占用0.93%的觸發器資源和3.5%的RAM塊資源。通過比較,發現采用本專利方法可以大大節省資源。最后選用XLINIX公司的XC2V1000FF896-4就完成了原先的設計任務,FPGA的成本節省了一半。當端口過多的時候,使用本方法可以有效的節省內部的觸發器資源。
圖1是網絡處理器與以太網對接的方案示意圖;圖2是傳統收發包計數方案示意圖;圖3是32位計數器的基本組成方式示意圖;圖4是本發明網絡信息交換中多端口收發包計數器方案示意圖;圖5是核心狀態機的流程圖;圖6是基于本發明的一種十六端口計數器的結構示意圖。
具體實施例方式以下結合附圖詳述本發明的實施例。
一種網絡信息交換中多端口收發包數統計方法,使用現場可編程門陣列電路FPGA在總線轉換過程中進行包緩存與分類計數;在所述FPGA內部設置隨機存儲器RAM;其特征在于采用FPGA中的RAM存放分類計數的結果。
所采用的FPGA中的RAM既可以是集中式隨機存儲器(Block RAM),也可以是分布式隨機存儲器(Distributed RAM)。
將總線轉換過程中產生的計數允許信號和計數類型信號翻譯為RAM地址碼,并將該允許信號進行鎖存;所述RAM的地址碼指向當前需要計數的類型的狀態緩沖區。
設置CPU接口讀取所述統計值;所述CPU接口對統計值的讀取與所述計數操作同時進行;所述CPU接口的讀信號與所述地址信號被分別鎖存,且所述地址信號被轉換為RAM所需要的地址。CPU接口中讀取計數結果的地址段與計數結果存放地(RAM)的地址段一一對應,CPU讀取時進行地址轉換。
本方法設置選擇狀態機,分別接收譯碼器的計數允許信息和CPU接口的讀允許信息;所述選擇狀態機又分別控制計數器,鎖存器和所述FPGA中的RAM。
所述統計方法設置的選擇狀態機具有以下工作步驟S1、復位并將所述RAM清零;S2、判斷CPU接口是否進行讀取;若未讀取,轉執行步驟S4;S3、讀取RAM中的數據并鎖存;清除CPU的讀取標志,然后執行S2;S4、轉換過程中產生的計數允許信號判斷是否需要計數,若不需要計數,則轉執行步驟S2;S5、從RAM中讀取數據,即原計數結果;S6、將上述讀出的數據加1后再存回RAM中;清除本次計數標志,轉執行步驟S2。
以下對技術方案進行描述本發明所述基于RAM的計數器的結構如圖4所示。其中
譯碼器401根據計數允許信號,將當前需要計數的類型翻譯成RAM地址。
核心狀態機402統一調配當前操作是完成CPU讀數還是進行計數。
一個RAM 403用于保留計數狀態,可以存放計數值。
CPU接口404用于通過CPU接口讀取統計值。
鎖存器器405根據狀態機402提供的信號鎖存RAM送出來的數據,以便CPU接口讀取。
計數器406根據狀態機402提供的信號將RAM送出來的數據加1后再送入RAM中。
本發明所述的基于RAM的計數器的操作流程如下首先,從總線轉換過來的計數允許信號和計數類型信號被翻譯成RAM的地址,而且將允許信號進行鎖存。RAM的地址指向當前需要進行計數的類型的狀態緩沖區。例如根據a、b、c、d四種類型應該譯出四個地址。
因為計數狀態值肯定是要被讀取出來,所以必須考慮CPU接口讀取數據與計數同時進行的問題。這里CPU接口過來的讀信號與地址信號分別被鎖存下來,地址信號要被轉換成RAM所需要的地址。
以上是預處理過程,現結合圖5,從狀態機402的角度繼續介紹流程。
1).上電復位完畢之后,首先需要將RAM的值清零。
2).然后判斷CPU接口是否進行讀取,如果讀取,繼續。沒有讀取,跳到第4)步。
3).從RAM中讀取數據。
鎖存當前數據,供給CPU接口完成讀取操作。清除CPU讀取標志,返回到第2)步。
4).判斷是否進行計數,如果計數,繼續。沒有計數,返回到第2)步。
5).從RAM中讀取數據。
6).將數據加1;將計算后的數據存入RAM中。清除這次計數標志,返回到第2)步。
其中RAM可以根據要求選擇使用FPGA內部的Block Ram或DistributedRam。
下面結合圖6詳細說明如何對十六個端口的以太網幀進行兩種類型的計數,每種類型有細分為八種類型。由于以太網幀要求間距是96bit時間,所以完全符合將并行計數轉換到串行計數的原則。可編程器件選用XILINX公司的VirtexII系列的XC2V2000。RAM塊使用內部的Block Ram,設置為512×32方式,雙口RAM,兩套數據線。
十六路的譯碼器601和602完成對于十六個端口送過來的計數允許和計數類型進行譯碼,轉換成RAM地址。
CPU接口603用于讀取計數狀態值。
狀態機604,其內部分別對兩種類型進行調度。每一種計數類型下,各個端口和CPU接口相互輪循,由狀態機選擇當前是誰可以進行讀寫操作。而且每次讀寫操作均只能用兩個時鐘周期。
雙口RAM605共有兩套地址總線和兩套數據總線。
計數器606和607分別對a端口和b端口的數據進行計數。
鎖存器608用以鎖存數據給CPU接口完成讀寫操作。
狀態機的調度同圖5所述相似,只不過輪循端口增多。
權利要求
1.一種網絡信息交換中多端口收發包數統計方法,使用現場可編程門陣列電路FPGA在總線轉換過程中進行包緩存與分類計數;在所述FPGA內部設置隨機存儲器RAM;其特征在于采用FPGA中的RAM存放分類計數的結果。
2.根據權利要求1所述的多端口收發包數統計方法,其特征在于所采用的FPGA中的RAM既可以是集中式隨機存儲器(Block RAM),也可以是分布式隨機存儲器(Distributed RAM)。
3.根據權利要求2所述的多端口收發包數統計方法,其特征在于將總線轉換過程中產生的計數允許信號和計數類型信號翻譯為RAM地址碼,并將該允許信號進行鎖存;所述RAM的地址碼指向當前需要計數的類型的狀態緩沖區。
4.根據權利要求3所述的多端口收發包數統計方法,其特征在于設置CPU接口讀取所述統計值;所述CPU接口對統計值的讀取與所述計數操作同時進行;所述CPU接口的讀信號與所述地址信號被分別鎖存,且所述地址信號被轉換為RAM所需要的地址。
5.根據權利要求4所述的多端口收發包數統計方法,其特征在于設置選擇狀態機,分別接收譯碼器的計數允許信息和CPU接口的讀允許信息;所述選擇狀態機又分別控制計數器、鎖存器和所述FPGA中的RAM。
6.根據權利要求5所述的多端口收發包數統計方法,其特征在于所述統計方法設置的選擇狀態機具有以下工作步驟S1、復位并將所述RAM清零;S2、判斷CPU接口是否進行讀取;若未讀取,轉執行步驟S4;S3、讀取RAM中的數據并鎖存;清除CPU的讀取標志,然后執行S2;S4、判斷是否計數,若未計數,轉執行步驟S2;S5、從RAM中讀取數據;S6、將所述讀出數據加1再存回RAM中;清除本次計數標志,轉執行步驟S2。
全文摘要
一種網絡信息交換中多端口收發包數統計方法,使用現場可編程門陣列電路FPGA在總線轉換過程中進行包緩存與分類計數;在所述FPGA內部設置隨機存儲器RAM;尤其是采用FPGA中的RAM存放分類計數的結果。本發明用RAM資源代替觸發器資源保存計數器的計數值,從而達到減少統計消耗觸發器過多的問題。最終,可以達到用幾個RAM塊資源來代替大量消耗的觸發器資源,達到只用價格較低的FPGA器件即可以完成設計的目的,從而降低成本。
文檔編號H04L12/08GK1571346SQ0313207
公開日2005年1月26日 申請日期2003年7月15日 優先權日2003年7月15日
發明者宋海華, 顧金舵, 劉衡祁 申請人:中興通訊股份有限公司