掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及电子技术领域,尤其涉及一种数据写入方法、装置及设备。

背景技术

先进先出( First Input First Output,FIFO)存储器是一种用于数据传输和接口匹配的数据缓冲器,目前广泛应用于各种数字系统中。现有FIFO存储器的位宽通常是固定的,且需要和源端、接收端接口的位宽严格匹配,由此在应用过程中存在存储空间的浪费问题,因为随着系统复杂度的提高,不同模块与接口之间的数据位宽可能不一致,从而导致FIFO存储器的存储空间无法被充分利用。

这种FIFO存储器的内存空间未被充分利用的现象在规模较小的现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)芯片中尤其严重,其原因在于FPGA芯片中的存储资源非常宝贵,如何提高FIFO存储器的存储空间利用率成为了亟需解决的问题。

发明内容

有鉴于此,本申请的主要目的在于提供一种数据写入方法、装置及设备,目的在于通过提高FIFO存储器的存储空间利用效率。

本申请第一方面提供了一种数据写入方法,该方法包括:

移位寄存器根据配置信息设置数据位宽阈值以及计数器阈值,移位寄存器的位宽与FIFO存储器的位宽相同,配置信息根据FIFO存储器的位宽确定;

当移位寄存器接收到数据位宽为数据位宽阈值的待写入数据时,移位寄存器增加移位寄存器中的计数器的值,计数器每次增加的值相同;

当计数器的值等于计数器阈值时,移位寄存器停止数据接收,并将已接收到的待写入数据写入至FIFO存储器。

在本申请第一方面的一些实现方式中,将已接收到的待写入数据写入至FIFO存储器之后,该方法还包括:

移位寄存器复位,以使移位寄存器等待接收数据位宽为数据位宽阈值的新的待写入数据,并在复位后的计数器的值等于计数器阈值时,将已接收到的新的待写入数据写入至FIFO存储器。

在本申请第一方面的一些实现方式中,将已接收到的待写入数据写入至FIFO存储器,包括:

移位寄存器生成写使能信号,并将写使能信号传输至FIFO存储器,以使FIFO存储器打开FIFO存储器的写端口;

移位寄存器通过写端口将已接收到的待写入数据并行写入至FIFO存储器。

在本申请第一方面的一些实现方式中,配置信息包括:数据帧长度信息、数据帧长度单位信息、计数器阈值信息、写使能功能使能信息、配置信息标志位信息。

在本申请第一方面的一些实现方式中,根据配置信息设置数据位宽阈值以及计数器阈值,包括:

移位寄存器根据数据帧长度信息以及数据帧长度单位信息设置数据位宽阈值;

移位寄存器根据计数器阈值信息设置计数器阈值。

在本申请第一方面的一些实现方式中,FIFO存储器的位宽等于数据位宽阈值以及计数器阈值的积。

在本申请第一方面的一些实现方式中,移位寄存器包括以下至少一种状态:空闲状态、写入状态、满状态、使能状态以及复位状态,移位寄存器的状态通过状态机进行切换。

在本申请第一方面的一些实现方式中,空闲状态,用于指示移位寄存器等待接收待写入数据;

写入状态,用于指示移位寄存器接收待写入数据;

满状态,用于指示移位寄存器停止数据接收;

使能状态,用于指示移位寄存器将已接收到的待写入数据写入至FIFO存储器;

复位状态,用于指示移位寄存器复位。

本申请第二方面提供了一种数据写入装置,该数据写入装置属于移位寄存器,该数据写入装置包括:

配置模块,用于根据配置信息设置数据位宽阈值以及计数器阈值,移位寄存器的位宽与FIFO存储器的位宽相同,配置信息根据FIFO存储器的位宽确定;

计数模块,用于当接收到数据位宽为数据位宽阈值的待写入数据时,增加移位寄存器中的计数器的值,计数器每次增加的值相同;

写入模块,用于当计数器的值等于计数器阈值时,停止数据接收,并将已接收到的待写入数据写入至FIFO存储器。

本申请第三方面提供一种数据写入设备,其特征在于,设备包括:包括存储器和处理器,处理器用于执行存储器中存储的程序,运行如本申请第一方面所提供的数据写入方法。

本申请所提供的技术方案具有如下有益效果:

