3×256优先级调度电路的制作方法

文档序号:14879572发布日期:2018-07-07 09:22阅读:230来源:国知局

本发明属于计算机通信领域,涉及网络通信时消息按多种优先级的发起操作,尤其涉及航空机载fc通信网络fc-ae-asm消息发送时,消息优先级的调度处理。



背景技术:

fc网络具备高带宽、低延迟和高可靠性等特点,适用于航电系统中,处理器、传感器、仪器仪表和显式设备之间关键通信的应用模式。

在航电系统中,采用fc作为主干通信网络时,由于应用环境的特殊性,为了保证asm通信的实时性要求,需要根据应用需求对fc网络上传输的asm消息进行分类,并对每一类之间的优先级进行定义,保证关键数据通信的实时性,会涉及到较为复杂的优先级调度处理过程,且需要耗费较多的处理周期。



技术实现要素:

发明目的:

在航电系统中,采用fc作为主干通信网络时,为了保证asm通信的实时性要求,本专利提出了一种3×256优先级调度电路,可在fc-ae-asm协议通信机制上,支持3×256级fc-ae-asm消息按照优先级发送操作,保证关键数据通信的实时性,简化优先级调度电路,提高调度效率,减小处理周期。

技术方案:

本发明提供一种3x256多级优先级调度电路,该电路结构包括:调度请求输入模块1、16个第一级调度模块2-1、16个第一级调度模块2-2、16个第一级调度模块2-3、第二级调度模块3-1、第二级调度模块3-2、第二级调度模块3-3、第三级调度模块4、消息id队列控制模块5、调度控制模块6。

所述调度请求输入模块1、16个第一级调度模块2-1、16个第一级调度模块2-2、16个第一级调度模块2-3、第二级调度模块3-1、第二级调度模块3-2、第二级调度模块3-3、第三级调度模块4、消息id队列控制模块5、调度控制模块6依次相连,完成每条消息3级优先级的处理,以及相同优先级256条消息之间256级轮询级优先级的处理,总共实现3x256级优先级调度。

所述调度请求输入模块1,接收发送请求信号tra_req[255:0]、每条消息优先级指示信号pri0、pri1、pri2,以及消息id队列控制模块5输入信号sch_out_en、sch_out_id[7:0],对输入信号处理后,输出三种256位的优先级请求信号tra_req0[255:0]、tra_req1[255:0]、tra_req2[255:0]到第一级调度模块2-1、第一级调度模块2-2、第一级调度模块2-3;

所述第一级调度模块2-1为16个相同的调度模块,在调度控制模块6输出的调度使能信号控制下,接收tra_req0[255:0]信号,实现对该信号的第一级调度,输出调度结果到第二级调度模块3;所述第一级调度模块2-2、2-3与外部的连接关系以及功能与第一级调度模块2-1类似。

所述第二级调度模块3-1、3-2、3-3在调度控制模块6输出的调度使能信号控制下,分别接收第一级调度模块2-1、2-2、2-3输出结果,按照轮询优先级的原则对于请求信号进行优先级调度,输出调度结果到第三级调度模块4;

所述第三级调度模块4,在调度控制模块6输出的调度使能信号控制下,对第一级调度模块2-1、2-2、2-3输出的结果、第二级调度模块3-1、3-2、3-3输出的结果进行优先级调度,输出调度结果que_id_valid信号、que_id[7:0]信号到消息id队列控制模块5;

所述消息id队列控制模块5输出sch_out_en、sch_out_id[7:0]信号到调度控制模块6以及调度请求输入模块1;

所述调度控制模块6输出调度使能信号到第一级调度模块2-1、2-2、2-3、第二级调度模块3-1、3-2、3-3以及第三级调度模块4。

所述调度请求输入模块1,接收256条消息的发送请求信号tra_req[255:0]、每条消息优先级指示信号pri0、pri1、pri2(优先级从pri0到pri2依次降低),将上述含3级优先级的256个发送请求转化为3种优先级由高到低的3种256位的消息发送请求:tra_req0[255:0]、tra_req1[255:0]、tra_req2[255:0],并分别输出到后级的第一级调度模块2-1、第一级调度模块2-2、第一级调度模块2-3,该操作采用硬件组合逻辑电路实现,不占用额外的时钟周期,此外,调度请求输入模块接收消息id队列控制模块5输入信号sch_out_en、sch_out_id[7:0],用于撤销已经被调度输出的最高优先级的消息发送请求。

所述第一级调度模块2-1:是16个同样的第一级调度模块2-1,在调度控制模块6输出的调度使能信号控制下,将发送请求信号tra_req0[255:0]按照编号:255-240、239-224……31-16、15-0每16个分为一组,每组输出到一个第一级调度模块2-1,16个第一级调度模块2-1共同完成256个请求信号的第一级优先级调度,调度输出结果为16个分组的优先级调度结果编码以及是否继续请求调度的指示信号,以上调度结果输出到第三级调度模块3-1、3-2、3-3以及第三级调度模块4。

所述第一级调度模块2-2调度次高优先级的请求tra_req1[255:0]、第一级调度模块2-3调度最低优先级的请求tra_req2[255:0],实现的功能均与第一级调度模块2-1相同。

以上调度过程,从调度状态机检测请求信号开始跳转,到调度结果输出,共需要两个时钟周期。

所述第二级调度模块3-1,在调度控制模块6输出的调度使能信号控制下,检测16个第一级调度模块2-1输出的继续请求调度指示信号是否有效,按照轮询优先级进行调度,选出最高优先级的请求分组,进行优先级编码,输出调度结果到第三级调度模块4。第二级调度模块3-2、3-3实现的功能与第二级调度模块3-1类似。

以上调度过程,从调度状态机检测请求信号开始跳转,到调度结果输出,共需要两个时钟周期。

所述第三级调度模块4,在调度控制模块6输出的调度使能信号控制下,对第一级调度模块2-1、2-2、2-3、以及第二级调度模块3-1、3-2、3-3输出的结果,按照第二级调度模块3-1的输出请求优先级最高,到第二级调度模块3-2的输出请求优先级最低的顺序进行优先级调度,选出优先级最高的请求信号,输出调度结果有效信号que_id_valid、选中的消息编号的编码信号que_id[7:0]到消息id队列控制模块5,que_id_valid信号为高电平时,表示que_id[7:0]信号输出有效;

以上调度过程,从调检测请求信号,到调度结果输出,共需要1个时钟周期。

所述消息id队列控制模块5,为先进先出的fifo结构,用于保存第三级调度模块4输出的调度结果,并输出调度输出使能信号sch_out_en信号、sch_out_id[7:0]信号到调度控制模块6以及调度请求输入模块1,用于撤销上一次请求结果和使能下一次优先级调度操作;

所述调度控制模块6输出调度使能信号到第一级调度模块2-1、2-2、2-3、第二级调度模块3-1、3-2、3-3以及第三级调度模块4,用于使能各个调度模块开始优先级调度操作。

有益效果:

本发明提供了一种3×256优先级调度电路,在设计中使用三级调度模块完成三种不同优先级的消息类型之间,以及同一消息类型内部256种不同消息id的消息之间,共3x256级优先级的处理,以上所有调度过程,均采用硬件逻辑电路实现,从调度请求tra_req0[255:0]、tra_req1[255:0]、tra_req2[255:0]有效,到优先级调度操作通过三级调度器处理,输出调度结果到消息id队列控制模块,只需要5个时钟周期,效率高,电路实现简单,可以有效保证网络通信关键数据按优先级发送的实时性要求。

附图说明

图1是3x256级优先级调度模块框图

具体实施方式

下面结合附图和实施例对本发明做进一步描述:

本发明涉及的一种一种3×256优先级调度电路如图1所示,在设计中使用三级调度模块完成三种不同优先级的消息类型之间,以及同一消息类型内部256种不同消息id的消息之间,共3x256级优先级的处理,将任意时刻、任何一种消息类型的最高优先级消息发送请求,编码为8位的消息id,并将结果保存到消息id队列控制模块。

消息发送输入请求可以为tra_req0[255:0]、tra_req1[255:0]、tra_req2[255:0]三种类型种的任意一种,任意一种消息类型,请求tra_reqx[0]对应的优先级调度后输出的消息id应该为8’h0,请求tra_reqx[1]对应的消息id应该为8’h1,依次类推,请求tra_reqx[255]对应的消息id应该为8’hff。

图1为3x256级优先级调度模块的实现框图。图中虚线部分由调度控制模块、3组第一级优先级调度模块,3个第二级调度模块和1个第三级优先级调度模块四部分电路组成。

以下以优先级调度模块对tra_req0[255:0]请求的优先级调度为例,对优先级调度模块各部分的功能进行说明:

调度控制模块负责调度控制信号的产生和管理;

第一级调度模块:将发送请求tra_req0[255:0]每16个请求分为一组,共分16个组,每组使用一个第一级调度模块,对分组中的16个请求进行优先级调度,选出同一分组中最高优先级的请求并编码,输出到第二级调度模块。

第二级调度模块对16个第一级调度模块输出结果进行优先级调度,选出最高优先级的请求并编码,输出调度结果到第三级调度模块。

