一种串行传输的方法、装置、设备及计算机可读存储介质与流程

文档序号:17950155发布日期:2019-06-18 23:57阅读:146来源:国知局
一种串行传输的方法、装置、设备及计算机可读存储介质与流程

本申请涉及串行传输领域,特别涉及一种串行传输的方法、装置、设备及计算机可读存储介质。



背景技术:

随着异构加速日益广泛的应用,基于fpga的加速卡也发展迅速。加速卡fpga通过pcie接口与服务器主机连接,服务器主机通过pcie接口将需要加速的数据发送给加速卡fpga,加速卡fpga处理完成后通过pcie接口返回相关的数据。在fpga相关功能模块的开发中,有些设计是直接从之前的工程中继承过来的,模块之间的接口事先已经确定,但内部的功能根据新的需求却需要修改,尤其是在没有足够多预留的信号线可供编程通信的情况下,这样就需要用有限的信号线实现传输。

目前能用较少信号线通信的总线,常见的是i2c总线,以及在i2c基础上扩展得到的smbus总线。然而,虽然目前i2c或者smbus应用很广,但是在某些特定情况下,还是不能适应,例如在时钟频率上i2c一般只有400khz,即便最快情况下的超高速模式也只有5mhz,smbus要求的时钟频率就更低了,不能适应快速的传输。

因此,如何实现模块间数据的快速传输是本领域技术人员目前需要解决的技术问题。



技术实现要素:

本申请的目的是提供一种串行传输的方法、装置、设备及计算机可读存储介质,用于实现模块间数据的快速传输。

为解决上述技术问题,本申请提供一种串行传输的方法,该方法包括:

当接收到输入的数据传输任务时,发送模块建立与接收模块之间的同步时钟域;

根据所述数据传输任务生成基于所述同步时钟域的时钟周期的任务信号;

通过信号线发送传输开始信号至所述接收模块,以提示所述接收模块传输开始;

通过所述信号线将所述任务信号发送至所述接收模块,以使所述接收模块根据所述任务信号确定并完成所述数据传输任务。

可选的,根据所述数据传输任务生成基于所述同步时钟域的时钟周期的任务信号,包括:

确定所述数据传输任务的任务类型为写入任务;

获取所述数据传输任务的写目的地址及待写入数据;

根据所述任务类型、所述写目的地址及所述待写入数据生成基于所述同步时钟域的时钟周期的写入任务信号。

可选的,所述接收模块根据所述任务信号确定并完成所述数据传输任务,包括:

所述接收模块接收所述写入任务信号;

根据所述写入信号确定所述写目的地址及所述待写入数据;

将所述待写入数据写入所述写目的地址。

可选的,根据所述数据传输任务生成基于所述同步时钟域的时钟周期的任务信号,包括:

确定所述数据传输任务的任务类型为读取任务;

获取所述数据传输任务的读目的地址;

根据所述任务类型及所述读目的地址生成基于所述同步时钟域的时钟周期的读取任务信号。

可选的,所述接收模块根据所述任务信号确定并完成所述数据传输任务,包括:

所述接收模块接收所述读取任务信号;

根据所述读取信号确定所述读目的地址;

在所述读目的地址中读取待读取数据,并将所述待读取数据发送至所述发送模块。

本申请还提供一种串行传输的装置,该装置包括:

发送模块,用于当接收到输入的数据传输任务时,建立与接收模块之间的同步时钟域;根据所述数据传输任务生成基于所述同步时钟域的时钟周期的任务信号;通过信号线发送传输开始信号至接收模块,以提示所述接收模块传输开始;通过所述信号线将所述任务信号发送至所述接收模块;

所述接收模块,用于根据所述任务信号确定并完成所述数据传输任务。

可选的,所述发送模块包括:

第一确定子模块,用于确定所述数据传输任务的任务类型为写入任务;

第一获取子模块,用于获取所述数据传输任务的写目的地址及待写入数据;

第一生成子模块,用于根据所述任务类型、所述写目的地址及所述待写入数据生成基于所述同步时钟域的时钟周期的写入任务信号。

可选的,所述生成模块包括:

