一種實現報文二選一的電路結構的製作方法
2023-08-06 15:14:31 1

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