一种数据交换方法及电子设备与流程

文档序号:17398334发布日期:2019-04-13 00:59阅读:293来源:国知局
一种数据交换方法及电子设备与流程

本发明涉及计算机软件与fpga数据交换技术领域,尤指一种数据交换方法及电子设备。



背景技术:

目前,电子设备中的存储器和现场可编程门阵列(fieldprogrammablegatearray,fpga)在存储数据时采用大端在左,小端在右的方式进行存储。比如以两字节整数,32个数据(即一个数据占两个字节,32个数据共64字节)为例,第1个数据大端字节为1,小端字节为0,…第32个数据大端字节为63,小端字节为62。因此,在计算机中连续存储数据顺序一般为:103254…6362。而fpga在读写64字节数据时的顺序为63626160……3210。

因此,目前fpga读取存储器中的数据时,需要对要读取的数据进行翻转,例如存储器中存储的数据为:103254…61606362。当fpga读写存储器中的数据时,fpga先将每个数据的两字节翻转:即0123…6263,然后将最后一个数据的两个字节和第一个数据的两个字节翻转,倒数第二个数据的两个字节和第二个数据的两个字节翻转:即63626160…3210,fpga从而可以能够对存储器中的数据进行读写。由于,存储器中的数据需要遍历两次,每个字节需要交换两次,从而使得存储器中的数据翻转次数较多,耗费时间,进而使得存储器与fpga之间的数据交换的效率低。



技术实现要素:

本发明实施例提供一种数据交换方法及电子设备,用以提高数据交换的效率。

第一方面,本发明实施例提供一种数据交换方法,应用于一电子设备;所述电子设备包括现场可编程门阵列fpga以及存储器,所述存储器用于存储数据,所述fpga用于从所述存储器中读取数据,所述方法包括:

所述fpga将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的m个数据;其中,所述j=m-i+1;所述第i个数据占至少一个字节;所述第j个数据占至少一个字节;

所述fpga读取所述重排之后的m个数据。

可选地,所述待读取数据中每个数据占k个字节,所述fpga一次读取n个字节,所述待读取数据的字节总长为l,其中,所述l为所述n的整数倍,所述k、l、n均为大于0的整数;所述fpga将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,包括:

所述fpga将所述待读取数据分为l/n个第一数据;

所述fpga再将第q个第一数据分为n/k个第二数据;所述q为大于0小于等于l/n的整数;所述n/k=m;

所述fpga将第i个第二数据和第j个第二数据交换;其中,所述i为大于0小于等于n/k的整数。

可选地,所述方法还包括:

若所述l不是所述n的整数倍,所述fpga对所述待读取数据进行前面补充零,使补充零后的待读取数据的长度l为所述n的整数倍。

可选地,所述第i个数据和所述第j个数据所占的字节数相同。

第二方面,本发明实施例提供一种电子设备,包括:

存储单元,所用于存储数据;

处理单元,用于从所述存储单元中读取数据;

所述处理单元还用于将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的m个数据;其中,所述j=m-i+1;所述第i个数据占至少一个字节;所述第j个数据占至少一个字节;

所述处理单元还用于读取所述重排之后的m个数据。

可选地,所述待读取数据中每个数据占k个字节,所述处理单元一次读取n个字节,所述待读取数据的字节总长为l,其中,所述l为所述n的整数倍,所述k、l、n均为大于0的整数;所述处理单元在用于将待读取数据中包括的m个数据中的第i个数据和第j个数据交换时,具体用于:

将所述待读取数据分为l/n个第一数据;

再将第q个第一数据分为n/k个第二数据;所述q为大于0小于等于l/n的整数;所述n/k=m;

将第i个第二数据和第j个第二数据交换;其中,所述i为大于0小于等于n/k的整数。

可选地,所述处理单元还用于:

若所述l不是所述n的整数倍,对所述待读取数据进行前面补充零,使补充零后的待读取数据的长度l为所述n的整数倍。

可选地,所述第i个数据和所述第j个数据所占的字节数相同。

第三方面,本发明实施例提供一种电子设备,包括:

存储器,所用于存储数据;

fpga,用于从所述存储器中读取数据;

所述fpga还用于将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的m个数据;其中,所述j=m-i+1;所述第i个数据占至少一个字节;所述第j个数据占至少一个字节;

所述fpga还用于读取所述重排之后的m个数据。

可选地,所述待读取数据中每个数据占k个字节,所述fpga一次读取n个字节,所述待读取数据的字节总长为l,其中,所述l为所述n的整数倍,所述k、l、n均为大于0的整数;所述fpga在用于将待读取数据中包括的m个数据中的第i个数据和第j个数据交换时,具体用于:

将所述待读取数据分为l/n个第一数据;

再将第q个第一数据分为n/k个第二数据;所述q为大于0小于等于l/n的整数;所述n/k=m;

将第i个第二数据和第j个第二数据交换;其中,所述i为大于0小于等于n/k的整数。

可选地,所述fpga还用于:

若所述l不是所述n的整数倍,对所述待读取数据进行前面补充零,使补充零后的待读取数据的长度l为所述n的整数倍。

可选地,所述第i个数据和所述第j个数据所占的字节数相同。

第四方面,本发明实施例提供一种电子设备,包括处理器和存储器;其中,所述存储器用于存储一个或多个计算机程序;当所述存储器存储的一个或多个计算机程序被所述处理器执行时,使得所述电子设备实现第一方面或上述第一方面的任意一种可能的设计的方法。

第五方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面或上述第一方面的任意一种可能的设计的方法。

第六方面,本发明实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面或上述第一方面的任意一种可能的设计的方法。

本发明有益效果如下:

本发明中实施例的技术方案中,fpga将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的数据;其中,j=m-i+1;第i个数据占至少一个字节;第j个数据占至少一个字节;fpga读取重排之后的m个数据。通过这种方式,fpga只需将待读取数据中的m个数据交换m/2次就可以将m个数据的顺序完成重排,减少了m个数据的交换次数,节省了时间,从而可以提高数据交换的效率。

附图说明

图1为本发明实施例提供的一种数据交换方法的流程示意图;

图2为本发明实施例提供的一种电子设备的结构示意图;

图3为本发明实施例提供的一种电子设备的结构示意图;

图4为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

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

附图中各部件的形状和大小不反映真实比例,目的只是示意说明本发明内容。

请参考图1所示,为本发明实施例提供的一种数据交换方法的流程示意图。该方法应用于一电子设备。该电子设备可以包括现场可编程门阵列fpga以及存储器。其中,存储器用于存储数据,fpga用于从存储器中读取数据。电子设备可以是手机、计算机、机器人等等设备。如图1所示,该方法的流程包括:

s101、fpga将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的m个数据;其中,j=m-i+1;第i个数据占至少一个字节;第j个数据占至少一个字节。

可选地,待读取数据中可以包括m个数据。fpga可以将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的m个数据。比如,以待读取数据中每个数据占k个字节,fpga一次读取n个字节,待读取数据的字节总长为l(l为n的整数倍)为例。fpga可以将待读取数据分为l/n个第一数据,fpga再将第q个第一数据分为n/k个第二数据。其中,q为大于0小于l/n等于的整数,n/k=m。然后,fpga在读取重排之后的m个数据之前,fpga可以将第i个第二数据和第j个第二数据交换;其中,i为大于0小于等于n/k的整数。

举例来说,以待读取数据中每个数据占2(即k=2)个字节,fpga一次读取64(即n=64)个字节,待读取数据的字节总长为512(即l=512)为例。fpga可以将待读取数据分为8(512/64=8)个第一数据,每个第一数据都是64个字节,fpga能够一次读取。

fpga再将第q(q为大于0小于等于8的整数)个第一数据分为32个第二数据,即一个第一数据为m个数据,一个第二数据为32(即m=32)个数据中的一个数据。然后,fpga将第i个第二数据和第j个第二数据交换;其中,i为大于0小于等于32的整数。比如,以待读取数据中的其中一个第一数据中的顺序为103254…6362为例,其中,该第一数据可以包括32个第二数据,每个数据占2个字节,即第一数据字节顺序中从左到右每两个字节为一个数据,例如1字节和0字节为第1个第二数据,3字节和2字节为第2个第二数据,以此类推,64字节和63字节为第32个第二数据。fpga可以将第i个第二数据和第j个第二数据交换,比如fpga可以将第1个第二数据和第32个第二数据进行交换,可以将第2个第二数据和第31个第二数据进行交换,以此类推,直至将该第一数据中的所有第二数据的顺序交换完毕。即fpga将第一数据中的所有第二数据交换16次就可以,得到重排后的第一数据的顺序63626160……543210。