第二确定子模块,用于确定所述数据传输任务的任务类型为读取任务;

第二获取子模块,用于获取所述数据传输任务的读目的地址;

第二生成子模块,用于根据所述任务类型及所述读目的地址生成基于所述同步时钟域的时钟周期的读取任务信号。

本申请还提供一种串行传输设备,该串行传输设备包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述任一项所述串行传输的方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述串行传输的方法的步骤。

本申请所提供串行传输的方法,包括:当接收到输入的数据传输任务时,发送模块建立与接收模块之间的同步时钟域;根据数据传输任务生成基于同步时钟域的时钟周期的任务信号;通过信号线发送传输开始信号至接收模块,以提示接收模块传输开始;通过信号线将任务信号发送至接收模块,以使接收模块根据任务信号确定并完成数据传输任务。

本申请所提供的技术方案,通过发送模块建立与接收模块之间的同步时钟域,然后根据数据传输任务生成基于同步时钟域的时钟周期的任务信号;最后通过信号线将任务信号发送至接收模块,以使接收模块根据任务信号确定并完成数据传输任务,与现有技术相比,本方案没有i2c总线或smbus总线对时钟频率的限制,因此能够以更高的时钟频率进行传输,解决了现有技术中传输速率低的问题。本申请同时还提供了一种串行传输的装置、设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种串行传输的方法的流程图;

图2为图1所提供的一种串行传输的方法中s102的一种实际表现方式的流程图;

图3为图1所提供的一种串行传输的方法中s104的一种实际表现方式的流程图;

图4为本申请实施例所提供的一种串行传输的方法中写入任务的时序图;

图5为图1所提供的一种串行传输的方法中s102另的一种实际表现方式的流程图;

图6为图1所提供的一种串行传输的方法中s104的另一种实际表现方式的流程图;

图7为本申请实施例所提供的一种串行传输的方法中读取任务的时序图;

图8为本申请实施例所提供的一种串行传输的装置的结构图;

图9为本申请实施例所提供的另一种串行传输的装置的结构图;

图10为本申请实施例所提供的一种串行传输设备的结构图。

具体实施方式

本申请的核心是提供一种串行传输的方法、装置、设备及计算机可读存储介质,用于实现模块间数据的快速传输。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的一种串行传输的方法的流程图。

其具体包括如下步骤:

s101:当接收到输入的数据传输任务时,发送模块建立与接收模块之间的同步时钟域;

在fpga相关功能模块的开发中,有些设计是直接从之前的工程中继承过来的,模块之间的接口事先已经确定,但内部的功能根据新的需求却需要修改,尤其是在没有足够多预留的信号线可供编程通信的情况下,这样就需要用有限的信号线实现传输。而在这种情况下,总体设计不作大的更改,模块之间的接口已经确定,而且剩下可编程的信号线较少的时候,又需要相对较高的传输速率,i2c和smbus难以满足需求。

故本申请提供了一种串行传输的方法,用于解决上述问题:本申请用于点对点的两个模块之间的串行传输,分为发送模块和接收模块。发送模块是传输的主动发起端,接收模块是传输的被动接收方。发送模块通过发送指定的串行指令来实现读写访问接收模块的操作,接收模块接收并解析发送模块的串行指令后返回相关的数据。默认情况下由发送模块控制信号线。

可选的,可以通过一根连接发送模块与接收模块的时钟线建立该同步时钟域。

s102:根据数据传输任务生成基于同步时钟域的时钟周期的任务信号;

这里提到的,在建立同步时钟域以后,根据数据传输任务生成基于同步时钟域的时钟周期的任务信号,其实质为将数据传输任务转换为二进制的任务信号,然后利用信号线的高低电平完成对任务信号的传输;

可选的,该数据传输任务的内容可以包括但不限于任务类型、目的地址、待传输数据等。

s103:通过信号线发送传输开始信号至接收模块,以提示接收模块传输开始;

例如,可以通过发送模块控制信号线保持高电平至少10个clk(时钟周期),当要启动传输时,发送模块将信号线拉低10个clk,以使接收模块发现保持10个clk的高电平信号线被拉低,而且持续10个clk时,将其解析为传输开始;当然这仅为本申请的所提供的一种实施例,本申请对传输开始信号的形式不作具体限定,实际情况可以根据用户喜好或生产厂家的生成环境做具体设定。

