專利名稱:高速數(shù)據(jù)鏈路控制協(xié)議發(fā)送處理模塊及其數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡互連設(shè)備技術(shù)領(lǐng)域,特別涉及特別涉及高速數(shù)據(jù)鏈路控制(HDLC)協(xié)議發(fā)送處理模塊的結(jié)構(gòu)設(shè)計及其數(shù)據(jù)處理方法。
HDLC協(xié)議處于開放系統(tǒng)互連(OSI)七層網(wǎng)絡參考模型的第二層數(shù)據(jù)鏈路層。HDLC協(xié)議的數(shù)據(jù)幀結(jié)構(gòu)如
圖1所示,圖中HDLC數(shù)據(jù)幀以16進制數(shù)7E(0x7E)為幀起始、幀結(jié)束標志,在幀結(jié)束符前還有一個幀校驗字段(FCS)用來進行數(shù)據(jù)的幀校驗(CRC),該字段為可選字段,可以沒有幀校驗。幀與幀之間用0x7E或0xFF填充,兩個連續(xù)幀可以共享一個0x7E作為幀起始和幀結(jié)束。另外,若發(fā)送一個幀時出現(xiàn)錯誤,則可以發(fā)幀中止標識(0xFF),表明該幀數(shù)據(jù)有誤,在接收時發(fā)現(xiàn)7個以上的連1就認為是幀中止標識。在發(fā)送時,由于數(shù)據(jù)中可能也有0x7E,為了避免將數(shù)據(jù)中的0x7E誤認為是幀標識,需要使用零插入功能在數(shù)據(jù)和幀校驗字段里若發(fā)現(xiàn)有5個連1就在5個連1的后面插入一個零,這樣數(shù)據(jù)和幀校驗字段里就不會有幀標識了。這時在接收端就要使用零刪除功能在數(shù)據(jù)和幀校驗字段里若發(fā)現(xiàn)有5個連1就將后面緊跟的一個零去掉,從而恢復原數(shù)據(jù)。
已有的一種串行通信控制器芯片的結(jié)構(gòu)如圖2所示,包括物理層接口模塊、協(xié)議處理模塊、先進先出緩沖器(FIFO)、直接存儲器訪問(DMA)模塊和周邊元件擴展接口(PCI)模塊;其中,物理層接口模塊模塊負責與OSI參考模型第一層物理層的接口,將物理層收到的串行數(shù)據(jù)變成8bit并行數(shù)據(jù)送給協(xié)議處理模塊,或?qū)f(xié)議處理模塊發(fā)送的8bit并行數(shù)據(jù)變成串行的數(shù)據(jù)送給物理層處理。
協(xié)議處理模塊包括HDLC協(xié)議處理模塊和異步串口協(xié)議處理模塊,分別進行同步HDLC串口和異步串口的協(xié)議處理,異步串口的協(xié)議處理與本發(fā)明無關(guān),不再介紹。
HDLC協(xié)議處理模塊的結(jié)構(gòu)如圖3所示,由一個接收HDLC協(xié)議處理模塊和一個發(fā)送HDLC協(xié)議處理模塊組成。這兩個模塊相互獨立,分別處理接收的數(shù)據(jù)和發(fā)送的數(shù)據(jù),使得系統(tǒng)可以全雙工的工作。
其中發(fā)送協(xié)議處理模塊要完成的功能1.支持M個HDLC通道;2.支持N個端口,每個端口可同時有多個HDLC通道;3.支持透明傳輸;4.幀開始、幀結(jié)束標志的自動生成;5.支持共享的幀開始和幀結(jié)束標志;6.兩個傳輸幀之間數(shù)據(jù)自動填充,填充字符可編程;7.支持零插入功能;8.16位/32位CRC幀校驗生成(CRC16和CRC32);9.支持字節(jié)內(nèi)高低位比特的交換;10.支持端口數(shù)據(jù)取反;11.支持流控功能。
已有的發(fā)送HDLC協(xié)議處理模塊的結(jié)構(gòu)如圖4所示,它由N個接收HDLC協(xié)議處理器、一個狀態(tài)存儲器、一個狀態(tài)仲裁模塊和一個取數(shù)據(jù)仲裁模塊組成。
為了便于說明發(fā)送HDLC協(xié)議處理模塊及其數(shù)據(jù)處理方法所存在的問題,下面以對16個端口的256個通道進行HDLC協(xié)議的發(fā)送處理為例。
從圖4中可以看到,使用已有的串行HDLC協(xié)議處理模塊對16端口的串行數(shù)據(jù)進行處理,需要有16個(每個端口一個)發(fā)送HDLC協(xié)議處理器,但由于每個HDLC通道有大量的中間數(shù)據(jù)(約一百多比特)需要保存,所以必須16個處理器共用一個狀態(tài)存儲器進行256個HDLC通道中間數(shù)據(jù)的存取,因此對狀態(tài)存儲器的操作需要進行仲裁。同時由于是16個發(fā)送HDLC協(xié)議處理器同時從后面電路的先進先出緩沖器(FIFO)接收數(shù)據(jù),因此這里也需要進行仲裁。這些地方的仲裁成為系統(tǒng)速度的瓶頸,所以即使提高每個處理器的速度,端口的速率也不能有效提高。使用這種方案在主時鐘為33MHz時,每個端口的最大端口速率最多也只能達到8Mbps左右,并且由于要使用16個發(fā)送HDLC協(xié)議處理器,占用的芯片面積也很大。
本發(fā)明提出一種高速數(shù)據(jù)鏈路控制協(xié)議發(fā)送處理模塊,其特征在于,由一個端口仲裁模塊、一個發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器和一個狀態(tài)存儲器模塊所組成;其中,所說的端口仲裁模塊的輸入端與N個端口相連,所說的發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器的輸入端分別與該端口仲裁模塊輸出端和后面電路的先進先出緩沖器的輸入端相連,同時與所說的狀態(tài)存儲器模塊雙向連接,該發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器的輸出端與N個端口相連接。
本發(fā)明還提出一種用于上述模塊的數(shù)據(jù)處理方法,其特征在于,包括以下步驟
1)端口仲裁模塊接收N個端口的數(shù)據(jù)請求信號,把端口的請求信號依據(jù)優(yōu)先級別依次傳給發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器,并為N個端口共享數(shù)據(jù)處理流水線提供仲裁;2)該發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器從后面電路的先進先出緩沖器讀出未處理數(shù)據(jù),把該數(shù)據(jù)所屬高速數(shù)據(jù)鏈路控制通道的狀態(tài)數(shù)據(jù)從狀態(tài)存儲器模塊讀出,對其數(shù)據(jù)進行流水線處理,把處理后的數(shù)據(jù)送到相應的端口;3)該數(shù)據(jù)所屬高速數(shù)據(jù)鏈路并把該高速數(shù)據(jù)鏈路控制通道的新狀態(tài)數(shù)據(jù)寫回狀態(tài)存儲器。
本發(fā)明的特點及良好效果1)使用本發(fā)明方法中的并行的發(fā)送高速協(xié)議處理器對所有端口的數(shù)據(jù)流進行處理,若端口同時有數(shù)據(jù)需要處理則按優(yōu)先級順序進行處理。采用對數(shù)據(jù)的并行和流水線處理,使得HDLC協(xié)議處理模塊的處理能力大大提高,單向吞吐量為8乘以時鐘速率。
2)本發(fā)明的高速處理器內(nèi)部采用流水線結(jié)構(gòu),每個時鐘即可處理一個8比特的數(shù)據(jù),若支持16個端口的芯片在時鐘33MHz時單向數(shù)據(jù)吞吐率達264Mbps,端口的最大速率可以達到52Mbps,平均端口速率為16Mbps。
3)由于本發(fā)明只使用一個發(fā)送HDLC協(xié)議處理器可處理N個端口數(shù)據(jù),協(xié)議處理部分所占用的控制芯片面積不會隨端口的增多而線性增大。并且事實證明,該發(fā)送HDLC協(xié)議處理器所占用的芯片面積并不比單個的串行HDLC協(xié)議處理器大。也即是說,若支持的端口為16,使用該HDLC協(xié)議處理器的協(xié)議處理模塊所占用的芯片面積只有使用已有串行HDLC協(xié)議處理器方案的約16分之一,如果需要支持的端口數(shù)更多,如32個、64個,其優(yōu)勢是無可比擬的。
圖1為HDLC幀結(jié)構(gòu)示意圖。
圖2為已有的串行通信控制器芯片結(jié)構(gòu)框圖。
圖3為已有的HDLC協(xié)議控制模塊結(jié)構(gòu)框圖。
圖4為已有的發(fā)送HDLC協(xié)議處理模塊結(jié)構(gòu)框圖。
圖5為本發(fā)明的發(fā)送HDLC協(xié)議處理模塊結(jié)構(gòu)。
圖6為本發(fā)明的三級流水線的結(jié)構(gòu)示意圖。
圖7為本發(fā)明的發(fā)送HDLC協(xié)議處理狀態(tài)機的示意圖。
本實施例的發(fā)送HDLC協(xié)議處理模塊的數(shù)據(jù)處理方法為該端口仲裁模塊接收16個端口的數(shù)據(jù)請求信號,把端口的請求信號依據(jù)優(yōu)先級別依次傳給發(fā)送HDLC協(xié)議處理器,并為16個端口共享數(shù)據(jù)處理流水線提供仲裁;該發(fā)送HDLC協(xié)議處理器從FIFO讀出數(shù)據(jù),把該數(shù)據(jù)所屬HDLC通道的狀態(tài)數(shù)據(jù)從狀態(tài)存儲器模塊讀出,對從FIFO讀出的數(shù)據(jù)進行流水線處理,把處理后的數(shù)據(jù)送到相應的端口,并把該HDLC通道的新狀態(tài)數(shù)據(jù)寫回狀態(tài)存儲器。
為了提高發(fā)送效率,本實施例的HDLC協(xié)議發(fā)送處理器設(shè)置了由數(shù)據(jù)緩沖寄存器(一級緩沖)和數(shù)據(jù)暫存寄存器(二級緩沖)組成的二級緩存結(jié)構(gòu)對從FIFO讀出的數(shù)據(jù)進行緩存,即把從FIFO讀出的數(shù)據(jù)放入一級緩沖中,第二級緩沖從一級緩沖取數(shù)據(jù),發(fā)送協(xié)議處理器對第二級緩沖的數(shù)據(jù)進行處理,這樣在該協(xié)議處理器對對第二級緩沖的數(shù)據(jù)進行處理的同時,一級緩沖可以從FIFO讀取后面的數(shù)據(jù)。
本實施例的數(shù)據(jù)處理方法的具體實現(xiàn)步驟分別詳細說明如下上述的對16個端口共享數(shù)據(jù)處理流水線提供仲裁的方法,具體包括以下步驟將16個端口的請求數(shù)據(jù)中速率高的數(shù)據(jù)通道放在端口號小的端口上,仲裁時端口號越小則優(yōu)先級越高,即多個端口同時請求數(shù)據(jù)時,先處理端口號低的。使用時可設(shè)置端口速率不超過最大速率且數(shù)據(jù)總吞吐量不超過最大吞吐量。由于每個端口的數(shù)據(jù)請求是每隔(8×處理時鐘頻率/端口速率)個處理時鐘才來一個數(shù)據(jù),就不會出現(xiàn)前一個數(shù)據(jù)請求未被處理而下一個數(shù)據(jù)請求已來的情況。
上述發(fā)送HDLC協(xié)議處理器對數(shù)據(jù)進行流水線處理的方法,具體步驟為看端口仲裁模塊有沒有通道申請數(shù)據(jù),如果有申請就啟動協(xié)議處理流水線,如果沒有申請則該時鐘周期的處理流水線空閑。
由于對數(shù)據(jù)的處理過程比較復雜,在一個時鐘周期難以處理完,所以本實施例的處理流水線采用三級流水線實現(xiàn)數(shù)據(jù)處理,如圖6所示,每個時鐘可以處理一個8比特的并行數(shù)據(jù)。每一級流水線完成相應的工作,并把數(shù)據(jù)用時鐘鎖存送到下一級繼續(xù)進行處理,各級流水線的工作并行進行,所以有可能同時在處理3個通道的數(shù)據(jù),這三級流水線進行數(shù)據(jù)處理的方法,具體包括以下步驟第一級1.如果端口有申請就鎖存所申請數(shù)據(jù)的通道號、所在端口、以及工作模式、流控指示信號;2.向狀態(tài)存儲器發(fā)出讀使能信號;
第二級1.鎖存從狀態(tài)存儲器讀出的狀態(tài)數(shù)據(jù);2.對讀出的待發(fā)送數(shù)據(jù),若當前處于發(fā)送數(shù)據(jù)或幀校驗狀態(tài),則進行5個連1的檢測,進行零插入,得到填零后的數(shù)據(jù);3.將本次待發(fā)送數(shù)據(jù)與上次剩余數(shù)據(jù)合并,得到總的待發(fā)送數(shù)據(jù);4.根據(jù)狀態(tài)位信息進行處理狀態(tài)機的狀態(tài)跳轉(zhuǎn);5.根據(jù)狀態(tài)機的狀態(tài)得到新的待發(fā)送數(shù)據(jù);6.若數(shù)據(jù)緩沖寄存器(一級緩沖)已被送入到數(shù)據(jù)暫存寄存器(二級緩沖),則向發(fā)送FIFO請求新的數(shù)據(jù);第三級1.對待發(fā)送數(shù)據(jù)完成數(shù)據(jù)翻轉(zhuǎn)操作(可選),并把數(shù)據(jù)送到相應的端口;2.若狀態(tài)機處于發(fā)送數(shù)據(jù)狀態(tài),則對當前準備的數(shù)據(jù)進行幀校驗計算;3.若數(shù)據(jù)暫存寄存器(二級緩沖)被取空且緩沖寄存器(一級緩沖)的數(shù)據(jù)有效,則把一級緩沖中的數(shù)據(jù)送入到二級緩沖中,同時完成比特順序選擇功能;4.若第一級已向FIFO發(fā)出請求數(shù)據(jù)則把從FIFO請求得到的新數(shù)據(jù)寫入到緩沖寄存器中;若緩沖寄存器的數(shù)據(jù)被送出,則清空緩沖寄存器,否則緩沖寄存器不變;5.發(fā)寫使能信息,把新的狀態(tài)位寫入到狀態(tài)存儲器中去。
在上面第二級流水線處理方法中使用了發(fā)送HDLC協(xié)議處理狀態(tài)機,該狀態(tài)機用來控制HDLC協(xié)議發(fā)送的處理過程。該狀態(tài)機的狀態(tài)轉(zhuǎn)移圖如圖7所示。狀態(tài)機的狀態(tài)包括空閑狀態(tài)、幀間填充、異常處理、插入幀頭、發(fā)送數(shù)據(jù)、幀校驗和幀尾插入;各跳轉(zhuǎn)條件解釋如下
在沒有發(fā)現(xiàn)線路錯誤時,各狀態(tài)跳轉(zhuǎn)的條件包括復位(rst)時狀態(tài)機處于空閑狀態(tài);a-如果數(shù)據(jù)暫存寄存器中有數(shù)據(jù),且為非透傳模式,如果幀間填充選擇比特為0000或0001,而且流控寄存器為高時。則沿a路徑跳轉(zhuǎn),從空閑狀態(tài)跳到幀頭插入狀態(tài);b-而且流控寄存器為高時,如果幀間填充選擇比特不為0000或0001,則沿b路徑跳轉(zhuǎn),從空閑狀態(tài)跳到幀間填充狀態(tài);c-無條件沿c路徑跳轉(zhuǎn);d-若該幀數(shù)據(jù)發(fā)送完,工作于非透傳模式時且流控打開,幀校驗選擇為CRC16或CRC32時,沿d路徑跳轉(zhuǎn),從發(fā)送數(shù)據(jù)狀態(tài)跳轉(zhuǎn)到幀校驗狀態(tài);e-若該幀數(shù)據(jù)發(fā)送完,且流控打開,幀校驗選擇不為CRC32或CRC16時,沿e路徑跳轉(zhuǎn),從發(fā)送數(shù)據(jù)狀態(tài)跳轉(zhuǎn)到幀尾插入狀態(tài)。
g-如果幀校驗選擇為CRC16,則在幀校驗發(fā)送字節(jié)計數(shù)為2時沿g路徑跳轉(zhuǎn);如果CRC選擇為CRC32,則在幀校驗發(fā)送字節(jié)計數(shù)為4時沿g路徑跳轉(zhuǎn),從CRC狀態(tài)跳轉(zhuǎn)到幀尾插入狀態(tài);h-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特為0000,這時相鄰幀的幀標識復用,而且流控打開,則沿h路徑跳轉(zhuǎn),從幀尾插入狀態(tài)直接跳到發(fā)送數(shù)據(jù)狀態(tài),此時連續(xù)的數(shù)據(jù)幀共享幀標志;i-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特為0001,則沿i路徑跳轉(zhuǎn),從幀尾插入狀態(tài)跳到幀頭插入狀態(tài);j-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特不為0000或0001,則沿j路徑跳轉(zhuǎn),從幀尾插入狀態(tài)跳到幀間填充狀態(tài);k-如果暫存數(shù)據(jù)有效寄存器為低,或流控寄存器關(guān)閉;則沿k路徑跳轉(zhuǎn),從幀尾插入狀態(tài)跳轉(zhuǎn)到空閑狀態(tài);r-如果已發(fā)送完幀間填充,則沿r路徑跳轉(zhuǎn),從幀間填充狀態(tài)跳轉(zhuǎn)到幀頭插入狀態(tài);
在發(fā)現(xiàn)有線路錯誤的情況下,如果流控關(guān)閉或要求發(fā)生錯誤時一直發(fā)送幀中止標識,則狀態(tài)機一直處在異常處理狀態(tài),否則轉(zhuǎn)移條件如下f-如果暫存數(shù)據(jù)有效寄存器為低(可能是錯誤引起的),且數(shù)據(jù)幀未結(jié)束時,沿f路徑跳轉(zhuǎn),從發(fā)送數(shù)據(jù)狀態(tài)跳轉(zhuǎn)到異常處理狀態(tài);l-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特為0000或0001,則沿1路徑跳轉(zhuǎn),從異常處理狀態(tài)跳轉(zhuǎn)到幀頭插入狀態(tài);m-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特不為0000或0001,則沿m路徑跳轉(zhuǎn),從異常處理狀態(tài)跳轉(zhuǎn)到幀間填充狀態(tài);n-如果暫存數(shù)據(jù)有效寄存器為低,則沿n路徑跳轉(zhuǎn),從異常處理狀態(tài)跳轉(zhuǎn)到空閑狀態(tài);o-如果發(fā)現(xiàn)發(fā)生了錯誤,則沿o路徑跳轉(zhuǎn),從空閑狀態(tài)跳轉(zhuǎn)到異常處理狀態(tài);p-如果是透傳模式,且暫存數(shù)據(jù)有效寄存器為高,則沿p路徑跳轉(zhuǎn),從異常處理狀態(tài)直接跳轉(zhuǎn)到發(fā)送數(shù)據(jù)狀態(tài);如不滿足上述各跳轉(zhuǎn)條件,則狀態(tài)機默認保持狀態(tài)不變。
由于采用8bit并行處理,零插入功能的設(shè)計與串行處理就大不相同零插入的方法為對當前的8bit待發(fā)送數(shù)據(jù)數(shù)據(jù)(new_data)計算其從最低位向上數(shù)連1的個數(shù)(cur_count1_low)和從最高位向下數(shù)連1的個數(shù)(cur_count1_high),該數(shù)據(jù)處理后將cur_count1_high保存為從最高位向下數(shù)連1的個數(shù)(last_count1_high);令連1計數(shù)器count1=last_count1_high,對數(shù)據(jù)最低位(new_data
)到數(shù)據(jù)最高位(new_data[7])依次判斷是否為1,若為1則連1計數(shù)器加1,并判斷連1計數(shù)器是否等于5,若等于5則將該比特后面插入一個0,并將連1計數(shù)器復位到0。
上述狀態(tài)機中的零插入實現(xiàn)方法可以使用硬件描述語言(如verilogHDL,VHDL語言)中的for循環(huán)語句或者case語句來實現(xiàn),只需要占用一個時鐘周期。用for循環(huán)語句設(shè)計出的電路面積較小,而用case語句設(shè)計出的電路速度更快。
由于其它功能的實現(xiàn)比較簡單,可用常規(guī)技術(shù)手段實現(xiàn),這里就不再闡述。
使用本發(fā)明所述的高速數(shù)據(jù)鏈路控制協(xié)議發(fā)送處理模塊及其數(shù)據(jù)處理方法可以實現(xiàn)新的高速HDLC協(xié)議模塊。并可以組構(gòu)成如圖2所示的串行通信控制器芯片結(jié)構(gòu),這樣整個芯片的性能得到了提高,同時芯片面積也變小了,使得成本更低。由于HDLC協(xié)議處理模塊占芯片面積較小,還可以輕易地使用可編程邏輯器件實現(xiàn)(如FPGA),并應用到任何需要進行HDLC協(xié)議處理的產(chǎn)品中,使得產(chǎn)品的開發(fā)速度大大提高,有效的縮短開發(fā)周期。
權(quán)利要求
1.一種高速數(shù)據(jù)鏈路控制協(xié)議發(fā)送處理模塊,其特征在于,由一個端口仲裁模塊、一個發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器和一個狀態(tài)存儲器模塊所組成;其中,所說的端口仲裁模塊的輸入端與N個端口相連,所說的發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器的輸入端分別與該端口仲裁模塊輸出端和后面電路的先進先出緩沖器的輸入端相連,同時與所說的狀態(tài)存儲器模塊雙向連接,該發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器的輸出端與N個端口相連接。
2.如權(quán)利要求1述的高速數(shù)據(jù)鏈路控制協(xié)議發(fā)送處理模塊,其特征在于,所說的發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器包括由數(shù)據(jù)緩沖寄存器和數(shù)據(jù)暫存寄存器組成的二級緩存結(jié)構(gòu)。
3.一種用于如權(quán)利要求1所述的高速數(shù)據(jù)鏈路控制協(xié)議發(fā)送處理模塊的數(shù)據(jù)處理方法,其特征在于,包括以下步驟1)端口仲裁模塊接收N個端口的數(shù)據(jù)請求信號,把端口的請求信號依據(jù)優(yōu)先級別依次傳給發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器,并為N個端口共享數(shù)據(jù)處理流水線提供仲裁;2)該發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器從后面電路的先進先出緩沖器讀出未處理數(shù)據(jù),把該數(shù)據(jù)所屬高速數(shù)據(jù)鏈路控制通道的狀態(tài)數(shù)據(jù)從狀態(tài)存儲器模塊讀出,對其數(shù)據(jù)進行流水線處理,把處理后的數(shù)據(jù)送到相應的端口;3)該數(shù)據(jù)所屬高速數(shù)據(jù)鏈路并把該高速數(shù)據(jù)鏈路控制通道的新狀態(tài)數(shù)據(jù)寫回狀態(tài)存儲器。
4.如權(quán)利要求3所述的數(shù)據(jù)處理方法,其特征在于,所說的對N個端口共享數(shù)據(jù)處理流水線提供仲裁的方法,具體包括以下步驟1)將N個端口的請求數(shù)據(jù)中速率高的數(shù)據(jù)通道放在端口號小的端口上,仲裁時端口號越小則優(yōu)先級越高;2)多個端口同時請求數(shù)據(jù)時,先傳送端口號低中的數(shù)據(jù)。
5.如權(quán)利要求3所述的數(shù)據(jù)處理方法,其特征在于,所說的發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器對數(shù)據(jù)的處理方法,具體包括以下步驟1)所說的發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器把從后面電路的先進先出緩沖器讀出的數(shù)據(jù)放入一級數(shù)據(jù)緩沖寄存器中,第二級數(shù)據(jù)暫存寄存器從一級數(shù)據(jù)緩沖寄存器取數(shù)據(jù);2)在對第二級數(shù)據(jù)暫存寄存器的數(shù)據(jù)進行流水線處理的同時,一級數(shù)據(jù)緩沖寄存器可從先進先出緩沖器讀取后面的數(shù)據(jù)。
6.如權(quán)利要求5所述的數(shù)據(jù)處理方法,其特征在于,所說的發(fā)送高速數(shù)據(jù)鏈路控制協(xié)議處理器對數(shù)據(jù)進行流水線處理的方法,具體包括以下步驟1)首先看端口仲裁模塊有沒有通道申請數(shù)據(jù),如果有申請就啟動協(xié)議處理流水線;2)如果沒有申請則該時鐘周期的處理流水線空閑。
7.如權(quán)利要求6所述的數(shù)據(jù)處理方法,其特征在于,所說的對數(shù)據(jù)進行流水線處理采用三級流水線處理,每一級流水線完成相應的工作,并把數(shù)據(jù)用時鐘鎖存送到下一級繼續(xù)進行處理,從而使每個時鐘可以處理一個8比特的并行數(shù)據(jù),各級流水線的工作并行進行,同時處理3個通道的數(shù)據(jù)。
8.如權(quán)利要求7所述的數(shù)據(jù)處理方法,其特征在于,所說的三級流水線對數(shù)據(jù)進行處理的方法,具體包括以下步驟第一級1)如果端口有申請就鎖存所申請數(shù)據(jù)的通道號、所在端口、以及工作模式、流控指示信號,2)向狀態(tài)存儲器發(fā)出讀使能信號;第二級1)鎖存從狀態(tài)存儲器讀出的狀態(tài)數(shù)據(jù),2)對讀出的待發(fā)送數(shù)據(jù),若當前處于數(shù)據(jù)處理狀態(tài)或幀校驗狀態(tài),則進行5個連1的檢測,進行零插入,得到填零后的數(shù)據(jù),3)將本次待發(fā)送數(shù)據(jù)與上次剩余數(shù)據(jù)合并,得到總的待發(fā)送數(shù)據(jù),4)根據(jù)狀態(tài)位信息進行處理狀態(tài)機的跳轉(zhuǎn),5)根據(jù)狀態(tài)機的狀態(tài)得到新的待發(fā)送數(shù)據(jù),6)若數(shù)據(jù)緩沖寄存器已被送入到數(shù)據(jù)暫存寄存器,則向先進先出緩沖器請求新的數(shù)據(jù);第三級1)把待發(fā)送數(shù)據(jù)送到相應的端口,2)若狀態(tài)機處于發(fā)送數(shù)據(jù)狀態(tài),則對當前準備的數(shù)據(jù)進行幀校驗計算,3)若數(shù)據(jù)暫存寄存器被取空且緩沖寄存器的數(shù)據(jù)有效,則把緩沖寄存器中的數(shù)據(jù)送入到數(shù)據(jù)暫存寄存器中,同時完成比特順序選擇功能,4)若第一級已向先進先出緩沖器發(fā)出請求數(shù)據(jù)則把從先進先出緩沖器請求得到的新數(shù)據(jù)寫入到緩沖寄存器中;若緩沖寄存器的數(shù)據(jù)被送出,則清空緩沖寄存器,否則緩沖寄存器不變,5)發(fā)寫使能信息,把新的狀態(tài)位寫入到狀態(tài)存儲器中去。
9.如權(quán)利要求8所述的數(shù)據(jù)處理方法,其特征在于,用所說的狀態(tài)機控制高速數(shù)據(jù)鏈路控制協(xié)議發(fā)送的過程,該狀態(tài)機的狀態(tài)包括空閑狀態(tài)、幀間填充、異常處理、插入幀頭、發(fā)送數(shù)據(jù)、幀校驗和幀尾插入;在沒有發(fā)現(xiàn)線路錯誤時,各狀態(tài)跳轉(zhuǎn)的條件包括復位時狀態(tài)機處于空閑狀態(tài);a-如果暫存數(shù)據(jù)有效寄存器為高,且為非透傳模式,如果幀間填充選擇比特為0000或0001,而且流控寄存器為高時,則沿a路徑跳轉(zhuǎn),從空閑狀態(tài)跳到幀頭插入狀態(tài);b-如果暫存數(shù)據(jù)有效寄存器為高,且為非透傳模式,而且流控寄存器為高時,如果幀間填充選擇比特不為0000或0001,則沿b路徑跳轉(zhuǎn),從空閑狀態(tài)跳到幀間填充狀態(tài);c-無條件沿c路徑跳轉(zhuǎn);d-若該幀數(shù)據(jù)發(fā)送完,工作于非透傳模式時且流控打開,幀校驗選擇為CRC16或CRC32時,沿d路徑跳轉(zhuǎn),從發(fā)送數(shù)據(jù)狀態(tài)跳轉(zhuǎn)到幀校驗狀態(tài);e-若該幀數(shù)據(jù)發(fā)送完,且流控打開,幀校驗選擇不為CRC32或CRC16時,沿e路徑跳轉(zhuǎn),從發(fā)送數(shù)據(jù)狀態(tài)跳轉(zhuǎn)到幀尾插入狀態(tài);g-如果幀校驗選擇為CRC16,則在幀校驗發(fā)送字節(jié)計數(shù)為2時沿g路徑跳轉(zhuǎn);如果幀校驗選擇為CRC32,則在幀校驗發(fā)送字節(jié)計數(shù)為4時沿g路徑跳轉(zhuǎn),從幀校驗狀態(tài)跳轉(zhuǎn)到幀尾插入狀態(tài);h-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特為0000,這時相鄰幀的幀標識復用,而且流控打開,則沿h路徑跳轉(zhuǎn),從幀尾插入狀態(tài)直接跳到發(fā)送數(shù)據(jù)狀態(tài),此時連續(xù)的數(shù)據(jù)幀共享幀標志;i-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特為0001,則沿i路徑跳轉(zhuǎn),從幀尾插入狀態(tài)跳到幀頭插入狀態(tài);j-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特不為0000或0001,則沿j路徑跳轉(zhuǎn),從幀尾插入狀態(tài)跳到幀間填充狀態(tài);k-如果暫存數(shù)據(jù)有效寄存器為低,或流控寄存器關(guān)閉,則沿k路徑跳轉(zhuǎn),從幀尾插入狀態(tài)跳轉(zhuǎn)到空閑狀態(tài);r-如果已發(fā)送完幀間填充,則沿r路徑跳轉(zhuǎn),從幀間填充狀態(tài)跳轉(zhuǎn)到幀頭插入狀態(tài);在發(fā)現(xiàn)有線路錯誤的情況下,如果流控關(guān)閉或要求發(fā)生錯誤時一直發(fā)送幀中止標識,則狀態(tài)機一直處在異常處理狀態(tài),否則轉(zhuǎn)移條件如下f-如果暫存數(shù)據(jù)有效寄存器為低,且數(shù)據(jù)幀未結(jié)束時,沿f路徑跳轉(zhuǎn),從發(fā)送數(shù)據(jù)狀態(tài)跳轉(zhuǎn)到異常處理狀態(tài);l-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特為0000或0001,則沿1路徑跳轉(zhuǎn),從異常處理狀態(tài)跳轉(zhuǎn)到幀頭插入狀態(tài);m-如果暫存數(shù)據(jù)有效寄存器為高,且?guī)g填充選擇比特不為0000或0001,則沿m路徑跳轉(zhuǎn),從異常處理狀態(tài)跳轉(zhuǎn)到幀間填充狀態(tài);n-如果暫存數(shù)據(jù)有效寄存器為低,則沿n路徑跳轉(zhuǎn),從異常處理狀態(tài)跳轉(zhuǎn)到空閑狀態(tài);o-如果發(fā)現(xiàn)發(fā)生了錯誤,則沿o路徑跳轉(zhuǎn),從空閑狀態(tài)跳轉(zhuǎn)到異常處理狀態(tài);p-如果是透傳模式,且暫存數(shù)據(jù)有效寄存器為高,則沿p路徑跳轉(zhuǎn),從異常處理狀態(tài)直接跳轉(zhuǎn)到發(fā)送數(shù)據(jù)狀態(tài);如不滿足所說的跳轉(zhuǎn)條件,則狀態(tài)機默認保持狀態(tài)不變。
10.如權(quán)利要求9所述的數(shù)據(jù)處理方法,其特征在于,所說的零插入的方法,具體包括以下步驟1)對當前的待發(fā)送數(shù)據(jù)數(shù)據(jù)計算其從最低位向上數(shù)連1的個數(shù)和從最高位向下數(shù)連1的個數(shù),該數(shù)據(jù)處理后將從最高位向下數(shù)連1的個數(shù)保存為從最高位向下數(shù)連1的個數(shù);2)令連1計數(shù)器為從最高位向下數(shù)連1的個數(shù),對數(shù)據(jù)最低位到數(shù)據(jù)最高位依次判斷是否為1,若為1則連1計數(shù)器加1,并判斷連1計數(shù)器是否等于5,若等于5則將該比特后面插入一個0,并將連1計數(shù)器復位到0。
全文摘要
本發(fā)明屬于網(wǎng)絡互連設(shè)備技術(shù)領(lǐng)域,涉及HDLC協(xié)議發(fā)送處理模塊及其數(shù)據(jù)處理方法。該模塊包括由一個端口仲裁模塊、一個發(fā)送HDLC協(xié)議處理器和一個狀態(tài)存儲器模塊所組成;其數(shù)據(jù)處理方法為端口仲裁模塊接收N個端口的數(shù)據(jù)請求信號,把端口的請求信號依據(jù)優(yōu)先級別依次傳給發(fā)送HDLC協(xié)議處理器,并為N個端口共享數(shù)據(jù)處理流水線提供仲裁;發(fā)送HDLC協(xié)議處理器從FIFO讀出未處理數(shù)據(jù),把數(shù)據(jù)所屬HDLC通道的狀態(tài)數(shù)據(jù)從狀態(tài)存儲器模塊讀出,對其數(shù)據(jù)進行流水線處理,把處理后的數(shù)據(jù)送到相應的端口;并把HDLC通道的新狀態(tài)數(shù)據(jù)寫回狀態(tài)存儲器。本發(fā)明具有處理速度快、芯片的面積不會隨端口的增多而線性增大且通用性強的優(yōu)點。
文檔編號H04L12/40GK1466348SQ0212299
公開日2004年1月7日 申請日期2002年6月15日 優(yōu)先權(quán)日2002年6月15日
發(fā)明者黃勇, 張贊, 黃 勇 申請人:華為技術(shù)有限公司