发明内容
本发明实施例提供一种多芯片通信中数据包发送、接收的方法和装置以及多芯片通信的装置,对于芯片间点对多点数据传输达到有效减少传输时间的目的。
为实现上述目的,本发明实施例提供一种多芯片通信中数据包发送的方法,包括:
源端芯片对应的发送端缓存所述源端芯片待发送的数据包,所述数据包中携带多个目的端芯片的指示信息;
所述发送端解析所述数据包,根据所述目的端芯片的指示信息向所述多个目的端芯片发送请求信号;
所述发送端接收对所述请求信号的响应信号,向发送所述响应信号的目的端芯片发送就绪信号;
所述发送端接收与所述就绪信号对应的数据读取信号,向发送所述数据读取信号的目的端芯片发送缓存的所述数据包。
所述指示信息包括预设位置的比特bit,每一比特对应一个目的端芯片,所述比特的取值指示是否向所述比特对应的目的端芯片发送所述数据包。
所述发送端解析所述数据包,根据所述目的端芯片的指示信息向所述多个目的端芯片发送请求信号之后,还包括:
所述发送端记录与每一目的端芯片对应的请求信号,在向发送所述响应信号的目的端芯片发送所述就绪信号后且传输数据包完成后清除对应的所述请求信号;
如果预设时间内没有收到与记录的所述请求信号对应的响应信号,丢弃所述数据包并记录。
所述发送端接收对所述请求信号的响应信号,向发送所述响应信号的目的端芯片发送就绪信号包括:
所述发送端记录所述响应信号,在向发送所述响应信号的目的端芯片传输所述数据包完成后删除记录的所述响应信号;
当向发送所述响应信号的目的端芯片传输所述数据包失败时,所述发送端重新向发送所述响应信号的目的端芯片传输所述数据包,当传输次数达到预设值时丢弃所述数据包并记录。
本发明实施例还提供一种多芯片通信中数据包接收的方法,包括:
当目的芯片的接收端接收多个请求信号时,所述接收端选择其中一个请求信号发送响应信号;
所述接收端接收与所述响应信号对应的就绪信号,并发送读使能信号,接收发送端根据所述读使能信号发送的数据包。
所述接收端选择其中一个请求信号发送响应信号包括:
当芯片的数量为N时,所述接收端设置循环计数器在未进行数据传输时在m到m+N-1之间循环,m为非零整数,m到m+N-1分别对应一个源端芯片;当进行数据传输时,所述计数器暂停循环;
如果当前循环计数器的取值为k,m≤k≤(m+N-1),则选择k对应的源端芯片的发送端发送的请求信号。
所述发送读使能信号包括:
在所述发送端向所述接收端传输的数据包长度小于最小数据包长度时,所述接收端从数据包中得到数据包长度信息;
根据所述数据包长度信息和所述就绪信号向所述发送端发送所述读使能信号。
接收所述发送端根据所述读使能信号发送的数据包之后,还包括:所述接收端缓存所述数据包,并向所述目的端芯片传输所述数据包。
本发明实施例还提供一种多芯片通信中数据包发送的装置,其特征在于,包括:
发送端数据接收控制模块,用于控制源端芯片将数据包写入发送端数据缓存模块;
所述发送端数据缓存模块,用于缓存所述数据包,所述数据包中携带多个目的端芯片的指示信息;
发送端数据解析模块,用于解析所述数据包得到所述多个目的端芯片的指示信息;
发送端请求产生模块,用于根据所述目的端芯片的指示信息向所述多个目的端芯片发送请求信号;
发送端响应处理模块,用于接收对所述请求信号的响应信号,向发送所述响应信号的目的端芯片发送就绪信号;
发送端数据发送模块,用于接收与所述就绪信号对应的数据读取信号,向发送所述数据读取信号的目的端芯片发送所述发送端数据缓存模块缓存的所述数据包。
所述指示信息包括预设位置的比特bit,每一比特对应一个目的端芯片,所述比特的取值指示是否向所述比特对应的目的端芯片发送所述数据包。
所述发送端请求产生模块还用于:
记录与每一目的端芯片对应的请求信号,在所述发送端响应处理模块向发送所述响应信号的目的端芯片发送所述就绪信号后且传输数据包完成后清除对应的所述请求信号;
如果预设时间内没有收到与记录的所述请求信号对应的响应信号,丢弃所述数据包并记录。
所述发送端响应处理模块还用于:记录所述响应信号,在所述发送端数据发送模块向发送所述响应信号的目的端芯片传输所述数据包完成后删除记录的所述响应信号;
所述发送端数据发送模块还用于:当向发送所述响应信号的目的端芯片传输所述数据包失败时,重新向发送所述响应信号的目的端芯片传输所述数据包,当传输次数达到预设值时丢弃所述数据包并记录。
本发明实施例还提供一种多芯片通信中数据包接收的装置,包括:
接收端请求仲裁模块,用于当目的芯片的接收端接收多个请求信号时,选择其中一个请求信号;
接收端响应产生模块,用于根据所述接收端请求仲裁模块选择的请求信号发送响应信号;
接收端数据控制选择模块,用于接收与所述响应信号对应的就绪信号,并发送读使能信号,接收发送端根据所述读使能信号发送的数据包。
该装置还包括循环计数模块,用于当芯片的数量为N时,在未发生数据传输时在m到m+N-1之间循环,m为非零整数,m到m+N-1分别对应一个源端芯片;当发生数据传输时,暂停循环;
所述接收端请求仲裁模块具体用于:如果当前循环计数器的取值为k,m≤k≤(m+N-1),则选择k对应的源端芯片的发送端发送的请求信号。
所述接收端数据控制选择模块具体用于:在所述发送端向所述接收端传输的数据包长度小于最小数据包长度时,从数据包中得到数据包长度信息;根据所述数据包长度信息和所述就绪信号向所述发送端发送所述读使能信号。
该装置还包括:
接收端数据缓存模块,用于缓存所述接收端数据控制选择模块接收的数据包;
接收端数据发送控制模块,用于根据所述接收端数据缓存模块的数据包缓存状态向所述目的端芯片发送传输指示,传输所述数据包。
本发明实施例还提供一种多芯片通信的装置,每一芯片配置一发送端和一接收端,每一发送端连接所有接收端,每一接收端连接所有发送端,其中
所述发送端包括:
发送端数据接收控制模块,用于控制源端芯片将数据包写入发送端数据缓存模块;
所述发送端数据缓存模块,用于缓存所述数据包,所述数据包中携带多个目的端芯片的指示信息;
发送端数据解析模块,用于解析所述数据包得到所述多个目的端芯片的指示信息;
发送端请求产生模块,用于根据所述目的端芯片的指示信息向所述多个目的端芯片发送请求信号;
发送端响应处理模块,用于接收对所述请求信号的响应信号,向发送所述响应信号的目的端芯片发送就绪信号;
发送端数据发送模块,用于接收与所述就绪信号对应的数据读取信号,向发送所述数据读取信号的目的端芯片发送所述发送端数据缓存模块缓存的所述数据包;
所述接收端包括:
接收端请求仲裁模块,用于当目的芯片的接收端接收多个请求信号时,选择其中一个请求信号;
接收端响应产生模块,用于根据所述接收端请求仲裁模块选择的请求信号发送响应信号;
接收端数据控制选择模块,用于接收与所述响应信号对应的就绪信号,并发送读使能信号,接收发送端根据所述读使能信号发送的数据包。
通过采用本发明实施例的提供的方法和装置,当源端芯片向多个目的端芯片发送数据包时,源端芯片对应的发送端解析数据包,根据数据包中携带的目的端芯片的指示信息向多个目的端芯片发送请求信号,接收对该请求信号的响应信号,向发送该响应信号的目的端芯片发送就绪信号,并接收与该就绪信号对应的数据读取信号,向发送该数据读取信号的目的端芯片发送上述数据包,通过上述过程,对相同数据包,源端芯片可以同时向多个目的端传输数据包,可以有效减少数据包传输时间,提高传输效率,单个芯片向M(M>1)个芯片发送相同数据,考虑无阻塞,仅需1个传输周期,是未使用本发明效率的M倍。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
本发明实施例提供一种多芯片通信中数据包发送的方法,如图1所示,包括以下步骤:
步骤101,源端芯片对应的发送端缓存该源端芯片待发送的数据包,该数据包中携带多个目的端芯片的指示信息。
发送端可以配置到源端芯片上或者独立于源端芯片之外。发送端配置缓存部件用于缓存数据包,具体的,该缓存部件可以采用双缓存区存储数据。发送端检测到源端芯片的发送请求后,检测缓存部件的状态,当缓存部件中有空的缓存区时则向源端芯片发送指示信息指示源端芯片将数据包写入空的缓存区。在缓存区内缓存数据包时必须使数据包携带目的端芯片的指示信息,该指示信息存储在预先确定的特定位置,例如数据包缓存的开始位置。目的端芯片的指示信息具体可以采用多种方式,本实施例提供一种图标方式,具体的,使用预设位置的比特(bit),每一比特对应一个目的端芯片,比特的取值指示是否向该比特对应的目的端芯片发送数据包,例如,比特的取值为0或1,0表示向该比特对应的目的端芯片发送数据包,1表示不向该比特对应的目的端芯片发送数据包。
另外,由于各个芯片时钟独立,甚至同一芯片的发送时钟和接收时钟也不相同,需将各时钟域在互联时进行统一,本实施例中,缓存的写入侧为源端芯片时钟域,读出侧互联系统时钟域。缓存部件的每一个缓存区的容量设置为最大数据包容量,缓存整个数据包,每个缓存区需标记空满状态:当缓存区内写入整个数据包后,该缓存区即标记为满,该缓存区内的数据被发送到所有目的端芯片后标记为空。而且,源端芯片写入与目的接收端读出可以在多个缓存区之间交替进行,互不干扰,从而保证无阻塞情况下不间断数据流程。
步骤102,发送端解析数据包,根据目的端芯片的指示信息向多个目的端芯片发送请求信号。
发送端知晓任意一个缓存区标记为满时,解析该缓存区的数据包。解析的位置为上一步骤中的特定位置,例如在数据包开始处,解析得到对应的目的端芯片指示信息,例如目的端芯片的端口。优选的,发送端可以同时向解析得到的多个目的端芯片的端口发送请求信号。
步骤103,发送端接收对请求信号的响应信号,向发送响应信号的目的端芯片发送就绪信号。
优选的,发送端记录与每一目的端芯片对应的请求信号,在向发送响应信号的目的端芯片发送就绪信号后且传输数据包完成后清除对应的请求信号;如果预设时间内没有收到与记录的请求信号对应的响应信号,丢弃所述数据包并记录。
优选的,发送端向所有响应的接收端发送就绪信号,只有回复了响应的接收端才能够接收到就绪信号。并且,发送端对响应信号进行记录,在向发送该响应信号的目的端芯片传输数据包完成后删除记录的响应信号;当向发送该响应信号的目的端芯片传输数据包失败时,重新向发送该响应信号的目的端芯片传输数据包,当传输次数达到预设值时丢弃所述数据包并记录。
步骤104,发送端接收与就绪信号对应的数据读取信号,向发送数据读取信号的目的端芯片发送缓存的数据包。
发送端根据由读使能信号控制从缓存中将数据包读出,送到所有目的端芯片对应的数据总线上。所有接收到就绪信号的目的接收端可以同时接收该发送端发送的数据包,传输结束。
通过本发明实施例的上述数据包的发送方法,单个源芯片可以同时向多个目的芯片传输数据包,提高了多芯片间数据传输的效率。
本发明实施例还提供一种多芯片通信中数据包接收的方法,如图2所示,包括:
步骤201,当目的芯片的接收端接收多个请求信号时,接收端选择其中一个请求信号发送响应信号。
该接收端可以是目的芯片的一部分或者独立于目的芯片之外。
当芯片的数量为N(N为自然数)时,接收端设置循环计数器在未进行数据传输时在m到m+N-1之间循环,其中,m为整数,m到m+N-1分别对应一个源端芯片;当进行数据传输时,计数器暂停循环;如果当前循环计数器的取值为k,m≤k≤(m+N-1),则选择k对应的源端芯片的发送端发送的请求信号。当然,为了保证数据有效存储,在选择请求信号时还可以考虑接收数据包的缓存区的状态,即只在缓存区有空余的情况下选择请求信号。例如,对于数量为N的芯片阵列,接收端使用一个循环计数器在0到N-1中计数,未进行发送端到接收端数据传输状态下,每个时钟周期计数器都增加1,在发送端到接收端数据传输时,循环计数器值保持不动;0到N-1分别对应第1个到第N个芯片,若当前计数值为0,且数据缓冲有空区域,则第1个芯片对应的请求就被选中。采用这种循环机制,使各请求信号机会均等,可以保证所有请求都会被处理。
需要说明,上述请求信号的选择方法只是一种具体示例,还可以采用其他方法,例如设置各芯片的优先级,优先选择高优先级芯片发送的请求信号。
步骤202,接收端接收与响应信号对应的就绪信号,并发送读使能信号,接收发送端根据读使能信号发送的数据包。
接收端接收与响应信号对应的就绪信号后,发送读使能信号,源端芯片将缓存区的整个数据包向接收端发送。另外,还可以由接收端发送对读取数据包长度的指示信息,此时接收端在接收的数据包长度小于最小数据包长度(该最小数据包长度根据实际传输的数据包情况设定)时,从接收到的数据包中得到数据包长度信息,根据数据包长度信息和就绪信号发送读使能信号,这种情况下,接收端可以发送两次读使能信号,第一次用于指示发送端发送数据包,第二次用于指示发送数据包的长度;或者,源端芯片在接收到响应信号后可以自发发送数据包,接收端在得到要读取的数据包长度信息后发送读使能信号。
本发明实施例还提供一种多芯片通信的方法,应用于板内或板间多个芯片之间的数据包传输,每一芯片包括对应的发送端和接收端,每一发送端连接所有接收端,每一接收端连接所有发送端。芯片的数据包的发送通过其对应的发送端实现,数据包的接收通过其对应的接收端实现。其中,当任意发送端向多个接收端发送数据包时,该任意发送端可以采用上述步骤101-104描述的过程同时向多个接收端发送数据包,其具体过程此处不再赘述;当任意接收端同时接收多个发送端发送的数据包时,该任意接收端可以采用上述步骤201-202描述的过程同时向多个接收端发送数据包,其具体过程此处不再赘述。
下面通过一具体示例对本发明上述方法进行介绍。
以需要互联通信的芯片个数为4为例,芯片的编号分别为0、1、2、3。芯片0需要向芯片1、2、3发送相同的数据包,芯片0具有缓存区0和1,以最大包长为2048个字节为例,每个缓存区容量则为2048个字节,以保证可以缓存整包数据。对于更多数量的芯片互联通信只需进行相同操作的简单扩大。如图3a所示,每一发送端连接所有接收端,每一接收端连接所有发送端,同一芯片发送端和接收端可以互联以支持芯片数据自环。
如图3b所示,芯片0向芯片1、2、3发送相同的数据包的过程包括:
步骤301,芯片0对应的发送端检测到芯片0的数据包发送请求,如果此时检测到缓存区0为空,发送端向芯片0发送传送指示信号。
步骤302,芯片0收到传送指示信号后,将数据包写入缓存区0。
写入缓存区0的数据包的前4bit为1110,指示该数据包需要发送到芯片1、芯片2、芯片3。数据端口位宽以8bit为例,剩余4bit可以填入源端芯片标识,为0001。第2、3字节填入包的长度,以512为例。其余510个字节填充包的内容。
芯片数据接口时钟以频率245.76MHz为例,则选择发送端时钟频率为245.76MHz,但这两个时钟相位不同,为保证数据采样正确,使用芯片数据接收时钟作为缓存写操作时钟,使用发送端时钟作为缓存读操作时钟。
数据包写入缓存区0完成后,如果芯片0有下一数据包需要传输,则下一数据包可写入缓存区1,不影响缓存区0的数据发送操作。数据包写入缓存区0完成后,将缓存区0标记为满状态。
步骤303,发送端在检测到缓存区0状态为满后,解析数据包从前4bit解析出目的芯片编号为1、2、3,向对应接收端1、2、3同时发送请求信号。
该请求信号需要被记录,即发送端记录与每一目的端芯片对应的请求信号。在向发送响应信号的目的端芯片发送就绪信号后且传输数据包完成后清除对应的请求信号;如果预设时间内没有收到与记录的请求信号对应的响应信号,丢弃所述数据包并记录。
步骤304,发送端根据接收到接收端1、2、3发回的响应信号,向接收端1、2、3发送就绪信号。
发送端向所有响应的接收端发送就绪信号,只有回复了响应的接收端才能够接收到就绪信号,例如如果接收端1没有发送响应信号,则就绪信号指向接收端2和3发送。并且,发送端对响应信号进行记录,在向接收端1、2、3传输数据包完成后删除记录的响应信号;当向接收端1、2、3中的任意,例如接收端2传输数据包失败时,发送端重新向发送该接收端传输数据包,当传输次数达到预设值时丢弃所述数据包并记录。
步骤305,发送端使用接收端1、2、3发送的读使能信号将缓存区0中的数据包读出,发送到接收端1、2、3的接收数据总线上。
接收端1、2、3同时接收到就绪信号,同时接收数据总线上的数据包,该数据包的传输结束。
接收端1、2、3均配置仲裁装置使用0~3的循环计数器。为方便表述,以下以接收端1为例进行说明,其他接收端2、3的处理过程同接收端1类似,可参考接收端1的处理过程。
步骤306,接收端1计数器每个245.76MHz时钟周期数值增加1,当接收到请求信号且循环计数器数值为0时,且接收端数据缓存有空区域时,芯片0发送端的请求就被选中。需要说明,在发送端到接收端进行数据传输时,循环计数器计数保持不变。
步骤307,接收端1向芯片0发送端发送响应信号。
此时如果接收到其他请求,接收端1由仲裁装置保证不会响应其他请求。
步骤308,接收端1接收芯片0发送端发送的就绪信号,选择第0路输入信号,从第2、3字节中解析出数据包的长度为512,据此确定发送给发送端的读使能信号的长度为512,确定读使能信号并发送给芯片0发送端,并控制数据写入接收端的缓存。
步骤309,接收端1的缓存区达到满状态后,接收端1向对应的芯片1发送传输指示,触发芯片1读取数据。由于双缓存结构,读取数据的过程不影响写过程,接收端1继续接收芯片0的发送端发送的下一数据包。
通过本发明实施例的上述数据包的发送方法,单个源芯片可以同时向多个目的芯片传输数据包,提高了多芯片间数据传输的效率。
基于与上述多芯片通信中数据包发送的方法实施例相同的技术构思,本发明实施例还提供一种多芯片通信中数据包发送的装置,如图4所示,包括:
发送端数据接收控制模块11,用于控制源端芯片将数据包写入发送端数据缓存模块12;
所述发送端数据缓存模块12,用于缓存所述数据包,所述数据包中携带多个目的端芯片的指示信息;
发送端数据解析模块13,用于解析所述数据包得到所述多个目的端芯片的指示信息;
发送端请求产生模块14,用于根据所述目的端芯片的指示信息向所述多个目的端芯片发送请求信号;
发送端响应处理模块15,用于接收对所述请求信号的响应信号,向发送所述响应信号的目的端芯片发送就绪信号;
发送端数据发送模块16,用于接收与所述就绪信号对应的数据读取信号,向发送所述数据读取信号的目的端芯片发送所述发送端数据缓存模块12缓存的所述数据包。
优选的,所述指示信息包括预设位置的比特,每一比特对应一个目的端芯片,所述比特的取值指示是否向所述比特对应的目的端芯片发送所述数据包。
优选的,所述发送端请求产生模块14还用于:
记录与每一目的端芯片对应的请求信号,在所述发送端响应处理模块15向发送所述响应信号的目的端芯片发送所述就绪信号后且传输数据包完成后清除对应的所述请求信号;
如果预设时间内没有收到与记录的所述请求信号对应的响应信号,丢弃所述数据包并记录。
优选的,所述发送端响应处理模块15还用于:记录所述响应信号,在所述发送端数据发送模块16向发送所述响应信号的目的端芯片传输所述数据包完成后删除记录的所述响应信号;
所述发送端数据发送模块16还用于:当向发送所述响应信号的目的端芯片传输所述数据包失败时,重新向发送所述响应信号的目的端芯片传输所述数据包,当传输次数达到预设值时丢弃所述数据包并记录。
基于与上述多芯片通信中数据包接收的方法实施例相同的技术构思,本发明实施例还提供一种多芯片通信中数据包接收的装置,如图5所示,包括:
接收端请求仲裁模块21,用于当目的芯片的接收端接收多个请求信号时,选择其中一个请求信号;
接收端响应产生模块22,用于根据所述接收端请求仲裁模块选择的请求信号发送响应信号;
接收端数据控制选择模块23,用于接收与所述响应信号对应的就绪信号,并发送读使能信号,接收发送端根据所述读使能信号发送的数据包。
优选的,上述装置还包括循环计数模块24,用于当芯片的数量为N时,在未发生数据传输时在m到m+N-1之间循环,m为非零整数,m到m+N-1分别对应一个源端芯片;当发生数据传输时,暂停循环;
所述接收端请求仲裁模块21具体用于:如果当前循环计数模块24的取值为k,m≤k≤(m+N-1),则选择k对应的源端芯片的发送端发送的请求信号。
优选的,所述接收端数据控制选择模块23具体用于:在所述发送端向所述接收端传输的数据包长度小于最小数据包长度时,从数据包中得到数据包长度信息;根据所述数据包长度信息和所述就绪信号向所述发送端发送所述读使能信号。
优选的,该装置还包括接收端数据缓存模块,用于缓存所述接收端数据控制选择模块接收的数据包;接收端数据发送控制模块,用于根据所述接收端数据缓存模块的数据包缓存状态向所述目的端芯片发送传输指示,传输所述数据包。
基于与上述多芯片通信的方法实施例相同的技术构思,本发明实施例还提供一种多芯片通信的装置,其中,每一芯片配置一发送端和一接收端,每一发送端连接所有接收端,每一接收端连接所有发送端,该发送端相当于上述多芯片通信中数据包发送的装置,该接收端相当于上述多芯片通信中数据包接收的装置。该发送端和接收端分别可以配置到芯片内或芯片外,参考图6所示,所述发送端包括:
发送端数据接收控制模块,用于控制源端芯片将数据包写入发送端数据缓存模块;
所述发送端数据缓存模块,用于缓存所述数据包,所述数据包中携带多个目的端芯片的指示信息;
发送端数据解析模块,用于解析所述数据包得到所述多个目的端芯片的指示信息;
发送端请求产生模块,用于根据所述目的端芯片的指示信息向所述多个目的端芯片发送请求信号;
发送端响应处理模块,用于接收对所述请求信号的响应信号,向发送所述响应信号的目的端芯片发送就绪信号;
发送端数据发送模块,用于接收与所述就绪信号对应的数据读取信号,向发送所述数据读取信号的目的端芯片发送所述发送端数据缓存模块缓存的所述数据包;
所述接收端包括:
接收端请求仲裁模块,用于当目的芯片的接收端接收多个请求信号时,选择其中一个请求信号;
接收端响应产生模块,用于根据所述接收端请求仲裁模块选择的请求信号发送响应信号;
接收端数据控制选择模块,用于接收与所述响应信号对应的就绪信号,并发送读使能信号,接收发送端根据所述读使能信号发送的数据包。
接收端还可以包括接收端数据缓存模块,用于缓存数据包,将系统时钟域与芯片时钟域隔离,保证数据采样正确。可以采用双缓冲存储数据,2个缓冲区在系统侧和芯片侧切换,保证不间断的数据传输流程。
接收端还可以包括接收端数据发送控制模块,与目的端芯片外部接口相连,用于控制接收端数据缓存模块将数据包发送给目的端芯片。
通过本发明实施例的上述数据包的发送方法,单个源芯片可以同时向多个目的芯片传输数据包,提高了多芯片间数据传输的效率。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。