一种实现报文二选一的电路结构的制作方法

文档序号:11156402阅读:1070来源:国知局
一种实现报文二选一的电路结构的制造方法与工艺

本发明属于智能电网技术领域,具体涉及一种实现报文二选一的电路结构。



背景技术:

在一些报文处理带宽很小的情况下,采用软件编程来完成报文的二选一是一种比较简单的方式,如图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-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、所有丢弃或选中动作都有二选一判决逻辑模块实施。

本实施例所述的实现报文二选一的电路结构,采用独立的二选一判决逻辑模块和等待判决缓存模块,使得各自模块的功能相对单一,便于逻辑电路实现;此外,等待判决缓存模块采用RAM复用的形式管理,节省了大量的等待判决缓存模块控制资源,使得二选一电路的报文组号可以支持到1K(1024),甚至更多。

上述实施例和图式并非限定本发明的产品形态和式样,任何所属技术领域的普通技术人员对其所做的适当变化或修饰,皆应视为不脱离本发明的专利范畴。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1