CN112486453B - 一种异步先入先出寄存器以及芯片 - Google Patents

一种异步先入先出寄存器以及芯片 Download PDF

Info

Publication number
CN112486453B
CN112486453B CN202011457936.9A CN202011457936A CN112486453B CN 112486453 B CN112486453 B CN 112486453B CN 202011457936 A CN202011457936 A CN 202011457936A CN 112486453 B CN112486453 B CN 112486453B
Authority
CN
China
Prior art keywords
read
binary
data
write
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011457936.9A
Other languages
English (en)
Other versions
CN112486453A (zh
Inventor
王寅
林以凡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jinzhuo Technology Co ltd
Original Assignee
Shanghai Jinzhuo Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jinzhuo Technology Co ltd filed Critical Shanghai Jinzhuo Technology Co ltd
Priority to CN202011457936.9A priority Critical patent/CN112486453B/zh
Publication of CN112486453A publication Critical patent/CN112486453A/zh
Application granted granted Critical
Publication of CN112486453B publication Critical patent/CN112486453B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/08Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register
    • G06F5/085Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations, the intermediate ones not being accessible for either enqueue or dequeue operations, e.g. using a shift register in which the data is recirculated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • G06F5/14Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations for overflow or underflow handling, e.g. full or empty flags
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/22Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management 
    • G11C7/222Clock generating, synchronizing or distributing circuits within memory device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Communication Control (AREA)

Abstract

本发明实施例公开了一种异步先入先出寄存器以及芯片。该异步先入先出寄存器,包括:分离设置的读数据模块和写数据模块;写数据模块包括多个数据寄存器组;读数据模块包括与各数据寄存器组配对连接的多个配对读取单元,以及分别与各配对读取单元相连的第一时序控制电路;第一时序控制电路,用于根据读时钟信号,轮流向各配对读取单元传输所配对数据寄存器组中一个数据寄存器的读取地址;配对读取单元,用于根据读时钟信号,向所配对数据寄存器组发送第一时序控制电路实时传输的读取地址,或前一读时钟周期所保持的读取地址。可以允许选择数据在多于读时钟的一个周期内完成,可以实现合理地按照时钟域进行切分的方案。

Description

一种异步先入先出寄存器以及芯片
技术领域
本发明实施例涉及电子电路技术领域,尤其涉及一种异步先入先出寄存器以及芯片。
背景技术
随着超大规模集成电路技术的发展,芯片的规模越来越大,芯片中的时钟域也越来越多。芯片内部,各子系统通常采用不同的时钟域,通常不同子系统的通信是通过异步先入先出寄存器(First Input First Output,FIFO)实现。
图1是现有技术中的异步FIFO结构示意图,如图1所示,异步FIFO具有两个时钟域:写时钟域和读时钟域。数据从写时钟域进去,存放在中间的存储器(FIFO Memory)中。其中,写时钟可以是子系统A的内部时钟,读时钟可以是子系统B的内部时钟。图2是现有技术中的芯片中子系统间的时钟设置示意图,如图2所示,如果异步FIFO放在其中一个子系统(如子系统A)而需要在顶层和该子系统设置另一系统内部时钟(如读时钟)的时钟树。这会造成时钟布线不均衡,延迟比较大,对于后端布局和时钟树生成是不友好的。
为解决上述问题,现有技术中提议将异步FIFO按照时钟域切成两部分,一部分只有写时钟域的逻辑,另一部分只有读时钟域的逻辑。其中,读写时域的划分可以根据图1中间的加粗实线进行划分。图3是现有技术中异步FIFO单独设置于不同子系统的结构示意图。如图3所示,写时钟和读时钟可以分别设置在子系统A和子系统B中,顶层与另外的子系统不会存在这两个时钟。但是,图3所示的结构需要读地址穿过顶层进入写时钟域,再选择数据返回读时钟域,需要在读时钟的一个周期内完成组合逻辑。但是,在子系统A与子系统B距离远时,无法保证上述过程在一个周期内完成,从而将异步FIFO按照时钟域进行切分的方案不合理。
发明内容
本发明实施例提供了一种异步先入先出寄存器以及芯片,可以允许选择数据在多于读时钟的一个周期内完成,可以实现合理地按照时钟域对异步FIFO进行切分的方案。
第一方面,本发明实施例提供了一种异步先入先出寄存器,该异步先入先出寄存器包括:分离设置的读数据模块和写数据模块;写数据模块包括多个数据寄存器组,每个数据寄存器组中包括至少一个数据寄存器;读数据模块包括与各数据寄存器组配对连接的多个配对读取单元,以及分别与各配对读取单元相连的第一时序控制电路;
第一时序控制电路,用于根据读时钟信号,轮流向各配对读取单元传输所配对数据寄存器组中一个数据寄存器的读取地址;
配对读取单元,用于根据读时钟信号,向所配对数据寄存器组发送第一时序控制电路实时传输的读取地址,或前一读时钟周期所保持的读取地址。
第二方面,本发明实施例还提供了一种芯片,该芯片包括:如本发明任意实施例所述的异步先入先出寄存器,至少一个第一子系统,以及至少一个第二子系统;
所述异步先入先出寄存器的写数据模块和读数据模块分别设置在第一子系统和第二子系统中;
所述第一子系统的内部时钟信号作为写数据模块的写时钟信号,所述第二子系统的内部时钟信号作为读数据模块的读时钟信号;
所述第一子系统与所述第二子系统通过所述异步先入先出寄存器实现通信。
本发明实施例的技术方案,通过分离设置的读数据模块和写数据模块;其中,写数据模块包括多个数据寄存器组;读数据模块包括与各数据寄存器组配对连接的多个配对读取单元,以及分别与各配对读取单元相连的第一时序控制电路;第一时序控制电路,用于根据读时钟信号,轮流向各配对读取单元传输所配对数据寄存器组中一个数据寄存器的读取地址;配对读取单元,用于根据读时钟信号,向所配对数据寄存器组发送第一时序控制电路实时传输的读取地址,或前一读时钟周期所保持的读取地址,解决了异步FIFO分离设置在不同子系统的问题,实现了可以允许选择数据在多于读时钟的一个周期内完成,可以实现合理地按照时钟域进行切分方案的效果。
附图说明
图1是现有技术中的异步FIFO结构示意图;
图2是现有技术中的芯片中子系统间的时钟设置示意图;
图3是现有技术中异步FIFO单独设置于不同子系统的结构示意图;
图4是本发明实施例提供一种异步先入先出寄存器的结构示意图;
图5是本发明实施例提供的一种芯片的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图4是本发明实施例提供一种异步先入先出寄存器的结构示意图,本实施例可适用于合理将异步FIFO按照时钟域切成两部分的情况,并可以集成于芯片中,如图4所示,该异步FIFO具体包括:分离设置的读数据模块100和写数据模块200;
其中,在本发明实施例中,读数据模块100和写数据模块200可以设置在不同的子系统中。写数据模块200可以将其他子系统的数据写入至所在的子系统中。读数据模块100可以将其他子系统的数据读取至所在的子系统中。本发明实施例以子系统A中设置异步FIFO的写数据模块200,子系统B中设置异步FIFO的读数据模块100为例,说明子系统B向子系统A进行数据读取的过程,数据写入的过程可以与数据读取的过程类似。
写数据模块200包括多个数据寄存器组210,每个寄存器组中包括至少一个数据寄存器211。其中,各数据寄存器组210中的数据寄存器的个数可以相同,也可以不同。可以预先对所有的数据寄存器进行分组,确定数据寄存器组。在对数据寄存器进行分组时需要考虑多种情况,例如,当前异步FIFO所在的子系统A与子系统B的距离,是否存在与分组对应的足够绕线空间。又如,数据寄存器的数量。
示例性的,当子系统A与子系统B距离较远,存在足够的绕线空间时,分组数量可以相对多些,例如,多于4;当子系统A与子系统B距离较近,绕线空间有限时,分组数量可以相对少些,例如,2或者3等。
又一示例性的,当数据寄存器采用均分时,数据寄存器分组与数据寄存器数量的因数可以存在一定的关系。例如,寄存器数量为2的倍数时,分组可以为2;寄存器数量为3的倍数时,分组可以为3。
再一示例性的,数据寄存器可以采用非均分,例如,数据寄存器数量为8,可以分为3组,各组数据寄存器组中的数据寄存器数量分别为3,3,2。为了避免由于非均分导致的控制逻辑复杂问题,在示例中,数据寄存器数量为2的数据寄存器组可以设置为与其他组相同的结构,相当于额外引入一个空的数据寄存器,可以避免读数据或者写数据的逻辑发生较大的变动,不便于数据处理。
为了便于异步FIFO绕线以及数据处理中的逻辑,在本实施例的一个可选实施方式中,各数据寄存器组中包括的数据寄存器的数量相同。
如图4所示,读数据模块100包括与各数据寄存器组210配对连接的多个配对读取单元110,以及分别与各配对读取单元110相连的第一时序控制电路120。其中,第一时序控制电路120,用于根据读时钟信号,轮流向各配对读取单元110传输所配对数据寄存器组210中一个数据寄存器的读取地址。
在本发明实施例的一个可选实施方式中,各数据寄存器组中的一个数据寄存器共同组成一个轮询子序列,各轮询子序列的组合构成数据寄存器轮询集合。
其中,轮询子序列可以是按照数据寄存器组中数据寄存器的顺序形成数据寄存器的访问顺序。数据寄存器轮询集合可以是各数据寄存器组的访问顺序以及各数据寄存器组中数据寄存器的访问顺序。在本发明实施例中,可以循环往复在各数据寄存器组中确定一个数据寄存器。
示例性的,对于两组的数据寄存器组,读数据或者写数据可以按照grp0的地址0,grp1的地址0,grp0的地址1,grp1的地址1,…,grp0的地址n,grp1的地址n,grp0的地址0,grp1的地址0,…的顺序进行循环往复。其中,grp0代表第一个数据寄存器组,grp1代表第二个数据寄存器组,地址0代表数据寄存器组中的第一个数据寄存器,地址1代表数据寄存器组中的第二个数据寄存器,…,地址n代表数据寄存器组中的第n+1个数据寄存器。对于其它多组的数据寄存器组,读数据或者写数据的循环往复顺序可以与两组的相似,这里不再赘述。
为了实现读数据时上述的循环往复顺序,可以通过第一时序控制电路通过数据寄存器轮询集合中各数据寄存器的排序确定读取地址。在本发明实施例的一个可选实施方式中,第一时序控制电路由多个逻辑门阵列构成。逻辑门阵列包括逻辑运算单元、算术运算单元、寄存器以及计数器等。第一时序控制电路,具体用于根据读时钟信号,按照数据寄存器轮询集合中各数据寄存器的排序,轮流向各配对读取单元传输所配对数据寄存器组中一个数据寄存器的读取地址。
示例性的,以两组数据寄存器组,各数据寄存器组中包括4个数据寄存器为例,第一时序控制电路可以包括两组第一时序子控制电路。第一组第一时序子控制电路用于为第一数据寄存器组传输读取地址,用于从第一数据寄存器组中的数据寄存器读取数据;第二组第一时序子控制电路用于为第二数据寄存器组传输读取地址,用于从第二数据寄存器组中的数据寄存器读取数据。
示例性的,第一组第一时序子控制电路可以产生读取地址0000,0010,0100,0110;第二组第一时序子控制电路可以产生读取地址0001,0011,0101,0111。其中,读取地址的低2位与低3位构成读写数据小指针,用于指示分组中的各数据寄存器;读取地址的低1位构成分组指针,用于指示各数据寄存器组。例如,0011中的低2位与低3位为01表示读取分组中的第一个数据寄存器,低1位为1表示读取第一数据寄存器组,0011整体表示读取第一数据寄存器组的第一个数据寄存器。
在进行数据读取时,为了保证每组数据寄存器组同样位置都读取过之后,才会继续从第一数据寄存器组的下一个数据寄存器开始下一次读。对于任一数据寄存器组需要等所有的数据寄存器组均绕一圈后才会用到当前选择出来的数据。在进行第一时序控制电路设置时,可以将第一组第一时序子控制电路和第二组第一时序子控制电路设置为交替变化。
示例性的,第一组第一时序子控制电路可以在读时钟信号的当前上升沿之前更新输出0000,在下一上升沿之后保持输出为0000;在再下上升沿之前更新输出0010,并采用与0000相同的保持输出与更新输出,在0000,0010,0100,0110之间进行轮询输出。而第二组第一时序子控制电路可以在第一组第一时序子控制电路更新输出时,保持为上一输出结果0111,在第一组第一时序子控制电路保持输出时,更新输出为0001,并继续采用保持输出与更新输出,在0001,0011,0101,0111之间进行轮询输出。
采用上述的第一时序控制电路,可以实现多循环路径,可以允许读取数据在2个读时钟周期内完成。在本发明实施例的又一具体实施方式中,可以将数据寄存器分为3组,4组或更多组,其具体构成以及控制方式均与将数据寄存器分为2组类似,这里不再赘述。
需要说明的是,数据寄存器的分组越多读取数据的周期可以延长的越长,但是如分3组,可以在3个周期内读取数据;分4组,可以在4个周期内读取数据。但是,分组增多时,绕线是需要增多的,需要考虑是否存在足够的绕线空间以及以绕线为代价实现延长读取数据周期是否划算。
如图4所示,在本发明实施例中,配对读取单元110,用于根据读时钟信号,向所配对数据寄存器组210发送第一时序控制电路120实时传输的读取地址,或前一读时钟周期所保持的读取地址。
示例性的,以两组数据寄存器组,各数据寄存器组中包括4个数据寄存器为例,第一组第一时序子控制电路将输出结果(更新输出或者保持输出)输出至第一配对读取单元,第二组第一时序子控制电路将输出结果(保持输出或者更新输出)输出至第二配对读取单元。实现异步FIFO按照grp0的地址0,grp1的地址0,grp0的地址1,grp1的地址1,…,grp0的地址n,grp1的地址n,grp0的地址0,grp1的地址0,…的顺序进行循环往复读取数据。其中,配对读取单元的数量、第一时序子控制电路的数量以及数据寄存器组的数量相同。
在本发明实施例的一个实施方式中,可选的,写数据模块包括:与各数据寄存器组配对连接的多个配对写入单元,以及分别与各配对写入单元相连的第二时序控制电路;第二时序控制电路,用于根据写时钟信号,轮流向各配对写入单元传输所配对数据寄存器组中一个数据寄存器的写入地址;配对写入单元,用于根据写时钟信号,向所配对数据寄存器组发送第二时序控制电路实时传输的写入地址,或前一写时钟周期所保持的写入地址。
其中,在本发明实施例的一个可选实施方式中,第二时序控制电路由多个逻辑门阵列构成;第二时序控制电路具体用于,根据写时钟信号,按照数据寄存器轮询集合中各数据寄存器的排序,轮流向各配对写入单元传输所配对数据寄存器组中一个数据寄存器的写入地址。
在本发明实施例的具体实现方式中,第二时序控制电路与第一时序控制电路类似,区别仅在于一个输出写地址另一个输出读地址。写数据的循环往复顺序与读数据一致,对于第二时序控制电路的具体说明可以参考第一时序控制电路,这里不再赘述。
在本发明实施例的一个实施方式中,可选的,配对读取单元与配对写入单元为标准寄存器;标准寄存器,用于在检测到读时钟信号的上升沿时,将稳定的读取地址传输至所配对数据寄存器组;或者,在检测到写时钟信号的上升沿时,将稳定的写入地址传输至所配对数据寄存器组。
在本发明实施例的一个实施方式中,可选的,读数据模块还包括:读格雷码生成电路;读格雷码生成电路,用于生成读格雷码发送至写数据模块;读格雷码生成电路具体包括:相连的二进制读指针生成子电路和二进制转读格雷码子电路;二进制读指针生成子电路,用于根据读时钟信号,按照二进制指针映射序列中各二进制指针的排序,顺序生成二进制读指针传输至二进制转格读雷码子电路;二进制转读格雷码子电路,用于将接收的二进制读指针转换为匹配的读格雷码,并将读格雷码提供给写数据模块。
在本发明实施例的一个实施方式中,可选的,读数据模块还包括:写格雷码生成电路;写格雷码生成电路具体包括:相连的二进制写指针生成子电路以及二进制转写格雷码子电路;二进制写指针生成子电路,用于根据写时钟信号,按照二进制指针映射序列中各二进制指针的排序,顺序生成二进制写指针传输至二进制转格写雷码子电路;二进制转写格雷码子电路,用于将接收的二进制写指针转换为匹配的写格雷码,并将写格雷码提供给写数据模块。
其中,读格雷码与写格雷码,统称为格雷码,是用于区分异步FIFO的空满状态的。因此格雷码中需要额外增加一个比特,用于记录异步FIFO的空满状态。例如,异步FIFO中存在8个数字寄存器时,需要用4位指针表示格雷码。通过格雷码区分异步FIFO的空满状态可以与现有技术的方案相似,这里不再赘述。
在本实施例中,格雷码的生成过程可以是先生成二进制读指针或者二进制写指针,再分别将二进制读指针或二进制写指针对应的转换为读格雷码或写格雷码。其中,二进制读指针可以是根据读时钟信号按照二进制指针映射序列中各二进制指针的排序,顺序生成二进制读指针。二进制指针映射序列可以是0X0开始逐个递增产生的序列,由于格雷码需要记录异步FIFO的空满状态,二进制指针映射序列可以是从0X0开始逐个递增共有2N个数值,其中,N为数据寄存器的个数。
示例性的,以8个数据寄存器为例,二进制指针映射序列可以是0X0,0X1,0X2,…,0XF。二进制读指针生成子电路可以是根据读时钟信号顺序将二进制指针映射序列中的作为二进制读指针传输至二进制转读格雷码子电路。当二进制指针映射序列中的值可以被轮询。在实际的电路设计中,可以通过计数器实现二进制读指针的生成,由于记录位数的限制,最高位只能是0或1,在其他位满时溢出,即相当于对二进制指针映射序列的轮询。
二进制写指针可以是根据写时钟信号按照二进制指针映射序列中各二进制指针的排序,顺序生成二进制写指针。生成二进制写指针所用的二进制指针映射序列可以与二进制读指针生成时所用的二进制指针映射序列相同,不再赘述。
二进制与格雷码具有一一对应的映射关系,因此,二进制转读格雷码子电路或者二进制转写格雷码子电路可以根据电路中对应的逻辑运算关系将二进制转换为格雷码。
表1是本发明实施例提供的一种异步FIFO中各指针变化示意表。表1以异步FIFO中存在8个数字寄存器分为2组为例,说明本发明实施例所提供的异步FIFO中各指针间的关系。
如表1所示,二进制读(或写)指针可以是根据0X0,0X1,0X2,…,0XF的二进制指针映射序列以及读(或写)时钟信号确定的。读(或写)格雷码是与二进制读(或写)指针一一对应的。在表1中,二进制读(或写)指针采用十六进制进行表示,读(或写)格雷码采用二进制进行表示。Group(分组)指针可以是二进制读(或写)指针的低1位,读写数据小指针可以是二进制读(或写)指针的低2位与低3位构成的。数据寄存器编号可以是根据对各数据寄存器组中各数据寄存器的轮询记录的编号。在实际设计异步FIFO的结构时,可以按照表1所示的各指针的对应关系设计电路,形成读写数据的控制电路。
表1
在本发明实施例的一个可选实施方式中,写数据模块中,与各数据寄存器组对应的数据寄存器总数N为非2的幂次方;二进制指针映射序列为以为数据寄存器总数构造的标准二进制指针映射序列中,取前N个和后N个二进制指针组合得到的二进制指针序列。
其中,在格雷码满足对称性时,用于区分异步FIFO的空满状态在现有技术中是比较简便的。格雷码的对称性可以理解为格雷码的第n个与第(2N-n+1)个除去最高位后剩余数据是分别相同的。其中,n为1,2,…,N;N为数据寄存器总个数。例如,在表1中,第一个格雷码0b00000与最后一个格雷码0b10000,除去最高位后均为0000。
为了满足格雷码的对称性,现有技术在设计异步FIFO时,会将数据寄存器的总个数N设置为2的幂次方。这种方式会局限异步FIFO的设计,为了减少异步FIFO中数据寄存器总数N的局限性,增加异步FIFO设计的灵活性,在本实施例中提出了数据寄存器总数为非2的幂次方的解决方案。
当数据寄存器总数为非2的幂次方时,二进制指针映射序列采用从0X0开始逐个递增共有2N个数值的方式,其对应的格雷码肯定是不满足对称性的。为了满足格雷码的对称性,在本实施例中,将以为数据寄存器总数构造的标准二进制指针映射序列中,取前N个和后N个二进制指针组合得到的二进制指针序列作为二进制指针映射序列。
其中,标准二进制指针映射序列是指按照从0X0开始逐个递增共有个数值的方式生成的序列。/>表示向上取整,如/>
示例性的,表2是本发明实施例提供的一种异步FIFO中数据寄存器总数为非2幂次方时各指针变化示意表。如表2中以数据寄存器总数N=9,分为3组数据寄存器组为例进行说明。前9个和后9个二进制指针组合得到的二进制指针序列为:0X0,0X1,0X2,…,0X8,0X17,0X18,0X19,…,0X1F,可以作为二进制指针映射序列。二进制读指针与二进制写指针均可以采用此二进制指针映射序列生成,对应的格雷码是满足对称性的。如表2中,第一个格雷码为0b00000,最后一个格雷码为0b10000,去掉最高位后均为0000。
表2
如表2所示的二进制指针映射序列相当于是跳过了中间14个指针((0x16-0x 9)+1),因此为了满足本发明实施例所需的二进制指针映射序列对应的二进制读(或写)指针的生成,在本实施例的一个可选实施方式中,读格雷码生成电路中还包括:第一指针跳变单元,第一指针跳变单元与二进制读指针生成子电路相连;二进制读指针生成子电路,具体用于根据读时钟信号,按照二进制数递增顺序,依次生成一个二进制读指针;第一指针跳变单元,用于在读时钟信号到达时,如果确定二进制读指针生成子电路前一读时钟信号输出的二进制读指针为标准二进制指针映射序列中的第N个二进制读指针,指示二进制读指针生成子电路跳变生成标准二进制指针映射序列中的第N+1个二进制读指针。
在本实施例的一个可选实施方式中,写格雷码生成电路中还包括:第二指针跳变单元,第二指针跳变单元与二进制写指针生成子电路相连;二进制写指针生成子电路,具体用于根据写时钟信号,按照二进制数递增顺序,依次生成一个二进制写指针;第二指针跳变单元,用于在写时钟信号到达时,如果确定二进制写指针生成子电路前一写时钟信号输出的二进制写指针为标准二进制指针映射序列中的第N个二进制写指针,指示二进制写指针生成子电路跳变生成标准二进制指针映射序列中的第N+1个二进制写指针。
其中,第一指针跳变单元和第二指针跳变单元可以分别实现异步FIFO中数据寄存器总数N为非2的幂次方时二进制读指针和二进制写指针的跳变。
在上述实施方式的基础上,可选的,写数据模块包括与数据寄存器组相同数量的第一选择器;第一选择器与数据寄存器组分别配对相连;读数据模块包括第二选择器和与第二选择器相连的数据读取寄存器;第一选择器,用于接收对应的配对读取单元发送的第一时序控制电路实时传输的读取地址,或前一读时钟周期所保持的读取地址,并根据读取地址在配对的数据寄存器组中选择目标数据寄存器进行目标数据读取,将目标数据发送至第二选择器;第二选择器,用于接收目标数据,并根据读取地址确定目标数据的有效性,将有效的目标数据发送至数据读取寄存器。
其中,第二选择器在确定目标数据的有效性时,可以是根据分组指针实现的,例如,第二选择器可以将分组指针作为触发信号,根据分组指针确定当前有效的数据寄存器组,将从当前有效的数据寄存器组对应的第一选择器中读取的目标数据确定为有效的目标数据值,传输至读数据模块进行使用。这样可以保证在读数据模块在每个周期均有数据操作,不会因为数据寄存器的分组而使数据读取的效率下降。
本实施例的技术方案,通过将异步FIFO的读数据模块和写数据模块分离设置,以及将异步FIFO中的数据寄存器进行分组设计,以轮询的方式交替向各数据寄存器读取或写入数据,并且在异步FIFO设计中引入了跳针设计,解决了异步FIFO分离设置中的问题,实现了允许选择数据在多于读时钟的一个周期内完成,并且不会降低数据读取的效率,以及提高异步FIFO设计灵活性的效果。
本发明实施例的技术方案通过上述的异步FIFO设计,可以实现任意的数据寄存器分组。但是在实际设计异步FIFO时一个需要考虑的问题是写数据需要在写格雷码稳定之前稳定,以便于后续的逻辑使用。在现有技术中写格雷码通常是在1-2个时钟周期稳定的。当数据寄存器的分组个数大于4时,进行读写数据的跨系统走线可以是大于2周期。其中,读写数据的跨系统走线周期是读写数据周期的一半。如果写数据延迟大而写格雷码延迟低,可能会造成格雷码稳定后写数据没有稳定的情况。例如,数据寄存器的分组为8,跨系统走线可以有4个时钟周期,写数据可以有4个周期从写数据模块走到读数据模块。但是写格雷码可能仅仅用了一个周期,在读时钟同步两个周期,3个周期后需要用写数据,此时会发生错误。
为了解决上述的问题,在本发明实施例中,可以将写格雷码的走线延迟,例如加长写格雷码的物理走线。示例性的,可以根据数据寄存器组的数量确定跨系统走线的周期N/2,写格雷码的周期数(通常为2),将N/2-2确定为写格雷码延迟周期数。根据写格雷码延迟周期数加长写格雷码的物理走线。或者,在本发明实施例中,可以在读数据模块对写格雷码的等待拍数进行延长。例如,根据写格雷码延迟周期数延长等待拍数。
图5是本发明实施例提供的一种芯片的结构示意图,如图5所示,该芯片包括如本发明实施例任一的异步FIFO 300,至少一个第一子系统310,以及至少一个第二子系统320。
其中,异步FIFO 300的写数据模块200和读数据模块100分别设置在第一子系统310和第二子系统320中;
第一子系统310的内部时钟信号作为写数据模块200的写时钟信号,第二子系统320的内部时钟信号作为读数据模块100的读时钟信号;
第一子系统310与第二子系统320通过异步FIFO 300实现通信。
示例性的,第二子系统通过异步FIFO向第一子系统读取数据时,可以采用下述过程:
第二系统的内部时钟信号作为读时钟信号,输入至异步FIFO读数据模块的配对读取单元,第一时序控制电路,以及读格雷码生成电路。读格雷码生成电路中的二进制读指针生成子电路可以根据读时钟信号生成二进制读指针。第一时序控制电路可以根据二进制读指针或者读时钟信号依次生成对写数据模块中数据寄存器组中数据寄存器进行轮询的读地址,传输至配对读取单元。其中,读地址可以是按照grp0的地址0,grp1的地址0,…,grp z的地址0,grp0的地址1,grp1的地址1,…,grp z的地址1,……,grp0的地址n,grp1的地址n,…,grp z的地址n,grp0的地址0,grp1的地址0,…的顺序进行循环往复。其中,z为数据寄存器的分组数。
写数据模块的第一选择器中读地址输入端(RADDR)根据对应的配对读取单元传输的读地址在对应的数据寄存器组中的数据寄存器选择目标数据进行读取,返回至第一选择器的数据输出端(RDATA)。各RDATA将目标数据传输至第二选择器。第二选择器根据分组指针确定有效的目标数据,返回至读数据模块进行使用,实现了第一子系统与第二子系统的通信。写数据的过程可以与读数据的过程类似,这里不再赘述。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种异步先入先出寄存器,其特征在于,包括:分离设置的读数据模块和写数据模块;写数据模块包括多个数据寄存器组,每个数据寄存器组中包括至少一个数据寄存器;读数据模块包括与各数据寄存器组配对连接的多个配对读取单元,以及分别与各配对读取单元相连的第一时序控制电路;
第一时序控制电路,用于根据读时钟信号,轮流向各配对读取单元传输所配对数据寄存器组中一个数据寄存器的读取地址;
配对读取单元,用于根据读时钟信号,向所配对数据寄存器组发送第一时序控制电路实时传输的读取地址,或前一读时钟周期所保持的读取地址;
所述写数据模块包括:与各数据寄存器组配对连接的多个配对写入单元,以及分别与各配对写入单元相连的第二时序控制电路;
第二时序控制电路,用于根据写时钟信号,轮流向各配对写入单元传输所配对数据寄存器组中一个数据寄存器的写入地址;
配对写入单元,用于根据写时钟信号,向所配对数据寄存器组发送第二时序控制电路实时传输的写入地址,或前一写时钟周期所保持的写入地址;
所述读数据模块还包括:读格雷码生成电路;
所述读格雷码生成电路,用于生成读格雷码发送至所述写数据模块。
2.根据权利要求1所述的异步先入先出寄存器,其特征在于,各所述数据寄存器组中包括的数据寄存器的数量相同;各数据寄存器组中的一个数据寄存器共同组成一个轮询子序列;各所述轮询子序列的组合构成数据寄存器轮询集合;
第一时序控制电路和第二时序控制电路分别由多个逻辑门阵列构成;
第一时序控制电路,具体用于根据读时钟信号,按照所述数据寄存器轮询集合中各数据寄存器的排序,轮流向各配对读取单元传输所配对数据寄存器组中一个数据寄存器的读取地址;
第二时序控制电路具体用于,根据写时钟信号,按照所述数据寄存器轮询集合中各数据寄存器的排序,轮流向各配对写入单元传输所配对数据寄存器组中一个数据寄存器的写入地址。
3.根据权利要求1所述的异步先入先出寄存器,其特征在于,所述配对读取单元与所述配对写入单元为标准寄存器;
所述标准寄存器,用于在检测到读时钟信号的上升沿时,将稳定的读取地址传输至所述所配对数据寄存器组;或者,在检测到写时钟信号的上升沿时,将稳定的写入地址传输至所述所配对数据寄存器组。
4.根据权利要求1所述的异步先入先出寄存器,其特征在于,
所述读格雷码生成电路具体包括:相连的二进制读指针生成子电路和二进制转读格雷码子电路;
所述二进制读指针生成子电路,用于根据读时钟信号,按照二进制指针映射序列中各二进制指针的排序,顺序生成二进制读指针传输至所述二进制转读格雷码子电路;
所述二进制转读格雷码子电路,用于将接收的二进制读指针转换为匹配的读格雷码,并将所述读格雷码提供给所述写数据模块。
5.根据权利要求4所述的异步先入先出寄存器,其特征在于,所述读数据模块还包括:写格雷码生成电路;
所述写格雷码生成电路具体包括:相连的二进制写指针生成子电路以及二进制转写格雷码子电路;
所述二进制写指针生成子电路,用于根据写时钟信号,按照二进制指针映射序列中各二进制指针的排序,顺序生成二进制写指针传输至所述二进制转格写雷码子电路;
所述二进制转写格雷码子电路,用于将接收的二进制写指针转换为匹配的写格雷码,并将所述写格雷码提供给所述写数据模块。
6.根据权利要求5所述的异步先入先出寄存器,其特征在于,所述写数据模块中,与各数据寄存器组对应的数据寄存器总数N为非2的幂次方;
所述二进制指针映射序列为以为数据寄存器总数构造的标准二进制指针映射序列中,取前N个和后N个二进制指针组合得到的二进制指针序列。
7.根据权利要求6所述的异步先入先出寄存器,其特征在于,所述读格雷码生成电路中还包括:第一指针跳变单元,第一指针跳变单元与二进制读指针生成子电路相连;
二进制读指针生成子电路,具体用于根据读时钟信号,按照二进制数递增顺序,依次生成一个二进制读指针;
第一指针跳变单元,用于在读时钟信号到达时,如果确定二进制读指针生成子电路前一读时钟信号输出的二进制读指针为所述标准二进制指针映射序列中的第N个二进制读指针,指示所述二进制读指针生成子电路跳变生成所述标准二进制指针映射序列中的第N+1个二进制读指针,以及,
所述写格雷码生成电路中还包括:第二指针跳变单元,第二指针跳变单元与二进制写指针生成子电路相连;
二进制写指针生成子电路,具体用于根据写时钟信号,按照二进制数递增顺序,依次生成一个二进制写指针;
第二指针跳变单元,用于在写时钟信号到达时,如果确定二进制写指针生成子电路前一写时钟信号输出的二进制写指针为所述标准二进制指针映射序列中的第N个二进制写指针,指示所述二进制写指针生成子电路跳变生成所述标准二进制指针映射序列中的第N+1个二进制写指针。
8.根据权利要求1-7任一项所述的异步先入先出寄存器,其特征在于,所述写数据模块包括与数据寄存器组相同数量的第一选择器;第一选择器与数据寄存器组分别配对相连;所述读数据模块包括第二选择器和与第二选择器相连的数据读取寄存器;
第一选择器,用于接收对应的配对读取单元发送的第一时序控制电路实时传输的读取地址,或前一读时钟周期所保持的读取地址,并根据读取地址在配对的数据寄存器组中选择目标数据寄存器进行目标数据读取,将目标数据发送至所述第二选择器;
第二选择器,用于接收目标数据,并根据读取地址确定目标数据的有效性,将有效的目标数据发送至数据读取寄存器。
9.一种芯片,其特征在于,包括:如权利要求1-8任一项所述的异步先入先出寄存器,至少一个第一子系统,以及至少一个第二子系统;
所述异步先入先出寄存器的写数据模块和读数据模块分别设置在第一子系统和第二子系统中;
所述第一子系统的内部时钟信号作为写数据模块的写时钟信号,所述第二子系统的内部时钟信号作为读数据模块的读时钟信号;
所述第一子系统与所述第二子系统通过所述异步先入先出寄存器实现通信。
CN202011457936.9A 2020-12-10 2020-12-10 一种异步先入先出寄存器以及芯片 Active CN112486453B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011457936.9A CN112486453B (zh) 2020-12-10 2020-12-10 一种异步先入先出寄存器以及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011457936.9A CN112486453B (zh) 2020-12-10 2020-12-10 一种异步先入先出寄存器以及芯片

Publications (2)

Publication Number Publication Date
CN112486453A CN112486453A (zh) 2021-03-12
CN112486453B true CN112486453B (zh) 2023-12-08

Family

ID=74917727

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011457936.9A Active CN112486453B (zh) 2020-12-10 2020-12-10 一种异步先入先出寄存器以及芯片

Country Status (1)

Country Link
CN (1) CN112486453B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357095B (zh) * 2022-10-19 2023-01-24 中科声龙科技发展(北京)有限公司 异步信号处理方法及结构
CN117892673B (zh) * 2024-03-18 2024-05-31 上海韬润半导体有限公司 一种基于寄存器的时序收敛结构、方法及数模混合芯片

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990026885A (ko) * 1997-09-26 1999-04-15 김덕중 비동기 전송 모드에서 동작 주파수가 다른 디바이스간의인터페이스 보상장치
JP2000057769A (ja) * 1998-06-03 2000-02-25 Fujitsu Ltd 半導体記憶装置及びデ―タバス制御方法
US7436726B1 (en) * 2005-11-21 2008-10-14 Xilinx, Inc. Circuit for and method of reading data in an asynchronous FIFO including a backup address circuit for re-reading data
CN101373424A (zh) * 2008-09-19 2009-02-25 北京中星微电子有限公司 一种异步先进先出存储器的数据读写方法、装置及系统
CN102375720A (zh) * 2010-08-20 2012-03-14 瑞萨电子(中国)有限公司 异步先入先出存储器fifo的读写控制处理方法、电路及系统
CN202216989U (zh) * 2011-08-24 2012-05-09 山东艾诺仪器有限公司 基于fifo结构总线控制方式的直流电子负载
CN106571156A (zh) * 2016-10-28 2017-04-19 北京中电华大电子设计有限责任公司 一种高速读写ram的接口电路及方法
CN110377339A (zh) * 2019-08-17 2019-10-25 深圳芯英科技有限公司 长延时指令处理装置、方法以及设备、可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101964261B1 (ko) * 2012-05-17 2019-04-01 삼성전자주식회사 자기 메모리 장치

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990026885A (ko) * 1997-09-26 1999-04-15 김덕중 비동기 전송 모드에서 동작 주파수가 다른 디바이스간의인터페이스 보상장치
JP2000057769A (ja) * 1998-06-03 2000-02-25 Fujitsu Ltd 半導体記憶装置及びデ―タバス制御方法
US7436726B1 (en) * 2005-11-21 2008-10-14 Xilinx, Inc. Circuit for and method of reading data in an asynchronous FIFO including a backup address circuit for re-reading data
CN101373424A (zh) * 2008-09-19 2009-02-25 北京中星微电子有限公司 一种异步先进先出存储器的数据读写方法、装置及系统
CN102375720A (zh) * 2010-08-20 2012-03-14 瑞萨电子(中国)有限公司 异步先入先出存储器fifo的读写控制处理方法、电路及系统
CN202216989U (zh) * 2011-08-24 2012-05-09 山东艾诺仪器有限公司 基于fifo结构总线控制方式的直流电子负载
CN106571156A (zh) * 2016-10-28 2017-04-19 北京中电华大电子设计有限责任公司 一种高速读写ram的接口电路及方法
CN110377339A (zh) * 2019-08-17 2019-10-25 深圳芯英科技有限公司 长延时指令处理装置、方法以及设备、可读存储介质

Also Published As

Publication number Publication date
CN112486453A (zh) 2021-03-12

Similar Documents

Publication Publication Date Title
CN101599053B (zh) 支持多种传输协议的串行接口控制器及控制方法
US6777979B1 (en) FIFO memory architecture
CN112486453B (zh) 一种异步先入先出寄存器以及芯片
US7817652B1 (en) System and method of constructing data packets in a packet switch
US20050125590A1 (en) PCI express switch
JP2017532908A (ja) データキャッシング方法、装置及び記憶媒体
US20080162767A1 (en) 4X Framer/Deframer Module For PCI-Express and PCI-Express Framer/Deframer Device Using The Same
KR100840030B1 (ko) 프로그래머블 논리 회로
US6081527A (en) Asynchronous transfer scheme using multiple channels
US11747856B2 (en) Asynchronous ASIC
WO2024066561A1 (zh) 查找空闲存储的装置、方法及芯片
US8510485B2 (en) Low power digital interface
US8000322B2 (en) Crossbar switch debugging
JP6094321B2 (ja) バッファ回路及び半導体集積回路
JPH10224231A (ja) シリアルーパラレル変換回路
US7730276B1 (en) Striping of data into memory of a network data switch to prevent read and write collisions
US20220190843A1 (en) Seemingly monolithic interface between separate integrated circuit die
CN111506529B (zh) 一种应用于flash的高速spi指令应答电路
US8300635B2 (en) Programmable crossbar structures in asynchronous systems
KR100226540B1 (ko) Atm 스위치의 어드레스 생성 회로
CN101351770A (zh) 从装置和主装置、包含这些装置的系统和从装置操作方法
CN116521097B (zh) 存储器访问电路及存储器访问方法、集成电路和电子设备
CN101692216B (zh) 动态数据流结构中存储-匹配-转发单元电路
US8164973B2 (en) Storage apparatus and method of controlling storage apparatus
George DESIGN AND READ STABILITYANALYSIS OF 8T SCHMITT TRIGGER BASED SRAMDESIGN OF FIVE PORT PRIORITY BASED ROUTER WITH PORT SELECTION LOGIC FOR NoC

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant