一种多路数据传输的方法及系统的制作方法

文档序号:6577885阅读:198来源:国知局

专利名称::一种多路数据传输的方法及系统的制作方法
技术领域
:本发明涉及数据传输领域,尤其涉及一种多路数据传输的方法及系统。
背景技术
:随着数字技术的M,设计和生产了越来越多的大规模集成电路,例如现场可编程门阵列(FieldProgrammableGateArray,FPGA)、复杂可编程逻辑器件(ComplexProgrammableLogicDevice,CPLD)、以及专用集成电3各(ApplicationSpecificIntegratedCircuits,ASIC)等等。利用这些大规模集成电路可以组成多i^t据处理系统,进行多iWi:据的传输,例如以太网交换机中的数据帧交换、数据帧緩存和数据帧统计;图像信号处理系统中的多路图傳凝存、处理和传输等等。参见图1,多^t据的传输模型包括数据发送端100、数据接收端200、公共存储介质单元300、读写仲裁单元400、写入端口仲裁单元500和读出端口仲裁单元600。其中,数据发送端100包括多个端口,数据接收端200包括多个端口。这样,多鴻^t据传输的过程包括读写仲裁单元400接到数据发送端IOO至少一个端口;^的写入请求和/或数据接收端200至少一个端口发起的读出请求后,判断是iiA写操作周期,还是读操作周期;当i^写操作周期时,写入端口仲裁单元500确定数据发送端100中,向公共存储介质单元300中写入数据的端口,然后根据确定的端口向公共存储介质单元300中写入数据;当ii^读操作周期时,读出端口仲裁单元600确定数据接收端200中,从公共存储介质单元300中读出数据的端口,然后根据确定的端口从公共存储介质单元300中读出数据。目前,当读写仲裁单元400同时接到写入请求和读出请求时,判断是ii^写操作周期,还是读操作周期的读写仲裁方法包括固定比例读写仲裁和写操作优先读写仲裁。所述固定比例读写仲裁是指读操作周期和写操作周期呈一固定比例。例如m,1:2,3:2等等。所述写操作优先读写仲裁是指写操作请求比读操作请求优先级更高,那么如果同时有读写操作请求,则优先响应写操作请求,从而确保传输数据能及时写入公共存储介质单元300。数据发送端100和数据接收端200中的各个端口内都有緩存区FIFO,存储需要进行传输的数据,因此,写入端口仲裁单元500确定数据发送端IOO中,向公共存储介质单元300中写入数据的端口,以及读出端口仲裁单元600确定数据接收端200中,从公共存储介质单元300中读出数据的端口的端口仲裁方法包括根据每个端口FIFO中的数据水线进行仲裁,其中,翁:据水线是存储单元中数据量多少的^^t,这样,从FIFO中数据水线最高的端口进行数据传输。但是,目前多路数据传输的过程中读写仲裁方法以及端口仲裁方法还存在以下不足之处1、如图2,仲裁操作与数据读写操作串行。这种情况下,每次数据读写操作之前都进行一次端口仲裁操作,那么无疑将占用公共存储介质单元的数据带宽。如果仲裁操作周期过多,那么必将使得公共存储介质单元的带宽利用率大大降低。2、各路的数据流量不均衡将会导致各个端口内緩存FIFO的彩:据水线不同。如果单纯的通过以数据水线高低来进行端口仲裁单元,那么数据流量较小的端口,由于其内部FEFO的数据水线较低,将长时间不能进行数据传输。这在多路数据传输中明显是不合理的。3、理想情况下,读写操作周期应该是均衡的,采用固定比例l:l进行读写仲裁单元,这样写入公共存储介质单元的数据才能被及时的读出,从而减少数据传输的延时。但是,如果出现公共存储介质单元的数据操作带宽不够的情况,就很难满足这个操作比例。这时为了避免传输流量峰值时数据丟失,往往需要先设置写操作周期优先,随着公共存储介质单元中数据水线上升到一定程度,再设置读操作周期优先。但是,这种绝对的优先设置将使得读写操作周期比例严重失衡,在数据传输初期,写入操作占主导地位,没有从公共存储介质单元读出数据,这样容易造成下游数据传输模块的闲置;在数据传输后期,读出才喿作占主导地位,这样容易造成下游数据传输模块的拥塞。
发明内容有鉴于此,本发明实施例提供一种多鴻^i:据传输的方法,用以解决现有技术中由于端口仲裁不合理造成多iMt据传输效率低的问题。本发明实施例提供的一种多路数据传输的方法,应用于多路数据传输系统中,所述多路数据传输系统包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,该方法包括根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口緩存的数据量对应的容量档位;根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位;在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口;采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。本发明实施例提供的一种多5^:据传输的系统,包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,该系统还包括端口仲裁单元,用根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口緩存的数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进^亍写入或读出^^作的端口;读写操作单元,用于采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。本发明实施例中,每次写入或读取#:作时,确定每个端口緩存数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,选择一个端口进行读或写操作,这样,可以通过等待时间片计数器的控制,在保证高容量档位的端口优先进行读或写操作同时,也为处于低容量档位的端口分配了一定的数据传输带宽。图1为现有技术多^lt据传输模型示意图2为现有技术读写操作时序示意图3为本发明实施例读写仲裁流程图4为本发明实施例端口FIFO水线图5为本发明实施例多i^it据传输流程图6为本发明实施例FPGA多鴻教据传输模型示意图7为本发明实施例FPGA读写仲裁流程图8为本发明实施例FPGA多^:据传输^^呈图9为本发明实施例非最高容量档位对应的等待时间片计数器工作流程图;图IO为本发明实施例读写操作时序示意图;图11为本发明实施例多^lt据传输系统结构图。具体实施例方式本发明实施例中,在多赠^t据传输系统中,首先需确定读或写操作周期,然后当进#^或写操作时,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,进行端口仲裁,#从仲裁的端口进行数据的传输。多路数据传输系统中包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,其中数据发送端和数据接收端都包括一个或多个端口;或者,多蹈Jt据传输系统包括多个端口,这些端口既可以是数据发送端,也可以是数据接收端。对于公共存储介质单元为片内单口随机访问存储器的多iMt据传输系统,确据每个端口緩存数据对应的容量档位,进行读写仲裁,参见图3,根据每个端口緩存数据对应的容量档位,进行读写仲裁过程包括步骤301:根据数据量与容量档位的对应关系,确定数据发送端每个端口緩存的数据量对应的容量档位。首先,获取多路数据传输系统数据发送端每个端口緩存的数据量。然后,根据设定的数据量与容量档位的对应关系,确定每个端口緩存的数据量对应的容量档位。每个端口都有緩沖区FIFO,用来存储需要进行数据传输的数据。FIFO的数据量的多少可以用容量档位来表示。这里,将FIFO中数据量划分为几个档,每个容量档位都用数据水线高^f氐来表示。如图4,端口1FIFO中数据量低于水线1,则容量档位属于第0档;端口n-lFIFO中数据量在水线1和水线2之间,则容量档位属于第1档;端口0FIFO中数据量在水线2和水线3之间,则容量档位属于第2档;端口nFIFO中数据量高于水线3之间,则容量档位属于第3档。当然数据的容量档位的划分不限于此,可以用两条水线将其划分为三档,也可以用四条水线将其划分为五档。这样,可以用水线的档位来表示端口FIFO数据量的容量档位。步骤302:确定写操作周期与读操作周期的比例值,也就是读写权值比例。获取了每个端口緩存的数据量对应的容量档位后,首先比较获取的每个端口对应的容量档位的高低,得到最高容量档位,然后根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例。这里,容量档位与读写权值比例可以——对应,如容量档位划分成5档,容量档位为0,对应的读写权值比例为1,容量档位为1,对应的读写权值比例为2,这才沐次类推,但是当容量档位为5时,则表明端口緩存数据已经很多了,必须要进行写操作了,因此,容量档位为5对应的读写权值比例为非常规制,如零,或者无穷大。步骤303:根据确定的读写权值比例,分配ii7^读或写的操作周期。当读写权值比例为N,N为正常数值时,读写仲裁结果为进行N次写操作后,执行一次读4喿作。当读写周期的比例值不是正常值,例如为零时,读写仲裁结果为,直接执行写^^作。对于公共存储介质单元为片内双口随机访问存储器的多,据传输系统,公共存储介质单元的读端口与写端口不同,不需要进行读写仲裁,其读/写操作周期也是确定。上述实施例中,已经对读或写的操作周期进行了仲裁,这样在确定了读/写操作周期的多路数据传输系统中,进行一次多路数据传输也就进行一次读或写操作,参见图5,进行一次写操作的具体过程如下步骤501:根据数据量与容量档位的对应关系,确定数据发送端中每个端口緩存的数据量对应的容量档位。首先,确定数据发送端中每个端口緩存的数据量对应的容量档位,同样可以用水线的档位来表示端口FIFO数据量的容量档位。然后,统计每个容量档位对应的端口。例如,数据发送端包括端口有1~8,根据FIFO中的水线划分,端口1对应的容量档位为3、端口2对应的容量档位为2、端口3对应的容量档位为0、端口4对应的容量档位为0、端口5对应的容量档位为2、端口6对应的容量档位为1、端口8对应的容量档位为2、端口7对应的容量档位为3;这样,容量档位0对应的端口3和端口4,容量档位1对应的端口6、容量档位2对应的端口2、5和端口8,容量档位3对应的端口l和端口7。这里,还可以统计每个容量档位对应的具有传输条件的端口。当一个端口有数据传输请求,以及该端口的下游数据接口可以接收数据,就可以确定该端口具备数据传输^f牛。例如根据FIFO中的水线划分,端口l对应的容量档位为3、端口3对应的容量档位为0、端口4对应的容量档位为0、端口6对应的容量档位为1、端口8对应的容量档位为2、端口m对应的容量档位为2,端口n对应的容量档位为3;并且具有传输条件的端口只有1、3、6、m、n。这样,容量档位0对应的具有传输条件的端口包括端口3,容量档位1对应的具有传输条件的端口包括端口6、容量档位2对应的具有传输条件的端口包括端口m,容量档位3对应的具有传输条件的端口包括端口1和端口n。步骤502:根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位。这里,判断每个容量档位对应的等待时间片计数器的值是否满足设定条件,例如判断每个容量档位对应的等待时间片计数器的值是否等于第一设定值,或者判断每个容量档位对应的等待时间片计数器的值是否在设定的阈值范围内。当等待时间片计数器的值满足设定条件时,确定该容量档位为待选容量档位。对每个容量档位都预先设置一个等待时间片计数器,其中,最高容量档位对应的等待时间片计数器的初始值为第一设定值,其他等待时间片计数器的初始值根据容量档位的降低依次增加。这里,第一设定值可以为零,或者其他值。例如,步骤501中,确定的容量档位是O、1、2、3四个容量档位,则每个档位对应设置一个等待时间片计数器,其中,容量档位3对应的等待时间片计数器的初始值可以设为零,容量档位2对应的等待时间片计数器的初始值可以设为10,容量档位1对应的等待时间片计数器的初始值可以设为50,容量档位0对应的等待时间片计数器的初始值可以设为100,当然数值大小也可以根据实际工作经验获得。这样,在进行写操作时,首先判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,当等待时间片计数器的值为第一设定值时,即表明该等待时间片计数器对应的容量档位不需要等待了,需要从该容量档位对应端口中选择一个端口进行本次写操作,因此,确定该容量档位为待选容量档位。当等待时间片计数器的值不为第一设定值时,修改该等待时间片计数器的值,这里,可以将该等待时间片计数器的值减去第二设定值,其中,第二设定值可以为1,5、10等等任意值。这里,计数器的值不为零,则表明该容量档位还需等待,因此,还不需要从该容量档位对应的端口进行本次写操作。当然,本实施例中,对每个容量档位都预先设置一个等待时间片计数器后,还可以将最高容量档位对应的等待时间片计数器的初始值为第一设定值,其他等待时间片计数器的初始值根据容量档位的降低依次降低。这样,当进行写才喿作时,首先判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,当等待时间片计数器的值为第-"i殳定值时,确定该容量档位为待选容量档位。当等待时间片计数器的值不为第一设定值时,修改该等待时间片计数器的值,这里,可以将该等待时间片计数器的值加上第三设定值,第三设定值可以为1,3、10等等任意值。还可以对每个容量档位都预先设置一个等待时间片计数器,其最高档位对应的等待时间片计数器的值在设定的阔值范围内即可。例如四个容量档位,从高到低其初始值分别为5、20、50、100。其设定的阈值范围为0~10,开始时,5大于等于零,小于等于IO,则在阈值范围为010之间,则最高容量档位,也就是容量档位3为待选容量档位,其他容量档位都大于IO,因此,将其他容量档位对应的等待时间片计数器的值减去第二设定值,这里可以为4。经过三次等待后,容量档位2对应的等待时间片计数器的值为8,在阈值范围为0~10之间,则容量档位2也是待选容量档位。步骤503:^M4寺选容量档位中,确定优先级最高的容量档位。根据对等待时间片计数器的初始设置,可以确定待选容量档位至少包括最高容量档位。例如步骤501中确定了最高容量档位为容量档位3,其对应的等待时间片计数器初始值就为第一设定值,因此,步骤502中可以确定容量档位3为待选容量档位。当然,其他容量档位对应的等待时间片计数器的值为第一设定值时,也将该容量档位确定为待选容量档位。这样,待选容量档位有可能是容量档位3、1;或者是容量档位3、1,0等等。因此,首先判断待选容量档位是否只包括最高容量档位,如果是,则确定最高容量档位为优先级最高的容量档位;否则,将除最高容量档位以外的其他容量档位进行比较,确定高容量档位为优先级最高的容量档位。例如待选容量档位是容量档位3时,确定容量档位3为优先级最高的容量档位;待选容量档位是容量档位3、1时,确定容量档位1为优先级最高的容量档位;待选容量档位是容量档位3、1、0时,确定容量档位l为优先级最高的容量档位。步骤504:从优先级最高的容量档位对应的端口中选择一个端口为写端口。若步骤501中统计的是每个容量档位对应的端口,则,还首先需确定优先级最高的容量档位对应的端口是否具有传输条件,然后从优先级最高的容量档位对应的具有传输条件的端口中选择一个端口为写端口;若步骤501中直接统计的是每个容量档位对应的具备有传输条件的端口,则只需从优先级最高的容量档位对应的具有传输条件的端口中选择一个端口为写端口。因此,优先级最高的容量档位对应的具有传输条件的端口可以是零个、一个,也可以是多个。确定优先级最高的容量档位对应的具有传输条件的端口的个数,当个ibl—个时,确定该端口为写端口。当个数大于一个时,可以在优先级最高的容量档位对应的具有传输条件的端口中随才/^择一个端口,确定该端口为写端口;还可以采用轮询的方法选择一个端口,确定该端口为写端口。例如当优先级最高的容量档位为容量档位3时,其对应具有传输条件的端口1和端口n。则本次写才喿作从端口1进行,若下次确定的优先级最高的容量档位仍为容量档位3时,则本次写操作从端口n进行。当优先级最高的容量档位为容量档位1时,其对应的端口6。则本次写操作从端口6进行。当优先级最高的容量档位对应的具有传输条件的端口的个M零个时,则没有端口可以进行写操作,需进行下一次的端口仲裁判断,即ii^下一次的写操作。步骤505:采用确定的端口向所述公共存储介质单元写入数据。这里,也就是从确定的端口进行数据的传输。步骤506:将优先级最高的容量档位对应的等待时间片计数器的值修改为初始值。已经确定了该容量档位对应的一个端口为写操作端口,并从确定的端口进行写操作后,将该容量档位对应的等待时间片计数器的值修改为初始值,这样为下一次端口仲裁做好准备。根据上述方法,同样可以在确定了读/写操作周期的多路数据传输系统中,进4t^操作,具体过程包括根据数据量与容量档位的对应关系,确定数据接收端中每个端口緩存的数据量对应的容量档位;根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进行读出操作的端口,采用确定的端口从所述公共存储介质单元读出数据。其中,确定待选容量档位包括判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,其中所述第一设定值为最高容量档位对应的等待时间片计数器的初始值;当等待时间片计数器的值为第一设定值时,确定所述等待时间片计数器对应的容量档位为待选容量档位。当然,若等待时间片计数器的值不为第一设定值时,修改所述等待时间片计数器的值,这里可以按照设定值递增或递减所述等待时间片计数器的值。确定待选容量档位还包括判断每个容量档位对应的等待时间片计数器的值是否在设定的阈值范围内,当等待时间片计数器的值在确定范围内时,确定所述等待时间片计数器对应的容量档位为待选容量档位。在所述待选容量档位对应的端口中,确定进行读出操作的端口包括判断所述待选容量档位是否只包括最高容量档位;当所述待选容量档位只包括最高容量档位时,确定所述最高容量档位为优先级最高的容量档位;当所述待选容量档位包括最高容量档位和其他容量档位时,比较所述其他容量档位的高低,确定高容量档位为优先级最高的容量档位;从所述优先级最高的容量档位对应的端口中选择一个端口为读端口。而从所述优先级最高的容量档位对应的端口中选择一个端口为读端口包括确定所述优先级最高的容量档位对应的具有传输条件的端口的个数;当所述优先级最高的容量档位对应的具有传输条件的端口只有一个时,确定该端口为读或写端口;当所述优先级最高的容量档位对应的具有传输条件的端口包括至少两个时,采用轮询的方法选择一个端口,确定该端口为读端口,或者随才;uit择一个端口为读端口。当然,从所述公共存储介质单元读出数据之后,还需将所述优先级最高的容量档位对应的等待时间片计数器的值修改为初始值。由此可见,本发明实施例中,从数据发送端中,确定向公共存储介质单元写入数据的端口的方法,与从数据接收端中,确定从公共存储^h质单元读出数据的端口的方法是一致。下面以FPGA中的多路数据传输为例作进一步详细描述,本实施例中,容量档位用数据水线信号表示,等待时间片计数器的初始值随着档位的降低依次增加,且的第一设定值为零。参见图6:FPGA中,多^lt据传输模型包括数据发送端100、数据接收端200、公共存储介质单元300、读写仲裁单元400、写入端口仲裁单元500、读出端口仲裁单元600和读写才喿作单元700。其中,数据发送端IOO,包括端口0N-l的N个緩存UFIFO,用于向读写仲裁单元400和写入端口仲裁单元500发送每个端口的数据水线信号,以及写入操作请求信号,并在读写操作单元700的控制下向公共存储介质单元300写入数据。其中,数据水线信号,以及写入操作请求信号分别用Ing_wmark[N][3:0]],Ing—req[N-l:O]表示。数据接收端200,包括端口0~N-l的N个緩存DFIFO,用于向读出端口仲裁单元600发送每个端口的读出探针信号,并在读写操作单元700的控制下从公共存储介质单元300读出数据。其中,读出探针信号可以用Egr一strobe[N-l:O]表示o公共存储介质单元300,用于存储数据,并向写入端口仲裁单元500发送写入探针信号,向读出端口仲裁单元600发送公共存储介质单元的水线信号,以及向读写仲裁单元400和读出端口仲裁单元600发送公共存储介质单元的读出操作请求信号。其中,写入探针信号,公共存储介质单元的水线信号,读出操作请求信号可分别用Ing—strobe[N-l:O],Egr—糧ark[N][3:0],Egr—req[N-l:O]表示。读写仲裁单元400,用于根据接收到的数据发送端口的数据水线信号、写入操作请求信号,读出操作请求信号,获得读写仲裁单元结果,并发送给读写操作单元700。其中,读写仲裁单元结果包括写入操作命令信号、读出操作命4M言号,分另'j用Ing_write,Egr一read表示。写入端口仲裁单元500,用于根据接收到的发送端口的数据水线信号、写入操作请求信号、写入探针信号,以及写入端口仲裁单元请求信号,输出写入端口仲裁单元结果,即确定向公共存储介质单元300中写入数据的端口,可用Ingjort[N画l:0]表示。读出端口仲裁单元600,用于根据接收到的公共存储介质单元的数据水线信号、公共存储介质单元的读出操作请求信号,读出探针信号,以及读出端口仲裁单元请求信号,输出读出端口仲裁单元结果,即确定从公共存储介质单元300中读出数据的端口可用Egrjort[N-l:0]表示。读写操作单元700,用过根据接收的读写仲裁单元结果,向写入端口仲裁单元500发起写入端口仲裁单元请求信号,或向读出端口仲裁单元600发起读出端口仲裁单元请求信号,并根据写入端口仲裁单元500输出的写入端口仲裁单元结果,向公共存储介质单元300写入数据,根据读出端口仲裁单元600输出的读出端口仲裁单元结果,从公共存储介质单元300读出数据。其中,写入端口仲裁单元请求信号,读出端口仲裁单元请求信号可以用Ing^grant,Egr^grant表示。本实施例多*据传输模型中的接口信号具体参见表1。在上述多路传输模型中,结合接口信号,多路数据传输中读写仲裁过程如下,参见图7:步骤701:读写仲裁单元400判断写入操作请求信号和读出操作请求信号的状态,当只有写入操作请求信号时,进行步骤707,当只有读出操作请求信号时,进行步骤708,当写入操作请求信和读出操作请求信号都有时,执行步骤702。这里,当Ing—req[N-l:O]NO,且Egr—req[N-l:0]=0时,执行步骤707;当Ing—req[N-l:0]=0,且Egr—req[N-l:0]=l时,执行步骤708;当Ing—req[N-l:0]!=0,<table>tableseeoriginaldocumentpage18</column></row><table>表l步骤702:根据数据发送端的每个端口UFIFO数据量对应的容量档位,确定写操作周期与读操作周期的比例值,并将记录的写入次数清零。这里,首先获取数据发送端的每个端口UFIFO数据量对应的容量档位,确定最高容量档位,然后,根据保存的容量档位与读写权值比例的对应关系,确定该最高容量档位对应的读写权值比例。具体过程如下UFIFO数据的容量档位可用UFIFO水线信号表示,UFIFO的水线信号为Ing—wmark[N-l][3:0],计算各个UFIFO中的最高水线Max—wmark[3:0],如公式(l):Ing一wmark[N-l][3:0]的位宽为4,这样,Maxwmark[3]为高电平表示写操作请求最为紧迫;Maxwmark[O]为高电平表示写操作请求最不紧迫。UFIFO的水线信号Ing一wmark[N-l][3:0]与读写权值比例的对应关系,如表2所示Ing—wmark[N-l]网]读写柏J直比例(N)4'b000114'b00102楊ioo34'b画0(写操作优先)表2这样,当Max—wmark[3:0]为Max—wmark[O]时,读写4又值比例为1,当Max—wmark[3:0]为Max—wmark[l]时,读写4又值比例为2,当Max—wmark[3:0]为Max-wmark[2]时,读写4又值比例为3,当Max—wmark[3:0]为Max—wmark[3]时,写操作请求非常紧迫,必须进行写操作了,因此,对应的读写权值比例为非常规值,这里,读写4又值比例可以用0标识。写入次数可以用写入指针WC来表示,这里将WC清零,即\^>0。步骤703:判断读写权值比例是否为0,当不为0时,执行步骤704,否贝'J,执行步骤707;步骤704:启动写入才喿作,并且递加写入次数。也就是读写仲裁单元输出Ing_write=l,Egr_read=0,WC=WC+1。这样进行写入操作周期后,执行数据写入公共存储介质单元的过程。步骤705:判断写入操作请求信号的状态,当有写入操作请求信号时,进行步骤706,否则执行步骤708。这里,Ing_req[N-l:0]!=0,有写入操作请求,即执行步骤706,否则执行步骤708,即没有了写入操作请求了,这样进行读出操作周期。步骤706:判断WC是否等于N,当WC-N时,执行步骤708,否则执行步骤704。当WC-N时,写入才喿作结束,进4t^出^^作过禾呈,否则继续进4亍写7^操200910135508步骤707:启动一次写入操作,即读写仲裁单元输出Ing—write=l,Egr—read=0,本次写入操作完成后,返回步骤701,进行新的一轮读写仲裁单元。步骤708:启动一次读出操作,即读写仲裁单元输出Ing—write=0,Egr_read=l,本次读出操作完成后,返回步骤701,进行新的一轮读写仲裁单元。步骤704和步骤707中,启动写入操作后,写入端口仲裁单元500还需要判断从具体向公共存储介质单元300中写入数据的端口,从而根据确定后的端口进行写入操作;步骤708中,启动读出操作后,读出端口仲裁单元600还需判断从具体从公共存储介质单元300中读出数据的端口,从而根据确定后的端口进^f^出操作。本发明实施例中,写入端口仲裁单元500确定数据发送端100中,向公共存储介质单元300中写入数据的端口的端口仲裁方法,与读出端口仲裁单元600确定数据接收端200中,从公共存储介质单元300中读出数据的端口的端口仲裁方法可以是同一个端口仲裁方法,因此,可将写入端口仲裁单元500与读出端口仲裁单元600合为一算法模块,即端口仲裁单元,则Ing_grant和Egr^grant统一为arb^grant,为读写端口仲裁单元请求信号;Ing—req和Egr—req统一为arb一req,为读写操作请求信号;Ing—wmark和Egr一wmark统一为arb一wmark,为读写端口^t据水线4言号;Ing_strobe和Egr一strobe统一为arb_strobe,为读写探针信号;Ing_port和Egr_port统一为arb_port,为读写仲裁单元结果。在确定了读/写操作周期的多路数据传输系统,参见图8,多踪教据传输的过程如下步骤801:获取每个端口FIFO数据量的容量档位,并统计每个容量档位对应的端口。端口FIFO的数据量的容量档位可用端口的数据水线arb—wmark[N][3:0]表示,本实施例中arb—wmark[N][3:0]位宽为4,即可以将端口的容量档位分为4档,分别对应arLwmark[n][3:0]中的各位。如果arb一wmark[n][3]为高电平,则表示端口n对应的容量档位属于第3档位;如果arb一wmark[n][O]为高电平,表示端口n对应的容量档位属于第O档位。其中,第3档位高于第2档位,第2档位高于第1档位,第1档位高于第0档位。将获取的端口的水线向量arb一wmark[N-l][3:0]记做wmark[N-l][3:0],并整理为式(2):那么式(2)中的IwmarkOIwmark3向量就表示四个水线档位上,各有那些端一画a考][O]wwarA[l][O]….'w/w"r《iV-i][o]wwar趕O][l]……H7warA[7V-■w歸rA[1][2]……w附^A[iV"-1〗[2]Hvw"rA[1][3]……wwarA[A^-腦例如/丽^0=就表示第o档位上有第1、3和4端口。步骤802:确定每个容量档位上,具备数据传输条件的待响应端口。当数据传输过程中,第n个端口有数据传输请求,以及该端口的下游数据接口可以接收数据,就可以确定该端口具备数据传输条件。这里,当Ing一strobe[n]和Ingjeq[n]都为高电平时,则端口n具备数据传输条件。根据步骤801中获得的Iwmark,确定每个容量档位上,具备数据传输条件的待响应端口的计算过程如下将Ing_strobe[N-l:0]和Ing—req[N-l:O]记做strobe[N誦l:0]和req[N誦l:0],并按公式(3)做如下处理/w附artl*5加6ere《TW/warWre《(3)那么CwmarkM[N-l:0]表示在第M档位上,有那些端口为H了传输务降的端口,即可能被仲裁为响应端口。例如c謂^3-就表示第3档位上有第i、3和4端口可能会被仲裁为响应端口,即第3档位上的第1、3和4端口为第3档位上的待响应端口。步骤803:根据每个容量档位中的待响应端口,以及每个容量档位对应的等待时间片计数器的值是否为零,确定优先级最高的容量档位。本实施例上述步骤中,确定了容量档位具体为那几档,则为每个容量档位都设定一个等待时间片计数器,然后根据每个容量档位对应的等待时间片计数器的值是否为零,确定待选容量档位,从待选容量档位中,确定优先级最高的容量档位。这里,在读写端口仲裁单元请求信号arb_grant的驱动下,根据步骤802计算获得的向量CwmarkM[N-l:O],以M得的读写仲裁单元结果arb_port,进行各个档位的等待时间片计数器的计数,当等待时间片计数器的值为零时,得到待选信号arb—can[3:0],然后对arb—can[3:0]进行计算,得到优先级信号arb_pri[3:0]。最后根据arlu)ri[3:0],确定优先级最高的容量档位。例如,第2档位由于等待时间片用完,其优先级被提为最高,也就是ariu)ri[2]为高电平,则提取Cwmrak2[N國1:0],记做S丽ark[N画1:0]。步骤804:采用流水线轮询的方法,在优先级最高的容量档位的待响应端口中,确定进行数据传输的端口。若步骤803中确定的优先级最高的容量档位的待响应端口只有一个,那就确定该端口为响应端口,进行数据的传输,若步骤803中确定的优先级最高的容量档位的待响应端口不止一个,则采用轮询的方法选择响应端口,进行数据的传输。例如,优先级最高的容量档位为第2档位,有两个端口第n端口和第m端口,如果上次仲裁的结果为第n端口。数次仲裁操作过后,该档位又变为优先级最高的容量档位,那么本次仲裁操作的结果为第m端口。具体的计算过程如公式(4)所示若上次的仲裁结果为wport[N-l:O],做如下处理vv/w《iV"-1]w/w7—3]w/or/[iV"—2]w/w,—2]wjcw/[iV—1](4)从式(4)可见RwportM[N-l:O]向量是端口号向量wport[N-l:0]左移M位得到的。最后,做如公式(5)所示的矩阵乘法处理Gw/wW[iV-1:0]=ifw/oWx[5WjflrA:]。将Swmark[N-l:O]与Rwport的各个子向量进4亍矩阵乘,得到Gwport[N-l:O]。从O到N-l依次扫描Gwport[N-l:O]的各值,找到第一个非零的值,记下其序号M,则RwportM就是仲裁结果,其中非零项所对应的端口就是响应端口。步骤805:从确定的端口进行读或写操作。本实施例中,根据步骤803可知,需为每个端口緩存的数据量对应的容量档位设置对应的等待时间片计数器,这里,数据水线划分为4个档位,每个档位都设定一个等待时间片计数器,其初始值随着档位的降^f氐,依次增加,即最高档位对应的等待时间片计数器的初始值最小,最^4当位对应的等待时间片计数器的初始值最大。这里,当每个容量档位都存在时,其时间片计数器的初始值分别为第3档位对应的值为0,第2档位对应的值为10,第1档位对应的值为40,第0档位对应的值为100;若没有第3档位,则第2档位为最高档位,对应的值为O,第1档位对应的值为10,第0档位对应的值为40,具体时间片计数器的初始值的默认设置如表3。从表3可以看出,各个档位的时间片计数器初始值设置根据向量Cwmark的各个子向量(Cwmark3到CwmarkO)是否为0,按照0、10、40和100的顺序依次进行设置。两种情况下,这种初始值的设置操作将会发生一是向量Cwmark的各个子向量发生从零向量到非零向量之间的转换;一是某档位的时间片计数器通过减法计算变为零,并且端口仲裁单元的结果为该档位上的某个端口。设置完每个容量档位对应的等待时间片计数器后,首先根据每个容量档位对应的等待时间片计数器的值是否为零,确定待选容量档位,然后从待选容量档位中,确定优先级最高的容量档位。确定待选容量档位的过程包括当等待时间片计数器值为零时,确定该等待时间片计数器对应的容量档位为待选容量档位。根据上述设置可知,最高容量档位对应的时间计算器的初值为零,因此,最高容量档位的时间片计数器固定为零,因此最高容量档位为待选容量档位,其对应的待选信号arb—canM为高电平(第M档位为最高档位)。<table>tableseeoriginaldocumentpage24</column></row><table>表3对于非最高容量档位,根据该非最高容量档位对应的等待时间片计数器工作过程,确定其是否为待选容量档位,工作流程参见图9,具体过程如下步骤901:是否有读写端口仲裁单元请求信号,当有时才开始启动端口仲裁单元,执行步骤902;否则流程结束。这里,arb_grant=l时,执行步骤902,否则流程结束。步骤902:判断每个容量档位对应的等待时间片计数器的值是否为零,并判断正在进行数据传输的端口是否也属于当前档位,即arb一count[M]是否等于-0,其中M为O、1、2或3,同时arbj30rt是否属于M档位。当artLCount[M]不等于零时,且arb_port不属于M档位,执行步骤903;当arb一count[M]等于零时,且arb_port属于M档位时,执行步骤906;当arb_count[M]等于零时,且arbjort不属于M档位时,执行步骤905。步骤903:对值不为零的等待时间片计数器的值减1,即将arb—count[M]减1。步骤904:判断数值变化后的等待时间片计数器的值是否为零,即arb—count[M]是否等于零,当不等于零时,则该容量档位还需等待,返回步骤901,否则该容量档位不需等待,执行步骤905。步骤905:确定该容量档位为待选容量档位,即输出待选信号arb一can[M]-l。并返回步骤901,进行新一轮的等待等待时间片计数器的计数。步骤906:确定该容量档位不是待选容量档位,即输出arb_can[M]=0,将该等待时间片计数器的值设置为初始值,即arb一count[M]-初始值。执行完后返回步骤901,进行新一轮的等待等待时间片计数器的计数。确定待选容量档位之后,从待选容量档位中,确定优先级最高的容量档位。这里,如果只有一个容量档位对应的arb_count[M]=0,arb—can[M]=l,则该斜当位为优先级最高的容量档位,因此,输出优先级信号arb_pri[M]=l;如果不止一个容量档位对应的arb—count[M]=0,arb—can[M]=l,则可以设置一个优先原则,包括1、除了最高容量档位外,如果还存在其他一个容量档位的时间片计数器的值为0,那么该容量档位为优先级最高的容量档位,例如arb_count[3]=0,且arb_count[l]=0,则arb_pri[l]=l,即确定容量档位1为优先级最高的容量档位。2、除了最高档位外,如果还存在其他两个或者两个以上的容量档位的时间片计数器的值为O,那么其他容量档位中,容量档位较高的容量档位为优先级最高的容量档位。例如,arb—count[2]=0,且arb_count=0,那么arb_pri[2]=l,即确定容量档位2为优先级最高的容量档位。本实施例中,确定优先级信号的具体计算过程参见公式(6):<formula>formulaseeoriginaldocumentpage25</formula>—戸'[O]=!ar6—c朋2&&!ar6—ami&—om0这里,容量档位3为最高容量档位,若另一实施例中容量档位2为最高容量档位时,则公式(6)中就不需要计算w6—戶'[3]了,只需从w6—;n'[2]开始就就可以了,依次类推。本实施例中,端口仲裁方法的实现过程时序参见图10,这里,水线信号采用实时输入,同时arbjx)rt[N-l:0]也是实时反馈,这样当有arb^grant信号脉冲时,就可以直接获得仲裁结果arbjort[N-l:0],并且,根据仲裁结果进行数据的传输,以及进行新一轮仲裁才喿作,这样,在下一次数据传输之前,仲裁才喿作已完成,因此,仲裁操作和数据操作是并行的,从信号输入到仲裁结果输出,只需要4个操作时钟周期的延时,而且随着端口数目的增加,其运算周期并不随着增加。上述实施例描述的FPGA中多路数据传输,读写仲裁还可以采用固定比例读写仲裁或写操作优先读写仲裁。或者,步骤804中采用随机的方法从优先级最高的容量档位的待响应端口中,确定一个进行数据传输的端口。上述实施例描述了FPGA中多路数据传输,该方法也适应于CPLD、ASIC等芯片内部的多i^lt据传输,对于存在独立的片外存^i殳备的多i^t据处理系统也可以利用上述方法进行数据传输,例如以太网交换机中的数据帧交换,数据帧緩存和数据帧统计;图像信号处理系统中的多路图像緩存、处理和传输。独立的片外存储设备可以包括DDR2、Sdram、电子硬盘、片内双口随机访问存储器(DPRAM,DoublePortRandom-AccessMemory)等等。当独立的片外存^i殳备为DPRAM时,不需要进行读写仲裁,只需要如上述所述方法进行端口仲裁。根据上述多路数据传输的方法,可以构建一种多鴻^t据传输的系统,包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,参见图11,该系统还包括端口仲裁单元100和读写操作单元200,其中,端口仲裁单元ioo,用于根据数据量与容量档位的对应关系,确定数据发送端或数据接收端中每个端口緩存的数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口。读写操作单元200,用于采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。进一步,端口仲裁单元100包括设定值判断子单元110,待选容量档位子单元120。设定值判断子单元110,用于判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,其中,最高容量档位对应的等待时间片计数器的初始值为第—殳定值。待选容量档位子单元120,用于当等待时间片计数器的值为第"-i殳定值时,确定所述等待时间片计数器对应的容量档位为待选容量档位。端口仲裁单元100还包括修改子单元130,用于当等待时间片计数器的值不为第一设定值时,修改所述等待时间片计数器的值。端口仲裁单元100包括档位判断子单元140,第一优先级确定子单元150,第二优先级确定子单元160和端口选择子单元170。档位判断子单元140,用于判断所述待选容量档位是否只包括最高容量档位。第一优先级确定子单元150,用于当所述待选容量档位只包括最高容量档位时,确定所述最高容量档位为优先级最高的容量档位。第二优先级确定子单元160,用于当所述待选容量档位包括最高容量档位和其他容量档位时,比4交所述其他容量档位的高低,确定高容量档位为优先级最高的容量档4立。端口选择子单元170,用于从所述优先级最高的容量档位对应的端口中选择一个端口为写或读端口。端口选择子单元170首先确定所述优先级最高的容量档位对应的具有传输条件的端口个数,当所述优先级最高的容量档位对应的具有传输条件的端口只有一个时,确定该端口为写或读端口,当所述优先级最高的容量档位对应的具有传输务f牛的端口包括至少两个时,采用轮询的方法或者随4几的方法选择一个端口为写或读端口。该多路数据传输的系统还包括读写仲裁单元300。读写仲裁单元300,用于根据数据量与容量档位的对应关系,确定数据发送端每个端口緩存的数据量对应的容量档位,根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例,根据所述读写比例值分配iiX读或写的操作周期.进一步,读写仲裁单元300包括确定子单元310,读写权值比例子单元320和分配子单元330。确定子单元310,用于才艮据数据量与容量档位的对应关系,确定数据发送端每个端口緩存的数据量对应的容量档位。读写权值比例子单元320,用于根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例。分配子单元330,用于根据所述读写权值比例,分配ii7v读或写的操作周期。综上所述,本发明实施例中,根据每个容量档位对应的等待时间片计数器的值是否为零,进行端口仲裁,通过采用矩阵运算的方法,在状态信号输入后,经过4个时钟周期的运算,就可以得到端口仲裁结果。而且随着端口数目的增加,运算周期并没有相应增加。采用优先级轮转和等待等待时间片计数器计数的方式进行端口仲裁,这样高水线的端口优先响应,相同水线的端口轮转响应;低水线的端口通过等待时间片计数器计数,也能保证一定的数据传输带宽。并且本实施例中,根据数据输入端的水线高低,动态调整读写^^作周期的比例,从而既保证了输入数据不丢失,又能均衡实现读写操作。本实施例所述的方法的运算量较大,但是流水操作分歉了这些运算量,减少了从寄存器到寄存器的延时。因此在较低速度级的中低端FPGA芯片中也容易布局布线。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。权利要求1、一种多路数据传输的方法,应用于多路数据传输系统中,所述多路数据传输系统包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,其特征在于,该方法包括根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位;根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位;在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口;采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。2、如权利要求1所述的方法,其特征在于,所述确定所述数据发送端或数据接收端中每个端口緩存的数据量对应的容量档位之前,所述方法还包括根据数据量与容量档位的对应关系,确定所述数据发送端每个端口緩存的数据量对应的容量档位;根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例;才艮据所述读写比例值分配ii^读或写的操作周期。3、如权利要求1所述的方法,其特征在于,所述确定待选容量档位包括判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,其中所述第一设定值为最高容量档位对应的等待时间片计数器的初始值;当等待时间片计数器的值为第""i殳定值时,确定所述等待时间片计数器对应的容量档位为待选容量档位。4、如权利要求3所述的方法,其特征在于,该方法还包括当等待时间片计数器的值不为第一设定值时,修文所述等待时间片计数器的值。5、如权利要求1所述的方法,其特征在于,在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口包括判断所述待选容量档位是否只包括最高容量档位;当所述待选容量档位只包括最高容量档位时,确定所述最高容量档位为优先级最高的容量档位;当所述待选容量档位包括最高容量档位和其他容量档位时,比较所述其他容量档位的高低,确定高容量档位为优先级最高的容量档位;从所述优先级最高的容量档位对应的端口中选择一个端口为写或读端口。6、如权利要求5所述的方法,其特征在于,从所述优先级最高的容量档位对应的端口中选择一个端口为写或读端口包括确定所述优先级最高的容量档位对应的具有传输条件的端口的个数;当所述优先级最高的容量档位对应的具有传输条件的端口只有一个时,确定该端口为读或写端口;当所述优先级最高的容量档位对应的具有传输条件的端口包括至少两个时,采用轮询的方法i4择一个端口,确定该端口为写或读端口。7、如权利要求6所述的方法,其特征在于,所述釆用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据之后,将所述优先级最高的容量档位对应的等待时间片计数器的值修改为初始值。8、一种多据传输的系统,包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,其特征在于,还包括端口仲裁单元,用于根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口緩存的数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进4亍写入或读出才喿作的端口;读写操作单元,用于采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。9、如权利要求8所述的系统,其特征在于,所述系统还包括读写仲裁单元,用于根据数据量与容量档位的对应关系,确定所述数据发送端每个端口緩存的数据量对应的容量档位,根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例,根据所述读写比例值分配^读或写的操作周期。10、如权利要求8所述的系统,其特征在于,所述端口仲裁单元包括设定值判断子单元,用于判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,其中所述第""i殳定值为最高容量档位对应的等待时间片计数器的初始值;待选容量档位子单元,用于当等待时间片计数器的值为第一设定值时,确定所述等待时间片计数器对应的容量档位为待选容量档位。11、如权利要求IO所述的系统,其特征在于,所述端口仲裁单元还包括修改子单元,用于当等待时间片计数器的值不为第一设定值时,修改所述等待时间片计数器的值。12、如权利要求8所述的系统,其特征在于,所述端口仲裁单元包括档位判断子单元,用于判断所述待选容量档位是否只包括最高容量档位;第一优先级确定子单元,用于当所述待选容量档位只包括最高容量档位时,确定所述最高容量档位为优先级最高的容量档位;第二优先级确定子单元,用于当所述待选容量档位包括最高容量档位和其他容量档位时,比较所述其他容量档位的高低,确定高容量档位为优先级最高的容量档位;端口选择子单元,用于从所述优先级最高的容量档位对应的端口中选择一个端口为写或读端口。13、如权利要求12所述的系统,其特征在于,所述端口选择子单元包括端口确定模块,用于确定所述优先级最高的容量档位对应的具有传输条件的端口个数;第一端口确定模块,用于当所述优先级最高的容量档位对应的具有传输^f牛的端口只有一个时,确定该端口为写或读端口;第二端口确定模块,用于当所述优先级最高的容量档位对应的具有传输^f牛的端口包括至少两个时,采用轮询的方法选择一个端口为写或读端口。全文摘要本发明公开了一种多路数据传输的方法,用以解决现有技术中由于端口仲裁不合理造成多路数据传输效率低的问题,该方法应用于多路数据传输系统中,所述多路数据传输系统包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,该方法包括根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口,从确定的端口进行数据写入或读取。本发明还公开了一种多路数据传输的系统。文档编号G06F3/06GK101520714SQ200910135508公开日2009年9月2日申请日期2009年4月17日优先权日2009年4月17日发明者彭鼎祥申请人:福建星网锐捷网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1