具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面对本申请中所涉及的部分术语进行解释,以方便读者理解:
“FIFO数据缓存器的数据位宽”,也就是英文资料里常看到的THE WIDTH,它指的是FIFO数据缓存器一次读写操作的数据位,就像MCU(英文:Microcontroller Uni,中文:微控制单元)有8位和16位,ARM32位等等,FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA(英文:Field-Programmable Gate Array,中文:现场可编程门阵列)自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。
“FIFO数据缓存器的深度”,也就是英文资料里常看到的THE DEEPTH,它指的是FIFO数据缓存器包括的存储单元个数。如一个8位的FIFO数据缓存器,若深度为8,它可以存储8个8位的数据,深度为12,就可以存储12个8位的数据。
为了使本领域的技术人员更好的理解本发明的技术方案,下面结合附图和具体实施例对本发明作进一步的详细说明。
图1为本发明实施例提供的FIFO数据缓存器的存储单元存储格式及地址结构示意图,参照图1所示,该FIFO数据缓存器深度为X,即包括X个存储单元,每个存储单元能够存储1-bit的数据块,其中,X>=(M+N)。其中,该FIFO数据缓存器中的X个存储单元对应的地址为0~X-1,同时,为了统一编码,该FIFO数据缓存器中的X个存储单元对应的编号分别为 1~X,其中,存储单元X为MSB(英文:Most Significant Bit,中文:最高有效位),存储单元1为LSB(英文:Least Significant Bit,中文:最低有效位)。需要说明的是,上述的编号仅仅是一种实例,实际应用时,可以按需设置。此外,本发明提供的FIFO数据缓存器还包括数据缓存区,该数据缓存区可以为一个也可以是多个,当该在数据缓存区为一个时,则该数据缓存区即可以对写入至该数据缓存区的数据进行拆分处理,还可以对从该FIFO数据缓存器中读取出的数据进行拼接处理;当该数据缓存区为至少两个时,则其中至少一个数据缓存区用于对写入至该数据缓存区的数据进行拆分处理,剩余数据缓存区用于对从该FIFO数据缓存器中读取出的数据进行拼接处理,即将数据的拆分处理与拼接处理分为不同数据缓存区进行处理。
需要说明的是,本文中的“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
需要说明的是,本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
需要说明的是,本发明实施例中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个数据包是指两个或两个以上的数据包。
需要说明的是,本发明实施例中,“的(英文:of)”,“相应的(英文:corresponding,relevant)”和“对应的(英文:corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
下面将结合本发明实施例的说明书附图,对本发明实施例提供的技术方案进行说明。显然,所描述的是本发明的一部分实施例,而不是全部的实施例。需要说明的是,下文所提供的任意多个技术方案中的部分或全部技术特征在不冲突的情况下,可以结合使用,形成新的技术方案。
基于上述内容,本发明实施例提供一种数据缓存器的数据写入方法,应用于数据缓存器,FIFO数据缓存器包括数据位宽为1-bit的存储单元,如图2所示,该方法包括如下步骤:
101、当FIFO数据缓存器处于写状态时,获取数据位宽为M-bit的第一待写入数据。
示例性的,对于FIFO数据缓存器来说,其输入的待写入数据的数据位宽是预先设定的,当待写入数据的数据位宽为M-bit时,该FIFO数据缓存器的写入方式是M进。
具体的,在获取数据位宽为M-bit的第一待写入数据之前,上述步骤101具体包括:
101a、判断FIFO数据缓存器当前的工作状态,工作状态包括写状态和读状态。
示例性的,FIFO数据缓存器一个写状态,一个读状态,当写状态ready时,可以写入数据,当写状态为unready时,不能写入数据,当读状态ready时,可以读取数据,当读状态为unready时,不能读出数据,并且读写状态对于各自端来讲独立操作。
具体的,当FIFO数据缓存器中未存储数据的存储单元的个数大于等于M时,FIFO数据缓存器处于写状态,即FIFO数据缓存器能够写入M-bit的待写入的数据块;当FIFO数据缓存器中存储数据的存储单元的个数大于等于N时,FIFO数据缓存器处于读状态,即FIFO数据缓存器能够读出N-bit的数据块;当FIFO数据缓存器中未存储数据的存储单元的个数大于等于M时且FIFO数据缓存器中存储数据的存储单元的个数大于等于N时即处于读状态的同时又处于写状态。
102、将第一待写入数据缓存在FIFO数据缓存器的数据缓存区中。
103、在数据缓存区中将第一待写入数据拆分为M个1-bit数据块。
104、将M个1-bit数据块依次存储至FIFO数据缓存器的前M个存储单元中。
可选的,当N大于M,且FIFO数据缓存器的深度X大于2M时,将M个1-bit数据块依次存储至FIFO数据缓存器的前M个存储单元中具体包括:
104a、将FIFO数据缓存器的前M个存储单元中存储的数据块整体移位至FIFO数据缓存器的第M+1至第2M个存储单元中。
104b、获取数据位宽为M-bit的第二待写入数据。
104c、将第二待写入数据缓存在FIFO数据缓存器的数据缓存区中。
104d、在数据缓存区中将第二待写入数据拆分为M个1-bit数据块。
104e、将M个1-bit数据块依次存储至FIFO数据缓存器的前M个存储单元中。
示例性的,当X>TM(T大于等于2)时,重复上述移位与存储过程,需要说明的是,上述FIFO数据缓存器的深度X大于2M,只是一种示例,均在本发明的保护范围之内。
本发明实施例提供的FIFO数据缓存器的数据写入方法,当FIFO数据缓存器处于写状态时,将数据位宽为M-bit的第一待写入数据缓存在FIFO数据缓存器的数据缓存区中,并拆分为M个1-bit数据块,之后依次存储至FIFO数据缓存器的前M个的存储单元中。由于该FIFO数据缓存器的所有存储单元能存储的数据的数据位宽都为1-bit,在写入数据的时,会按照FIFO数据缓存器预先设置的规则,即设置M进N的读写方式,将写入的M-bit数据进行拆分后存储至存储单元,以便读取的N个存储单元的数据均是写入FIFO数据缓存器的数据,没有冗余项,对读取出的数据按照预设规则进行拼接,就可以实现M进N出。
本发明实施例提供一种数据缓存器的数据读取方法,应用于数据缓存器,FIFO数据缓存器包括数据位宽为1-bit的存储单元,如图3所示,该方法包括如下步骤:
201、当FIFO数据缓存器处于读状态时,从FIFO数据缓存器的存储单元中读取N个1-bit数据块存储至FIFO数据缓存器的数据缓存区中。
具体的,步骤201之前还包括如下步骤:
201a、判断FIFO数据缓存器当前的工作状态,工作状态包括写状态和读状态。
具体的,当FIFO数据缓存器中未存储数据的存储单元的个数大于等于M时,FIFO数据缓存器处于写状态,即FIFO数据缓存器能够写入M-bit的待写入的数据块;当FIFO数据缓存器中存储数据的存储单元的个数大于等于N时,FIFO数据缓存器处于读状态,即FIFO数据缓存器能够读出N-bit的数据块;当FIFO数据缓存器中未存储数据的存储单元的个数大于等于M时且FIFO数据缓存器中存储数据的存储单元的个数大于等于N时即处于读状态的同时又处于写状态。
202、将数据缓存区中的N个1-bit数据块拼接为1个N-bit位宽的数据,并将N-bit位宽的数据输出。
示例性的,上述的数据缓存区还用于将N个1-bit的数据块拼接为1个N-bit的数据块。
示例性的,对于FIFO数据缓存器来说,其输出的待读出数据的数据位宽是预先设定的,当待读出数据的数据位宽为N-bit时,该FIFO数据缓存器的读出方式是N出的。
示例性的,如图4所示的一种FIFO数据缓存器的数据读写存储示意图,当M-bit的待写入数据在FIFO数据缓存器中数据缓存区进行拆分后,存储在如图4所示的区域1中,当FIFO数据缓存器中未存储数据的存储单元的个数大于等于M时且FIFO数据缓存器中存储数据的存储单元的个数小于N时,FIFO数据缓存器的写状态=ready,读状态=unready,将FIFO数据缓存器的前M个存储单元中存储的数据块整体移位至FIFO数据缓存器的第M+1至第2M个存储单元中,如图4所示的区域2中。当TM>N时,第T次写入M-bit的待写入数据时,FIFO数据缓存器中存储数据的存储单元的个数大于等于N时,FIFO数据缓存器读状态=ready,将如图4所示的区域3中的数据块读出,剩余的数据块为如图4所示的区域4。
本发明实施例提供的FIFO数据缓存器的数据读取方法,当FIFO数据缓存器处于读状态时,从FIFO数据缓存器的存储单元中读取N个1-bit数据块存储至FIFO数据缓存器的数据缓存区中后,将数据缓存区中的N个1-bit数据块拼接为1个N-bit位宽的数据块,并将N-bit位宽的数据输出。由于该FIFO数据缓存器的所有存储单元能存储的数据的数据位宽都为1-bit,在读取时,会按照FIFO数据缓存器预先设置的规则,即设置M进N的读写方式,读取N个存储单元的数据,且这N个数据均是写入FIFO数据缓存器的数据,没有冗余项,对读取出的数据按照预设规则进行拼接,就可以实现M进N出。
示例性的,参照图5所示的另一种FIFO数据缓存器的读写存储示意图,若FIFO数据缓存器的深度为X,X=M+N,假设N>M,且2M>N,在初始化t0状态(即该FIFO数据缓存器未存储数据块)时,FIFO数据缓存器中未存储数据的存储单元的个数等X,大于M,FIFO数据缓存器处于写状态,写状态=ready,该FIFO数据缓存器中存储数据的存储单元的个数等于0,小于N,FIFO数据缓存器读状态=unready,即不进行读出操作,此时,FIFO指针为Index=0,写状态=ready,读状态=unready。
t1状态(写入第一待写入数据),第一待写入M-bit数据块写入FIFO数据缓存器,并在数据缓存区进行拆分,并存储至FIFO数据缓存器的前M个存储单元中,如图5所示的区域1中,此时,FIFO数据缓存器中未存储数据的存储单元的个数等N,大于M,FIFO数据缓存器处于写状态,写状态=ready,该FIFO数据缓存器中存储数据的存储单元的个数等于M,小于N,FIFO数据缓存器读状态=unready,即不进行读出操作,此时,FIFO指针为Index=M,写状态=ready,读状态=unready。
t2状态(写入第二待写入数据),将FIFO数据缓存器的前M个存储单元中存储的数据块整体移位至FIFO数据缓存器的第M+1至第2M个存储单元中,如图5所示的t2状态的区域2中,将第二待写入数据缓存在FIFO数据缓存器的数据缓存区中,在数据缓存区中将第二待写入数据拆分为M个1-bit数据块,将M个1-bit数据块依次存储至FIFO数据缓存器的前M个存储单元中,如图5所示的t2状态的区域1中。此时,FIFO数据缓存器中未存储数据的存储单元的个数等N-M,小于M,FIFO数据缓存器处于写状态=unready,即不进行读写入操作,该FIFO数据缓存器中存储数据的存储单元的个数等于2M,大于N,FIFO数据缓存器处于读状态,读状态=ready,即进行读出操作,此时,将N个1-bit的数据块读出至从FIFO数据缓存器的存储单元中读取N个1-bit数据块(即将如图5所示的t2状态的区域3中)存储至FIFO数据缓存器的数据缓存区,并在数据缓存区将N个1-bit拼接为1个N-bit的数据后输出。此时,FIFO数据缓存器中未存储数据的存储单元的个数等2N-M,大于M,FIFO数据缓存器处于写状态,写状态=ready,该FIFO数据缓存器中存储数据的存储单元的个数等于2M-N(即如图5所示的t2状态的区域4中),小于N,FIFO数据缓存器读状态=unready,即不能进行读出操作,此时,Index=2M-N,写状态=ready,读状态=unready。
t3状态(写入第三待写入数据),将FIFO数据缓存器的前2M-N个存储单元中存储的数据块整体移位至FIFO数据缓存器的第M+1至第3M-N个存储单元中,如图5所示的t3状态的区域2中,将第三待写入数据缓存在FIFO数据缓存器的数据缓存区中,在数据缓存区中将第二待写入数据拆分为M个1-bit数据块,将M个1-bit数据块依次存储至FIFO数据缓存器的前M个存储单元中,如图5所示的t3状态的区域1中,此时,FIFO数据缓存器中未存储数据的存储单元的个数等2(N-M),当2(N-M)大于M时,FIFO数据缓存器处于写状态,写状态=ready,当2(N-M)小于M时,FIFO数据缓存器写状态=unready,该FIFO数据缓存器中存储数据的存储单元的个数等于3M-N,当3M-N大于等于N时,FIFO数据缓存器处于读状态,读状态=ready,当3M-N小于N时,FIFO数据缓存器读状态=unready。
示例性的,t4以及之后的状态,会重复t2的过程,并根据当FIFO数据缓存器中未存储数据的存储单元的个数大于等于M时,FIFO数据缓存器处于写状态,即FIFO数据缓存器能够写入M-bit的待写入的数据块。当FIFO数据缓存器中存储数据的存储单元的个数大于等于N时,FIFO数据缓存器处于读状态,即FIFO数据缓存器能够读出N-bit的数据块。
本发明提供一种FIFO数据缓存器,包括多个数据位宽为1-bit的存储单元31与处理单元32,其中:
处理单元32,用于当FIFO数据缓存器处于写状态时,获取数据位宽为M-bit的第一待写入数据;将第一待写入数据缓存在FIFO数据缓存器的数据缓存区中;在数据缓存区中将第一待写入数据拆分为M个1-bit数据块;将M个1-bit数据块依次存储至FIFO数据缓存器的前M个存储单元31中。
可选的,处理单元32还用于判断FIFO数据缓存器当前的工作状态,工作状态包括写状态和读状态,当FIFO数据缓存器中未存储数据的存储单元31的个数大于等于M时,FIFO数据缓存器处于写状态;当FIFO数据缓存器中存储数据的存储单元31的个数大于等于N时,FIFO数据缓存器处于读状态。
可选的,当N大于M,且FIFO数据缓存器的深度X大于2M时,处理单元32还用于:
将FIFO数据缓存器的前M个存储单元31中存储的数据块整体移位至FIFO数据缓存器的第M+1至第2M个存储单元31中;获取数据位宽为M-bit的第二待写入数据;将第二待写入数据缓存在FIFO数据缓存器的数据缓存区中;在数据缓存区中将第二待写入数据拆分为M个1-bit数据块;将M个1-bit数据块依次存储至FIFO数据缓存器的前M个存储单元31中。
本发明实施例提供的FIFO数据缓存器,当FIFO数据缓存器处于写状态时,将数据位宽为M-bit的第一待写入数据缓存在FIFO数据缓存器的数据缓存区中,并拆分为M个1-bit数据块,之后依次存储至FIFO数据缓存器的前M个的存储单元中。由于该FIFO数据缓存器的所有存储单元能存储的数据的数据位宽都为1-bit,在写入数据的时,会按照FIFO数据缓存器预先设置的规则,即设置M进N的读写方式,将写入的M-bit数据进行拆分后存储至存储单元,以便读取的N个存储单元的数据均是写入FIFO数据缓存器的数据,没有冗余项,对读取出的数据按照预设规则进行拼接,就可以实现M进N出。
本发明提供一种FIFO数据缓存器,包括多个数据位宽为1-bit的存储单元41与处理单元42,其中:
处理单元42用于当FIFO数据缓存器处于读状态时,从FIFO数据缓存器的存储单元中41读取N个1-bit数据块存储至FIFO数据缓存器的数据缓存区中;将数据缓存区中的N个1-bit数据块拼接为1个N-bit位宽的数据,并将N-bit位宽的数据输出。
可选的,处理单元42还用于判断FIFO数据缓存器当前的工作状态,工作状态包括写状态和读状态,当FIFO数据缓存器中未存储数据的存储单元41的个数大于等于M时,FIFO数据缓存器处于写状态;当FIFO数据缓存器中存储数据的存储单元41的个数大于等于N时,FIFO数据缓存器处于读状态。
本发明实施例提供的FIFO数据缓存器,当FIFO数据缓存器处于读状态时,从FIFO数据缓存器的存储单元中读取N个1-bit数据块存储至FIFO数据缓存器的数据缓存区中后,将数据缓存区中的N个1-bit数据块拼接为1个N-bit位宽的数据块。由于该FIFO数据缓存器的所有存储单元能存储的数据的数据位宽都为1-bit,在读取时,会按照FIFO数据缓存器预先设置的规则,即设置M进N的读写方式,读取N个存储单元的数据,且这N个数据均是写入FIFO数据缓存器的数据,没有冗余项,对读取出的数据按照预设规则进行拼接,就可以实现M进N出。
需要说明的是,在具体实现过程中,上述如图2、3所示的方法流程中FIFO数据缓存器所执行的各步骤均可以通过硬件形式的处理器执行存储器中存储的软件形式的计算机执行指令实现,为避免重复,此处不再赘述。而上述FIFO数据缓存器所执行的动作所对应的程序均可以以软件形式FIFO数据缓存器的存储器中,以便于处理器调用执行以上各个单元对应的操作。
上文中的存储器可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD);还可以包括上述种类的存储器的组合。
上文所提供的设备中的处理器可以是一个处理器,也可以是多个处理元件的统称。例如,处理器可以为中央处理器(central processing unit,CPU;也可以为其他通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等;还可以为专用处理器,该专用处理器可以包括基带处理芯片、射频处理芯片等中的至少一个。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。