CN101520714A - 一种多路数据传输的方法及系统 - Google Patents

一种多路数据传输的方法及系统 Download PDF

Info

Publication number
CN101520714A
CN101520714A CN200910135508A CN200910135508A CN101520714A CN 101520714 A CN101520714 A CN 101520714A CN 200910135508 A CN200910135508 A CN 200910135508A CN 200910135508 A CN200910135508 A CN 200910135508A CN 101520714 A CN101520714 A CN 101520714A
Authority
CN
China
Prior art keywords
port
gear
capacity
capacity gear
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910135508A
Other languages
English (en)
Other versions
CN101520714B (zh
Inventor
彭鼎祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ruijie Networks Co Ltd
Original Assignee
Fujian Star Net Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CN2009101355081A priority Critical patent/CN101520714B/zh
Publication of CN101520714A publication Critical patent/CN101520714A/zh
Application granted granted Critical
Publication of CN101520714B publication Critical patent/CN101520714B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

本发明公开了一种多路数据传输的方法,用以解决现有技术中由于端口仲裁不合理造成多路数据传输效率低的问题,该方法应用于多路数据传输系统中,所述多路数据传输系统包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,该方法包括:根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口,从确定的端口进行数据写入或读取。本发明还公开了一种多路数据传输的系统。

Description

一种多路数据传输的方法及系统
技术领域
本发明涉及数据传输领域,尤其涉及一种多路数据传输的方法及系统。
背景技术
随着数字技术的发展,设计和生产了越来越多的大规模集成电路,例如:现场可编程门阵列(Field Programmable Gate Array,FPGA)、复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、以及专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)等等。利用这些大规模集成电路可以组成多路数据处理系统,进行多路数据的传输,例如以太网交换机中的数据帧交换、数据帧缓存和数据帧统计;图像信号处理系统中的多路图像缓存、处理和传输等等。
参见图1,多路数据的传输模型包括:数据发送端100、数据接收端200、公共存储介质单元300、读写仲裁单元400、写入端口仲裁单元500和读出端口仲裁单元600。其中,数据发送端100包括多个端口,数据接收端200包括多个端口。这样,多路数据传输的过程包括:读写仲裁单元400接到数据发送端100至少一个端口发起的写入请求和/或数据接收端200至少一个端口发起的读出请求后,判断是进入写操作周期,还是读操作周期;当进入写操作周期时,写入端口仲裁单元500确定数据发送端100中,向公共存储介质单元300中写入数据的端口,然后根据确定的端口向公共存储介质单元300中写入数据;当进入读操作周期时,读出端口仲裁单元600确定数据接收端200中,从公共存储介质单元300中读出数据的端口,然后根据确定的端口从公共存储介质单元300中读出数据。
目前,当读写仲裁单元400同时接到写入请求和读出请求时,判断是进入写操作周期,还是读操作周期的读写仲裁方法包括:固定比例读写仲裁和写操作优先读写仲裁。所述固定比例读写仲裁是指读操作周期和写操作周期呈一固定比例。例如1:1,1:2,3:2等等。所述写操作优先读写仲裁是指写操作请求比读操作请求优先级更高,那么如果同时有读写操作请求,则优先响应写操作请求,从而确保传输数据能及时写入公共存储介质单元300。
数据发送端100和数据接收端200中的各个端口内都有缓存区FIFO,存储需要进行传输的数据,因此,写入端口仲裁单元500确定数据发送端100中,向公共存储介质单元300中写入数据的端口,以及读出端口仲裁单元600确定数据接收端200中,从公共存储介质单元300中读出数据的端口的端口仲裁方法包括:根据每个端口FIFO中的数据水线进行仲裁,其中,数据水线是存储单元中数据量多少的参数,这样,从FIFO中数据水线最高的端口进行数据传输。
但是,目前多路数据传输的过程中读写仲裁方法以及端口仲裁方法还存在以下不足之处:
1、如图2,仲裁操作与数据读写操作串行。这种情况下,每次数据读写操作之前都进行一次端口仲裁操作,那么无疑将占用公共存储介质单元的数据带宽。如果仲裁操作周期过多,那么必将使得公共存储介质单元的带宽利用率大大降低。
2、各路的数据流量不均衡将会导致各个端口内缓存FIFO的数据水线不同。如果单纯的通过以数据水线高低来进行端口仲裁单元,那么数据流量较小的端口,由于其内部FIFO的数据水线较低,将长时间不能进行数据传输。这在多路数据传输中明显是不合理的。
3、理想情况下,读写操作周期应该是均衡的,采用固定比例1∶1进行读写仲裁单元,这样写入公共存储介质单元的数据才能被及时的读出,从而减少数据传输的延时。
但是,如果出现公共存储介质单元的数据操作带宽不够的情况,就很难满足这个操作比例。这时为了避免传输流量峰值时数据丢失,往往需要先设置写操作周期优先,随着公共存储介质单元中数据水线上升到一定程度,再设置读操作周期优先。但是,这种绝对的优先设置将使得读写操作周期比例严重失衡,在数据传输初期,写入操作占主导地位,没有从公共存储介质单元读出数据,这样容易造成下游数据传输模块的闲置;在数据传输后期,读出操作占主导地位,这样容易造成下游数据传输模块的拥塞。
发明内容
有鉴于此,本发明实施例提供一种多路数据传输的方法,用以解决现有技术中由于端口仲裁不合理造成多路数据传输效率低的问题。
本发明实施例提供的一种多路数据传输的方法,应用于多路数据传输系统中,所述多路数据传输系统包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,该方法包括:
根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位;
根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位;
在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口;
采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。
本发明实施例提供的一种多路数据传输的系统,包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,该系统还包括:
端口仲裁单元,用根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口;
读写操作单元,用于采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。
本发明实施例中,每次写入或读取操作时,确定每个端口缓存数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,选择一个端口进行读或写操作,这样,可以通过等待时间片计数器的控制,在保证高容量档位的端口优先进行读或写操作同时,也为处于低容量档位的端口分配了一定的数据传输带宽。
附图说明
图1为现有技术多路数据传输模型示意图;
图2为现有技术读写操作时序示意图;
图3为本发明实施例读写仲裁流程图;
图4为本发明实施例端口FIFO水线图;
图5为本发明实施例多路数据传输流程图;
图6为本发明实施例FPGA多路数据传输模型示意图;
图7为本发明实施例FPGA读写仲裁流程图;
图8为本发明实施例FPGA多路数据传输流程图;
图9为本发明实施例非最高容量档位对应的等待时间片计数器工作流程图;
图10为本发明实施例读写操作时序示意图;
图11为本发明实施例多路数据传输系统结构图。
具体实施方式
本发明实施例中,在多路数据传输系统中,首先需确定读或写操作周期,然后当进行读或写操作时,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,进行端口仲裁,最后从仲裁的端口进行数据的传输。
多路数据传输系统中包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,其中数据发送端和数据接收端都包括一个或多个端口;或者,多路数据传输系统包括多个端口,这些端口既可以是数据发送端,也可以是数据接收端。
对于公共存储介质单元为片内单口随机访问存储器的多路数据传输系统,确定读或写操作周期可以采用固定比例读写仲裁或写操作优先读写仲裁,也可以根据每个端口缓存数据对应的容量档位,进行读写仲裁,参见图3,根据每个端口缓存数据对应的容量档位,进行读写仲裁过程包括:
步骤301:根据数据量与容量档位的对应关系,确定数据发送端每个端口缓存的数据量对应的容量档位。
首先,获取多路数据传输系统数据发送端每个端口缓存的数据量。然后,根据设定的数据量与容量档位的对应关系,确定每个端口缓存的数据量对应的容量档位。
每个端口都有缓冲区FIFO,用来存储需要进行数据传输的数据。FIFO的数据量的多少可以用容量档位来表示。这里,将FIFO中数据量划分为几个档,每个容量档位都用数据水线高低来表示。如图4,端口1FIFO中数据量低于水线1,则容量档位属于第0档;端口n-1FIFO中数据量在水线1和水线2之间,则容量档位属于第1档;端口0FIFO中数据量在水线2和水线3之间,则容量档位属于第2档;端口nFIFO中数据量高于水线3之间,则容量档位属于第3档。当然数据的容量档位的划分不限于此,可以用两条水线将其划分为三档,也可以用四条水线将其划分为五档。这样,可以用水线的档位来表示端口FIFO数据量的容量档位。
步骤302:确定写操作周期与读操作周期的比例值,也就是读写权值比例。
获取了每个端口缓存的数据量对应的容量档位后,首先比较获取的每个端口对应的容量档位的高低,得到最高容量档位,然后根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例。这里,容量档位与读写权值比例可以一一对应,如:容量档位划分成5档,容量档位为0,对应的读写权值比例为1,容量档位为1,对应的读写权值比例为2,这样依次类推,但是当容量档位为5时,则表明端口缓存数据已经很多了,必须要进行写操作了,因此,容量档位为5对应的读写权值比例为非常规制,如零,或者无穷大。
步骤303:根据确定的读写权值比例,分配进入读或写的操作周期。
当读写权值比例为N,N为正常数值时,读写仲裁结果为:进行N次写操作后,执行一次读操作。当读写周期的比例值不是正常值,例如为零时,读写仲裁结果为,直接执行写操作。
对于公共存储介质单元为片内双口随机访问存储器的多路数据传输系统,公共存储介质单元的读端口与写端口不同,不需要进行读写仲裁,其读/写操作周期也是确定。
上述实施例中,已经对读或写的操作周期进行了仲裁,这样在确定了读/写操作周期的多路数据传输系统中,进行一次多路数据传输也就进行一次读或写操作,参见图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对应的端口1和端口7。
这里,还可以统计每个容量档位对应的具有传输条件的端口。当一个端口有数据传输请求,以及该端口的下游数据接口可以接收数据,就可以确定该端口具备数据传输条件。例如:根据FIFO中的水线划分,端口1对应的容量档位为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中,确定的容量档位是0、1、2、3四个容量档位,则每个档位对应设置一个等待时间片计数器,其中,容量档位3对应的等待时间片计数器的初始值可以设为零,容量档位2对应的等待时间片计数器的初始值可以设为10,容量档位1对应的等待时间片计数器的初始值可以设为50,容量档位0对应的等待时间片计数器的初始值可以设为100,当然数值大小也可以根据实际工作经验获得。
这样,在进行写操作时,首先判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,当等待时间片计数器的值为第一设定值时,即表明该等待时间片计数器对应的容量档位不需要等待了,需要从该容量档位对应端口中选择一个端口进行本次写操作,因此,确定该容量档位为待选容量档位。当等待时间片计数器的值不为第一设定值时,修改该等待时间片计数器的值,这里,可以将该等待时间片计数器的值减去第二设定值,其中,第二设定值可以为1,5、10等等任意值。这里,计数器的值不为零,则表明该容量档位还需等待,因此,还不需要从该容量档位对应的端口进行本次写操作。
当然,本实施例中,对每个容量档位都预先设置一个等待时间片计数器后,还可以将最高容量档位对应的等待时间片计数器的初始值为第一设定值,其他等待时间片计数器的初始值根据容量档位的降低依次降低。这样,当进行写操作时,首先判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,当等待时间片计数器的值为第一设定值时,确定该容量档位为待选容量档位。当等待时间片计数器的值不为第一设定值时,修改该等待时间片计数器的值,这里,可以将该等待时间片计数器的值加上第三设定值,第三设定值可以为1,3、10等等任意值。
还可以对每个容量档位都预先设置一个等待时间片计数器,其最高档位对应的等待时间片计数器的值在设定的阈值范围内即可。例如四个容量档位,从高到低其初始值分别为5、20、50、100。其设定的阈值范围为0~10,开始时,5大于等于零,小于等于10,则在阈值范围为0~10之间,则最高容量档位,也就是容量档位3为待选容量档位,其他容量档位都大于10,因此,将其他容量档位对应的等待时间片计数器的值减去第二设定值,这里可以为4。经过三次等待后,容量档位2对应的等待时间片计数器的值为8,在阈值范围为0~10之间,则容量档位2也是待选容量档位。
步骤503:从待选容量档位中,确定优先级最高的容量档位。
根据对等待时间片计数器的初始设置,可以确定待选容量档位至少包括最高容量档位。例如:步骤501中确定了最高容量档位为容量档位3,其对应的等待时间片计数器初始值就为第一设定值,因此,步骤502中可以确定容量档位3为待选容量档位。当然,其他容量档位对应的等待时间片计数器的值为第一设定值时,也将该容量档位确定为待选容量档位。这样,待选容量档位有可能是容量档位3、1;或者是容量档位3、1,0等等。
因此,首先判断待选容量档位是否只包括最高容量档位,如果是,则确定最高容量档位为优先级最高的容量档位;否则,将除最高容量档位以外的其他容量档位进行比较,确定高容量档位为优先级最高的容量档位。例如:待选容量档位是容量档位3时,确定容量档位3为优先级最高的容量档位;待选容量档位是容量档位3、1时,确定容量档位1为优先级最高的容量档位;待选容量档位是容量档位3、1、0时,确定容量档位1为优先级最高的容量档位。
步骤504:从优先级最高的容量档位对应的端口中选择一个端口为写端口。
若步骤501中统计的是每个容量档位对应的端口,则,还首先需确定优先级最高的容量档位对应的端口是否具有传输条件,然后从优先级最高的容量档位对应的具有传输条件的端口中选择一个端口为写端口;若步骤501中直接统计的是每个容量档位对应的具备有传输条件的端口,则只需从优先级最高的容量档位对应的具有传输条件的端口中选择一个端口为写端口。因此,优先级最高的容量档位对应的具有传输条件的端口可以是零个、一个,也可以是多个。
确定优先级最高的容量档位对应的具有传输条件的端口的个数,当个数是一个时,确定该端口为写端口。当个数大于一个时,可以在优先级最高的容量档位对应的具有传输条件的端口中随机选择一个端口,确定该端口为写端口;还可以采用轮询的方法选择一个端口,确定该端口为写端口。例如:当优先级最高的容量档位为容量档位3时,其对应具有传输条件的端口1和端口n。则本次写操作从端口1进行,若下次确定的优先级最高的容量档位仍为容量档位3时,则本次写操作从端口n进行。当优先级最高的容量档位为容量档位1时,其对应的端口6。则本次写操作从端口6进行。
当优先级最高的容量档位对应的具有传输条件的端口的个数是零个时,则没有端口可以进行写操作,需进行下一次的端口仲裁判断,即进入下一次的写操作。
步骤505:采用确定的端口向所述公共存储介质单元写入数据。这里,也就是从确定的端口进行数据的传输。
步骤506:将优先级最高的容量档位对应的等待时间片计数器的值修改为初始值。
已经确定了该容量档位对应的一个端口为写操作端口,并从确定的端口进行写操作后,将该容量档位对应的等待时间片计数器的值修改为初始值,这样为下一次端口仲裁做好准备。
根据上述方法,同样可以在确定了读/写操作周期的多路数据传输系统中,进行读操作,具体过程包括:根据数据量与容量档位的对应关系,确定数据接收端中每个端口缓存的数据量对应的容量档位;根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进行读出操作的端口,采用确定的端口从所述公共存储介质单元读出数据。
其中,确定待选容量档位包括:判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,其中所述第一设定值为最高容量档位对应的等待时间片计数器的初始值;当等待时间片计数器的值为第一设定值时,确定所述等待时间片计数器对应的容量档位为待选容量档位。当然,若等待时间片计数器的值不为第一设定值时,修改所述等待时间片计数器的值,这里可以按照设定值递增或递减所述等待时间片计数器的值。确定待选容量档位还包括:判断每个容量档位对应的等待时间片计数器的值是否在设定的阈值范围内,当等待时间片计数器的值在确定范围内时,确定所述等待时间片计数器对应的容量档位为待选容量档位。
在所述待选容量档位对应的端口中,确定进行读出操作的端口包括:判断所述待选容量档位是否只包括最高容量档位;当所述待选容量档位只包括最高容量档位时,确定所述最高容量档位为优先级最高的容量档位;当所述待选容量档位包括最高容量档位和其他容量档位时,比较所述其他容量档位的高低,确定高容量档位为优先级最高的容量档位;从所述优先级最高的容量档位对应的端口中选择一个端口为读端口。
而从所述优先级最高的容量档位对应的端口中选择一个端口为读端口包括:确定所述优先级最高的容量档位对应的具有传输条件的端口的个数;当所述优先级最高的容量档位对应的具有传输条件的端口只有一个时,确定该端口为读或写端口;当所述优先级最高的容量档位对应的具有传输条件的端口包括至少两个时,采用轮询的方法选择一个端口,确定该端口为读端口,或者随机选择一个端口为读端口。
当然,从所述公共存储介质单元读出数据之后,还需将所述优先级最高的容量档位对应的等待时间片计数器的值修改为初始值。
由此可见,本发明实施例中,从数据发送端中,确定向公共存储介质单元写入数据的端口的方法,与从数据接收端中,确定从公共存储介质单元读出数据的端口的方法是一致。
下面以FPGA中的多路数据传输为例作进一步详细描述,本实施例中,容量档位用数据水线信号表示,等待时间片计数器的初始值随着档位的降低依次增加,且的第一设定值为零。参见图6:FPGA中,多路数据传输模型包括:数据发送端100、数据接收端200、公共存储介质单元300、读写仲裁单元400、写入端口仲裁单元500、读出端口仲裁单元600和读写操作单元700。其中,
数据发送端100,包括端口0~N-1的N个缓存UFIFO,用于向读写仲裁单元400和写入端口仲裁单元500发送每个端口的数据水线信号,以及写入操作请求信号,并在读写操作单元700的控制下向公共存储介质单元300写入数据。其中,数据水线信号,以及写入操作请求信号分别用Ing_wmark[N][3:0]],Ing_req[N-1:0]表示。
数据接收端200,包括端口0~N-1的N个缓存DFIFO,用于向读出端口仲裁单元600发送每个端口的读出探针信号,并在读写操作单元700的控制下从公共存储介质单元300读出数据。其中,读出探针信号可以用Egr_strobe[N-1:0]表示。
公共存储介质单元300,用于存储数据,并向写入端口仲裁单元500发送写入探针信号,向读出端口仲裁单元600发送公共存储介质单元的水线信号,以及向读写仲裁单元400和读出端口仲裁单元600发送公共存储介质单元的读出操作请求信号。其中,写入探针信号,公共存储介质单元的水线信号,读出操作请求信号可分别用Ing_strobe[N-1:0],Egr_wmark[N][3:0],Egr_req[N-1:0]表示。
读写仲裁单元400,用于根据接收到的数据发送端口的数据水线信号、写入操作请求信号,读出操作请求信号,获得读写仲裁单元结果,并发送给读写操作单元700。其中,读写仲裁单元结果包括:写入操作命令信号、读出操作命令信号,分别用Ing_write,Egr_read表示。
写入端口仲裁单元500,用于根据接收到的发送端口的数据水线信号、写入操作请求信号、写入探针信号,以及写入端口仲裁单元请求信号,输出写入端口仲裁单元结果,即确定向公共存储介质单元300中写入数据的端口,可用Ing_port[N-1:0]表示。
读出端口仲裁单元600,用于根据接收到的公共存储介质单元的数据水线信号、公共存储介质单元的读出操作请求信号,读出探针信号,以及读出端口仲裁单元请求信号,输出读出端口仲裁单元结果,即确定从公共存储介质单元300中读出数据的端口可用Egr_port[N-1:0]表示。
读写操作单元700,用过根据接收的读写仲裁单元结果,向写入端口仲裁单元500发起写入端口仲裁单元请求信号,或向读出端口仲裁单元600发起读出端口仲裁单元请求信号,并根据写入端口仲裁单元500输出的写入端口仲裁单元结果,向公共存储介质单元300写入数据,根据读出端口仲裁单元600输出的读出端口仲裁单元结果,从公共存储介质单元300读出数据。其中,写入端口仲裁单元请求信号,读出端口仲裁单元请求信号可以用Ing_grant,Egr_grant表示。
本实施例多路数据传输模型中的接口信号具体参见表1。
在上述多路传输模型中,结合接口信号,多路数据传输中读写仲裁过程如下,参见图7:
步骤701:读写仲裁单元400判断写入操作请求信号和读出操作请求信号的状态,当只有写入操作请求信号时,进行步骤707,当只有读出操作请求信号时,进行步骤708,当写入操作请求信和读出操作请求信号都有时,执行步骤702。
这里,当Ing_req[N-1:0]!=0,且Egr_req[N-1:0]=0时,执行步骤707;当Ing_req[N-1:0]=0,且Egr_req[N-1:0]=1时,执行步骤708;当Ing_req[N-1:0]!=0,且Egr_req[N-1:0]!=0时,执行步骤702
 
接口信号 信号描述
Ing_req[N-1:0] 数据发送端的写入操作请求信号,高电平有效,即Ing_req[n]为高电平时,表示数据发送端的第n个端口有数据要写入公共存储介质单元。                             
Ing_wmark[N][3:0]] 数据发送端的UFIFO数据水线信号。Ing_wmark[n]表示第n个端口的UFIFO数据水线信号,每个端口的UFIFO数据水线信号的位宽为4位,记为wmark[3:0]。其中,wmark[0]为低水线标识,wmark[3]为最高水线标识。             
Ing_strobe[N-1:0] 写入探针信号,高电平有效,即Ing_strobe[n]为高电平时,表示可以将数据写入到公共存储介质单元中第n个数据区。  
Ing_grant 写入端口仲裁单元请求信号,为脉冲信号,高电平有效。
Ing_port[N-1:0] 写入端口仲裁单元结果,高电平有效,即Ing_port[n]为高电平,仲裁结果为:从第n端口写入数据。              
Ing_write 写入操作命令信号,高电平有效,即为高电平时,表示当前是写操作周期。                                  
Egr_req[N-1:0] 公共存储介质单元的读出操作请求信号,高电平有效,即Egr_req[n]为高电平时,表示有数据可以读出给数据接收端的第n个端口。                                           
Egr_wmark[N][3:0] 公共存储介质单元的数据水线信号。Egr_wmark[n]表示第n个端口的数据水线信号,每个端口的水线信号的位宽为4位。记为wmark[3:0],其中wmark[0]为低水线标识,wmark[3]为最高水线标识。                                      
Egr_strobe[N-1:0] 读出探针信号,高电平有效,即Egr_strobe[n]为高电平时,表示可以将读出数据发送给数据接收端的第n个端口。      
Egr_grant 读出端口仲裁单元请求信号,为脉冲信号,高电平有效。
Egr_port[N-1:0] 读出端口仲裁单元结果,高电平有效,即Egr_port[n]为高电平时,仲裁结果为:从第n端口读出数据。            
Egr_read 读出操作命令信号,高电平有效,即为高电平时,表示当前是读操作周期。                                  
表1
步骤702:根据数据发送端的每个端口UFIFO数据量对应的容量档位,确定写操作周期与读操作周期的比例值,并将记录的写入次数清零。
这里,首先获取数据发送端的每个端口UFIFO数据量对应的容量档位,确定最高容量档位,然后,根据保存的容量档位与读写权值比例的对应关系,确定该最高容量档位对应的读写权值比例。具体过程如下:
UFIFO数据的容量档位可用UFIFO水线信号表示,UFIFO的水线信号为Ing_wmark[N-1][3:0],计算各个UFIFO中的最高水线Max_wmark[3:0],如公式(1):
Maxwmark[3:0]=max{Ing_wmark[0],Ing_wmark[1],...,Ing_wmar[N]}        (1)
Ing_wmark[N-1][3:0]的位宽为4,这样,Maxwmark[3]为高电平表示写操作请求最为紧迫;Maxwmark[0]为高电平表示写操作请求最不紧迫。
UFIFO的水线信号Ing_wmark[N-1][3:0]与读写权值比例的对应关系,如表2所示:
 
