一种预取FIFO电路及方法与流程

文档序号:19128021发布日期:2019-11-13 02:19阅读:1054来源:国知局
一种预取FIFO电路及方法与流程

本发明属于电子电路设计领域,尤其涉及一种预取fifo电路。



背景技术:

在逻辑电路的设计中,fifo(first_in_first_out)是最常用的电路单元之一。根据数据延迟的不同,fifo可以分为预取fifo和非预取fifo,而很多复杂逻辑设计中需要采用预取fifo来满足应用功能的需求。

常见的预取fifo包括memory存储单元、fifo控制电路和数据预取控制电路,数据进入预取fifo之后首先会缓存到memory存储单元中,然后由fifo控制器和数据预取电路完成对数据的读取功能。memory存储单元主要分为寄存器组和物理ip单元,在asic电路设计中,通常只有在存储数据量较小的应用中才会使用寄存器组搭建存储单元,而大部分的电路存储都是通过定制的物理memory单元。而在使用定制物理memory的预取fifo设计中,由于memory本身的电路特性,数据从进入预取fifo单元到被读出需要一个较长的时间,而这导致了预取fifo中数据传输的延迟较大。



技术实现要素:

为了解决现有技术中存在的不足,本发明的目的在于提供一种预取fifo电路,降低逻辑电路中数据传输的延迟。

为了实现上述目的,本发明提供的预取fifo电路,包括fifo控制器、ram存储器、缓存寄存器组、缓存控制器、输出寄存器组、输出控制器、状态机、第一数据选择模块、第二数据选择模块、第一矩阵模块和第二矩阵模块,所述fifo控制器与ram存储器、缓存控制器和输出控制器通信连接,用于对缓存控制器和输出控制器进行控制;

所述fifo控制器,其分别与所述ram存储器、所述缓存控制器和所述输出控制器通信连接,其对所述缓存控制器、所述输出控制器和所述ram存储器进行控制,完成先进入的数据先被读取的操作;

所述ram存储器,其分别与所述第一数据选择模块、所述第二数据选择模块和所述fifo控制器通信连接;

所述缓存寄存器组,其分别与所述缓存控制器、所述第一矩阵模块和所述第二矩阵模块通信连接;

所述缓存控制器,其分别与所述fifo控制器和所述缓存寄存器组通信连接;

所述输出寄存器组,其分别与所述输出控制器和所述第一矩阵模块通信连接;

所述输出控制器,其分别与所述fifo控制器和所述输出寄存器组通信连接;

所述状态机,其分别与所述第一数据选择模块、所述第二数据选择模块、所述第一矩阵模块和所述第二矩阵模块通信连接;

所述第一数据选择模块,其接收数据输入并分别与所述ram存储器、所述状态机、所述第一矩阵模块和所述第二矩阵模块通信连接;

所述第二数据选择模块,其分别与所述ram存储器、所述状态机、所述第一矩阵模块和所述第二矩阵模块通信连接;

所述第一矩阵模块,其分别与所述第一数据选择模块、所述第二数据选择模块、所述缓存寄存器组、所述状态机和所述输出寄存器组通信连接;

所述第二矩阵模块,其分别与所述第一数据选择模块、所述第二数据选择模块、所述缓存寄存器组和所述状态机通信连接。

进一步地,所述ram存储器为定制的ip,其将存储的来自所述第一数据选择模块的数据输出至所述第二数据选择模块;

所述缓存寄存器组,其接受所述缓存控制器的控制将来自所述第二矩阵模块的数据输出至所述第一矩阵模块;

所述输出寄存器组其接受所述输出控制器的控制将来自所述第一矩阵模块的数据进行存储并输出;

所述状态机,其根据存储在所述输出寄存器组、所述缓存寄存器组和所述ram存储器中数据的状态,输出控制信号,确保数据能够正确写入对应的存储单元;

所述第一数据选择模块,其在状态机的控制下,将输入的数据输出至所述ram存储器、所述第一矩阵模块或所述第二矩阵模块;

所述第二数据选择模块,其在状态机的控制下,将来自ram存储器的数据输出至所述第一矩阵模块或所述第二矩阵模块;

