本發(fā)明屬于智能電網(wǎng)技術領域,具體涉及一種實現(xiàn)報文二選一的電路結構。
背景技術:
在一些報文處理帶寬很小的情況下,采用軟件編程來完成報文的二選一是一種比較簡單的方式,如圖1所示:采用FPGA芯片提供4個以太網(wǎng)端口,其中兩個作為選收通道入口,一個作為FPGA芯片與CPU之間的互聯(lián)通道,另一個作為選收結果的輸出通道。從選收通道收到報文后,F(xiàn)PGA采用封裝外層VLAN的方式對報文添加通道標志,修改后的報文從內部互聯(lián)口轉發(fā)給CPU,CPU的上層軟件可以從底層提取選收報文并識別選收通道,上層軟件還要從報文的特定位置提取GROUPID和SEQENCEID,從而進行二選一的邏輯判斷。由于軟件執(zhí)行指令比較慢,通常的做法是對報文進行選收和丟棄的處理,而不做緩存等待的工作。成功選收的報文最終又從內部互聯(lián)口通過FPGA轉發(fā)到選收輸出通道。
采用上述軟件編程的方式實現(xiàn)報文二選一主要存在以下2個問題:
1、大帶寬情況下,軟件無法線速處理;
2、可靠性低。
有鑒于此,本發(fā)明人對此進行研究,專門開發(fā)出一種實現(xiàn)報文二選一的電路結構,本案由此產(chǎn)生。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種實現(xiàn)報文二選一的電路結構。
為了實現(xiàn)以上目的,本發(fā)明所采用的技術方案是:
一種實現(xiàn)報文二選一的電路結構,包括二選一判決邏輯模塊,與二選一判決邏輯模塊相連的等待判決緩存模塊、當前SEQID緩存模塊,以及與等待判決緩存模塊相連的掃描邏輯模塊,所述二選一判決邏輯模塊的入口與2個選收通道相連,2個選收通道的報文來自同一個源設備的雙發(fā)報文,其中
所述二選一判決邏輯模塊:根據(jù)進入二選一判決邏輯模塊內的報文的組號,從當前SEQID緩存模塊中讀取預期要接收的報文流號(SEQID),如果兩者報文流號相等,則判決接收;如果不等,則根據(jù)該報文流號與預期流號的差值來判決:如果報文流號減去預期流號為正數(shù),那么該報文進入等待判決緩存模塊中;如果報文流號減去預期流號為零或者負數(shù),說明該報文已在另外一個選收通道接收了,丟棄處理;
所述等待判決緩存模塊:用于緩存流號比預期接收流號大的報文;
所述當前SEQID緩存模塊:用于緩存報文流號;
所述掃描邏輯模塊:用于掃描等待判決緩存模塊中的報文。
作為優(yōu)選,所述當前SEQID緩存模塊采用雙端口塊RAM(SDP BLOCK RAM),第一端口供報文組號讀取預期報文流號,第二端口用于二選一判決邏輯更新預期報文流號。
作為優(yōu)選,所述二選一判決邏輯模塊采用FPGA或者ASIC。
作為優(yōu)選,所述等待判決緩存模塊包括多個雙端口塊RAM(SDP BLOCK RAM),分別用于寫地址管理、讀地址管理和數(shù)據(jù)緩存。
作為優(yōu)選,所述等待判決緩存模塊進一步與外掛緩存模塊相連,所述外掛緩存模塊用于增加等待判決緩存模塊的緩存深度。
本發(fā)明所述的實現(xiàn)報文二選一的電路結構,采用獨立的二選一判決邏輯模塊和等待判決緩存模塊,使得各自模塊的功能相對單一,便于邏輯電路實現(xiàn);此外,等待判決緩存模塊采用RAM復用的形式管理,節(jié)省了大量的等待判決緩存模塊控制資源,使得二選一電路的報文組號可以支持到1K(1024),甚至更多。
以下結合附圖及具體實施例對本發(fā)明做進一步詳細描述。
附圖說明
圖1為現(xiàn)有技術中采用軟件實現(xiàn)二選一處理示意圖;
圖2為本實施例的雙發(fā)選收通道示意圖;
圖3為本實施例的實現(xiàn)報文二選一的電路結構示意圖;
圖4為本實施例的當前SEQID緩存模塊電路結構圖;
圖5為本實施例的等待判決緩存模塊電路結構圖;
圖6為本實施例的掃描邏輯模塊連接原理圖。
具體實施方式
術語解釋:
FPGA:Field-Programmable Gate Array,現(xiàn)場可編程門陣列;
ASIC:Application Specific Integrated Circuit,專用集成電路;
DDR3 SDRAM:Double data rate type three SDRAM,DDR3緩存芯片;
RAM:Random Access Memory,隨機存取存儲器;
FIFO:First Fn First Out,先進先出存儲單元。
為了實現(xiàn)報文的二選一處理,報文必須攜帶組號(GROUPID)和流號(SEQUENCEID,簡稱SEQID)信息。組號GROUPID是指進行二選一處理的報文組數(shù),不同組號之間的報文互相獨立;流號SEQID是指同一個組內進行二選一處理的報文序列號,它是進行二選一判決邏輯的主要條件。
如圖2-3所示,一種實現(xiàn)報文二選一的電路結構,包括二選一判決邏輯模塊,與二選一判決邏輯模塊相連的等待判決緩存模塊、當前SEQID緩存模塊,以及與二選一判決邏輯模塊相連的掃描邏輯模塊,所述二選一判決邏輯模塊的入口與2個選收通道相連,2個選收通道的報文來自同一個源設備的雙發(fā)報文。在本實施例中,所述二選一判決邏輯模塊采用FPGA,所述等待判決緩存模塊采用多個SDP BLOCK RAM 組成的FIFO,所述當前SEQID緩存模塊采用SDP BLOCK RAM。
來自選收通道的報文進入二選一判決邏輯模塊后,所述二選一判決邏輯模塊根據(jù)該報文的組號GROUPID從當前SEQID緩存模塊中讀取預期要接收的流號SEQID,如果當前進入的報文SEQID和預期要接收的SEQID相等,則判決接收;如果不等,則根據(jù)報文SEQID與預期SEQID的差值來判決:如果報文SEQID減去預期SEQID為正數(shù),那么該報文進入等待判決緩存模塊中;如果報文SEQID減去預期SEQID為零或者負數(shù),說明該報文已在另外一個選收通道接收了,丟棄處理。
所述等待判決緩存模塊用于緩存SEQID比預期接收SEQID大的報文;例如當前預期SEQID等于100,從選收通道1進來一個報文SEQID為101的報文,那么說明選收通道1本身SEQID等于100的報文在中間網(wǎng)絡傳輸過程中丟失了。將SEQID等于101的報文放入等待判決緩存模塊中,是為了等待從選收通道2中選收SEQID為100的報文。當從選收通道2中接收到SEQID為100的報文后,預期SEQID更新為101,那么緩存在等待判決緩存模塊中的SEQID為101的報文應重新進入二選一判決邏輯模塊,并接收下來,重新置預期SEQID為102。假如從選收通道1進來的SEQID為101的報文不進等待判決緩存模塊,而直接丟棄。那么,當選收通道2的SEQID為101的報文在中間網(wǎng)絡發(fā)生丟失,則最終的選收輸出會缺失SEQID為101的報文。
所述當前SEQID緩存模塊:用于緩存報文流號。
所述等待判決緩存模塊的FIFO個數(shù)等于報文組號乘以2。如果用單獨的FIFO來做,那么FPGA的資源是無法承受的,因此,等待判決緩存模塊采用時分復用的方式來管理,F(xiàn)IFO的讀寫地址分別按GROUPID存在不同的SDP BLOCK RAM中。每個FIFO的緩存空間存放在SDP BLOCK RAM的不同地址片中,如圖5所示。此外,為了支持更大的緩存深度,可以把FIFO的大部分緩存放到外掛DDR3緩存中。
所述掃描邏輯模塊使用SCANID(遍歷GROUPID)獲取得到以下信息:1)當前組的預期SEQID,2)選收通道1對應的等待判決緩存模塊首報文的SEQID,3)選收通道2對應的等待判決緩存模塊首報文的SEQID。根據(jù)上述3個信息,決定等待判決緩存模塊中報文是否出隊重新進入二選一判決邏輯模塊,從而決定選收或者丟棄。掃描邏輯模塊的掃描周期決定了已進入等待判決緩存模塊中的報文出隊的快慢,理論上,在125兆時鐘頻率線速處理下,對于64字節(jié)的報文,假如GROUPID的數(shù)量為1K(1024)個,那么每一個GROUPID的最大處理帶寬大約為84Mbps。如果采用多套并行處理的掃描電路,那么每個GROUPID的處理帶寬可以成倍地增加。掃描邏輯與二選一判決邏輯不同,如圖6所示,掃描邏輯模塊處理過程如下:
1、超時請求直接出隊給二選一判決邏輯模塊;
2、SEQ-GRP0< SEQ- GRP1,不管CUR_SEQ:SEQ-GRP0出隊給二選一判決邏輯模塊;
3、SEQ- GRP0> SEQ- GRP1,不管CUR_SEQ:SEQ-GRP1出隊給二選一判決邏輯模塊;
4、SEQ-GRP0= SEQ-GRP1,不管CUR_SEQ:SEQ-GRP0/1全出隊給二選一判決邏輯模塊;
5、SEQ-GRP1空,SEQ-GRP0=CUR_SEQ: SEQ-GRP0出隊給二選一判決邏輯模塊;
6、SEQ-GRP0空,SEQ-GRP1=CUR_SEQ: SEQ-GRP1出隊給二選一判決邏輯模塊;
7、所有丟棄或選中動作都有二選一判決邏輯模塊實施。
本實施例所述的實現(xiàn)報文二選一的電路結構,采用獨立的二選一判決邏輯模塊和等待判決緩存模塊,使得各自模塊的功能相對單一,便于邏輯電路實現(xiàn);此外,等待判決緩存模塊采用RAM復用的形式管理,節(jié)省了大量的等待判決緩存模塊控制資源,使得二選一電路的報文組號可以支持到1K(1024),甚至更多。
上述實施例和圖式并非限定本發(fā)明的產(chǎn)品形態(tài)和式樣,任何所屬技術領域的普通技術人員對其所做的適當變化或修飾,皆應視為不脫離本發(fā)明的專利范疇。