Ing_wmark[N-1][3:0]] 读写权值比例(N)
4’b0001 1
4’b0010 2
4’b0100 3
4’b1000 0(写操作优先)
表2
这样,当Max_wmark[3:0]为Max_wmark[0]时,读写权值比例为1,当Max_wmark[3:0]为Max_wmark[1]时,读写权值比例为2,当Max_wmark[3:0]为Max_wmark[2]时,读写权值比例为3,当Max_wmark[3:0]为Max_wmark[3]时,写操作请求非常紧迫,必须进行写操作了,因此,对应的读写权值比例为非常规值,这里,读写权值比例可以用0标识。
写入次数可以用写入指针WC来表示,这里将WC清零,即WC=0。
步骤703:判断读写权值比例是否为0,当不为0时,执行步骤704,否则,执行步骤707;
步骤704:启动写入操作,并且递加写入次数。
也就是读写仲裁单元输出Ing_write=1,Egr_read=0,WC=WC+1。
这样进行写入操作周期后,执行数据写入公共存储介质单元的过程。
步骤705:判断写入操作请求信号的状态,当有写入操作请求信号时,进行步骤706,否则执行步骤708。
这里,Ing_req[N-1:0]!=0,有写入操作请求,即执行步骤706,否则执行步骤708,即没有了写入操作请求了,这样进行读出操作周期。
步骤706:判断WC是否等于N,当WC=N时,执行步骤708,否则执行步骤704。当WC=N时,写入操作结束,进行读出操作过程,否则继续进行写入操作。
步骤707:启动一次写入操作,即读写仲裁单元输出Ing_write=1,Egr_read=0,本次写入操作完成后,返回步骤701,进行新的一轮读写仲裁单元。
步骤708:启动一次读出操作,即读写仲裁单元输出Ing_write=0,Egr_read=1,本次读出操作完成后,返回步骤701,进行新的一轮读写仲裁单元。
步骤704和步骤707中,启动写入操作后,写入端口仲裁单元500还需要判断从具体向公共存储介质单元300中写入数据的端口,从而根据确定后的端口进行写入操作;步骤708中,启动读出操作后,读出端口仲裁单元600还需判断从具体从公共存储介质单元300中读出数据的端口,从而根据确定后的端口进行读出操作。本发明实施例中,写入端口仲裁单元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,为读写端口数据水线信号;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档,分别对应arb_wmark[n][3:0]中的各位。如果arb_wmark[n][3]为高电平,则表示端口n对应的容量档位属于第3档位;如果arb_wmark[n][0]为高电平,表示端口n对应的容量档位属于第0档位。其中,第3档位高于第2档位,第2档位高于第1档位,第1档位高于第0档位。
将获取的端口的水线向量arb_wmark[N-1][3:0]记做wmark[N-1][3:0],并整理为式(2):
Iwmark = Iwmark 0 Iwmark 1 Iwmark 2 Iwmark 3 = wmark [ 0 ] [ 0 ] wmark [ 1 ] [ 0 ] · · · · · · wmark [ N - 1 ] [ 0 ] wmark [ 0 ] [ 1 ] wmark [ 1 ] [ 1 ] · · · · · · wmark [ N - 1 ] [ 1 ] wmark [ 0 ] [ 2 ] wmark [ 1 ] [ 2 ] · · · · · · wmark [ N - 1 ] [ 2 ] wmark [ 0 ] [ 3 ] wmark [ 1 ] [ 3 ] · · · · · · wmark [ N - 1 ] [ 3 ] - - - ( 2 )
那么式(2)中的Iwmark0~Iwmark3向量就表示四个水线档位上,各有那些端口。
例如:Iwmark0=[0 1 0 1 1 0 0 0]就表示第0档位上有第1、3和4端口。
步骤802:确定每个容量档位上,具备数据传输条件的待响应端口。
当数据传输过程中,第n个端口有数据传输请求,以及该端口的下游数据接口可以接收数据,就可以确定该端口具备数据传输条件。这里,当Ing_strobe[n]和Ing_req[n]都为高电平时,则端口n具备数据传输条件。根据步骤801中获得的Iwmark,确定每个容量档位上,具备数据传输条件的待响应端口的计算过程如下:
将Ing_strobe[N-1:0]和Ing_req[N-1:0]记做strobe[N-1:0]和req[N-1:0],并按公式(3)做如下处理:
Cwmark = Iwmark 0 · strobe · req Iwmark 1 · strobe · req Iwmark 2 · strobe · req Iwmark 3 · strobe · req = Cwmark 0 Cwmark 1 Cwmaek 2 Cwmark 3 - - - ( 3 )
那么CwmarkM[N-1:0]表示在第M档位上,有那些端口为具备了传输条件的端口,即可能被仲裁为响应端口。
例如:Cwmark3=[0 1 0 1 1 0 0 0]就表示第3档位上有第1、3和4端口可能会被仲裁为响应端口,即第3档位上的第1、3和4端口为第3档位上的待响应端口。
步骤803:根据每个容量档位中的待响应端口,以及每个容量档位对应的等待时间片计数器的值是否为零,确定优先级最高的容量档位。
本实施例上述步骤中,确定了容量档位具体为那几档,则为每个容量档位都设定一个等待时间片计数器,然后根据每个容量档位对应的等待时间片计数器的值是否为零,确定待选容量档位,从待选容量档位中,确定优先级最高的容量档位。
这里,在读写端口仲裁单元请求信号arb_grant的驱动下,根据步骤802计算获得的向量CwmarkM[N-1:0],以及获得的读写仲裁单元结果arb_port,进行各个档位的等待时间片计数器的计数,当等待时间片计数器的值为零时,得到待选信号arb_can[3:0],然后对arb_can[3:0]进行计算,得到优先级信号arb_pri[3:0]。最后根据arb_pri[3:0],确定优先级最高的容量档位。例如,第2档位由于等待时间片用完,其优先级被提为最高,也就是arb_pri[2]为高电平,则提取Cwmrak2[N-1:0],记做Swmark[N-1:0]。
步骤804:采用流水线轮询的方法,在优先级最高的容量档位的待响应端口中,确定进行数据传输的端口。
若步骤803中确定的优先级最高的容量档位的待响应端口只有一个,那就确定该端口为响应端口,进行数据的传输,若步骤803中确定的优先级最高的容量档位的待响应端口不止一个,则采用轮询的方法选择响应端口,进行数据的传输。例如,优先级最高的容量档位为第2档位,有两个端口:第n端口和第m端口,如果上次仲裁的结果为第n端口。数次仲裁操作过后,该档位又变为优先级最高的容量档位,那么本次仲裁操作的结果为第m端口。具体的计算过程如公式(4)所示:若上次的仲裁结果为wport[N-1:0],做如下处理:
Figure A200910135508D00221
从式(4)可见RwportM[N-1:0]向量是端口号向量wport[N-1:0]左移M位得到的。
最后,做如公式(5)所示的矩阵乘法处理:
Gwport[N-1:0]=Rwport×[Swmark]′                (5)
将Swmark[N-1:0]与Rwport的各个子向量进行矩阵乘,得到Gwport[N-1:0]。从0到N-1依次扫描Gwport[N-1:0]的各值,找到第一个非零的值,记下其序号M,则RwportM就是仲裁结果,其中非零项所对应的端口就是响应端口。
步骤805:从确定的端口进行读或写操作。
本实施例中,根据步骤803可知,需为每个端口缓存的数据量对应的容量档位设置对应的等待时间片计数器,这里,数据水线划分为4个档位,每个档位都设定一个等待时间片计数器,其初始值随着档位的降低,依次增加,即最高档位对应的等待时间片计数器的初始值最小,最低档位对应的等待时间片计数器的初始值最大。这里,当每个容量档位都存在时,其时间片计数器的初始值分别为:第3档位对应的值为0,第2档位对应的值为10,第1档位对应的值为40,第0档位对应的值为100;若没有第3档位,则第2档位为最高档位,对应的值为0,第1档位对应的值为10,第0档位对应的值为40,具体时间片计数器的初始值的默认设置如表3。
从表3可以看出,各个档位的时间片计数器初始值设置根据向量Cwmark的各个子向量(Cwmark3到Cwmark0)是否为0,按照0、10、40和100的顺序依次进行设置。两种情况下,这种初始值的设置操作将会发生:一是向量Cwmark的各个子向量发生从零向量到非零向量之间的转换;一是某档位的时间片计数器通过减法计算变为零,并且端口仲裁单元的结果为该档位上的某个端口。
设置完每个容量档位对应的等待时间片计数器后,首先根据每个容量档位对应的等待时间片计数器的值是否为零,确定待选容量档位,然后从待选容量档位中,确定优先级最高的容量档位。
确定待选容量档位的过程包括:当等待时间片计数器值为零时,确定该等待时间片计数器对应的容量档位为待选容量档位。根据上述设置可知,最高容量档位对应的时间计算器的初值为零,因此,最高容量档位的时间片计数器固定为零,因此最高容量档位为待选容量档位,其对应的待选信号arb_canM为高电平(第M档位为最高档位)。
Figure A200910135508D00241
表3
对于非最高容量档位,根据该非最高容量档位对应的等待时间片计数器工作过程,确定其是否为待选容量档位,工作流程参见图9,具体过程如下:步骤901:是否有读写端口仲裁单元请求信号,当有时才开始启动端口仲裁单元,执行步骤902;否则流程结束。这里,arb_grant=1时,执行步骤902,否则流程结束。
步骤902:判断每个容量档位对应的等待时间片计数器的值是否为零,并判断正在进行数据传输的端口是否也属于当前档位,即arb_count[M]是否等于=0,其中M为0、1、2或3,同时arb_port是否属于M档位。
当arb_count[M]不等于零时,且arb_port不属于M档位,执行步骤903;当arb_count[M]等于零时,且arb_port属于M档位时,执行步骤906;当arb_count[M]等于零时,且arb_port不属于M档位时,执行步骤905。
步骤903:对值不为零的等待时间片计数器的值减1,即将arb_count[M]减1。
步骤904:判断数值变化后的等待时间片计数器的值是否为零,即arb_count[M]是否等于零,当不等于零时,则该容量档位还需等待,返回步骤901,否则该容量档位不需等待,执行步骤905。
步骤905:确定该容量档位为待选容量档位,即输出待选信号arb_can[M]=1。并返回步骤901,进行新一轮的等待等待时间片计数器的计数。
步骤906:确定该容量档位不是待选容量档位,即输出arb_can[M]=0,将该等待时间片计数器的值设置为初始值,即arb_count[M]=初始值。执行完后返回步骤901,进行新一轮的等待等待时间片计数器的计数。
确定待选容量档位之后,从待选容量档位中,确定优先级最高的容量档位。这里,如果只有一个容量档位对应的arb_count[M]=0,arb_can[M]=1,则该容档位为优先级最高的容量档位,因此,输出优先级信号arb_pri[M]=1;如果不止一个容量档位对应的arb_count[M]=0,arb_can[M]=1,则可以设置一个优先原则,包括:1、除了最高容量档位外,如果还存在其他一个容量档位的时间片计数器的值为0,那么该容量档位为优先级最高的容量档位,例如arb_count[3]=0,且arb_count[1]=0,则arb_pri[1]=1,即确定容量档位1为优先级最高的容量档位。2、除了最高档位外,如果还存在其他两个或者两个以上的容量档位的时间片计数器的值为0,那么其他容量档位中,容量档位较高的容量档位为优先级最高的容量档位。例如,arb_count[2]=0,且arb_count[0]=0,那么arb_pri[2]=1,即确定容量档位2为优先级最高的容量档位。本实施例中,确定优先级信号的具体计算过程参见公式(6):
arb_pri[3]=arb_can3&&!arb_can2&&!arb_can1&&!arb_can0
arb_pri[2]=arb_can2                                         (6)
arb_pri[1]=!arb_can2&&arb_can1
arb_pri[0]=!arb_can2&&!arb_can1&&arb_can0
这里,容量档位3为最高容量档位,若另一实施例中容量档位2为最高容量档位时,则公式(6)中就不需要计算arb_pri[3]了,只需从arb_pri[2]开始就就可以了,依次类推。
本实施例中,端口仲裁方法的实现过程时序参见图10,这里,水线信号采用实时输入,同时arb_port[N-1:0]也是实时反馈,这样当有arb_grant信号脉冲时,就可以直接获得仲裁结果arb_port[N-1:0],并且,根据仲裁结果进行数据的传输,以及进行新一轮仲裁操作,这样,在下一次数据传输之前,仲裁操作已完成,因此,仲裁操作和数据操作是并行的,从信号输入到仲裁结果输出,只需要4个操作时钟周期的延时,而且随着端口数目的增加,其运算周期并不随着增加。
上述实施例描述的FPGA中多路数据传输,读写仲裁还可以采用固定比例读写仲裁或写操作优先读写仲裁。或者,步骤804中采用随机的方法从优先级最高的容量档位的待响应端口中,确定一个进行数据传输的端口。
上述实施例描述了FPGA中多路数据传输,该方法也适应于CPLD、ASIC等芯片内部的多路数据传输,对于存在独立的片外存储设备的多路数据处理系统也可以利用上述方法进行数据传输,例如以太网交换机中的数据帧交换,数据帧缓存和数据帧统计;图像信号处理系统中的多路图像缓存、处理和传输。独立的片外存储设备可以包括DDR2、Sdram、电子硬盘、片内双口随机访问存储器(DPRAM,Double Port Random-Access Memory)等等。当独立的片外存储设备为DPRAM时,不需要进行读写仲裁,只需要如上述所述方法进行端口仲裁。
根据上述多路数据传输的方法,可以构建一种多路数据传输的系统,包括:向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,参见图11,该系统还包括:端口仲裁单元100和读写操作单元200,其中,
端口仲裁单元100,用于根据数据量与容量档位的对应关系,确定数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口。
读写操作单元200,用于采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。
进一步,端口仲裁单元100包括:设定值判断子单元110,待选容量档位子单元120。
设定值判断子单元110,用于判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,其中,最高容量档位对应的等待时间片计数器的初始值为第一设定值。
待选容量档位子单元120,用于当等待时间片计数器的值为第一设定值时,确定所述等待时间片计数器对应的容量档位为待选容量档位。
端口仲裁单元100还包括修改子单元130,用于当等待时间片计数器的值不为第一设定值时,修改所述等待时间片计数器的值。
端口仲裁单元100包括档位判断子单元140,第一优先级确定子单元150,第二优先级确定子单元160和端口选择子单元170。
档位判断子单元140,用于判断所述待选容量档位是否只包括最高容量档位。
第一优先级确定子单元150,用于当所述待选容量档位只包括最高容量档位时,确定所述最高容量档位为优先级最高的容量档位。
第二优先级确定子单元160,用于当所述待选容量档位包括最高容量档位和其他容量档位时,比较所述其他容量档位的高低,确定高容量档位为优先级最高的容量档位。
端口选择子单元170,用于从所述优先级最高的容量档位对应的端口中选择一个端口为写或读端口。
端口选择子单元170首先确定所述优先级最高的容量档位对应的具有传输条件的端口个数,当所述优先级最高的容量档位对应的具有传输条件的端口只有一个时,确定该端口为写或读端口,当所述优先级最高的容量档位对应的具有传输条件的端口包括至少两个时,采用轮询的方法或者随机的方法选择一个端口为写或读端口。
该多路数据传输的系统还包括:读写仲裁单元300。
读写仲裁单元300,用于根据数据量与容量档位的对应关系,确定数据发送端每个端口缓存的数据量对应的容量档位,根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例,根据所述读写比例值分配进入读或写的操作周期。
进一步,读写仲裁单元300包括:确定子单元310,读写权值比例子单元320和分配子单元330。
确定子单元310,用于根据数据量与容量档位的对应关系,确定数据发送端每个端口缓存的数据量对应的容量档位。
读写权值比例子单元320,用于根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例。
分配子单元330,用于根据所述读写权值比例,分配进入读或写的操作周期。
综上所述,本发明实施例中,根据每个容量档位对应的等待时间片计数器的值是否为零,进行端口仲裁,通过采用矩阵运算的方法,在状态信号输入后,经过4个时钟周期的运算,就可以得到端口仲裁结果。而且随着端口数目的增加,运算周期并没有相应增加。采用优先级轮转和等待等待时间片计数器计数的方式进行端口仲裁,这样高水线的端口优先响应,相同水线的端口轮转响应;低水线的端口通过等待时间片计数器计数,也能保证一定的数据传输带宽。并且本实施例中,根据数据输入端的水线高低,动态调整读写操作周期的比例,从而既保证了输入数据不丢失,又能均衡实现读写操作。本实施例所述的方法的运算量较大,但是流水操作分散了这些运算量,减少了从寄存器到寄存器的延时。因此在较低速度级的中低端FPGA芯片中也容易布局布线。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (13)