在本申请首先基于FIFO存储器的位宽设置移位寄存器的数据位宽阈值以及计数器阈值,并且该移位寄存器的位宽与FIFO存储器的位宽相同;之后,移位寄存器每接收到数据位宽为数据位宽阈值的待写入数据,移位寄存器的计数器的值便增加,且每次增加的值相同;最后,在计数器的值等于计数器阈值时,将移位寄存器中的待写入数据写入至FIFO存储器中,由于每次在达到计数器阈值才执行写入,因此提高了FIFO存储空间的利用效率。

附图说明

图1为本申请实施例提供的传统FIFO与数据不匹配的示意图;

图2为本申请实施例提供的一种数据写入方法的流程示意图;

图3为本申请实施例提供的移位寄存器工作原理的示意图;

图4为本申请实施例提供的整体方案的示意图;

图5为本申请实施例提供的又一种数据写入方法的流程示意图;

图6为本申请实施例提供的一种移位寄存器的状态切换图;

图7为本申请实施例提供的一种数据写入装置的结构示意图;

图8为本申请实施例提供的一种数据写入设备的结构示意图。

具体实施方式

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

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等,如果存在是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

正如背景技术所言,目前FIFO存储器存在存储空间资源利用率低的问题,参见图1所示,传统的FIFO存储器的位宽通常固定为32位,如果不考虑实际写入至用于暂存需要写入至FIFO存储器的数据的数据暂存器或缓冲存储器(TX BUFFER)的数据位宽,便会导致存储空间浪费的问题。例如FIFO存储器的位宽为32位,而TX BUFFER数据位宽仅为8位。这种情况下,每次向FIFO存储器写入8位数据,FIFO的深度计数加1,但32位宽度的FIFO存储器并未被填满。如果FIFO存储器的计数器阈值设置为4,当向FIFO存储器写入4次8位数据时,即触发中央处理器(Central Processing Unit,CPU)或直接内存访问控制器(Direct MemoryAccess,DMA)进行数据读取,但此时FIFO存储器并未充分利用存储空间,只填充了4个字节,由此导致了FIFO存储资源的低效利用和浪费。

有鉴于此,参见图2所示,本申请提供了一种数据写入方法,目的在于提高FIFO存储器的存储空间利用效率,具体包括以下步骤:

S201:移位寄存器根据配置信息设置数据位宽阈值以及计数器阈值,移位寄存器的位宽与FIFO存储器的位宽相同,配置信息根据FIFO存储器的位宽确定。

在本申请的实施例中,移位寄存器是一种在若干相同时间脉冲下工作的以触发器为基础的器件,数据以并行或串行的方式输入到移位寄存器中,然后每个时间脉冲依次移动一个比特,并在输出端进行输出,可以用于收集和打包不同位宽的数据;FIFO存储器指的是一种先进先出的数据缓冲器,在FIFO存储器中,先进入的数据会被第一个移出;位宽是指数字电路系统中数据传输和存储的二进制位的个数,例如,8位宽表示可以传输或存储8位二进制数据,32位宽表示可以传输或存储32位二进制数据,此外,位宽通常是固定的,其代表的是可以同时存储和传输的二进制位的数量。需要说明的是,移位寄存器与FIFO存储器的位宽相等,例如,如果FIFO存储器的位宽为32位,那么移位寄存器的位宽也应该为32位。由此保证移位寄存器中的数据可以完整地写入FIFO存储器中,而不会出现数据丢失或溢出的情况。

数据位宽阈值是指移位寄存器每次接收多少位的待写入数据,计数器阈值是指移位寄存器的计数器的值达到多少时将移位寄存器中的数据写入FIFO存储器,配置信息可以是指用于指定移位寄存器的工作参数的信息。

执行S201的目的在于实现移位寄存器的动态配置,使移位寄存器能够根据不同的数据位宽进行自适应的数据收集与打包。

在本申请实施例的一些实现方式中,配置信息具体包括:数据帧长度信息、数据帧长度单位信息、计数器阈值信息、写使能功能使能信息、配置信息标志位信息。

其中,数据帧长度信息用于指示每次向移位寄存器写入的数据的位数的值,数据帧长度单元信息用于标识每次向移位寄存器写入的数据的位数值的单位,例如字节Byte、比特Bit,需要说明的是,写入或移入移位寄存器的最小单元为1个字节,由于1Byte=8Bit,相应的,当数据帧长度单位为Byte时,数据帧长度为1或1的整倍数;当数据帧长度单位为Bit时,数据帧长度为8或8的整倍数。计数器阈值信息用于指示移位寄存器的计数器的值达到多少时执行数据写入。写使能功能使能信息用于表示是否启用移位寄存器的写使能功能,写使能功能是指当移位寄存器中的满足执行数据写入的条件时,生成写使能信号,将移位寄存器中的数据写入FIFO存储器。例如,如果指示移位寄存器启用写使能功能,该位为1;如果指示移位寄存器不启用写使能功能,该位为0。配置信息标志位信息用于表示当前移位寄存器接收到的信息是配置信息。

在本申请实施例的一些实现方式中,根据配置信息设置数据位宽阈值以及计数器阈值,具体包括:移位寄存器根据数据帧长度信息以及数据帧长度单位信息设置数据位宽阈值;移位寄存器根据计数器阈值信息设置计数器阈值。在此结合举例进一步说明,假设配置信息中的部分信息如下:数据帧长度信息为1,数据帧长度单位为Byte,计数器阈值为4,由此移位寄存器设置的数据位宽阈值为1Byte,计数器阈值为4。

需要说明的是,配置信息的基于FIFO存储器的位宽确定的,其目的在于最大程度的利用FIFO存储器的存储空间,优选地,遵循FIFO存储器的位宽等于数据位宽阈值以及计数器阈值的积的原则进行数据位宽阈值以及计数器阈值的设置。例如,假设FIFO存储的位宽为32位,则可以设置数据位宽阈值为8位,计数器阈值为4;也可以设置数据位宽阈值为16,计数器阈值为2。

S202:当移位寄存器接收到数据位宽为数据位宽阈值的待写入数据时,移位寄存器增加移位寄存器中的计数器的值,计数器每次增加的值相同。

在本申请实施例中,待写入数据具体指的是待写入FIFO存储器的二进制数据流。当移位寄存器接收到符合数据位宽阈值的待写入数据时,就将其顺序地写入移位寄存器,并向后移位,同时,增加计数器的值,用于统计写入次数。在此,可以是每次加1或1的整倍数,均不影响本申请实施例的实现,仅需保证每次都是增加相同的值即可。可以理解的是,每次增加的值的选择会影响计数器的计数方式以及计数器阈值的设置,在此假设移位寄存器每写入4次待写入数据后执行后续操作,计数器的初始值为0,当计数器的值每次加1时,计数器阈值为4,当计数器的值每次加2时,计数器阈值为8。

在本申请实施例中,S202的具体实现方式可参见图3所示,当移位寄存器接收到第一个8位的待写入数据时,就将其写入移位寄存器并向后移位,同时,计数器的值加1,此时计数器为1;当移位寄存器接收到第二个8位的待写入数据时,将其写入移位寄存器并向后移位,同时,计数器的值加1,此时计数器为2;当移位寄存器接收到第三个8位的待写入数据时,将其写入移位寄存器并向后移位,同时,计数器的值加1,此时计数器为3;以此类推,直至计数器的值达到计数器阈值。

S203:当计数器的值等于计数器阈值时,移位寄存器停止数据接收,并将已接收到的待写入数据写入至FIFO存储器。

在本申请的实施例中,停止数据接收具体表示在完成将已接收到的待写入数据存储在FIFO存储器之前,不再接收待写入数据。在写入FIFO存储器之前,移位寄存器会将已接收到的多个数据宽度为数据宽度阈值的待写入数据,打包在一起得到更大的待写入数据,例如将4个8位的待写入数据打包为一个32位的待写入数据。

本申请将已接收到的待写入数据写入至FIFO存储器的过程采用并行写入的方式进行,例如,参见图4所示,随机存取存储器RAM用于表示数据源,本申请在数据源与FIFO存储器之间增加了一个移位寄存器以提高FIFO存储器的存储空间利用率,假设当计数器的值等于计数器阈值时,移位寄存器从RAM处接收到了4个8位的待写入数据,则可以通过打包已接收到的数据,将一个32位的待写入数据并行写入至FIFO存储器中,由此,完成一轮的数据写入,FIFO存储器的存储空间得到了充分的利用。

在图2所示的流程中,首先基于FIFO存储器的位宽设置移位寄存器的数据位宽阈值以及计数器阈值,并且该移位寄存器的位宽与FIFO存储器的位宽相同,从而实现了移位寄存器的动态调整,使移位寄存器适应FIFO寄存器的位宽;之后,移位寄存器每接收到数据位宽为数据位宽阈值的待写入数据,移位寄存器的计数器的值便增加,且每次增加的值相同,最后,在计数器的值等于计数器阈值时,将移位寄存器中的待写入数据写入至FIFO存储器中。由此,可以通过基于FIFO存储器的位宽确定的配置信息,调整移位寄存器接收的数据的宽度,进而自适应匹配FIFO的位宽,提高了FIFO存储器的存储空间利用效率,可以为优化数字系统的资源占用与性能提升提供正向增益。

