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