技术领域
本发明涉及一种异步缓存器,具体地涉及一种地址可控异步读写并显示剩余空间包数的异步缓存器及异步缓存方法。
背景技术
缓存器是一种先进先出的数据缓存器,先进入的数据先从FIFO缓存器中读出,但与RAM相比没有外部读写地址线,使用比较简单,但只能顺序写入数据,顺序的读出数据,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
缓存器一般用于不同时钟域之间的数据传输,比如FIFO的一端是AD数据采集,另一端为PCI总线,那么在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以使用FIFO缓存器,例如单片机为8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO缓存器来达到数据匹配的目的。
根据FIFO工作时钟域,可以将FIFO缓存器分为同步FIFO缓存器和异步FIFO缓存器。同步FIFO缓存器是指读时钟和写时钟为同一个时钟,在时钟沿来临时同时发生读写操作;异步FIFO缓存器是指读写时钟不一致,读写时钟是互相独立的。
对于异步缓存器,目前一般多将FIFO缓存器的深度设计成2^N个地址块,其中,N为FIFO缓存器的宽度,但实际应用中可能需要的FIFO缓存器的深度往往比2^N小很多,例如:需要的FIFO缓存器的深度为100,但必须使用深度为2^7=128的FIFO缓存器。这样,会浪费FIFO缓存器的寻址空间,也会增加FIFO缓存器的占用空间,不利于使得FIFO缓存器的设备的小型化。
目前,研究存储器和缓存器的专利有很多,比如专利号为CN201320608667的《一种异步缓存方法、异步缓存器及集成电路》中提供了一种深度任意的偶数个地址块的异步缓存器,能够使异步缓存器的深度更加符合需求,避免使用大深度异步缓存器时,浪费较多寻址空间,并且结构简单,易于电路实现,尽可能的减小了异步缓存器的尺寸,更加利于使用异步缓存器的设备的小型化,但是无法查到剩余包数,不方便用户使用。专利号为US2020125443A1的《FAST PAGE CONTINUOUS READ》公开了一种存储设备,包括:包括多个位线的存储阵列;耦合到具有页宽的多个位线的页缓冲区;I/O数据单元的输入/输出接口,其I/O宽度小于所述页宽的缓存,但都为F缓存读写算法设计,目前没还有查到剩余包数可视的缓存电路。本发明因此而来。
发明内容
针对上述存在的技术问题,本发明目的是:提供了一种地址可控可以异步读写并显示剩余空间包数的异步缓存器,采用异步FIFO加异步双端口RAM的方式,用户可以写入多包数据后再异步读取,每包数据的长度可在零和缓存固定包长之间。缓存电路会在每次读写一包数据后更新当前缓存剩余可用的包数。并且用户不需要在写数据前自己计算写数据在缓存内存放的地址,只需从零累加,大大提升电路开发效率,方便用户使用。
本发明的技术方案是:
一种地址可控异步缓存器,包括:
一先入先出寄存器,用于存放包随路信息;
一异步真双端口RAM,用于存放缓存数据;
一地址计算单元,用于计算数据写RAM地址;
一异步先进先出缓存器单元,用于将数据包变换时钟域,包括写时钟域和读时钟域;
一剩余空间计算单元,用于计算剩余包数。
优选的技术方案中,在写时钟域,写单元的数据包写结束信号同时作为写数据和写使能输入异步先进先出缓存器单元,该异步先进先出缓存器单元的读使能端口固定接高电平,写结束信号从该异步先进先出缓存器单元的输出端输出并且转换到读时钟域,作为读时钟域的写数据包时钟信号;
在读时钟域,从该异步先进先出缓存器单元的非空信号引出至读单元,读单元的数据包读结束信号和写时钟信号共同输入剩余空间计算单元计算剩余包数,写单元根据剩余包数判断是否继续往缓存器写数据包;
写结束信号输入地址计算单元,每个写结束信号触发写RAM的基地址累加,得到每一包数据写RAM的基地址,再与写单元的写数据地址相加,得到写数据总线数据,并写入RAM的地址;
当写结束信号拉高时,将包随路信息写入先入先出寄存器中,在读结束信号拉高时从INFO_FIFO中读出包随路信息。
优选的技术方案中,所述剩余空间计算单元在读时钟域的每个读时钟上升沿刷新剩余包数,其计算方式为:剩余包数复位初始值,时钟上升沿时,若写数据包时钟信号为高电平,读结束信号为低电平,则剩余包数减1,若写数据包时钟信号为低电平,读结束信号为高电平,则剩余包数加1,若时钟上升沿时刻写数据包时钟信号和读结束信号同为高电平或低电平,则剩余包数保持不变。
优选的技术方案中,所述每个写结束信号触发写RAM的基地址累加每一包数据的最大长度M。
优选的技术方案中,所述RAM的深度为N*M,将RAM划分为N个单元块,每个单元块存入一数据包,每一数据包的包长通过参数设置为从0至M的任意值。
优选的技术方案中,当写口写数据时,通过写地址总线、写数据总线、写使能信号和写结束信号线进行控制,当一次写多包数据时,则连续写入包信息,发送数据;缓存中数据包数不为零时,读口读取数据。
优选的技术方案中,当设置写数据的最大包长为M,写口要写入数据时,将写使能拉高,并开始在写数据总线上传输有效数据,每一数据包的写地址从低地址累加到高地址,或乱序传输,写数据总线和写使能线经过时钟延迟单元与地址计算单元在时序上对齐后,存入异步真双端口RAM。
本发明还公开了一种地址可控异步缓存方法,包括以下步骤:
S01:在写时钟域,写单元的数据包写结束信号同时作为写数据和写使能输入异步先进先出缓存器单元,该异步先进先出缓存器单元的读使能端口固定接高电平,写结束信号从该异步先进先出缓存器单元的输出端输出并且转换到读时钟域,作为读时钟域的写数据包时钟信号;写结束信号输入地址计算单元,每个写结束信号触发写RAM的基地址累加,得到每一包数据写RAM的基地址,再与写单元的写数据地址相加,得到写数据总线数据,并写入RAM的地址;当写结束信号拉高时,将包随路信息写入先入先出寄存器中,在读结束信号拉高时从INFO_FIFO中读出包随路信息;
S02:在读时钟域,从该异步先进先出缓存器单元的非空信号引出至读单元,读单元的数据包读结束信号和写时钟信号共同输入剩余空间计算单元计算剩余包数,写单元根据剩余包数判断是否继续往缓存器写数据包。
优选的技术方案中,所述剩余空间计算单元在读时钟域的每个读时钟上升沿刷新剩余包数,其计算方式为:剩余包数复位初始值,时钟上升沿时,若写数据包时钟信号为高电平,读结束信号为低电平,则剩余包数减1,若写数据包时钟信号为低电平,读结束信号为高电平,则剩余包数加1,若时钟上升沿时刻写数据包时钟信号和读结束信号同为高电平或低电平,则剩余包数保持不变。
优选的技术方案中,当写口写数据时,通过写地址总线、写数据总线、写使能信号和写结束信号线进行控制,当一次写多包数据时,则连续写入包信息,发送数据;缓存中数据包数不为零时,读口读取数据。
优选的技术方案中,当设置写数据的最大包长为M,写口要写入数据时,将写使能拉高,并开始在写数据总线上传输有效数据,每一数据包的写地址从低地址累加到高地址,或乱序传输,写数据总线和写使能线经过时钟延迟单元与地址计算单元在时序上对齐后,存入异步真双端口RAM。
与现有技术相比,本发明的优点是:
1、本发明提供一种异步读写并显示剩余空间包数的缓存器,采用异步FIFO加异步双端口RAM的方式,用户可以写入多包数据后再异步读取,每包数据的长度可在零和缓存固定包长之间。缓存buffer电路会在每次读写一包数据后更新当前缓存剩余可用的包数。并且用户不需要在写数据前自己计算写数据在缓存内存放的地址,只需从零累加,大大提升电路开发效率,方便用户使用。
本发明不同于传统FIFO缓存,本发明设计的缓存读写单元不是以一个地址为单位,而是以一包数据为单位,并且传统FIFO是先进先出结构,没有写地址线,本发明的缓存具有自己的写地址线和数据包随路信息,随路信息中可以包含每包数据的长度等信息。并且数据的写入顺序和读出顺序没有既定的关系,可根据使用场景自己设置,提升了电路的灵活性。同时可以实时反馈缓存内还有多少包的剩余空间可用,使使用者可以根据需要选择在不同包长时停止写入或停止读出,普通的FIFO只设有满空标志,在FIFO满时则停止写入。而本发明的缓存电路可以选择在存储空间满时,新的有效数据是继续写入循环覆盖之前的数据,还是直接丢弃,容错率更高。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1为本发明嵌入式闪存的控制装置的结构框图;
图2为本发明地址可控异步缓存器的控制流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式并参照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
如图1所示,本发明公开了一种地址可控异步缓存器,本发明不同于传统FIFO缓存,本发明设计的缓存读写单元不是以一个地址为单位,而是以一包数据为单位,并且传统FIFO是先进先出结构,没有写地址线,本发明的缓存具有自己的写地址线和数据包随路信息,随路信息中可以包含每包数据的长度等信息。并且数据的写入顺序和读出顺序没有既定的关系,可根据使用场景自己设置,提升了电路的灵活性。同时可以实时反馈缓存内还有多少包的剩余空间可用,使使用者可以根据需要选择在不同包长时停止写入或停止读出,普通的FIFO 只设有满空标志,在FIFO满时则停止写入。而本发明的缓存电路可以选择在存储空间满时,新的有效数据是继续写入循环覆盖之前的数据,还是直接丢弃,容错率更高。
本发明的地址可控异步缓存器,主要由五个模块构成:
异步先进先出缓存器单元(CROSS_FIFO单元)、剩余空间计算单元(ADD单元)、先入先出寄存器(INFO_INFO单元)、异步真双端口RAM、地址计算单元。
先入先出寄存器(INFO_INFO单元),用来存放包随路信息;
异步真双端口RAM,用来存放缓存数据;
地址计算单元,计算数据写RAM地址;
异步先进先出缓存器单元(CROSS_FIFO单元),用来将数据包变换时钟域;
剩余空间计算单元(ADD单元),用于计算剩余空间(剩余包数)。
电路外部接口有复位端口RESET,写时钟端口WCLK,读时钟端口RCLK,写地址总线WADDR,读地址总线RADDR,写数据总线WDATA、读数据总线RDATA、写结束信号线WLAST,读结束信号线RRDY,写使能线WEN、读使能线REN以及额外可选的包信息读写总线WINFO和RINFO。图1中输入输出信号说明如下:
(1)RESET:全局复位信号。
:写时钟,作为地址计算单元和INFO_FIFO单元两个模块的时钟。
:每包数据的随路信息,位宽可根据用户需求设置,用来存放每包的数据长度等。
:写使能信号,该信号为高时表示数据线上传输的数据有效。
:每一包数据的写结束信号,在每一包数据的WEN为高时的最后一个时钟周期为高电平。此信号也作为INFO_FIFO单元的写使能信号,即在每一包的最后一拍把INFO写入INFO_FIFO单元。
:写数据在每一包内的偏移地址,从零开始累加。
:写数据线。
:经地址计算单元计算后输入到RAM的地址,该地址计算过程为,基地址在每个有效写结束信号后加N,基地址加上WADDR包内偏移地址,即写RAM的地址。
:指示读端口可以读的信号,从INFO_FIFO的非空信号引出,表示RAM中当前至少有一包数据存在。
:异步缓存器读时钟域的时钟信号
(11)RADDR:读数据的地址线。
:从RAM中读出的读数据。
:读使能信号。
:读单元每读完一包数据拉高一个时钟的读包结束信号。
:指示当前缓存器中还有多少包剩余空间的信号。
:读单元从INFO_FIFO单元中读出的包随路信息。
该地址可控异步缓存器的异步缓存方法,如图2所示:
在写时钟域,写单元的写数据包结束信号WLAST同时作为写数据和写使能放入异步先进先出缓存器单元CROSS_FIFO,该FIFO的读使能端口固定接高电平,这样每当有一包数据写完,相应的写结束信号WLAST从CROSS_FIFO的输出端口漏出并且转换到了读时钟域,变成了读时钟域的写数据包时钟信号W_LAST,以便做剩余包数(FRESEIZE)的计算;在读时钟域,CROSS_FIFO的非空信号RDY读单元可以读数据了,则读单元的读数据包结束信号RLAST和W_LAST信号共同输入剩余包数计算单元ADD,ADD工作在读时钟域下,每个读时钟上升沿刷新剩余包数FRESIZE,其计算方式为:FRESIZE复位初始值为N(N为该异步缓存器能存放的最大的数据包数),时钟上升沿时,若W_LAST为高电平,RLAST为低电平,则剩余包数FRESIZE减1,若W_LAST为低电平,RLAST为高电平,则剩余包数加1,若时钟上升沿时刻W_LAST和RLAST同为高电平或低电平,则剩余包数保持不变。FRESIZE返回给写单元,由写单元根据剩余包数来决定是否继续往缓存器写包。
为存放写数据的模块,在写时钟域,WLAST输入地址累加单元,每个WLAST触发写RAM的基地址累加M(M为每一包数据的最大长度),得到每一包数据写RAM 的基地址,再与写单元的写数据地址WADDR相加,得到实际控制数据WDATA写入RAM 的地址。RAM的深度为N*M,相当于将RAM划分为N个单元块,每个单元块存入一包数据,该异步缓存的buffer的每一包的包长可以通过参数设置为从0至M的任意值,当写口写数据时,通过地址WADDR,写数据总线WDATA,写控制信号WEN和写结束信号线WLAST进行控制,如果需要一次写多包数据,则可以连续写入包信息,发送数据。同时,只要缓存中数据包数不为零,读口都可以读取数据,写入数据和读数据可以同时进行。当设置写数据的最大包长为M ,写口要写入数据时,将写使能拉高,并开始在写数据总线上传输有效数据,每一包的写地址可以从低地址累加到高地址,也可以是乱序传输。写数据总线和写使能线经过时钟延迟单元与地址运算单元在时序上对齐后,存入真双端口RAM。由于每一包发送数据的包长可能存在不一致,本发明电路设计了随路包信息W_INFO,当写结束信号线WLAST拉高时写入先入先出寄存器INFO_FIFO中,在读结束信号线RLAST拉高时从INFO_FIFO中读出,这样当INFO_FIFO的空信号拉高,就意味着写入数据都被读走了。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
机译: 具有预取功能的高速缓存存储设备和在高速缓存未命中状态下异步更新标签地址和数据的方法
机译: 具有高速缓存的输入/输出解耦系统方法,该高速缓存用于在非易失性存储器和具有异步传输的多个客户端之间交换数据
机译: 高速缓存-具有高速缓存的微处理器系统的存储设备-带有异步数据路径的存储器