第三级调度模块根据以上三种类型的消息发送请求:tra_req0[255:0]、tra_req1[255:0]、tra_req2[255:0]依次由高到低的优先级,以及第一级调度模块、第二级调度模块输出的256级优先级的调度结果,综合选出最高优先级的请求,并对其进行编码输出。

1)调度控制模块

系统上电复位后,第1、2、3级调度模块调度使能信号sch_en_fst、sch_en_sec、sch_en_thd信号均为高电平,允许tra_req0[255:0]、tra_req1[255:0]、tra_req2[255:0]三种消息类型中的任意消息发送请求第一次有效时,第1、2、3级调度器可以正常工作。

消息发送请求第一次有效时,按照上述三级调度器设计,调度结束时,输出调度结果有效信号que_id_valid以及调度结果que_id[7:0]到消息id队列控制模块;

调度结束后,第一级调度器处于锁存状态并保持当前调度结果,直到第一级调度器调度允许信号sch_out_en有效。后级第2、3级调度器工作依赖于第一级调度器的输出结果,因此,也处于等待状态;

调度结果保存到消息id队列控制模块之后,调度允许信号sch_out_en有效,第一级调度器解锁控制模块根据sch_out_id[7:4]产生sch_latch_dis[15:0]信号,选择出上次调度器选中的16个分组中的一组,并将sch_out_id[3:0]接入对应分组,以使其内部调度状态机解锁,能够跳转到正确的状态,重新开始下一次调度;

调度允许信号sch_out_en将调度控制模块中的sch_en_fst、sch_en_sec、sch_en_thd信号以及sch_cnt计数器清零,计数器开始重新递增计数,准备重新开始下一次调度;

sch_cnt计数器的值为0x1时,sch_en_fst信号有效,允许第一级调度器工作,2个周期后即可给出调度结果;

sch_cnt计数器的值为0x2时,sch_en_sec信号有效,允许第二级调度器工作,2个周期后即可给出调度结束;

sch_cnt计数器的值为0x4时,sch_en_thd信号有效,调度结束,允许第三级调度器的调度结果输出,2个周期给出调度结果。

2)第一级调度模块

第一级调度模块的工作流程以asm消息0的tra_req0[255:0]请求为例进行说明。

16个第一级调度模块调度在使能信号sch_en_fst的控制下,采用轮循的优先级,分别对16个分组tra_req0[15:0]、tra_req0[31:16]……tra_req0[255:240]的输入请求进行优先级调度。

轮询优先级定义为:电路上电复位时,请求tra_req0[0]具有最高的优先级,请求获得允许之后,请求tra_req0[1]的优先级最高,tra_req0[0]的优先级最低,以此类推,请求tra_req0[15]获得允许之后,请求tra_req0[0]又具有最高的优先级;

调度操作结束,16个分组的输入请求被分别编码16个4位的信号que_id_00[15]、que_id_00[14]……que_id_00[0],同时,产生到第二级优先级调度模块的调度请求信号que_req_level00[15:0];

每次调度结束之后,调度状态机进入锁存状态,直到解锁信号sch_latch_dis有效,才允许开始下一次调度。

3)第二级调度模块

第二级调度模块在使能信号sch_en_sec控制下,采用轮循优先级对16个第一级调度模块输出的que_req_level00[15:0]请求进行优先级编码,调度结果为4位的que_id_10[3:0]信号,其操作原理与第一级调度模块类似。

4)第三级调度模块

在sch_en_thd信号的控制下,对第一级、第二级调度的结果按优先级由高到低选择输出;

中mux0模块依据asm消息0第二级调度模块输出结果que_id_10信号,选择asm消息0第一级调度器输出的16个que_id_00[15:0]中和其对应的一组输出到cmb0模块,cmb0模块将第二级调度模块的que_id_10和第一级调度模块的选择后的que_id_00[x]结果合并为8位的调度结果que_id_20;

mux1、cmb1、mux2、cmb2的作用类似于mux0、cmb0的功能,分别输出8位的asm消息1、asm消息2发送请求的调度结果que_id_21、que_id_22;

c0模块用于产生多路选择器的控制端信号que_req_level10。que_req_level00或tra_req0任意一个信号有效时,表示asm消息0发送请求有效,que_req_level10信号有效,选择que_id_20信号到输出到que_id[7:0],同时产生que_id_valid信号;

c1模块用于产生多路选择器的控制端信号que_req_level11。que_req_level01或tra_req1任意一个信号有效时,表示asm消息1发送请求有效,que_req_level11信号有效,选择que_id_21信号到输出到que_id[7:0],同时产生que_id_valid信号;

c2模块用于产生多路选择器的控制端信号que_req_level12。que_req_level02信号有效时,表示asm消息2发送请求有效,que_req_level12信号有效,选择que_id_22信号到输出到que_id[7:0],同时产生que_id_valid信号。

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