1、一种多路数据传输的方法,应用于多路数据传输系统中,所述多路数据传输系统包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,其特征在于,该方法包括:
根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位;
根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位;
在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口;
采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。
2、如权利要求1所述的方法,其特征在于,所述确定所述数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位之前,所述方法还包括:
根据数据量与容量档位的对应关系,确定所述数据发送端每个端口缓存的数据量对应的容量档位;
根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例;
根据所述读写比例值分配进入读或写的操作周期。
3、如权利要求1所述的方法,其特征在于,所述确定待选容量档位包括:
判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,其中所述第一设定值为最高容量档位对应的等待时间片计数器的初始值;
当等待时间片计数器的值为第一设定值时,确定所述等待时间片计数器对应的容量档位为待选容量档位。
4、如权利要求3所述的方法,其特征在于,该方法还包括:
当等待时间片计数器的值不为第一设定值时,修改所述等待时间片计数器的值。
5、如权利要求1所述的方法,其特征在于,在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口包括:
判断所述待选容量档位是否只包括最高容量档位;
当所述待选容量档位只包括最高容量档位时,确定所述最高容量档位为优先级最高的容量档位;
当所述待选容量档位包括最高容量档位和其他容量档位时,比较所述其他容量档位的高低,确定高容量档位为优先级最高的容量档位;
从所述优先级最高的容量档位对应的端口中选择一个端口为写或读端口。
6、如权利要求5所述的方法,其特征在于,从所述优先级最高的容量档位对应的端口中选择一个端口为写或读端口包括:
确定所述优先级最高的容量档位对应的具有传输条件的端口的个数;
当所述优先级最高的容量档位对应的具有传输条件的端口只有一个时,确定该端口为读或写端口;
当所述优先级最高的容量档位对应的具有传输条件的端口包括至少两个时,采用轮询的方法选择一个端口,确定该端口为写或读端口。
7、如权利要求6所述的方法,其特征在于,所述采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据之后,将所述优先级最高的容量档位对应的等待时间片计数器的值修改为初始值。
8、一种多路数据传输的系统,包括向公共存储介质单元写入数据的数据发送端,以及从公共存储介质单元读出数据的数据接收端,其特征在于,还包括:
端口仲裁单元,用于根据数据量与容量档位的对应关系,确定所述数据发送端或数据接收端中每个端口缓存的数据量对应的容量档位,根据每个容量档位对应的等待时间片计数器的值是否满足设定条件,确定待选容量档位,在所述待选容量档位对应的端口中,确定进行写入或读出操作的端口;
读写操作单元,用于采用确定的端口向所述公共存储介质单元写入数据或从所述公共存储介质单元读出数据。
9、如权利要求8所述的系统,其特征在于,所述系统还包括:
读写仲裁单元,用于根据数据量与容量档位的对应关系,确定所述数据发送端每个端口缓存的数据量对应的容量档位,根据保存的容量档位与读写权值比例的对应关系,确定最高容量档位对应的读写权值比例,根据所述读写比例值分配进入读或写的操作周期。
10、如权利要求8所述的系统,其特征在于,所述端口仲裁单元包括:
设定值判断子单元,用于判断每个容量档位对应的等待时间片计数器的值是否为第一设定值,其中所述第一设定值为最高容量档位对应的等待时间片计数器的初始值;
待选容量档位子单元,用于当等待时间片计数器的值为第一设定值时,确定所述等待时间片计数器对应的容量档位为待选容量档位。
11、如权利要求10所述的系统,其特征在于,所述端口仲裁单元还包括:
修改子单元,用于当等待时间片计数器的值不为第一设定值时,修改所述等待时间片计数器的值。
12、如权利要求8所述的系统,其特征在于,所述端口仲裁单元包括:
档位判断子单元,用于判断所述待选容量档位是否只包括最高容量档位;
第一优先级确定子单元,用于当所述待选容量档位只包括最高容量档位时,确定所述最高容量档位为优先级最高的容量档位;
第二优先级确定子单元,用于当所述待选容量档位包括最高容量档位和其他容量档位时,比较所述其他容量档位的高低,确定高容量档位为优先级最高的容量档位;
端口选择子单元,用于从所述优先级最高的容量档位对应的端口中选择一个端口为写或读端口。
13、如权利要求12所述的系统,其特征在于,所述端口选择子单元包括:
端口确定模块,用于确定所述优先级最高的容量档位对应的具有传输条件的端口个数;
第一端口确定模块,用于当所述优先级最高的容量档位对应的具有传输条件的端口只有一个时,确定该端口为写或读端口;
第二端口确定模块,用于当所述优先级最高的容量档位对应的具有传输条件的端口包括至少两个时,采用轮询的方法选择一个端口为写或读端口。
CN2009101355081A 2009-04-17 2009-04-17 一种多路数据传输的方法及系统 Active CN101520714B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009101355081A CN101520714B (zh) 2009-04-17 2009-04-17 一种多路数据传输的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009101355081A CN101520714B (zh) 2009-04-17 2009-04-17 一种多路数据传输的方法及系统