参见图5所示,本申请实施例又提供了一种数据写入方法,在图2所示流程的基础上,进一步介绍了待写入数据的写入方式,并增加了复位移位存储器的步骤,具体包括以下步骤:

S501:移位寄存器根据配置信息设置数据位宽阈值以及计数器阈值,移位寄存器的位宽与FIFO存储器的位宽相同,配置信息根据FIFO存储器的位宽确定。

在本申请实施例中,S501的具体实施方式与S201相同,本申请在此不做赘述。

S502:当移位寄存器接收到数据位宽为数据位宽阈值的待写入数据时,移位寄存器增加移位寄存器中的计数器的值,计数器每次增加的值相同。

在本申请实施例中,S502的具体实施方式与S202相同,本申请在此不做赘述。

S503:当计数器的值等于计数器阈值时,移位寄存器停止数据接收。

在本申请实施例中,S503的具体实施方式与S203类似,本申请在此不做赘述。

S504:移位寄存器生成写使能信号,并将写使能信号传输至FIFO存储器,以使FIFO存储器打开FIFO存储器的写端口。

写端口是指FIFO存储器中用于接收数据的端口,可以理解为FIFO存储器的输入端口;当FIFO存储器接收到来自移位寄存器的写使能信号时,就会根据该信号来打开写端口。当写端口打开时,表示允许移位寄存器将待写入数据写入FIFO存储器;当写端口关闭时,表示禁止移位寄存器将待写入数据写入FIFO存储器。

写使能信号是指向FIFO存储器发送的一个控制信号,用于控制写端口的关闭与打开,以指示FIFO存储器何时可以写入数据。该写使能信号的工作原理如下:移位寄存器中的待写入数据打包好后,会向FIFO存储器的控制逻辑发送写使能信号;FIFO存储器收到写使能信号高电平后,会打开写端口,允许移位寄存器的数据移位并写入FIFO存储器;写完数据后,写使能信号拉低,FIFO存储器会关闭写端口。

S505:移位寄存器通过写端口将已接收到的待写入数据并行写入至FIFO存储器。

在此,移位寄存器通过FIFO存储器的写端口完成一轮待写入数据至FIFO存储器的写入。

S506:移位寄存器复位,以使移位寄存器等待接收数据位宽为数据位宽阈值的新的待写入数据,并在复位后的计数器的值等于计数器阈值时,将已接收到的新的待写入数据写入至FIFO存储器。

在本申请实施例中,当移位寄存器完成一次将移位寄存器中的待写入数据写入至FIFO存储器的操作后,移位寄存器进行复位,以清空移位寄存器已接收到的待写入数据,同时,计数器的值恢复至初始值,或清零计数器的值。以等待接收新一轮的待写入数据,即返回执行S302的步骤,并在复位后的计数器的值等于计数器阈值时,执行S303至S305的步骤,以完成新一轮的待写入数据至FIFO存储器的写入。

在本申请实施例的一些实现方式中,移位寄存器包括以下至少一种状态,空闲状态、写入状态、满状态、使能状态以及复位状态,移位寄存器的状态通过状态机进行切换。

状态机或称移位寄存器的状态机,指的是加入移位寄存器上的用于控制移位寄存器各状态之间切换的控制逻辑,该状态机可以通过逻辑电路实现。参见图6所示,图6为本申请实施例提供的移位寄存器的状态切换图,各状态用于:

空闲状态,用于指示移位寄存器等待接收待写入数据;该空闲状态又可以称作移位寄存器的初始状态,当状态机将移位寄存器切换为空闲状态时,移位寄存器等待接收待写入数据,当移位寄存器接收到待写入数据时,状态机将移位寄存器切换到写入状态。

写入状态,用于指示移位寄存器接收待写入数据。当状态机将移位寄存器切换为写入状态时,移位寄存器开始接收待写入数据,且移位寄存器每接收到数据宽度为数据宽度阈值的待写入数据,将待写入数据移入寄存器中,并向后移位。当计数器的值等于计数器阈值时,表示移位寄存器可以向FIFO存储器写入已接收到的待写入数据。此时,状态机将移位寄存器切换为满状态。

满状态,用于指示移位寄存器停止数据接收。当状态机将移位寄存器切换为满状态时,移位寄存器不再接收新的待写入数据,之后,状态机将移位寄存器切换为使能状态。