s104:通过信号线将任务信号发送至接收模块,以使接收模块根据任务信号确定并完成数据传输任务。

在接收到发送模块发送的任务信号后,接收模块根据该任务信号确定数据传输任务的内容,然后完成该数据传输任务。

基于上述技术方案,本申请所提供的一种串行传输的方法,通过发送模块建立与接收模块之间的同步时钟域,然后根据数据传输任务生成基于同步时钟域的时钟周期的任务信号;最后通过信号线将任务信号发送至接收模块,以使接收模块根据任务信号确定并完成数据传输任务,与现有技术相比,本方案没有i2c总线或smbus总线对时钟频率的限制,因此能够以更高的时钟频率进行传输,解决了现有技术中传输速率低的问题。

针对于上一实施例,当该数据传输任务的任务类型为写入任务时,步骤s102所描述的根据数据传输任务生成基于同步时钟域的时钟周期的任务信号,其具体可以为如图2所示的步骤,下面结合图2进行说明。

请参考图2,图2为图1所提供的一种串行传输的方法中s102的一种实际表现方式的流程图。

其具体包括以下步骤:

s201:确定数据传输任务的任务类型为写入任务;

s202:获取数据传输任务的写目的地址及待写入数据;

s203:根据任务类型、写目的地址及待写入数据生成基于同步时钟域的时钟周期的写入任务信号。

在此基础上,步骤s104中所描述的接收模块根据任务信号确定并完成数据传输任务,其具体可以为如图3所示的步骤,下面结合图3进行说明。

请参考图3,图3为图1所提供的一种串行传输的方法中s104的一种实际表现方式的流程图。

其具体包括以下步骤:

s301:接收模块接收写入任务信号;

s302:根据写入信号确定写目的地址及待写入数据;

s303:将待写入数据写入写目的地址。

基于上述技术方案,当该数据传输任务的任务类型为写入任务时,整个数据传输过程可以为:

发送模块将信号线拉低10个clk,以提示接收模块传输开始,然后从第11个clk开始,发送模块开始发送读写命令。写命令为8位串行数据0xaa,用8个clk发送完毕,接收模块接收完成后,就准备开始接收写目的地址,写目的地址也是8位的。发送模块根据具体要访问的接收模块内部寄存器或者其他的地址,向其发送8位的串行地址,接收模块收到8位地址后,继续接收待写入数据,完成整个写入任务。

例如,如图4所示,图4为本申请实施例所提供的一种串行传输的方法中写入任务的时序图,整个时序是发送模块往接收模块的0xc5的寄存器写1,为了理解方便,图中引入计数器,计数器是根据时钟计数。从计数器计数1-10是发送模块写操作的第一步启动传输,发送模块将信号线拉低10个clk。从计数器11-18是发送写命令0xaa,计数器19-26是发送写地址0xc5,计数器27-34是写的值1,从计数器35以后是传输结束,发送模块将信号线拉高至少10个clk,然后可以开始下一次传输。

针对于上一实施例,当该数据传输任务的任务类型为读取任务时,步骤s102所描述的根据数据传输任务生成基于同步时钟域的时钟周期的任务信号,其具体可以为如图5所示的步骤,下面结合图5进行说明。

请参考图5,图5为图1所提供的一种串行传输的方法中s102另的一种实际表现方式的流程图。

其具体包括以下步骤:

s501:确定数据传输任务的任务类型为读取任务;

s502:获取数据传输任务的读目的地址;

s503:根据任务类型及读目的地址生成基于同步时钟域的时钟周期的读取任务信号。

针对于上一实施例的步骤s105,其中所描述的结合预设密钥将该密文解密为明文,其具体也可以根据当前设备的设备级别选择对应秘钥,下面结合图5进行说明。

请参考图6,图6为图1所提供的一种串行传输的方法中s104的另一种实际表现方式的流程图。

其具体包括以下步骤:

s601:接收模块接收读取任务信号;

