公开/公告号CN105511835A
专利类型发明专利
公开/公告日2016-04-20
原文格式PDF
申请/专利权人 深圳市中兴微电子技术有限公司;
申请/专利号CN201410494206.4
申请日2014-09-24
分类号G06F5/06(20060101);G06F12/08(20060101);
代理机构北京派特恩知识产权代理有限公司;
代理人张振伟;张颖玲
地址 518085 广东省深圳市盐田区大梅沙1号厂房
入库时间 2023-12-18 15:29:11
法律状态公告日
法律状态信息
法律状态
2019-11-15
授权
授权
2016-12-21
实质审查的生效 IPC(主分类):G06F5/06 申请日:20140924
实质审查的生效
2016-04-20
公开
公开
技术领域
本发明涉及集成电路(IC,IntegratedCircuit)设计领域,尤其涉及一种异步先入先出(FIFO,FirstInputFirstOutput)控制器及防止异步FIFO缓存数据溢出的方法。
背景技术
在IC中往往有多个时钟域,异步FIFO缓存作为一种有效的方法,被广泛的应用在跨时钟域的信号处理中。但是异步FIFO缓存需要在两个时钟域中都设置有实现握手机制的接口才能保证其作用。当有一个时钟域没有办法实现握手的机制,异步FIFO缓存就有数据溢出的风险。
目前对于该问题的处理方法是加大第二FIFO缓存的深度,来确保其不会溢出。但是,对于data位宽比较大第二FIFO缓存,加大深度会造成巨大的硬件开销。
发明内容
为解决上述技术问题,本发明实施例提供一种异步FIFO控制器及防止异步FIFO缓存数据溢出的方法,能够在防止异步FIFO缓存数据溢出的同时,减少硬件开销。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种异步FIFO控制器,所述控制器包括:第一计数器、第二计数器、加法器和比较器,其中,
所述第一计数器,用于获取第二FIFO缓存待获取的数据量;并将所述第二FIFO缓存待获取的数据量传输至所述加法器;
所述第二计数器,用于获取所述第二FIFO缓存内已存在的数据量;并将所述第二FIFO缓存内已存在的数据量传输至所述加法器;
所述加法器,用于将所述第二FIFO缓存待获取的数据量与所述第二FIFO缓存内已存在的数据量进行相加,得到数据总量;并将所述数据总量传输至所述比较器;
所述比较器,用于将所述数据总量与所述第二FIFO缓存的深度进行比较,当所述数据总量不小于所述第二FIFO缓存的深度时,向所述第一FIFO缓存发送停止指示信号,其中,所述停止指示信号用于指示所述第一FIFO缓存停止输出request信号。
进一步地,所述第一计数器的第一输入端口与第一FIFO缓存的request输出端相连接,用于获取第一FIFO缓存的request输出端输出的request信号;
所述第一计数器的第二输入端口与所述第二FIFO缓存的valid输入端相连接,用于获取第二FIFO缓存的valid输入端输入的valid信号;
所述第一计数器,用于通过接收到request信号时加1且接收到输入的valid信号时减1,获取第二FIFO缓存待获取的数据量。
进一步地,所述第二计数器的第一输入端口可以与所述第二FIFO缓存的valid输入端相连接,用于获取第二FIFO缓存的valid输入端输入的valid信号;
所述第二计数器的第二输入端口可以与所述第二FIFO缓存的valid输出端相连接,用于获取第二FIFO缓存的valid输出端输出的valid信号;
所述第二计数器,用于通过接收到输入的valid信号时加1且接收到输出的valid信号时减1,获取第二FIFO缓存内已存在的数据量。
进一步地,所述第二计数器与所述第二FIFO缓存的指示寄存器进行连接,用于从所述指示寄存器获取第二FIFO缓存内已存在的数据量。
进一步地,所述第二计数器,用于通过读取所述第二FIFO缓存的读写指针的方式获取第二FIFO缓存内已存在的数据量。
进一步地,所述比较器,用于向第一FIFO缓存的request输出端输出strobe信号,以使得所述第一FIFO缓存拒绝向第二时钟域发送request信号。
第二方面,本发明实施例提供了一种防止异步先入先出FIFO缓存数据溢出的方法,所述方法包括:
异步FIFO控制器获取第二FIFO缓存待获取的数据量;
所述异步FIFO控制器获取所述第二FIFO缓存内已存在的数据量;
所述异步FIFO控制器将所述第二FIFO缓存待获取的数据量与所述第二FIFO缓存内已存在的数据量进行相加,得到数据总量;
所述异步FIFO控制器将所述数据总量与所述第二FIFO缓存的深度进行比较;
当所述数据总量不小于所述第二FIFO缓存的深度时,所述异步FIFO控制器向第一FIFO缓存发送停止指示信号;其中,所述停止指示信号用于指示所述第一FIFO缓存停止输出request信号。
进一步地,所述异步FIFO控制器获取第二FIFO缓存待获取的数据量,包括:
所述异步FIFO控制器获取所述第一FIFO缓存的request输出端输出的request信号;
所述异步FIFO控制器获取所述第二FIFO缓存的valid输入端输入的valid信号;
所述异步FIFO控制器通过接收到所述request信号时加1且接收到所述输入的valid信号时减1,获取所述第二FIFO缓存待获取的数据量。
进一步地,所述异步FIFO控制器获取所述第二FIFO缓存内已存在的数据量,包括:
所述异步FIFO控制器获取所述第二FIFO缓存的valid输入端输入的valid信号;
所述异步FIFO控制器获取所述第二FIFO缓存的valid输出端输出的valid信号;
所述异步FIFO控制器通过接收到所述输入的valid信号时加1且接收到所述输出的valid信号时减1,获取所述第二FIFO缓存内已存在的数据量。
进一步地,所述异步FIFO控制器获取所述第二FIFO缓存内已存在的数据量,包括:
所述异步FIFO控制器从所述第二FIFO缓存的指示寄存器获取所述第二FIFO缓存内已存在的数据量;其中,所述指示寄存器包括用于指示所述第二FIFO缓存中已存在的数据量。
进一步地,所述异步FIFO控制器获取所述第二FIFO缓存内已存在的数据量,包括:
所述异步FIFO控制器通过读取所述第二FIFO缓存的读写指针获取所述第二FIFO缓存内已存在的数据量。
进一步地,所述异步FIFO控制器向第一FIFO缓存发送停止指示信号,包括:所述异步FIFO控制器向第一FIFO缓存的request输出端输出strobe信号,以使得第一FIFO缓存拒绝向第二时钟域发送request信号。
本发明实施例提供了一种异步FIFO控制器及防止异步FIFO缓存数据溢出的方法,通过FIFO控制器对第二FIFO缓存中已有的数据数量和待接收的数据数量的数据总量进行计数,随后将数据总量与第二FIFO缓存深度进行比较,当数据总量超过第二FIFO缓存深度时,FIFO控制器终止第一FIFO缓存输出请求request信号;从而能够在防止异步FIFO缓存数据溢出的同时,减少硬件开销。
附图说明
图1为现有技术的异步FIFO缓存的结构示意图;
图2为本发明实施例提供的一种异步FIFO缓存结构的示意图;
图3为本发明实施例提供的一种异步FIFO控制器的结构示意图;
图4为本发明实施例提供的另一种异步FIFO控制器的结构示意图;
图5为本发明实施例提供的又一种异步FIFO控制器的结构示意图;
图6为本发明实施例提供的再一种异步FIFO控制器的结构示意图;
图7为本发明实施例提供的一种防止异步FIFO缓存数据溢出的方法流程示意图;
图8为本发明实施例提供的一种异步FIFO控制器获取第二FIFO缓存待获取的数据量的方法流程示意图;
图9为本发明实施例提供的一种异步FIFO控制器获取第二FIFO缓存内已存在的数据量的方法流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明的基本思想是:通过对第二FIFO缓存中已有的数据数量和待接收的数据数量的数据总量进行计数,随后将数据总量与第二FIFO缓存深度进行比较,使得当数据总量超过第二FIFO缓存深度时,终止第二FIFO缓存接收数据,从而使得通过计数器和比较器就能够实现防止异步FIFO缓存数据的溢出,相比于现有技术中加大第二FIFO深度的方式减少硬件开销。
参见图1所示的现有技术的异步FIFO缓存的结构,包括第一时钟域、第二时钟域、第一FIFO缓存和第二FIFO缓存。其中,第一FIFO缓存为处理地址通道(比如address,request和ready),第二FIFO缓存处理数据通道(比如data和valid)。
当第二FIFO缓存不具备实现握手机制的时候,第一时钟域发出request的同时,地址address从第一时钟域经过第一FIFO缓存传给第二时钟域。经过数个周期后,数据data从第二时钟域通过第二FIFO缓存发送给第一时钟域,和data同时传过来的只有一个数据有效指示信号valid。第一时钟域一侧的接收模块一般会设计为直接接收data,省去了握手环节。
上述处理过程会导致,第二时钟域不管第二FIFO缓存是否填满,都会把data传给第二FIFO缓存,如果第二FIFO缓存的数据没有及时被第一时钟域取出,第二FIFO缓存就会数据溢出。
在图1所示的现有技术中异步FIFO缓存的结构的基础上,参见图2,其示出了本发明实施例提供的一种异步FIFO缓存的结构,图2与图1相比较,增加了FIFO控制器。
结合图2,参见图3,其示出了本发明实施例提供的一种异步FIFO控制器30的结构,异步FIFO控制器30可以包括:第一计数器301、第二计数器302、加法器303和比较器304,
其中,所述第一计数器301,用于获取第二FIFO缓存待获取的数据量;并将所述第二FIFO缓存待获取的数据量传输至所述加法器303;
所述第二计数器302,用于获取所述第二FIFO缓存内已存在的数据量;并将所述第二FIFO缓存内已存在的数据量传输至所述加法器303;
所述加法器303,用于将所述第二FIFO缓存待获取的数据量与所述第二FIFO缓存内已存在的数据量进行相加,得到数据总量;并将所述数据总量传输至所述比较器304;
所述比较器304,用于将所述数据总量与所述第二FIFO缓存的深度进行比较,当所述数据总量不小于所述第二FIFO缓存的深度时,向所述第一FIFO缓存发送停止指示信号,其中,所述停止指示信号用于指示所述第一FIFO缓存停止输出request信号。
需要说明的是,由于考虑到传统异步FIFO缓存处理的过程中,第二时间域在接收到第一时间域的请求之后,需要经过若干个周期之后才将数据传输至第二FIFO缓存,因此,本发明实施例在确定第二FIFO缓存中的数据是否达到第二FIFO缓存深度的时候,需要将第二时间域在接收到第一时间域的请求之后的若干个周期才发送给第二FIFO缓存的待接收数据进行考虑,因此,FIFO控制器30通过第一计数器301来获取第二FIFO缓存的待接收数据。
示例性地,如图4所示,所述第一计数器301的第一输入端口可以与第一FIFO缓存的request输出端相连接,获取第一FIFO缓存的request输出端输出的request信号;所述第一计数器301的第二输入端口可以与所述第二FIFO缓存的valid输入端相连接,获取第二FIFO缓存的valid输入端输入的valid信号;第一计数器301通过接收到request信号时加1且接收到输入的valid信号时减1,获取第二FIFO缓存待获取的数据量;
需要说明的是,对于第二FIFO缓存内已存在的数据量的获取,需要根据第二FIFO缓存的具体结构来决定第二计数器302的获取方式;
可选地,参见图4,所述第二计数器302的第一输入端口可以与所述第二FIFO缓存的valid输入端相连接,获取第二FIFO缓存的valid输入端输入的valid信号;所述第二计数器302的第二输入端口可以与所述第二FIFO缓存的valid输出端相连接,获取第二FIFO缓存的valid输出端输出的valid信号;通过接收到输入的valid信号时加1且接收到输出的valid信号时减1,获取第二FIFO缓存内已存在的数据量;
可选地,当第二FIFO缓存中包括用于指示自身已存在的数据量的指示寄存器时,除了图4所示的方式以外,参见图5,所述第二计数器302还可以与所述第二FIFO缓存的指示寄存器进行连接,并从所述指示寄存器获取第二FIFO缓存内已存在的数据量;
可选地,当第二FIFO缓存中具有读写指针时,除了图4所示的方式以外,参见图6,所述第二计数器302还可以通过读取所述第二FIFO缓存的读写指针的方式获取第二FIFO缓存内已存在的数据量。
示例性地,当所述数据总量不小于所述第二FIFO缓存的深度时,比较器304可以向第一FIFO缓存的request输出端输出strobe信号,以使得第一FIFO缓存拒绝向第二时钟域发送request信号,进而可以使得第二时钟域停止在若干周期之后对向所述第二FIFO缓存发送数据,从而保证第二FIFO缓冲中的数据不会溢出。
综上所述,由于计数器、加法器和比较器在器件开销上要远远地小于加大第二FIFO缓存深度所需要的硬件开销,因此,本实施例提供的异步FIFO控制器30能够在防止异步FIFO缓存数据溢出的同时,减少硬件开销。
本发明实施例提供了一种异步FIFO控制器30,通过第一计数器301和第二计数器302分别对第二FIFO缓存待接收的数据数量和第二FIFO缓存中已有的数据数量的数据总量进行计数,随后将数据总量与第二FIFO缓存深度进行比较,当数据总量超过第二FIFO缓存深度时,异步FIFO控制器终止第一FIFO缓存输出请求request信号;从而能够在防止异步FIFO缓存数据溢出的同时,减少硬件开销。
基于前述实施例相同的技术构思,参见图7,其示出了本发明实施例提供的一种防止异步FIFO缓存数据溢出的方法流程,该方法可以应用于如图3所示的异步FIFO控制器,该方法可以包括:
S701:异步FIFO控制器获取第二FIFO缓存待获取的数据量;
S702:异步FIFO控制器获取所述第二FIFO缓存内已存在的数据量;
S703:异步FIFO控制器将所述第二FIFO缓存待获取的数据量与所述第二FIFO缓存内已存在的数据量进行相加,得到数据总量;
S704:异步FIFO控制器将所述数据总量与第二FIFO缓存的深度进行比较;
S705:当所述数据总量不小于所述第二FIFO缓存的深度时,异步FIFO控制器向所述第一FIFO缓存发送停止指示信号;
其中,停止指示信号用于指示所述第一FIFO缓存停止输出request信号。
需要说明的是,由于考虑到传统异步FIFO缓存处理的过程中,第二时间域在接收到第一时间域的请求之后,需要经过若干个周期之后才将数据传输至第二FIFO缓存,因此,本发明实施例在确定第二FIFO缓存中的数据是否达到第二FIFO缓存深度的时候,需要将第二时间域在接收到第一时间域的请求之后的若干个周期才发送给第二FIFO缓存的待接收数据进行考虑。
示例性地,参见图8,步骤S701具体可以包括:
S7011a:异步FIFO控制器与第一FIFO缓存的request输出端相连接,获取第一FIFO缓存的request输出端输出的request信号;
S7011b:异步FIFO控制器与所述第二FIFO缓存的valid输入端相连接,获取第二FIFO缓存的valid输入端输入的valid信号;
S7012:异步FIFO控制器通过接收到request信号时加1且接收到输入的valid信号时减1,获取第二FIFO缓存待获取的数据量;
需要说明的是,步骤S702需要根据第二FIFO缓存的具体结构来决定,本实施例提供了以下具体方式:
可选地,参见图9,步骤S702具体可以包括:
S7021a:异步FIFO控制器与所述第二FIFO缓存的valid输入端相连接,获取第二FIFO缓存的valid输入端输入的valid信号;
S7021b:异步FIFO控制器与所述第二FIFO缓存的valid输出端相连接,获取第二FIFO缓存的valid输出端输出的valid信号;
S7022:异步FIFO控制器通过接收到输入的valid信号时加1且接收到输出的valid信号时减1,获取第二FIFO缓存内已存在的数据量;
可选地,当第二FIFO缓存中包括用于指示自身已存在的数据量的指示寄存器时,除了图9所述的方式之外,步骤S702具体可以为:异步FIFO控制器与所述第二FIFO缓存的指示寄存器进行连接,并从所述指示寄存器获取第二FIFO缓存内已存在的数据量;
可选地,当第二FIFO缓存中具有读写指针时,除了图9所述的方式之外,步骤S702具体可以为:异步FIFO控制器通过读取所述第二FIFO缓存的读写指针获取第二FIFO缓存内已存在的数据量。
示例性地,当所述数据总量不小于所述第二FIFO缓存的深度时,所述异步FIFO控制器向第一FIFO缓存发送停止指示信号具体可以包括:异步FIFO控制器向第一FIFO缓存的request输出端输出strobe信号,以使得第一FIFO缓存拒绝向第二时钟域发送request信号,进而可以使得第二时钟域停止在若干周期之后对向所述第二FIFO缓存发送数据,从而保证第二FIFO缓冲中的数据不会溢出。
本发明实施例提供了一种防止异步FIFO缓存数据溢出的方法,通过FIFO控制器对第二FIFO缓存中已有的数据数量和待接收的数据数量的数据总量进行计数,随后将数据总量与第二FIFO缓存深度进行比较,当数据总量超过第二FIFO缓存深度时,FIFO控制器终止第一FIFO缓存输出请求request信号;从而能够在防止异步FIFO缓存数据溢出的同时,减少硬件开销。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
机译: 异步FIFO控制器和防止异步FIFO缓冲区数据溢出的方法
机译: 一种用于使异步传输的空闲运行条件和接收fifo的fifo的溢出条件最小化的方法和装置
机译: 一种用于使异步传输的空闲运行状况和接收fifo的fifo的溢出状况最小化的方法和装置