s102、fpga读取重排之后的m个数据。

可选地,fpga完成待读取数据中的一个第一数据的字节顺序重排之后,读取该第一数据,即fpga每完成待读取数据中的一个第一数据的字节顺序重排之后,读取一个第一数据。

由前述描述内容可知,本发明实施例中fpga只需将待读取数据中的一个第一数据中的所有第二数据交换m/2次就可以将该第一数据的字节顺序完成重排。相比于现有技术中,fpga中将第一数据中的所有第二数据的每个第二数据中的每个字节需要交换两次的交换次数少,节省了时间,从而可以提高存储器与fpga之间的数据交换的效率。

需要说明的是,上述是以两两字节交换为例,即以待读取数据中每个数据为单位交换为例。当然,本发明实施例还可以以单个字节交换为例。下面介绍fpga将单个字节交换为例进行介绍。

可选地,还是以待读取数据中每个数据占2个字节,fpga一次读取64个字节,待读取数据的字节总长为512为例。fpga可以将待读取数据分为8个第一数据,其中,每个第一数据包括64个字节。fpga再将第q(q为大于0小于等于8的整数)个第一数据中的第i个字节和第j个字节交换。在此处,i为大于0小于等于64的整数,当i为单数时,j为64-i的整数,当i为偶数时,j为66-i的整数。比如,还是以待读取数据中的其中一个第一数据中的顺序为103254…6362为例,该第一数据中的第1个字节为1字节,第2个字节为0字节,以此类推,第64个字节为62字节。fpga可以将第i个字节和第j个字节交换,比如fpga可以将第1个字节(即1字节)和第63个字节(即63字节)进行交换,可以将第2个字节(即0字节)和第64个字节(即62字节)进行交换,以此类推,直至将该第一数据中的64个字节的顺序交换完毕。即fpga将第一数据中的64个字节交换32次就可以,得到重排后的第一数据的顺序63626160……543210。

由前述描述内容可知,本发明实施例中fpga只需将待读取数据中的一个第一数据中的所有字节交换n/2次就可以将该第一数据的字节顺序完成重排。相比于现有技术中,fpga中将第一数据中的所有每个字节需要交换两次的交换次数少,节省了时间,从而可以提高存储器与fpga之间的数据交换的效率。

需要说明的是,上述是以待读取数据中的其中一个第一数据进行重排为例,当然,待读取数据中的其它第一数据可以采用相同或类似的方式进行重排,本发明实施例不限定。

需要说明的是,上述是以l是n的整数倍为例,若l不是n的整数倍,fpga对待读取数据进行前面补充零,使补充零后的待读取数据的长度l为n的整数倍。其中,补充零后的待读取数据的字节顺序重排的方式可以与上述l是n的整数倍的待读取数据的字节顺序重排的方式相同或类似,在此就不重复赘述。

上文是以每个数据占用两个字节为例的,在实际应用中,不限定每个数据占用的字节数。无论每个数据占用几个字节,都可以使用本发明实施例提供的数据交换方法进行数据交换。

通过以上描述可知,本发明中实施例的技术方案中,fpga将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的数据;其中,j=m-i+1;第i个数据占至少一个字节;第j个数据占至少一个字节;fpga读取重排之后的m个数据。通过这种方式,fpga只需将待读取数据中的m个数据交换m/2次就可以将m个数据的顺序完成重排,减少了m个数据的交换次数,节省了时间,从而可以提高数据交换的效率。

基于同一发明构思下,本发明实施例提供了一种电子设备。请参考图2所示,为本发明实施例提供的一种电子设备的结构示意图。其中,电子设备可以是手机、计算机、机器人等等设备。

如图2所示,电子设备200包括:

存储单元201,用于存储数据;

处理单元202,用于从存储单元201中读取数据;

处理单元202还用于将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的m个数据;其中,j=m-i+1;第i个数据占至少一个字节;第j个数据占至少一个字节;

处理单元202还用于读取重排之后的m个数据。

可选地,待读取数据中每个数据占k个字节,处理单元202一次读取n个字节,待读取数据的字节总长为l,其中,l为n的整数倍,k、l、n均为大于0的整数;处理单元202在用于将待读取数据中包括的m个数据中的第i个数据和第j个数据交换时,具体用于:

将待读取数据分为l/n个第一数据;

再将第q个第一数据分为n/k个第二数据;q为大于0小于等于l/n的整数;n/k=m;

将第i个第二数据和第j个第二数据交换;其中,i为大于0小于等于n/k的整数。

可选地,处理单元202还用于:

若l不是n的整数倍,对待读取数据进行前面补充零,使补充零后的待读取数据的长度l为n的整数倍。

可选地,第i个数据和第j个数据所占的字节数相同。

本实施例中的电子设备200与前述图1所示的数据交换方法是基于同一构思下的发明,通过前述对数据交换方法的详细描述,本领域技术人员可以清楚的了解本实施例中电子设备200的实施过程,所以为了说明书的简洁,在此不再赘述。

基于同一发明构思下,本发明实施例提供了一种电子设备。请参考图3所示,为本发明实施例提供的一种电子设备的结构示意图。其中,电子设备可以是手机、计算机、机器人等等设备。

如图3所示,电子设备300包括:

存储器301,用于存储数据;

fpga(图3中用302标识),用于从存储器301中读取数据;

fpga还用于将待读取数据中包括的m个数据中的第i个数据和第j个数据交换,得到重排之后的m个数据;其中,j=m-i+1;第i个数据占至少一个字节;第j个数据占至少一个字节;

fpga还用于读取重排之后的m个数据。

可选地,待读取数据中每个数据占k个字节,fpga一次读取n个字节,待读取数据的字节总长为l,其中,l为n的整数倍,k、l、n均为大于0的整数;fpga在用于将待读取数据中包括的m个数据中的第i个数据和第j个数据交换时,具体用于:

将待读取数据分为l/n个第一数据;

再将第q个第一数据分为n/k个第二数据;q为大于0小于等于l/n的整数;n/k=m;

将第i个第二数据和第j个第二数据交换;其中,i为大于0小于等于n/k的整数。

可选地,fpga还用于:

若l不是n的整数倍,对待读取数据进行前面补充零,使补充零后的待读取数据的长度l为n的整数倍。

可选地,第i个数据和第j个数据所占的字节数相同。

本实施例中的电子设备300与前述图1所示的数据交换方法是基于同一构思下的发明,通过前述对数据交换方法的详细描述,本领域技术人员可以清楚的了解本实施例中电子设备300的实施过程,所以为了说明书的简洁,在此不再赘述。

基于同一发明构思下,本发明实施例提供了一种电子设备。请参考图4所示,为本发明实施例提供的一种电子设备的结构示意图。如图4所示,电子设备400包括处理器401和存储器402。可选地,处理器401可以是通用的中央处理器(centralprocessingunit,cpu)或特定应用集成电路(applicationspecificintegratedcircuit,asic),可以是一个或多个用于控制程序执行的集成电路。

可选地,存储器402可以包括高速随机存取存储器,还可以包括非易失存储器,例如磁盘存储器件、闪存器件或其他非易失性固态存储器件等,本发明实施例不作限定。

可选地,存储器402用于存储一个或多个计算机程序;当存储器402存储的一个或多个计算机程序被处理器401执行时,使得电子设备400能够实现图1所示的实施例中的全部或部分步骤。

本实施例中的电子设备400与前述图1所示的数据交换方法是基于同一构思下的发明,通过前述对数据交换方法的详细描述,本领域技术人员可以清楚的了解本实施例中电子设备400的实施过程,所以为了说明书的简洁,在此不再赘述。

基于同一发明构思下,本发明实施例提供了一种计算机可读存储介质。可选地,计算机可读存储介质有计算机程序,计算机程序包括程序指令,程序指令当被计算机执行时,使计算机执行上述数据交换方法的步骤。由于本实施例中的计算机程序与前述图1所示的数据交换方法是基于同一构思下的发明,通过前述对数据交换方法的详细描述,本领域技术人员可以清楚的了解本实施例中计算机程序的实施过程,所以为了说明书的简洁,在此不再赘述。

基于同一发明构思下,本发明实施例提供了一种计算机程序产品,计算机程序产品存储有计算机程序,计算机程序包括程序指令,程序指令当被计算机执行时,使得计算机执行上述数据交换方法的步骤。由于本实施例中的计算机程序产品与前述图1所示的数据交换方法是基于同一构思下的发明,通过前述对数据交换方法的详细描述,本领域技术人员可以清楚的了解本实施例中计算机程序产品的实施过程,所以为了说明书的简洁,在此不再赘述。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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