发明内容
本发明实施例提供一种串行总线和通信方法及系统,以提高数据传输的效率和可靠性。
本发明实施例提供了一种串行总线,该串行总线包括位于发送端和接收端的两个系统芯片SOC,且所述两个系统芯片SOC通过物理层连接;其中,交互层、数据层、逻辑层和链路层集成在所述系统芯片SOC上,以提高数据传输的效率和可靠性。
本发明实施例提供了一种通信方法,该通信方法包括:
通过交互层对发送端或接收端的CPU与各自对应的系统芯片SOC进行数据交互;
利用数据层对通过所述交互层获得的来自发送端的发送数据和获得的来自接收端的接收数据进行存储管理;
利用逻辑层发送从所述数据层中获取的数据或将接收的数据保存在所述数据层;
利用链路层接收来自所述逻辑层的数据,并对所述数据验证通过后,通过所述物理层发送到对端的链路层;或,将接收的来自对端链路层的数据发送至所述逻辑层。
本发明实施例提供了一种通信系统,该通信系统包括上述串行总线,还包括:
发送端,用于通过所述串行总线的交互层与一个系统芯片SOC进数据交互;
接收端,用于通过所述串行总线的交互层与另一个系统芯片SOC进行数据交互。
上述串行总线和通信方法及系统,通过将交互层、数据层、逻辑层和链路层集成在SOC芯片上,且两个SOC芯片之间通过物理层连接,提高了数据传输的效率和可靠性。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,为本发明串行总线实施例一的结构示意图,该串行总线包括:位于发送端和接收端的两个系统芯片SOC,且上述两个系统芯片SOC通过物理层连接;其中,交互层、数据层、逻辑层和链路层集成在上述系统芯片SOC上,以提高数据传输的效率和可靠性。假设发送端的系统芯片SOC1和接收端的系统芯片SOC2通过物理层3相连;且发送端的系统芯片SOC1上集成有交互层11、数据层12、逻辑层13和链路层14,接收端的系统芯片SOC2上集成有交互层21、数据层22、逻辑层23和链路层24。
上述发送端和接收端的SOC芯片都具有发送和接收数据的功能,下面针对发送端的SOC芯片来说明其如何实现数据收发功能:上述交互层,用于对发送端或接收端的CPU与各自对应的系统芯片SOC进行数据交互;上述数据层,用于对通过上述交互层获得的来自发送端的发送数据和获得的来自接收端的接收数据进行存储管理;上述逻辑层,用于发送从上述数据层中获取的数据或将接收的数据保存在上述数据层;上述链路层,用于接收来自上述逻辑层的数据,并对上述数据验证通过后,通过上述物理层发送到对端的链路层;或,将接收的来自对端链路层的数据发送至上述逻辑层。且由于上述交互层、数据层、逻辑层和链路层之间的交互过程、采用数据层缓存收发的数据及链路层对收发数据的验证,较好地保证了数据传输的效率和可靠性。
具体地,上述交互层实现了SOC芯片与其对应的CPU间的数据交换,且支持CPU对SOC芯片的读和写操作。同时,根据选用的CPU特性,交互层可以进行总线配置,例如支持数据、地址分离的总线模式,或数据和地址复用的总线模式;并且可以对总线带宽进行配置,如8bit、16bit、32bit等。当发送端CPU_A向接收端CPU_B发送数据时,发送端交互层将会从发送端的CPU总线上,获取数据,并存放到发送端数据层中。该交互层,在CPU_A向发送端SOC芯片写入数据前,会主动告知CPU_A,发送端数据层用于接收发送数据的缓存是否有空闲容量;CPU_A也只有获知,发送缓存有空闲容量时,才会向发送端SOC芯片写入数据,且数据量小于被告知的存储容量。交互层对发送端数据层用于发送数据的缓存容量进行实时监控,并告知发送端CPU。当发送端CPU_A接收接收端CPU_B发送的数据时,发送端交互层将告知CPU_A有数据已经传输到本地,当CPU_A对发送端SOC芯片进行读操作时,交互层从发送端数据层接收数缓存中获取数据,供发送端的CPU读取;交互层也会实时告知发送端CPU,发送端数据层接收缓存是否为空。总之,交互层负责发送端或接收端CPU与SOC芯片的数据交换,并告知CPU发送端数据层接收或发送缓存的容量信息。另外,交互层对CPU总线的占用,完全是被动的,即只有CPU主动访问SOC芯片时,交互层才获得CPU总线的使用权。
上述数据层对发送端向接收端发送的数据和发送端接收到接收端发送来的数据进行存储管理,并与交互层、逻辑层均存在双向交互关系。数据层包括接收缓存和发送缓存两大存储区。当交互层对发送端数据层写入数据时,数据层中发送缓存的剩余容量也随之变化。当发送缓存中的数据被成功发送到接收端时,发送缓存将释放这部分数据原先所占用的存储空间,释放后的空间容量将归入发送缓存的可用容量,供发送端CPU继续使用。反之,数据没有被成功发送到接收端,数据层发送缓存对应的这部分数据所占用的空间容量,将不会被释放。当数据层接收缓存中来自接收端的数据确认正确后,发送端接收缓存的数据保有量将会增加这部分正确数据所对应的容量,并由发送端交互层,告知发送端CPU有接收端数据需要读取。反之,接收缓存获得的接收端数据确认有误,则这部分接收到的数据所占用的容量,不会归入到发送端接收缓存的有效数据保有量中。另外,数据层的缓存容量和选用SOC芯片的内部RAM大小有关。
上述逻辑层主要作用有两方面:第一,若发送端数据层的发送缓存中有待发送的数据,逻辑层首先记录当前待发送数据在发送缓存中的起始位置,然后从发送缓存中取出待发送数据,并打包存寄存在逻辑层的待发送区,作为待发送帧数据,等待链路层调用。当该待发送帧数据,由链路层成功发送到接收端后,发送端链路层将告知逻辑层,逻辑层将记录该成功发送的帧数据在数据层发送缓存中的结束地址的下一地址,作为后续待发送帧数据的起始位置,并告知发送端数据层释放已成功发送数据对应的发送缓存空间,释放空间的大小由发送端数据层计算。若待发送帧没有成功发送到接收端,逻辑层中待发送区的数据帧不会被清除,相应地逻辑层指向数据层发送缓存的指针位置也不会变化,数据层发送缓存的容量也不会增加。第二,当接收来自接收端的数据时,发送端的数据层负责提供接收缓存空间,发送端逻辑层负责从链路层接收传递过来的数据,并写入发送端数据层的接收缓存中,发送端逻辑层记录数据层接收缓存容量的变化,并检测链路层是否对接收的数据帧通过验证。若链路层验证通过,则逻辑层通知数据层,在接收缓存中的数据有效,并更新逻辑层对于数据层接收缓存的标记指针,该指针指向空闲的存储空间;若链路层验证失败,则逻辑层恢复本帧数据接收前,指向数据层接收缓存的地址指针。另外,发送端逻辑层在允许接收端发送数据帧之前,还要查询发送端数据层的接收缓存是否有足够的存储容量,若容量允许,会经链路层发送允许接收端发送数据帧的许可。总之,逻辑层承担了发送端数据层和链路层的连接作用,解决了链路层需要开辟缓存存储待发送数据和接收数据的问题,同时又减少数据多次周转所带来的延迟,即可以实现接收时边存储数据边进行验证;发送时边发送边从数据层获取数据的功能。
上述链路层主要是为了保证通讯报文正确地提供给交互层,并且实现了发送端和接收端的会话任务。在链路层设置了对消息队列的管理机制,每个消息就是一个事件,消息队列负责对这些事件进行排序,管理机制按照某种规则,响应对应的事件。当消息(或称事件),从被创建到被执行,结束生命周期后,该消息就会被销毁,随之其原先所在消息队列中占有的位置,也将会被释放。虽然链路层是为了给交互层提供可靠报文而存在的,但是链路层只与逻辑层直接交互,借助逻辑层完成数据的发送和存储任务。这是因为,由于应用的需要,链路层的协议可能会发生变化,所以从设计的灵活性考虑,链路层与上层的耦合度要尽量低。
上述物理层负责报文的传输任务。物理层有两个信道,每个信道有一个数据通道和一个同步时钟通道,每通道源端为一对差分信号。若信道载体为光纤,需要对信道源端的差分信号进行转换,并在信道末端进行还原,即还原成差分信号。若信道物理长度在信号失真范围内,可通过配置预加强和均衡器等使信号不失真,也可直接利用差分信号进行传输。为了保证传输速度的上限足够大,物理层信道源端多采用低压差分信号。每个信道均为单向传输信道,同信道数据通道和时钟通道传输方向一致,不同信道传输方向相反。如果采用低压差分信号作为传输媒介,发送端到接收端的物理连接线可以用8芯双绞网线,带屏蔽抗噪性更佳。且,上述串行总线中的物理层设置可以拉长数据传输的距离。
由此可见,上述数据层通过发送缓存存储发送数据;上述逻辑层可以包括:记录模块,用于记录当前待发送数据在发送缓存中的起始位置;获取模块,用于根据上述起始位置从发送缓存中取出待发送数据,并打包寄存在逻辑层的待发送区,作为待发送帧数据,等待上述链路层调用;更新模块,用于在接收到上述链路层发送的上述待发送帧数据发送成功的告知信息后,向上述数据层发送上述告知信息和将上述待发送帧数据在发送缓存中的结束地址的下一地址,更新为后续待发送帧数据的起始位置;且上述数据层包括:释放模块,用于在接收到来自上述更新模块的告知信息后,释放成功发送的帧数据所占的发送缓存的空间。同时,上述数据层通过接收缓存存储接收数据;上述逻辑层还可以包括:查询模块,用于在接收来自对端的数据之前,查询数据层的接收缓存的容量;写入模块,用于在接收缓存容量大于等于来自对端的数据大小时,接收来自上述链路层的数据,并写入数据层的接收缓存中。
另外,上述数据层通过读指针读取待发送的数据,通过写指针写入待接收的数据,并通过读指针和写指针分别更新发送缓存和接收缓存的容量,下面分别对本实施例中采用的读指针和写指针进行定义:
(1)针对数据层发送缓存
读指针_N:定义为Rsp_N。当正向递增且步进长度为1时,表示数据层发送缓存输出一个8bit(根据应用,可定制不同的带宽)数据;当负向递增时,表示通讯出错。
读指针_0:定义为Rsp_0。表示数据层发送缓存输出“一包”数据前,系统对数据层发送缓存读指针-N的备份。
(2)针对数据层接收缓存
写指针_N:定义为Wrp_N。当正向递增且步进长度为1时,表示数据层接收缓存输入一个8bit数据;当负向递增时,表示通讯出错。
写指针_0:定义为Wrp_0。表示数据层接收缓存输入“一包”数据前,系统对数据层接收缓存写指针_N的备份。
为了有效地保证数据传输的可靠性,在发送数据时,上述发送端或接收端的链路层均可以进一步包括:第一命令发送模块41,用于向对端链路层发送指针归零的命令消息;第二命令发送模块42,用于在接收到对端链路层对上述指针归零的命令消息响应的指针归零的状态消息后,向对端链路层发送查询空间的命令消息;数据发送模块43,用于在接收到对端链路层对上述查询空间的命令消息响应的空间足够的状态消息后,在计数小于定时器设置的阈值时,向对端链路层发送数据;在计数达到上述阈值时,激活向对端链路层发送查询校验码的命令消息;第一判断模块44,用于在接收到来自对端链路层对上述查询校验码的命令消息响应的校验码的状态消息后,根据上述校验码状态和本端保存的校验码信息判断校验码是否正确,若校验码不正确,调用第一命令发送模块41;第二判断模块45,用于校验码正确时,判断已发送的数据长度是否达到最大数据包长度;第三命令发送模块46,用于在已发送的数据长度达到最大数据包长度时,向对端链路层发送更新指针命令,并在接收到对端链路层对上述更新指针的命令消息响应的指针更新的状态消息后,调用第二命令发送模块42向对端链路层发送查询空间的命令消息;第一调用模块47,用于在已发送的数据长度未达到最大数据包长度时,调用数据发送模块43,在小于定时器设置的阈值时,向对端链路层发送数据;在达到上述阈值时,激活向对端链路层发送查询校验码的命令消息。为了接收对端的数据,上述链路层还可以进一步包括:第一状态发送模块51,用于对接收的第一命令发送模块41发送的指针归零的命令消息进行响应,并发送指针归零的状态消息;第二状态发送模块52,用于在接收第二命令发送模块42对接收的指针归零的状态消息响应的查询空间的命令消息后,对上述查询空间的命令消息进行响应,并向上述数据发送模块43发送空间足够的状态消息;数据接收模块53,用于接收数据发送模块43对接收的空间足够的状态消息响应后发送的数据;第三状态发送模块54,用于对接收的上述数据发送模块43发送的查询校验码的命令消息进行响应,并发送校验码的状态消息;第二调用模块55,用于对接收的第三命令发送模块46发送的更新指针的命令消息进行响应后,发送指针更新的状态消息。上述链路层的具体结构如图2所示。
利用上述链路层中的消息管理器进行收发数据的过程如图3所示,在该实施例中,发送端向接收端发送一包数据,该过程包括:发送端的第一命令发送模块向接收端的第一状态发送模块发送“指针归零_C”消息,接收端的第一状态发送模块接收该消息,对其进行响应后,发送“指针归零_S”消息;发送端的第二命令发送模块接收该“指针归零_S”消息后,发送“查询空间_C”消息,接收端的第二状态发送模块接收该“查询空间_C”消息后进行响应,并发送“空间足够_S”消息;数据发送模块接收该“空间足够_S”消息后,在计数小于定时器设置的阈值时,发送数据_D;同时,接收端的数据接收模块接收上述数据;在计数达到上述阈值时,激活发送“查询校验码_C”消息,接收端的第三状态发送模块接收该“查询校验码_C”消息后,对其进行响应,并发送“校验码_S”消息;发送端的第一判断模块根据接收的“校验码_S”消息和本端保存的校验码信息判断校验码是否正确,若校验码正确则调用第二判断模块判断发送数据的长度是否达到最大数据包长度,若已达到最大数据包长度,则发送“指针更新_C”消息,接收端的第二调用模块接收该“指针更新_C”消息后,对其进行响应,并发送“指针更新_S”消息,发送端接收该“指针更新_S”消息后,调用第二命令发送模块向接收端发送“查询空间_C”消息,并进行后续操作;若发送数据的长度未达到最大数据包长度,则调用数据发送模块继续发送数据。
其中,上述“_C”表示命令,“_S”表示状态,“_D”表示数据;下面针对本实施例中使用的一些术语进行解释:
命令:信源对信宿操作的命令;指针归零:当复位或通讯出错时,Wrp_N<=Wrp_0;指针更新:当成功完成“一包”通讯时,Wrp_0<=Wrp_N;查询空间:信源询问信宿,是否具有容纳“最大数据包长度”的存储空间,即数据层接收缓存是否还有存储空间;查询校验码:信源询问信宿,本包数据的校验状态;状态:信宿对信源响应的状态;指针归零完:指针归零操作完成;指针更新完:指针更新操作完成;空间足够:信宿具有容纳“最大数据包长度”的存储空间,即数据层接收缓存有足够的存储空间;校验码:信宿传递给信源的校验信息。
另外,在本实施例中消息管理器采用的规则如表1所示:
表1消息管理器采用的规则表
上述发送端发送数据过程中使用的命令、状态和数据如图4所示;接收端接收数据过程中使用的命令、状态和数据如图5所示。
另外,发送端向接收端发送数据的同时也可以接收来自接收端的数据,即数据收发过程是并行进行的,为了可以对同时接收到的命令、状态和数据进行有序的操作,在本发明中设置消息(事件)的优先级为:状态消息的优先级最高、命令消息的优先级次之、数据消息的优先级最低。消息从产生到被销毁,在消息管理器中会有标记,用于表示该消息是否有效。消息的生命周期,即事件的生命周期描述如图6所示,该消息的生命周期包括:就绪状态、挂起状态、执行状态、完毕状态和终止状态;其中,消息创建后,具有较高优先级的消息处于就绪状态,具有低优先级的消息处于挂起状态,处于就绪状态的消息完成后续的执行状态、完成状态,直至释放资源,消息销毁;处于执行状态的消息,若遇到具有更高优先级的消息需要执行,则当前正在执行的消息处于挂起状态;当前处于就绪状态或挂起状态的消息若遇到“软复位”等操作时,则需要被强制终止。例如发送端准备发送“查询校验码_C”消息的同时,接收到接收端发送的“校验码_S”消息,由于状态消息的优先级高于命令消息,因而使发送“查询校验码_C”消息被强制终止;又例如发送端开始发送“查询校验码_C”消息的同时,接收到接收端发送的“校验码_S”消息,由于状态消息的优先级高于命令消息,因而使“查询校验码_C”消息由准备执行状态切换至挂起状态,由于上述命令消息和状态消息相匹配,因而“查询校验码_C”消息被强制终止。
上述串行总线,通过将交互层、数据层、逻辑层和链路层集成在SOC芯片上,且两个SOC芯片之间通过物理层连接,由于该物理层有两个方向相反的单向信道,且每个信道都使用低压差分信号作为媒介,提高了数据传输的距离和效率;通过链路层对校验码信息的校验过程,提高了数据传输的可靠性;同时,通过数据层中的发送缓存和接收缓存来存储数据,且数据的吞吐量可通过芯片资源进行配置,提高了数据传输的效率。
如图7所示,为本发明应用串行总线进行通信方法实施例的流程图,该方法包括:
步骤101、通过交互层对发送端或接收端的CPU与各自对应的系统芯片SOC进行数据交互;
步骤102、利用数据层对通过上述交互层获得的来自发送端的发送数据和获得的来自接收端的接收数据进行存储管理;
步骤103、利用逻辑层发送从上述数据层中获取的数据或将接收的数据保存在上述数据层;
步骤104、利用链路层接收来自上述逻辑层的数据,并对上述数据验证通过后,通过上述物理层发送到对端的链路层;或,将接收的来自对端链路层的数据发送至上述逻辑层。
当发送端利用上述数据通信发送方法向接收端发送数据时,首先通过交互层将从发送端的CPU获得的数据写入数据层,同时,通过逻辑层将从数据层中获得的数据写入链路层,并在链路层对该数据进行验证后,若验证通过,则通过物理层将该数据发送至接收端的链路层,同样,接收端的链路层通过逻辑层将数据从链路层发送至数据层,并且接收端的链路层也对接收的数据进行验证,若验证通过则确认数据层中保存的数据有效,进而接收端可以通过交互层从接收端的数据层中读取数据。另外,发送端在向接收端发送数据的同时,也会接收来自接收端的数据;发送端接收来自接收端数据的过程,与上述过程相似,只是将发送端和接收端两个执行主体互换一下。
另外,本实施例中采用的串行总线与本发明串行总线实施例中的串行总线的结构相同,在此不赘述;并且,利用该串行总线中的链路层来保证数据传输的可靠性过程与本发明链路层收发数据实施例的过程相同,在此不赘述;进一步地,利用数据层保存待发送的数据和待接收的数据,从而提高了数据传输的效率;对物理层采用8芯双绞线或光纤,提高了数据传输的距离。
上述通信方法,采用本发明中的串行总线进行数据传输,且通过链路层的验证机制、数据层的保存功能和物理层的信道设计,有效地提高了数据传输的距离和效率,且保证了数据传输的可靠性。
如图8所示,为本发明通信系统实施例的结构示意图,该系统包括上述串行总线100,还包括:发送端200,用于通过上述串行总线100的交互层与一个系统芯片SOC进行数据交互;接收端300,用于通过上述串行总线100的交互层与另一个系统芯片SOC进行数据交互。
其中,该通信系统中的发送端的CUP和接收端的CPU通过串行总线进行数据收发的过程与本发明应用串行总线进行通信方法实施例的过程相同,在此不赘述;且本发明中所采用的串行总线的结构与本发明串行总线实施例的结构相同,在此不赘述。
上述通信系统,采用本发明中的串行总线和本发明中提供的通信方法进行数据传输,且通过链路层的验证机制、数据层的保存功能和物理层的信道设计,有效地提高了数据传输的距离和效率,且保证了数据传输的可靠性。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。