所述第一矩阵模块,其在所述状态机的控制下,将来自所述第一数据选择模块、所述第二数据选择模块或所述缓存寄存器组的数据输出至所述输出寄存器组;

所述第二矩阵模块,其在所述状态机的控制下,将来自所述第一数据选择模块或所述第二数据选择模块的数据输出至所述缓存寄存器组。

进一步地,所述缓存寄存器组是数据寄存器组,其数量不小于ram路径延迟。

为了实现上述目的,本发明提供的数据先入先出的方法,包括以下步骤:

状态机查询输出寄存器组,并根据查询结果对数据进行处理;

状态机查询ram存储器数据,并根据查询结果对数据进行处理;

状态机查询缓存寄存器组,并根据查询结果对数据进行处理。

进一步地,所述状态机查询输出寄存器组,并根据查询结果对输入数据进行处理的步骤,进一步包括:

如果查询到输出寄存器组空闲,直接数据写入到输出寄存器组;

如果查询到输出寄存器组已满并且缓存寄存器组为空,数据会根据状态机给出的指示缓存到ram存储器中;

当输出寄存器组中有数据被读取出,ram存储器中的数据根据状态机的指示将数据搬移到输出寄存器组中空闲的存储单元。

进一步地,所述状态机查询ram存储器数据,并根据查询结果对输入数据进行处理的步骤,进一步包括:

当状态机查询到ram存储器数据被读出,但是数据还未写入输出寄存器组,状态机指示输入数据写入到缓存寄存器组,待ram存储器读出数据完全写入输出寄存器组后,再从缓存寄存器组读取数据补充到输出寄存器组。

更进一步地,所述状态机查询缓存寄存器组,并根据查询结果对输入数据进行处理的步骤,进一步包括:当状态机查询到缓存寄存器组已满后,输入数据则存入ram存储器中,待缓存寄存器组中数据读空后,ram存储器中数据会被读取并缓存到输出寄存器组。

本发明的预取fifo电路,由于使用了状态机的控制,在数据输入时可以选择透传ram,因而减少了ram的延迟影响,只存在输入数据写入到输出寄存器组的1个周期延迟,不会因为电路中ram的延迟和外设电路的变化而影响电路的延迟。最大程度地降低了电路的延迟。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:

图1为根据本发明的一种预取fifo电路框图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1为根据本发明的一种预取fifo电路框图,如图1所示,本发明提供的预取fifo电路,包括fifo控制器(fifo_controller)101、ram存储器102、缓存寄存器组(buffer_regs)103、缓存控制器(buffer_controller)104、输出寄存器组(output_regs)105、输出控制器(output_controller)106、状态机(state_machine)107、第一数据选择模块108、第二数据选择模块109、第一矩阵模块110和第二矩阵模块111;

其中,fifo控制器101,其分别与ram存储器102、缓存控制器104和输出控制器106通信连接,主要功能对缓存控制器104、输出控制器106和ram存储器102进行控制,完成先进入的数据先被读取功能;

ram存储器102是定制的ip,其作用是存储输入到预取fifo的数据,其分别与第一数据选择模块108和第二数据选择模块109通信连接,接收来自第一数据选择模块108的数据并将其输出至第二数据选择模块109;

缓存寄存器组103是数据寄存器组,其分别与缓存控制器104、第一矩阵模块110和第二矩阵模块111通信连接,在缓存控制器104的控制下接收来自第二矩阵模块111的数据并将数据输出至第一矩阵模块110。该寄存器组的作用是吸收ram及其读写时序逻辑导致的路径延迟数据,因此该寄存器组的数量不小于ram路径延迟;

缓存控制器104是缓存寄存器组103的控制器,其分别与fifo控制器101和缓存寄存器组103通信连接,作用是实现存储到缓存寄存器组103的数据先入先出的功能;

输出寄存器组105是一组输出寄存器,其分别与输出控制器106和第一矩阵模块110通信连接,在输出控制器106的控制下接收来自第一矩阵模块110的数据并将数据最终输出,其作用是存储预取出的临时数据;