Publications (2)

Publication Number Publication Date
CN101520714A true CN101520714A (zh) 2009-09-02
CN101520714B CN101520714B (zh) 2012-05-09

Family

ID=41081329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009101355081A Active CN101520714B (zh) 2009-04-17 2009-04-17 一种多路数据传输的方法及系统

Country Status (1)

Country Link
CN (1) CN101520714B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108090025A (zh) * 2018-01-19 2018-05-29 福州瑞芯微电子股份有限公司 动态多通道的神经网络soc芯片及其通道资源分配方法
CN114327273A (zh) * 2021-12-28 2022-04-12 浙江大华技术股份有限公司 数据存储方法和装置、存储介质及电子设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108090025A (zh) * 2018-01-19 2018-05-29 福州瑞芯微电子股份有限公司 动态多通道的神经网络soc芯片及其通道资源分配方法
CN108090025B (zh) * 2018-01-19 2021-08-27 瑞芯微电子股份有限公司 动态多通道的神经网络soc芯片及其通道资源分配方法
CN114327273A (zh) * 2021-12-28 2022-04-12 浙江大华技术股份有限公司 数据存储方法和装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN101520714B (zh) 2012-05-09

Similar Documents

Publication Publication Date Title
CN101901200B (zh) 一种基于双AHB Master接口的片上DMA控制器实现方法
CN105512060B (zh) 输入/输出电路以及数据传输控制方法
CN102208005B (zh) 一种2-d卷积器
CN100527111C (zh) 一种片上dma电路及其实现方法
CN102546843B (zh) 一种通过软件模拟实现多个uart通信接口的方法
CN100458616C (zh) 多通道串行模拟量的串并处理装置及方法
CN107544334A (zh) 自动调整采样率的数据采集卡
CN100390782C (zh) 一种实时快速傅立叶变换电路
CN104133790B (zh) 用于直接存储器访问控制器的条件链接
CN101807053A (zh) 用于工业控制触摸显示屏的多通道高速脉冲计数的结构
CN105786741B (zh) 一种soc高速低功耗总线及转换方法
CN101520714A (zh) 一种多路数据传输的方法及系统
CN101937409A (zh) 分时复用存储器直接访问控制器
CN103455002A (zh) 一种基于Verilog HDL的FPGA超高速工业控制系统
US20080018511A1 (en) Programmable, digital filter system
CN1866738B (zh) 一种通用可编程数字滤波器及其控制方法
WO2017100513A1 (en) Spi interface with automatic slave select generation
CN203617974U (zh) 一种基于fpga的可配置系数的滤波器及电子设备
CN109361607A (zh) 表项数据获取方法、装置及通信设备
CN101072019A (zh) 一种滤波器及其滤波方法
CN104035075A (zh) 可配置存储复用的动目标检测器及其检测方法
CN103645887B (zh) 双指令多浮点操作数加/减、乘、除运算控制器
CN201083998Y (zh) 多通道串行模拟量的串并处理装置
CN201465098U (zh) 一种多通道交叉的dma
KR100644597B1 (ko) 버스 시스템 및 그 커맨드 전달방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 350015 M9511 Industrial Park, fast road, Mawei District, Fujian, Fuzhou

Patentee after: RUIJIE NETWORKS Co.,Ltd.

Address before: 350015 M9511 Industrial Park, fast road, Mawei District, Fujian, Fuzhou

Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd.