一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

显示数据存储量的异步FIFO及数据存储量显示方法

2022-07-13 16:34:19 来源:中国专利 TAG:

显示数据存储量的异步fifo及数据存储量显示方法
技术领域
1.本发明涉及数据处理技术领域,尤其涉及一种显示数据存储量的异步fifo及数据存储量显示方法。


背景技术:

2.在跨时钟域传递数据时,若直接传递数据,则会导致亚稳态导致数据传输错误。目前,多采用异步fifo(first in first out,先进先出)对跨时钟域的数据进行传递。
3.当前的异步fifo在正常的读写功能基础上只会显示空满标志信号,但在某些连续读操作或者连续写操作的情况下,异步fifo所显示的空满标志留有一定的余量,造成虚空、虚满的现象,降低了读写可操作的空间。


技术实现要素:

4.本发明提供一种显示数据存储量的异步fifo及数据存储量显示方法,用以解决现有技术中现有的异步fifo在显示空满标志时留有余量导致虚空虚满的缺陷。
5.本发明提供一种显示数据存储量的异步fifo,包括:
6.存储模块、读写控制模块和存储量控制模块;
7.所述读写控制模块用于在检测到读使能信号和/或写使能信号的情况下,基于当前数据存储量,确定当前存储状态,并基于所述当前存储状态生成读状态信号和/或写状态信号;
8.所述存储模块用于基于所述读状态信号和/或所述写状态信号,更新当前读地址值和/或当前写地址值;
9.所述存储量控制模块用于基于所述当前读地址值和所述当前写地址值,更新并显示所述当前数据存储量。
10.根据本发明提供的一种显示数据存储量的异步fifo,所述当前存储状态为空状态、满状态以及非空非满状态中的任一种。
11.根据本发明提供的一种显示数据存储量的异步fifo,所述读写控制模块用于在检测到读使能信号的情况下,若所述当前存储状态为满状态或非空非满状态,则生成所述读状态信号,以及在检测到写使能信号的情况下,若所述当前存储状态为空状态或非空非满状态,则生成所述写状态信号。
12.根据本发明提供的一种显示数据存储量的异步fifo,所述存储模块包括静态随机存取存储器,所述静态随机存取存储器包括读地址和写地址,所述当前读地址值在所述静态随机存取存储器接收到所述读状态信号后加1,所述当前写地址值在所述静态随机存取存储器接收到所述写状态信号后加1。
13.根据本发明提供的一种显示数据存储量的异步fifo,所述存储量控制模块用于在当前读状态值为1且当前写状态值为1的情况下,保持所述当前数据存储量不变;所述当前读状态值基于当前读地址值确定,所述当前写状态值基于当前写地址值确定。
14.根据本发明提供的一种显示数据存储量的异步fifo,所述存储量控制模块用于在当前读状态值为1且当前写状态值为0的情况下,将所述当前数据存储量加1;所述当前读状态值基于当前读地址值确定,所述当前写状态值基于当前写地址值确定。
15.根据本发明提供的一种显示数据存储量的异步fifo,所述存储量控制模块用于在当前读状态值为0且当前写状态值为1的情况下,将所述当前数据存储量减1;所述当前读状态值基于当前读地址值确定,所述当前写状态值基于当前写地址值确定。
16.根据本发明提供的一种显示数据存储量的异步fifo,所述当前读状态值在所述当前读地址值与读地址暂存器中的地址值不相等的情况下为1,在所述当前读地址值与读地址暂存器中的地址值相等的情况下为0。
17.根据本发明提供的一种显示数据存储量的异步fifo,所述当前写状态值在所述当前写地址值与写地址暂存器中的地址值不相等的情况下为1,在所述当前写地址值与写地址暂存器中的地址值相等的情况下为0。
18.本发明还提供一种数据存储量显示方法,包括:
19.在检测到读使能信号和/或写使能信号的情况下,基于当前数据存储量,确定当前存储状态,并基于所述当前存储状态生成读状态信号和/或写状态信号;
20.基于所述读状态信号和/或所述写状态信号,更新当前读地址值和/或当前写地址值;
21.基于所述当前读地址值和所述当前写地址值,更新并显示所述当前数据存储量。
22.本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据存储量显示方法。
23.本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述数据存储量显示方法。
24.本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述数据存储量显示方法。
25.本发明提供的显示数据存储量的异步fifo及数据存储量显示方法,读写控制模块基于当前存储状态生成读状态信号和/或写状态信号,存储模块基于读状态信号和/或写状态信号,更新当前读地址值和/或当前写地址值,从而存储量控制模块能够基于当前读地址值和当前写地址值,更新并显示当前数据存储量,避免传统方法中异步fifo在显示空满标志时留有余量导致虚空虚满,进而降低读写可操作空间的问题。
附图说明
26.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
27.图1是本发明提供的显示数据存储量的异步fifo的结构示意图;
28.图2是本发明提供的读写控制模块端口示意图;
29.图3是本发明提供的存储模块端口示意图;
30.图4是本发明提供的存储量控制模块端口示意图;
31.图5是本发明提供的数据存储量显示方法的流程示意图;
32.图6是本发明提供的电子设备的结构示意图。
具体实施方式
33.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
34.当前的异步fifo在正常的读写功能基础上只会显示空满标志信号,但在某些连续读操作或者连续写操作的情况下,异步fifo所显示的空满标志留有一定的余量,造成虚空、虚满的现象,降低了读写可操作的空间。
35.对此,本发明提供一种显示数据存储量的异步fifo。图1是本发明提供的显示数据存储量的异步fifo的结构示意图,如图1所示,该异步fifo包括存储模块130、读写控制模块120和存储量控制模块110。
36.读写控制模块120用于在检测到读使能信号和/或写使能信号的情况下,基于当前数据存储量,确定当前存储状态,并基于当前存储状态生成读状态信号和/或写状态信号;
37.存储模块130用于基于读状态信号和/或写状态信号,更新当前读地址值和/或当前写地址值;
38.存储量控制模块110用于基于当前读地址值和当前写地址值,更新并显示当前数据存储量。
39.此处,当前存储状态用于表征异步fifo的空满状态,其可以包括空状态、满状态以及非空非满装。在当前数据存储量为0时,表明当前存储状态为空状态;在当前数据存储量与所能容纳的最大存储量相等时,表明当前存储状态为满状态;在当前数据存储量大于0且小于所能容纳的最大存储量时,表明当前存储状态为非空非满状态。
40.如图2所示,在读写控制模块120检测到读使能信号rd_en时,若当前存储状态为满状态或非空非满状态,则表明外部控制器可以从异步fifo中读取数据,此时生成读状态信号read_flag。在读写控制模块120检测到写使能信号wt_en时,若当前存储状态为空状态或非空非满状态,则表明外部控制器可以向异步fifo中存入数据,此时生成写状态信号write_flag。
41.如图3所示,在读写控制模块120生成读状态信号后,存储模块130更新当前读地址,即将当前读地址加1。在读写控制模块120生成写状态信号后,存储模块130更新当前写地址,即将当前写地址加1。
42.此外,根据当前读地址值可以确定当前读状态值,根据当前写地址值可以确定当前写状态值,从而存储量控制模块110可以基于当前读状态值和当前写状态值确定并显示当前数据存储量。如图4所示,存储量控制模块110基于读状态信号read_flag和写状态信号write_flag,确定当前数据存储量。
43.例如,在当前读状态值为1且当前写状态值为0的情况下,表明当前只存在读不存在写,也就是将当前数据存储量加1;在当前读状态值为0且当前写状态值为1的情况下,表
明当前只存在写不存在读,也就是将当前数据存储量减1;在当前读状态值为1且当前写状态值为1的情况下,表明当前既存在读也存在写,从而当前数据存储量不变。
44.可以理解的是,在存储量控制模块110显示当前数据存储量后,外部控制器可以根据显示的当前数据存储量确定是否从异步fifo中读取数据,若是,则进一步根据当前数据存储量确定读取数据量,和/或确定是否向异步fifo中写入数据,若是,则进一步根据当前数据存储量确定写入数据量。
45.本发明实施例提供的显示数据存储量的异步fifo,读写控制模块基于当前存储状态生成读状态信号和/或写状态信号,存储模块基于读状态信号和/或写状态信号,更新当前读地址值和/或当前写地址值,从而存储量控制模块能够基于当前读地址值和当前写地址值,更新并显示当前数据存储量,避免传统方法中异步fifo在显示空满标志时留有余量导致虚空虚满,进而降低读写可操作空间的问题。
46.基于上述实施例,当前存储状态为空状态、满状态以及非空非满状态中的任一种。
47.具体地,在当前数据存储量为0时,表明当前存储状态为空状态;在当前数据存储量与所能容纳的最大存储量相等时,表明当前存储状态为满状态;在当前数据存储量大于0且小于所能容纳的最大存储量时,表明当前存储状态为非空非满状态。
48.此外,在当前存储状态为空状态或非空非满状态时,表明外部控制器可以向异步fifo中存入数据;在当前存储状态为满状态或非空非满状态,表明外部控制器可以从异步fifo中读取数据。
49.基于上述任一实施例,读写控制模块120用于在检测到读使能信号的情况下,若当前存储状态为满状态或非空非满状态,则生成读状态信号,以及在检测到写使能信号的情况下,若当前存储状态为空状态或非空非满状态,则生成写状态信号。
50.具体地,在读写控制模块120检测到读使能信号时,若当前存储状态为满状态或非空非满状态,则表明外部控制器可以从异步fifo中读取数据,此时生成读状态信号。在读写控制模块120检测到写使能信号时,若当前存储状态为空状态或非空非满状态,则表明外部控制器可以向异步fifo中存入数据,此时生成写状态信号。
51.基于上述任一实施例,存储模块130包括静态随机存取存储器,静态随机存取存储器包括读地址和写地址,当前读地址值在静态随机存取存储器接收到读状态信号后加1,当前写地址值在静态随机存取存储器接收到写状态信号后加1。
52.具体地,存储模块130包括用于存储的静态随机存取存储器(static random-access memory,sram),sram的深度可根据实际情况设置。其中,若sram接收到读状态信号,表明读写控制模块是在满状态或非空非满状态下接收到读使能信号,此时可以读取sram中的数据,进而将当前读地址加1。若sram接收到写状态信号,表明读写控制模块是在空状态或非空非满状态下接收到写使能信号,此时可以写入数据至sram,进而将当前写地址加1。
53.其中,当前存储状态可以根据多比特组合逻辑计数器确定,当计数器为0时,表明当前存储状态为空状态,当计数器与sram所能容纳的最大深度相等时,表明当前存储状态为满状态,否则为非空非满状态。
54.基于上述任一实施例,存储量控制模块110用于在当前读状态值为1且当前写状态值为1的情况下,保持当前数据存储量不变;当前读状态值基于当前读地址值确定,当前写状态值基于当前写地址值确定。
55.具体地,在当前读状态值为1且当前写状态值为1时,表明当前同时存在读写数据,因此当前数据存储量保持不变。
56.即可以理解为,上述计数器的触发条件由读状态信号和/或写状态信号触发,即always@(write_flag or read_flag);
57.触发时若:write_flag==1&read_flag==1则按照下列公式给计数器、读地址暂存器以及写地址暂存器赋值:
58.wt_reg《=wt_reg;rd_reg《=rd_reg;cnt《=cnt;
59.其中,write_flag和read_flag分别为当前读状态值和当前写状态值,wt_reg和rd_reg分别为读地址暂存器中的地址值和写地址暂存器中的地址值,cnt为计数器值,也就是当前数据存储量。
60.基于上述任一实施例,存储量控制模块110用于在当前读状态值为1且当前写状态值为0的情况下,将当前数据存储量加1;当前读状态值基于当前读地址值确定,当前写状态值基于当前写地址值确定。
61.具体地,在当前读状态值为1且当前写状态值为0时,表明当前只存在读数据操作不存在写数据操作,因此当前数据存储量加1。
62.即触发时若:write_flag==1&read_flag==0则按照下列公式给计数器、读地址暂存器以及写地址暂存器赋值:
63.wt_reg《=addr_w[0];rd_reg《=addr_r[0];cnt《=cnt 1;
[0064]
其中,wt_reg和rd_reg分别为读地址暂存器中的地址值和写地址暂存器中的地址值,addr_w和addr_r分别为sram的读地址值和写地址值,cnt为计数器值,也就是当前数据存储量。
[0065]
基于上述任一实施例,存储量控制模块110用于在当前读状态值为0且当前写状态值为1的情况下,将当前数据存储量减1;当前读状态值基于当前读地址值确定,当前写状态值基于当前写地址值确定。
[0066]
具体地,在当前读状态值为0且当前写状态值为1时,表明当前只存在写数据操作不存在读数据操作,因此当前数据存储量减1。
[0067]
即触发时若:write_flag==0&read_flag==1则按照下列公式给计数器、读地址暂存器以及写地址暂存器赋值:
[0068]
wt_reg《=addr_w[0];rd_reg《=addr_r[0];cnt《=cnt-1;
[0069]
其中,wt_reg和rd_reg分别为读地址暂存器中的地址值和写地址暂存器中的地址值,addr_w和addr_r分别为sram的读地址值和写地址值,cnt为计数器值,也就是当前数据存储量。
[0070]
基于上述任一实施例,当前读状态值在当前读地址值与读地址暂存器中的地址值不相等的情况下为1,在当前读地址值与读地址暂存器中的地址值相等的情况下为0,也即assign write_flag=(wt_reg!=addr_w[0])。
[0071]
基于上述任一实施例,当前写状态值在当前写地址值与写地址暂存器中的地址值不相等的情况下为1,在当前写地址值与写地址暂存器中的地址值相等的情况下为0,也即assign read_flag=(rd_reg!=addr_r[0])。
[0072]
表1为异步fifo的信号列表,现结合表1对异步fifo进行数据量显示的过程进行说
明:
[0073]
在复位信号rst变为低电平时,系统产生复位;系统在复位之后,cnt信号变为0、full信号变为0、empty信号变为1即fifo为空状态;在写数据时钟clk_w上升沿检测到写使能信号wt_en为高时,读写控制模块根据cnt的值判断能否将数据写入存储模块,若cnt不为最大值,即非满,则产生write_flag信号,并将写地址addr_w加1,等待下一次写入;在读时钟clk_r上升沿检测到读使能信号rd_en为高时,读写控制模块根据cnt的值判断能否从存储模块中读取数据,若cnt不为0,即非空,则产生read_flag信号,并将读地址加1,等待下一次的读出。
[0074]
此外,存储量控制模块根据读状态信号read_flag和写状态信号write_flag对cnt进行运算;read_flag和write_flag的变化均会引起计数器的跳转;当read_flag从0向1跳变时,cnt减1;当write_flag从0向1跳变时,cnt加1。
[0075]
表1
[0076]
signalinput/outputdescriptionclk_rinput读数据时钟clk_winput写数据时钟rstinput复位信号,低电平有效rd_eninput读使能信号,高电平有效wt_eninput写使能信号,高电平有效data_winput写数据data_routput读数据cntoutput数据量emptyoutput空标志信号fulloutput满标志信号
[0077]
下面对本发明提供的数据存储量显示方法进行描述,下文描述的数据存储量显示方法与上文描述的显示数据存储量的异步fifo可相互对应参照。
[0078]
基于上述任一实施例,本发明还提供一种基于如上任一实施例所述的显示数据存储量的异步fifo的数据存储量显示方法,如图5所示,该方法包括:
[0079]
步骤510、在检测到读使能信号和/或写使能信号的情况下,基于当前数据存储量,确定当前存储状态,并基于当前存储状态生成读状态信号和/或写状态信号;
[0080]
步骤520、基于读状态信号和/或写状态信号,更新当前读地址值和/或当前写地址值;
[0081]
步骤530、基于当前读地址值和当前写地址值,更新并显示当前数据存储量。
[0082]
此处,当前存储状态用于表征异步fifo的空满状态,其可以包括空状态、满状态以及非空非满装。在当前数据存储量为0时,表明当前存储状态为空状态;在当前数据存储量与所能容纳的最大存储量相等时,表明当前存储状态为满状态;在当前数据存储量大于0且小于所能容纳的最大存储量时,表明当前存储状态为非空非满状态。
[0083]
在检测到读使能信号rd_en时,若当前存储状态为满状态或非空非满状态,则表明外部控制器可以从异步fifo中读取数据,此时生成读状态信号read_flag。在检测到写使能信号wt_en时,若当前存储状态为空状态或非空非满状态,则表明外部控制器可以向异步
fifo中存入数据,此时生成写状态信号write_flag。
[0084]
在生成读状态信号后,更新当前读地址,即将当前读地址加1。在生成写状态信号后,更新当前写地址,即将当前写地址加1。此外,根据当前读地址值可以确定当前读状态值,根据当前写地址值可以确定当前写状态值,从而可以基于当前读状态值和当前写状态值确定并显示当前数据存储量。基于读状态信号read_flag和写状态信号write_flag,确定当前数据存储量。
[0085]
本发明实施例提供的数据存储量显示方法,基于当前存储状态生成读状态信号和/或写状态信号,基于读状态信号和/或写状态信号,更新当前读地址值和/或当前写地址值,从而能够基于当前读地址值和当前写地址值,更新并显示当前数据存储量,避免传统方法中异步fifo在显示空满标志时留有余量导致虚空虚满,进而降低读写可操作空间的问题。
[0086]
图6是本发明提供的电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、存储器(memory)620、通信接口(communications interface)630和通信总线640,其中,处理器610,存储器620,通信接口630通过通信总线640完成相互间的通信。处理器610可以调用存储器620中的逻辑指令,以执行数据存储量显示方法,该方法包括:在检测到读使能信号和/或写使能信号的情况下,基于当前数据存储量,确定当前存储状态,并基于所述当前存储状态生成读状态信号和/或写状态信号;基于所述读状态信号和/或所述写状态信号,更新当前读地址值和/或当前写地址值;基于所述当前读地址值和所述当前写地址值,更新并显示所述当前数据存储量。
[0087]
此外,上述的存储器620中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0088]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的数据存储量显示方法,该方法包括:在检测到读使能信号和/或写使能信号的情况下,基于当前数据存储量,确定当前存储状态,并基于所述当前存储状态生成读状态信号和/或写状态信号;基于所述读状态信号和/或所述写状态信号,更新当前读地址值和/或当前写地址值;基于所述当前读地址值和所述当前写地址值,更新并显示所述当前数据存储量。
[0089]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的数据存储量显示方法,该方法包括:在检测到读使能信号和/或写使能信号的情况下,基于当前数据存储量,确定当前存储状态,并基于所述当前存储状态生成读状态信号和/或写状态信号;基于所述读状态信号和/或所述写状态信号,更新当前读地址值和/或当前写地址值;基于所述当前读地址值和
所述当前写地址值,更新并显示所述当前数据存储量。
[0090]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0091]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0092]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献