s602:根据读取信号确定读目的地址;

s603:在读目的地址中读取待读取数据,并将待读取数据发送至发送模块。

基于上述技术方案,当该数据传输任务的任务类型为读取任务时,整个数据传输过程可以为:

发送模块将信号线拉低10个clk,以提示接收模块传输开始,然后从第11个clk开始,发送模块开始发送读取命令。读命令也是8位串行数据,具体可以为0x55,读命令用8个clk发送完毕,接收模块接收完成后,就准备开始接收读目的地址,发送模块根据具体要访问的接收模块内部寄存器或者其他的地址,向其发送8位的串行地址;

发送模块要执行读操作,在发送完8位地址后,便释放总线控制权,使得接收模块在接收完8位地址后获得总线控制权,然后接收模块向发送模块发送8位其需要读取的数据,接收模块发送完8位数据后放弃总线控制权,发送模块重新获得总线控制权,完成整个读取任务。

例如,如图7所示,图7为本申请实施例所提供的一种串行传输的方法中读取任务的时序图,从计数器计数1-10是发送模块写操作的第一步启动传输,发送模块将信号线拉低10个clk。从计数器11-18是发送读命令0x55,计数器19-26是发送读地址0xc5,计数器27是总线控制权的交接,这一个clk完成了发送模块释放总线,接收模块获取总线。从计数器28-35是接收模块向发送模块发送其读取的值1,从计数器36开始表示传输结束,发送模块将信号线拉高至少10个clk,然后可以开始下一次传输。

请参考图8,图8为本申请实施例所提供的一种串行传输的装置的结构图。

该装置可以包括:

发送模块100,用于当接收到输入的数据传输任务时,建立与接收模块之间的同步时钟域;根据数据传输任务生成基于同步时钟域的时钟周期的任务信号;通过信号线发送传输开始信号至接收模块200,以提示接收模块200传输开始;通过信号线将任务信号发送至接收模块200;

接收模块200,用于根据任务信号确定并完成数据传输任务。

请参考图9,图9为本申请实施例所提供的另一种串行传输的装置的结构图。

该发送模块100可以包括:

第一确定子模块,用于确定数据传输任务的任务类型为写入任务;

第一获取子模块,用于获取数据传输任务的写目的地址及待写入数据;

第一生成子模块,用于根据任务类型、写目的地址及待写入数据生成基于同步时钟域的时钟周期的写入任务信号。

对应的,该接受模块200可以包括:

第一接收子模块,用于接收写入任务信号;

第三确定子模块,用于根据写入信号确定写目的地址及待写入数据;

写入子模块,用于将待写入数据写入写目的地址。

该生成模块100也包括:

第二确定子模块,用于确定数据传输任务的任务类型为读取任务;

第二获取子模块,用于获取数据传输任务的读目的地址;

第二生成子模块,用于根据任务类型及读目的地址生成基于同步时钟域的时钟周期的读取任务信号。

对应的,该接受模块200也可以包括:

第二接收子模块,用于接收模块接收读取任务信号;

第四确定子模块,用于根据读取信号确定读目的地址;

读取子模块,用于在读目的地址中读取待读取数据,并将待读取数据发送至发送模块。

由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

请参考图10,图10为本申请实施例所提供的一种串行传输设备的结构图。

该串行传输设备1000可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)1022(例如,一个或一个以上处理器)和存储器1032,一个或一个以上存储应用程序1042或数据1044的存储介质1030(例如一个或一个以上海量存储设备)。其中,存储器1032和存储介质1030可以是短暂存储或持久存储。存储在存储介质1030的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对装置中的一系列指令操作。更进一步地,中央处理器1022可以设置为与存储介质1030通信,在串行传输设备1000上执行存储介质1030中的一系列指令操作。

串行传输设备1000还可以包括一个或一个以上电源1026,一个或一个以上有线或无线网络接口1050,一个或一个以上输入输出接口1058,和/或,一个或一个以上操作系统1041,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述图1至图7所描述的串行传输的方法中的步骤由串行传输设备基于该图10所示的结构实现。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,功能调用装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本申请所提供的一种串行传输的方法、装置、设备及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

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