输出控制器106是输出寄存器组105的控制器,其分别与fifo控制器101和输出寄存器组105通信连接,作用是实现输出寄存器组105中数据先入先出的功能;

状态机107是一个状态机,其分别与第一数据选择模块108、第二数据选择模块109、第一矩阵模块110和第二矩阵模块111通信连接,主要作用是根据储于输出寄存器组105、缓存寄存器组103和ram存储器102中数据的状态,输出控制信号,确保数据能够正确写入对应的存储单元;

第一数据选择模块108,其接收数据输入,并分别与ram存储器102、状态机107、第一矩阵模块110和第二矩阵模块111通信连接,在状态机107的控制下,决定将数据输出至ram存储器102、第一矩阵模块110或第二矩阵模块111;

第二数据选择模块109,其分别与ram存储器102、状态机107、第一矩阵模块110和第二矩阵模块111通信连接,接收来自ram存储器102的数据信号,在状态机107的控制下,决定将数据信号输出至第一矩阵模块110或第二矩阵模块111;

第一矩阵模块110,其分别与第一数据选择模块108、第二数据选择模块109、缓存寄存器组103、状态机107和输出寄存器组105通信连接,在状态机107的控制下,将来自第一数据选择模块108、第二数据选择模块109或缓存寄存器组103的数据输出至输出寄存器组105。

第二矩阵模块111,其分别与第一数据选择模块108、第二数据选择模块109、缓存寄存器组103和状态机107通信连接,在状态机107的控制下,将来自第一数据选择模块108或第二数据选择模块109的数据输出至缓存寄存器组103。

常见的预取fifo电路中先将数据缓存到ram中,然后再根据ram的空和非空信息将数据从ram中读取出来存储到输出寄存器组(output_regs)内,从而实现数据预取的功能。而本发明通过状态机107的控制,可以有选择的是否将数据跳过ram,而直接存储于output_regs内,这将大大节省了数据传输的延迟。具体地,本发明的预取fifo电路工作过程为:

1)状态机107查询到输出寄存器组105比较空闲,直接选择将输入数据写入到输出寄存器组105。

2)状态机107查询到输出寄存器组105已满并且缓存寄存器组103为空,输入数据会根据状态机给出的指示缓存到ram存储器102中,并且当输出寄存器组105中有数据被读取出,ram存储器102中的数据会根据状态机的指示将数据搬移到输出寄存器组105中空闲的存储单元。

3)状态机107查询到ram存储器102数据被读出,但是数据还未写入输出寄存器组105,状态机会指示输入数据写入到缓存寄存器组103,待ram存储器102读出数据完全写入输出寄存器组105后,再从缓存寄存器组103读取数据补充到输出寄存器组105。

4)状态机107查询到缓存寄存器组103已满后,输入数据会存入ram存储器102中,待缓存寄存器组103中数据读空后,ram存储器102中数据会被读取并缓存到输出寄存器组105。

在状态机107的控制下,数据会根据存储单元的存储状态自动切换到对应的存储单元中,从而实现了数据预取和数据传输低延迟功能。

常用的ramip读延迟为1个cycle,写延迟也为1个cycle;在逻辑设计中为了降低ram的出错概率,通常还会在数据写入ram之前加上ecc编码电路,并且在数据从ram读出之后进行ecc校验,主要有如下几种延迟情况,如表1所示:

表1fifo数据延迟计算

如表1所示,通过对比可以发现,本发明的预取fifo电路,由于使用了状态机107的控制,在数据输入时可以选择透传ram,因而减少了ram的延迟影响,只存在输入数据写入到output_regs的1个周期(cycle)延迟,因此本发明的电路中预取fifo延迟固定为1个cycle,不会因为电路中ram的延迟和外设电路的变化而影响电路的延迟。而普通预取fifo电路,在最简单的功能情况下,至少需要1个cycle的写延迟、1个cycle的读延迟和1个cycle的写入output_regs的延迟,这比本发明设计的电路中多了2个cycle的延迟,因此本发明设计的电路最少可以降低67%的电路延迟,在情况复杂的电路中,本发明的电路可以更大程度地降低电路的延迟。

本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1