使能状态,用于指示移位寄存器将已接收到的待写入数据写入至FIFO存储器。当状态机将移位寄存器切换为使能状态时,移位寄存器生成使能信号,并传输至FIFO存储器中,以使FIFO存储器打开写端口,并在FIFO存储打开写端口后,将移位寄存器中的待写入数据打包,并行地写入至FIFO存储器中,之后,状态机将移位寄存器切换为复位状态。

复位状态,用于指示移位寄存器复位。当状态机将移位寄存器切换为复位状态时,移位寄存器复位,初始化移位寄存器中所有模块,之后,状态机将移位寄存器切换为空闲状态。

在图5所示的流程中,通过生成和传输写使能信号,实现对FIFO存储器的写入控制,以使FIFO存储器打开其写端口;通过并行写入,可以实现将移位寄存器接收到的待写入数据转换适配FIFO存储器的位宽的数据,从而有效地利用FIFO存储器的空间,避免数据的浪费或不匹配,并提高FIFO存储器的存储空间利用效率。此外,通过并行写入还可以提高数据写入效率。通过复位实现移位寄存器的初始化,以实现下一轮待写入数据的收集与打包。通过定义不同的状态以及使用状态机来控制移位寄存器各状态之间的转换,实现对数据写入过程中的各个阶段的精确控制。

参见图7所示,本申请实施例还提供了一种数据写入装置,该输入写入装置属于移位寄存器,该数据写入装置包括以下模块:

配置模块701,用于根据配置信息设置数据位宽阈值以及计数器阈值,移位寄存器的位宽与FIFO存储器的位宽相同,配置信息根据FIFO存储器的位宽确定;

技术模块702,用于当接收到数据位宽为数据位宽阈值的待写入数据时,增加移位寄存器中的计数器的值,该计数器每次增加的值相同;

写入模块703,用于当计数器的值等于计数器阈值时,停止数据接收,并将已接收到的待写入数据写入至FIFO存储器。

在本申请实施的一些实现方式中,该装置还包括:

复位模块,用于复位,以使移位寄存器等待接收数据位宽为数据位宽阈值的新的待写入数据,并在复位后的计数器的值等于计数器阈值时,将已接收到的新的待写入数据写入至FIFO存储器。

在本申请实施例的一些实现方式中,将已接收到的待写入数据写入至FIFO存储器,包括:

生成写使能信号,并将写使能信号传输至FIFO存储器,以使FIFO存储器打开FIFO存储器的写端口;

通过写端口将已接收到的待写入数据并行写入至FIFO存储器。

在本申请实施例的一些实现方式中,配置信息包括:数据帧长度信息、数据帧长度单位信息、计数器阈值信息、写使能功能使能信息、配置信息标志位信息。

在本申请实施例的一些实现方式中,根据配置信息设置数据位宽阈值以及计数器阈值,包括:

根据数据帧长度信息以及数据帧长度单位信息设置数据位宽阈值;

移位寄存器根据计数器阈值信息设置计数器阈值。

在本申请实施例的一些实现方式中,FIFO存储器的位宽等于数据位宽阈值以及计数器阈值的积。

在本申请实施例的一些实现方式中,移位寄存器的状态包括:空闲状态、写入状态、满状态、使能状态以及复位状态,移位寄存器的状态通过状态机进行切换。

在本申请实施例的一些实现方式中,空闲状态,用于指示移位寄存器等待接收待写入数据;

写入状态,用于指示移位寄存器接收待写入数据;

满状态,用于指示移位寄存器停止数据接收;

使能状态,用于指示移位寄存器将已接收到的待写入数据写入至FIFO存储器;

复位状态,用于指示移位寄存器复位。

如图8所示,本申请实施例还提供了一种数据写入设备,包括:存储器801、处理器802;

其中,存储器801用于存储程序;

处理器802用于执行存储器中的程序,以实现上述如图2或图5所描述的一种数据写入方法。

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

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

相关技术
  • 一种数据写入方法及装置、设备、存储介质
  • 一种缓存写入方法、装置、设备及可读存储介质
  • 一种日志写入方法、装置、电子设备及存储介质
  • 数据写入方法、装置、设备及存储介质
  • 一种数据写入方法及装置
  • 在光存储器中并行地写入和读出数据的方法,供该方法使用的写入/读出设备,以及这种方法和写入/读出设备的用途
  • 一种基于磁盘的数据写入方法、数据写入装置及终端设备
技术分类

06120116480376