CN114756197A - 用于在不同时钟域的分块间实现异步fifo的系统及方法 - Google Patents

用于在不同时钟域的分块间实现异步fifo的系统及方法 Download PDF

Info

Publication number
CN114756197A
CN114756197A CN202210277017.6A CN202210277017A CN114756197A CN 114756197 A CN114756197 A CN 114756197A CN 202210277017 A CN202210277017 A CN 202210277017A CN 114756197 A CN114756197 A CN 114756197A
Authority
CN
China
Prior art keywords
read
clock domain
data
module
write
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.)
Pending
Application number
CN202210277017.6A
Other languages
English (en)
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 Denglin Technology Co ltd
Chengdu Denglin Technology Co ltd
Original Assignee
Shanghai Denglin Technology Co ltd
Chengdu Denglin 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 Denglin Technology Co ltd, Chengdu Denglin Technology Co ltd filed Critical Shanghai Denglin Technology Co ltd
Priority to CN202210277017.6A priority Critical patent/CN114756197A/zh
Publication of CN114756197A publication Critical patent/CN114756197A/zh
Pending legal-status Critical Current

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/396Clock trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种用于在不同时钟域的分块间实现异步FIFO的系统和方法,系统包括第一时钟域的第一分块中的数据缓存模块和写入装置、第二时钟域的第二分块中的读出装置。写入装置将来自第二时钟域的读计数信号同步到第一时钟域,根据同步后的信号和当前第一时钟域的写计数信号产生满指示信号,并根据满指示信号在第一时钟域进行计数;数据缓存模块根据产生的写计数信号缓存写入数据;读出装置将来自第一时钟域的写计数信号同步到第二时钟域,根据同步后的信号和当前第二时钟域的读计数信号产生空指示信号,并根据空指示信号在第二时钟域进行计数,以用于读取缓存数据。本发明降低了大型芯片设计中分块的时钟树的设计复杂度。

Description

用于在不同时钟域的分块间实现异步FIFO的系统及方法
技术领域
本发明涉及芯片设计技术领域,具体而言,涉及一种用于在不同时钟域的分块间实现异步FIFO的系统和方法。
背景技术
芯片设计常常涉及到多个时钟,在大型芯片设计中,通常会将芯片分割成多个Partition(本文中称为分块)以验证整个设计,其中不同的分块使用不同的时钟且属于不同的时钟域,不同的分块的时钟树通常单独生成。目前,通常在不同时钟域的分块间使用异步FIFO(全称为First In First Out,先入先出)来实现数据交互,一种常见方法是将异步FIFO队列设置在一个时钟域中,其中使用不同的时钟作为读时钟和写时钟。可见,设置在一个时钟域的分块中的异步FIFO队列仍需要使用到另一个时钟域的时钟,这导致了不同分块的时钟树的设计复杂度较高。
发明内容
为克服上述现有技术中存在的问题,根据本发明的一个实施例,提供一种用于在不同时钟域的分块间实现异步FIFO的系统,包括设置在第一时钟域的第一分块中的数据缓存模块和写入装置,以及设置在第二时钟域的第二分块中的读出装置。写入装置被配置为:将来自第二时钟域的读计数信号同步到第一时钟域;根据同步后的读计数信号和当前第一时钟域的写计数信号产生满指示信号;以及响应于满指示信号指示数据缓存模块未满并且写指示信号指示存在写入数据,在第一时钟域进行计数以产生写计数信号。数据缓存模块被配置为根据所产生的写计数信号将写入数据作为缓存数据缓存到数据缓存模块。读出装置被配置为:将来自第一时钟域的写计数信号同步到第二时钟域;根据同步后的写计数信号和当前第二时钟域的读计数信号产生空指示信号;响应于空指示信号指示数据缓存模块不为空并且读指示信号指示从数据缓存模块读出数据,在第二时钟域进行计数以产生读计数信号;所产生的读计数信号用于从缓存数据中选择并且输出读数据。其中,跨第一时钟域的第一分块和第二时钟域的第二分块交互信号的路径建立有时序约束。
上述系统还可以包括设置在第二时钟域的第二分块中的读数据隔离模块。上述系统的读出装置还被配置为从所产生的读计数信号获得读地址,经由第一时钟域的第一分块和第二时钟域的第二分块间的接口将读地址传输到数据缓存模块。上述系统的数据缓存模块还被配置为根据读地址从缓存数据中选择读数据,并且将读数据经由所述接口传输到读数据隔离模块。读数据隔离模块被配置为将读数据在第二时钟域进行隔离以产生输出数据。其中,读出装置与所述接口间的路径、从所述接口经由数据缓存模块到达所述接口的路径、所述接口与读数据隔离模块间的路径分别建立有相应的时序约束。
上述系统还可以包括设置在第二时钟域的第二分块中的多路复用模块和读数据隔离模块。上述系统的数据缓存模块还被配置为经由第一时钟域的第一分块和第二时钟域的第二分块间的接口将缓存数据传输到多路复用模块。上述系统的读出装置还被配置为从所产生的读计数信号获得读地址,并且将读地址传输到多路复用模块。多路复用模块被配置为根据读地址从缓存数据中选择读数据,并且将读数据传输到读数据隔离模块。读数据隔离模块被配置为将读数据在第二时钟域进行隔离以产生输出数据。其中,数据缓存模块与所述接口间的路径、所述接口与读数据隔离模块间的路径分别建立有相应的时序约束。
上述系统中,写入装置可以包括:读计数同步器模块,用于经由第一时钟域的第一分块和第二时钟域的第二分块间的接口接收读出装置产生的读计数信号,并且将读计数信号同步到第一时钟域;满指示逻辑模块,用于根据同步后的读计数信号和当前所述第一时钟域的写计数信号产生满指示信号;写计数器模块,用于响应于满指示信号指示数据缓存模块未满并且写指示信号指示存在写入数据,在第一时钟域进行计数以产生写计数信号。读出装置可以包括:写计数同步器模块,用于经由所述接口接收写入装置产生的写计数信号,并且将写计数信号同步到第二时钟域;空指示逻辑模块,用于根据同步后的写计数信号和当前第二时钟域的读计数信号产生空指示信号;读计数器模块,用于响应于空指示信号指示数据缓存模块不为空并且读指示信号指示从数据缓存模块读出数据,在第二时钟域进行计数以产生读计数信号。
上述系统中,写入装置还可以包括写计数隔离模块,用于将写计数器模块产生的写计数信号在第一时钟域进行隔离,并且将隔离后的写计数信号经由所述接口传输到写计数同步器模块。读出装置还可以包括读计数隔离模块,用于将读计数器模块产生的读计数信号在第二时钟域进行隔离,并且将隔离后的读计数信号经由所述接口传输到读计数同步器模块。其中,写计数隔离模块与所述接口间的路径、所述接口与写计数同步器模块间的路径、读计数隔离模块与所述接口间的路径、所述接口与读计数同步器模块间的路径分别建立有相应的时序约束。
上述系统中,写入装置还可以包括写计数译码模块,用于对写入装置产生的写计数信号进行译码以产生写地址,例如,在写入装置采用格雷码计数器作为写计数器模块的情况下,写计数译码模块用于将格雷码形式的写计数信号进行译码以产生二进制编码的写地址;所述写地址指示写入数据缓存到数据缓存模块的位置。读出装置还可以包括读计数译码模块,用于对读出装置产生的读计数信号进行译码,并且将译码结果在第二时钟域进行隔离以产生读地址,例如,在读出装置采用格雷码计数器作为读计数器模块的情况下,读计数译码模块用于将格雷码形式的读计数信号进行译码,以得到对应的二进制编码;所述读地址用于从缓存数据中选择读数据。
根据本发明的一个实施例,还提供一种用于在不同时钟域的分块间实现异步FIFO的方法,其中,在第一时钟域的第一分块中设置数据缓存模块和写入装置并且在第二时钟域的第二分块中设置读出装置。该方法包括:由写入装置将来自第二时钟域的读计数信号同步到第一时钟域;根据同步后的读计数信号和当前第一时钟域的写计数信号产生满指示信号;并且响应于满指示信号指示数据缓存模块未满并且写指示信号指示存在写入数据,在第一时钟域进行计数以产生写计数信号。该方法还包括:由数据缓存模块根据所产生的写计数信号将写入数据作为缓存数据进行缓存。该方法还包括:由读出装置将来自第一时钟域的写计数信号同步到第二时钟域;根据同步后的写计数信号和当前第二时钟域的读计数信号产生空指示信号;并且响应于空指示信号指示数据缓存模块不为空并且读指示信号指示从数据缓存模块读出数据,在第二时钟域进行计数以产生读计数信号;所产生的读计数信号用于从缓存数据中选择并且输出读数据。其中,跨第一时钟域的第一分块和第二时钟域的第二分块交互信号的路径建立有时序约束。
上述方法还可以包括在第二时钟域的第二分块中设置读数据隔离模块。上述所述方法还可以包括:由读出装置从所产生的读计数信号获得读地址,经由第一时钟域的第一分块和第二时钟域的第二分块间的接口将读地址传输到数据缓存模块;由数据缓存模块根据读地址从缓存数据中选择读数据,并且将读数据经由所述接口传输到读数据隔离模块;以及,由读数据隔离模块将读数据在第二时钟域进行隔离以产生输出数据。其中,读出装置与所述接口间的路径、从所述接口经由数据缓存模块到达所述接口的路径、所述接口与读数据隔离模块间的路径分别建立有相应的时序约束。
上述方法还可以包括在第二时钟域的第二分块中设置多路复用模块和读数据隔离模块。上述方法还可以包括:由数据缓存模块经由第一时钟域的第一分块和第二时钟域的第二分块间的接口将缓存数据传输到多路复用模块;由读出装置从所产生的读计数信号获得读地址,并且将读地址传输到多路复用模块;由多路复用模块根据读地址从缓存数据中选择读数据,并且将读数据传输到读数据隔离模块;以及,由读数据隔离模块将读数据在第二时钟域进行隔离以产生输出数据。其中,数据缓存模块与所述接口间的路径、所述接口与读数据隔离模块间的路径分别建立有相应的时序约束。
上述方法还可以包括:由写入装置将所产生的写计数信号在第一时钟域进行隔离,并且将隔离后的写计数信号经由第一时钟域的第一分块和第二时钟域的第二分块间的接口传输到读出装置以同步到第二时钟域;由读出装置将所产生的读计数信号在第二时钟域进行隔离,并且将隔离后的读计数信号经由所述接口传输到写入装置以同步到第一时钟域。
本发明的实施例可以实现如下的有益效果:对于第一时钟域的第一分块而言,只需要设计第一时钟域的时钟树且不需要第二时钟域的时钟参与,类似地,对于第二时钟域的第二分块而言,只需要设计第二时钟域的时钟树且不需要第一时钟域的时钟参与,这有益于不同分块的时钟树的单独生成,降低了大型芯片设计中分块的时钟树的设计复杂度。
应当理解的是,以上的一般描述和后文的细节描述仅是示意性和解释性的,并不用于限制本发明。
附图说明
此处的附图被并入说明书中并构成说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理,其中:
图1A-1B示意性地示出了根据本发明一个实施例的用于在不同时钟域的分块间实现异步FIFO的系统的框图,其中图1B标注了系统中的时序约束;
图2示意性地示出了根据本发明另一个实施例的用于在不同时钟域的分块间实现异步FIFO的系统的框图;
图3A-3B示意性地示出了根据本发明一个实施例的用于在不同时钟域的分块间实现异步FIFO的方法的流程图;
图4A-4B示意性地示出了根据本发明另一个实施例的用于在不同时钟域的分块间实现异步FIFO的方法的流程图。
具体实施方式
现在参考附图更详细地描述本发明的示例实施方式,示例实施方式能够以多种形式实施,且不应被理解为受限于在此阐述的范例。应理解,附图中所示的方框图仅仅是功能实体,不一定与物理上独立的实体相对应。例如,可以采用软件的形式来实现这些功能实体,或在一个或多个硬件模块或者集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。另外,附图中所示的流程图仅用于示意性说明,并不是必须包括所有的操作/步骤,也不是必须按所描述的顺序来执行。例如,有的操作/步骤还可以进一步分解,而有些操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
根据本发明的一个方面,提供一种用于在不同时钟域的分块间实现异步FIFO的系统。
图1A示意性地示出了根据本发明一个实施例的用于在不同时钟域的分块间实现异步FIFO的系统的框图,该系统应用于两个时钟域,这两个时钟域分别记为时钟域0和时钟域1。其中,时钟域0由时钟0来驱动并且时钟域1由与时钟0不同的时钟1来驱动,芯片的分块0(也称为时钟域0的分块0)位于时钟域0中并且芯片的分块1(也称为时钟域1的分块1)位于时钟域1中,跨分块0和分块1的信号通过两个分块间的接口(参见图1A所示的虚线)进行交互。需要说明的是,尽管以时钟域0-1、分块0-1这样的表述来描述本实施例,但是时钟域0和时钟域1也可以分别称为第一时钟域和第二时钟域,并且分块0和1也可以分别称为第一分块和第二分块。
如图1A所示,用于在不同时钟域的分块间实现异步FIFO的系统包括如下模块:数据缓存模块101、写格雷码译码模块102、写计数器模块103、写计数隔离模块104、满指示逻辑模块105、读计数同步器模块106、读数据隔离模块107、读格雷码译码模块108、写计数同步器模块109、空指示逻辑模块110、读计数隔离模块111以及读计数器模块112。其中,模块101-106位于时钟域0的分块0中,用于针对外部输入的写指示信号缓存外部输入的写入数据;模块107-112位于时钟域1的分块1中,用于针对外部输入的读指示信号从时钟域0的分块0获取读出数据。下文将结合图1A具体描述系统中的各个模块:
时钟域0的分块0
数据缓存模块101设置在时钟域0的分块0中,用于根据写地址缓存写入数据,并且根据读地址向时钟域1的分块1输出读数据。
数据缓存模块101可以由寄存器或RAM构成,其深度决定了异步FIFO缓存数据的能力,具体的深度值可以根据实际应用来设置。数据缓存模块101接收来自系统外部的写入数据和来自写格雷码译码模块102的写地址,根据写地址将写入数据缓存到数据缓存模块101中的相应位置,使得所有缓存数据对外可见。同时,数据缓存模块101经由分块0和分块1间的接口接收来自时钟域1的分块1中的读格雷码译码模块108的读地址,根据读地址从缓存数据中选择读数据,并且将读数据经由分块0和分块1间的接口传输到时钟域1的分块1中的读数据隔离模块107。其中,读地址经由数据缓存模块101中的组合逻辑得到读数据,该组合逻辑不需要时钟域1的时钟1参与。此外,在时钟域0的分块0中将该组合逻辑作为透传的逻辑进行约束,具体而言,对读地址从分块间的接口到达该组合逻辑、经由该组合逻辑得到读数据、以及读数据从该组合逻辑到达分块间的接口的路径建立时序约束。参见图1B,可以将该路径的时序约束设置为不大于总时序预算的40%,其中总时序预算例如是从接收读指示信号到输出读出数据的时序预算,时序约束包括对时钟延迟和数据延迟作一定的要求或干预。
写格雷码译码模块102设置在时钟域0的分块0中,由组合逻辑构成。写格雷码译码模块102接收来自写计数器103的写计数格雷码信号,将接收到的写计数格雷码信号译码成正常二进制编码的写地址,并且将写地址传输到数据缓存模块101。
写计数器模块103设置在时钟域0的分块0中,由格雷码计数器实现。写计数器模块103接收外部输入的写指示信号和来自满指示逻辑模块105的满指示信号,在写指示信号为1并且满指示信号为0(表示存在写入数据并且数据缓存模块101未满)的情况下以格雷码在时钟域0进行计数,并且输出计数产生的写计数格雷码信号。其中,写计数格雷码信号输出到写格雷码译码模块102、写计数隔离模块104和满指示逻辑模块105。
写计数隔离模块104设置在时钟域0的分块0中,其接收来自写计数器模块103的写计数格雷码信号,对该写计数格雷码信号进行隔离,并且将隔离后的写计数格雷码信号经由分块0和分块1间的接口传输到时钟域1的分块1中的写计数同步器模块109,以由写计数同步器模块109进行同步操作。其中,对写计数格雷码信号进行隔离包括但不限于:在时钟域0中对该信号至少打一拍,即将该信号在时钟域0中至少延迟/寄存一个周期(即时钟0的一个周期),以打断时序、消除亚稳态。此外,在时钟域0的分块0中,对隔离后的写计数格雷码信号从写计数隔离模块104到达分块0和分块1间的接口的路径建立时序约束,可以参考一般的接口对该路径建立时序约束,参见图1B,可以将该路径的时序约束设置为不大于总时序预算的20%。
满指示逻辑模块105设置在时钟域0的分块0中,其接收来自写计数器模块103的写计数格雷码信号以及来自读计数同步器模块106的同步后的读计数格雷码信号,对这二者进行比较以产生满指示信号,并且输出满指示信号。其中,满指示信号可以输出到写计数器模块103以及外部模块;满指示信号用于指示数据缓存模块101是否未满,其中满指示信号为0表示数据缓存模块101未满,而满指示信号为1表示数据缓存模块101已满。
读计数同步器模块106设置在时钟域0的分块0中,其经由分块0和分块1间的接口从时钟域1的分块1接收来自读计数器模块112并经由读计数隔离模块111隔离的隔离后的读计数格雷码信号,将隔离后的读计数格雷码信号同步到时钟域0,并且将同步后的读计数格雷码信号传输到满指示逻辑模块105,以由满指示逻辑模块105产生满指示信号。其中,将隔离后的读计数格雷码信号同步到时钟域0包括但不限于:在时钟域0中对隔离后的读计数格雷码信号至少连续打两拍,即将该信号在时钟域0中至少延迟/寄存两个周期(即时钟0的两个周期),以实现该信号在时钟域0中的同步。此外,在时钟域0的分块0中,对隔离后的读计数格雷码信号从分块0和分块1间的接口到达读计数同步器模块106的路径建立时序约束,可以参考一般的接口对该路径建立时序约束。参见图1B,可以将该路径的时序约束设置为不大于总时序预算的20%。
时钟域1的分块1
读数据隔离模块107设置在时钟域1的分块1中,其经由分块0和分块1间的接口接收来自时钟域0的分块0中的数据缓存模块101的读数据,对读数据进行隔离,并且输出隔离后的读数据,即读出数据。其中,对读数据进行隔离包括但不限于:在时钟域1中对读数据至少打一拍,即将读数据在时钟域1中至少延迟/寄存一个周期(即时钟1的一个周期),以打断时序、消除亚稳态。此外,在时钟域1的分块1中,对读数据从分块0和分块1间的接口到达读数据隔离模块107的路径建立时序约束,可以参考一般的输入对该路径建立时序约束。参见图1B,可以将该路径的时序约束设置为不大于总时序预算的20%。
读格雷码译码模块108设置在时钟域1的分块1中,其接收来自读计数器模块112的读计数格雷码信号,将接收到的读计数格雷码信号译码成正常二进制编码的译码结果,对该译码结果进行隔离得到读地址,并且将该读地址经由分块0和分块1间的接口传输到时钟域0的分块0中的数据缓存模块101,以由数据缓存模块101从缓存数据中选择读数据。其中,对译码结果进行隔离包括但不限于:在时钟域1中对译码结果至少打一拍,即将译码结果在时钟域1中至少延迟/寄存一个周期(即时钟1的一个周期),以打断时序、消除亚稳态。此外,在时钟域1的分块1中,对读地址从读格雷码译码模块108到达分块0和分块1间的接口的路径建立时序约束,可以参考一般的输出对该路径建立时序约束。参见图1B,可以将该路径的时序约束设置为不大于总时序预算的20%。
写计数同步器模块109设置在时钟域1的分块1中,其经由分块0和分块1间的接口接收由时钟域0的分块0中的写计数器模块103产生的并且经由写计数隔离模块104隔离的信号,将隔离后的写计数格雷码信号同步到时钟域1,并且将同步后的写计数格雷码信号传输到空指示逻辑模块115,以由空指示逻辑模块110产生空指示信号。其中,将隔离后的写计数格雷码信号同步到时钟域1包括但不限于:在时钟域1中对隔离后的写计数格雷码信号至少连续打两拍,即将该信号在时钟域1中至少延迟/寄存两个周期(即时钟1的两个周期),以实现该信号在时钟域1中的同步。此外,在时钟域1的分块1中,对隔离后的写计数格雷码信号从分块0和分块1间的接口到达该写计数同步器模块109的路径建立时序约束,可以参考一般的接口对该路径建立时序约束。参见图1B,可以将该路径的时序约束设置为不大于总时序预算的20%。
空指示逻辑模块110设置在时钟域1的分块1中,其接收来自读计数器模块112的读计数格雷码信号以及来自写计数同步器模块109的同步后的写计数格雷码信号,对这二者进行比较以产生空指示信号,并且输出空指示信号。其中,空指示信号输出到读计数器模块112以及外部模块;空指示信号用于指示数据缓存模块101是否为空,其中空指示信号为0表示数据缓存模块101不为空,空指示信号为1表示数据缓存模块101为空。
读计数隔离模块111设置在时钟域1的分块1中,其接收来自读计数器模块112的读计数格雷码信号,对该读计数格雷码信号进行隔离,并且将隔离后的读计数格雷码信号经由分块0和分块1间的接口传输到时钟域0的分块0中的读计数同步器模块106,以由读计数同步器模块106进行同步操作。其中,对读计数格雷码信号进行隔离包括但不限于:在时钟域1中对该读计数格雷码信号至少打一拍,即将读计数格雷码信号在时钟域1中至少延迟/寄存一个周期(即时钟1的一个周期),以打断时序、消除亚稳态。此外,在时钟域1的分块1中,对隔离后的读计数格雷码信号从读计数隔离模块111到达分块0和分块1间的接口的路径建立时序约束,可以参考一般的接口对该路径建立时序约束。参见图1B,可以将该路径的时序约束设置为不大于总时序预算的20%。
读计数器模块112设置在时钟域1的分块1中,由格雷码计数器构成。读计数器模块112接收外部输入的读指示信号和来自空指示逻辑模块110的空指示信号,在读指示信号为1并且空指示信号为0(表示需要从数据缓存模块101读出数据并且数据缓存模块101不为空)的情况下以格雷码在时钟1进行计数,并且输出计数产生的读计数格雷码信号。其中,读计数格雷码信号输出到读格雷码译码模块108、读计数隔离模块111和空指示逻辑模块110。
上述实施例中,通过在时钟域0的分块0中设置读计数同步器模块106将来自时钟域1的读计数格雷码信号同步到时钟域0,通过在时钟域1中设置写计数同步器模块109将来自时钟域0的写计数格雷码信号同步到时钟域1,并且对跨分块交互信号的路径建立时序约束,使得时钟域0的分块0仅使用时钟域0的时钟0而无需用到时钟域1的时钟1,并且时钟域1的分块1仅使用时钟域1的时钟1而无需用到时钟域0的时钟0。因此,对于时钟域0的分块0而言,只需要设计时钟域0的时钟树且不需要时钟域1的时钟1参与,类似地,对于时钟域1的分块1而言,只需要设计时钟1的时钟树且不需要时钟域0的时钟0参与,这有益于不同分块的时钟树的单独生成,降低了大型芯片设计中分块的时钟树的设计复杂度。
在上述实施例中,以格雷码计数器为例示出了写计数器模块103和读计数器模块112,但应理解,写计数器模块和读计数器模块也可以采用其他二进制计数器,并且写格雷码译码模块102可以相应地由其他译码模块代替或者取消该写格雷码译码模块,读格雷码译码模块108也可以由其他译码模块代替。还应理解,上述实施例中设置的时序约束值(例如20%、40%等)仅用于示意的目的,对路径的时序约束也可以设置为其他值。
在上述实施例中,通过对信号至少打一拍来实现对信号的隔离,在一个优选实施例中,可以通过打一拍实现对信号的隔离,而在其它实施例中,也可以不对信号进行隔离。在上述实施例中,通过对信号至少连续打两拍来实现对信号的同步,在一个优选实施例中,可以通过连续打两拍来实现对信号的隔离。
图2示意性地示出了根据本发明另一个实施例的用于在不同时钟域的分块间实现异步FIFO的系统的框图,该系统与图1A-1B所示的系统相比,在时钟域1的分块1中增加了多路复用模块,以便通过增加分块间的交互信号来减少时序约束。
如图2所示,该系统包括:数据缓存模块201、写格雷码译码模块202、写计数器模块203、写计数隔离模块204、满指示逻辑模块205、读计数同步器模块206、多路复用模块207、读数据隔离模块208、读格雷码译码模块209、写计数同步器模块210、空指示逻辑模块211、读计数隔离模块212以及读计数器模块213。其中,模块201-206位于时钟域0的分块0中,用于针外部输入的写指示信号缓存外部输入的写入数据,并且将所有缓存数据提供给时钟域1的分块1;模块207-213位于时钟域1的分块1中,用于获得所有缓存数据,并且针对外部输入的读指示信号从缓存数据中获取读出数据。下文将结合图2具体描述系统中的各个模块:
时钟域0的分块0
数据缓存模块201设置在时钟域0的分块0中,其接收来自系统外部的写入数据和来自写格雷码译码模块202的写地址,根据写地址将写入数据缓存到数据缓存模块201中的相应的位置,并且经由分块0和分块1间的接口将所有缓存数据(如图2所示,缓存数据0~N-1)传输到时钟域1的分块1中的多路复用模块207。其中,在时钟域0的分块0中,对缓存数据从数据缓存模块201到达分块0和分块1间的接口的路径建立时序约束,可以参考一般的接口对该路径建立时序约束,例如,可将该路径的时序约束设置为不大于总时序预算的20%。与图1B所示的不大于总时序预算40%的时序约束相比,这里不大于20%的时序约束使得对其他位置的约束变小,灵活性更高。
写格雷码译码模块202、写计数器模块203、写计数隔离模块204、满指示逻辑模块205和读计数同步器模块206分别与上文结合图1A-1B描述的模块102-106类似,此处不再赘述。
时钟域1的分块1
多路复用模块207设置在时钟域1的分块1中,由组合逻辑构成。多路复用模块207经由分块0和分块1间的接口从时钟域0的分块0接收来自数据缓存模块201的所有缓存数据(缓存数据0,缓存数据1,…,缓存数据N-1)。多路复用模块207还接收来自读格雷码译码模块209的读地址,根据读地址从缓存数据中选择读数据,并且将读数据传输到读数据隔离模块208。
读数据隔离模块208设置在时钟域1的分块1中,其接收来自多路复用模块207的读数据,对读数据进行隔离,并且输出隔离后的读数据,即读出数据。其中,对读数据进行隔离包括但不限于:在时钟域1中对读数据至少打一拍,即将读数据在时钟域1中至少延迟/寄存一个周期(即时钟1的一个周期),以打断时序、消除亚稳态。此外,在时钟域1的分块1中,对缓存数据从分块0和分块1间的接口到达多路复用模块207、经由多路复用模块207得到读数据,以及读数据从多路复用模块207到达读数据隔离模块208的路径建立时序约束,可以参考一般的输入对该路径建立时序约束,例如可以将该路径的时序约束设置为不大于总时序预算的20%。
读格雷码译码模块209设置在时钟域1的分块1中,其接收来自读计数器模块213的读计数格雷码信号,将接收到的读计数格雷码信号译码成正常二进制编码的译码结果,对该译码结果进行隔离得到读地址,并且将读地址输出到多路复用模块207,以由多路复用模块207从所有缓存数据中选择读数据。其中,对译码结果进行隔离包括但不限于:在时钟域1中对译码结果至少打一拍,即将译码结果在时钟域1中至少延迟/寄存一个周期(即时钟1的一个周期),以打断时序、消除亚稳态。与图1B所示的读地址从读格雷码译码模块到达分块0和分块1间的接口、从分块0和分块1间的接口到达数据缓存模块101的路径的时序约束相比,这里无需对读数据从读格雷码译码模块209到多路复用模块207的路径建立时序约束。
写计数同步器模块210、空指示逻辑模块211、读计数隔离模块212以及读计数器模块213分别与上文结合图1A-1B描述的模块109-112类似,此处不再赘述。
与结合图1A-1B描述的系统相比,结合图2描述的系统在分块0和分块1间的交互信号更多,但时序约束更少,适用于数据缓存模块深度较小并且缓存数据的比特位宽较小的情况。具体而言,在数据缓存模块的深度小于8并且数据的比特位宽小于5000的情况下,优选采用结合图2描述的系统来实现不同时钟域的分块间的异步FIFO,否则优选采用结合图1A-1B描述的系统来实现不同时钟域的分块间的异步FIFO。
根据本发明的另一个方面,还提供一种用于在不同时钟域的分块间实现异步FIFO的方法。
根据本发明的一个实施例,基于图1A-1B所示的系统提供一种用于在不同时钟域的分块间实现异步FIFO的方法,该方法包括数据写入过程和数据读出过程。
图3A示意性地示出了该方法的数据写入过程,下文将结合图1A-1B描述该数据写入过程的各个步骤:
S3101.由设置在时钟域0的分块0中的读计数同步器模块106将来自时钟域1的分块1的读计数格雷码信号同步到时钟域0。
具体而言,由读计数同步器模块106经由分块0和分块1间的接口接收由时钟域1的分块1中的读计数器模块112产生的并且经由读计数隔离模块111隔离的隔离后的读计数格雷码信号,将隔离后的读计数格雷码信号同步到时钟域0,并且将同步后的读计数格雷码信号传输到满指示逻辑105,以由满指示逻辑105产生满指示信号。
其中,将隔离后的读计数格雷码信号同步到时钟域0包括但不限于:在时钟域0中对隔离后的读计数格雷码信号至少连续打两拍,即将该信号在时钟域0中至少延迟/寄存两个周期(即时钟0的两个周期),以实现该信号在时钟域0中的同步。此外,隔离后的读计数格雷码信号从分块0和分块1间的接口到达读计数同步器模块106的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S3102.由设置在时钟域0的分块0中的满指示逻辑模块105根据同步后的读计数格雷码信号和当前时钟域0的写计数格雷码信号产生满指示信号。
具体而言,由满指示逻辑模块105接收来自写计数器模块103的当前时钟域0的写计数格雷码信号以及来自读计数同步器模块106的同步后的读计数格雷码信号,对这二者进行比较以产生满指示信号,并且输出满指示信号。其中,满指示信号输出到写计数器模块103以及外部模块;满指示信号用于指示数据缓存模块101是否未满,满指示信号为0表示数据缓存模块101未满,而满指示信号为1表示数据缓存模块101已满。
S3103.由设置在时钟域0的分块0中的写计数器模块103响应于满指示信号指示数据缓存模块101未满并且写指示信号指示存在写入数据,在时钟域0进行计数以产生写计数格雷码信号。
具体而言,由写计数器模块103接收系统外部输入的写指示信号和来自满指示逻辑模块105的满指示信号,在写指示信号指示存在写入数据(写指示信号为1)并且满指示信号指示数据缓存模块101未满(满指示信号为0)的情况下,以格雷码的格式在时钟域0进行计数,并且输出计数产生的写计数格雷码信号。其中,所产生的写计数格雷码信号输出到写格雷码译码模块102、写计数隔离模块104和满指示逻辑模块105。
S3104.由设置在时钟域0的分块0中的写格雷码译码模块102接收写计数器模块103所产生的写计数格雷码信号,将写计数格雷码信号译码成正常二进制编码的写地址,并且将写地址传输到数据缓存模块101。
S3104’.由设置在时钟域0的分块0中的写计数隔离模块104接收写计数器模块103所产生的写计数格雷码信号,对写计数格雷码信号进行隔离,以产生隔离后的写计数格雷码信号,并且将隔离后的写计数格雷码信号经由分块0和分块1间的接口传输到时钟域1,即时钟域1的分块1中的写计数同步器模块109,以由写计数同步器模块109进行同步操作。
其中,对写计数格雷码信号进行隔离包括但不限于:在时钟域0中对该信号至少打一拍,以打断时序、消除亚稳态。此外,隔离后的写计数格雷码信号从写计数隔离模块104到达分块0和分块1间的接口的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S3105.由设置在时钟域0的分块0中的数据缓存模块101根据写地址将写入数据作为缓存数据进行缓存。其中,数据缓存模块101接收来自系统外部的写入数据和来自写格雷码译码模块102的写地址,根据写地址将写入数据缓存到数据缓存模块101中的相应位置,使得所有缓存数据对外可见。
图3B示意性地示出了方法的数据读出过程,下文将结合图1A-1B描述该数据读出过程的各个步骤:
S3201.由设置在时钟域1的分块1中的写计数同步器模块109将来自时钟域0的写计数格雷码信号同步到时钟域1。
具体地,由写计数同步器模块109经由分块0和分块1间的接口接收由时钟域0的分块0中的写计数器模块103产生的并且经由写计数隔离模块104隔离的隔离后的写计数格雷码信号,将隔离后的写计数格雷码信号同步到时钟域1,并且将同步后的写计数格雷码信号传输到空指示逻辑110,以由空指示逻辑110产生空指示信号。
其中,将隔离后的写计数格雷码信号同步到时钟域1包括但不限于:在时钟域1中对隔离后的写计数格雷码信号至少连续打两拍,以实现该信号在时钟域1中的同步。此外,隔离后的写计数格雷码信号从分块0和分块1间的接口到达写计数同步器模块109的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S3202.由设置在时钟域1的分块1中的空指示逻辑模块110根据同步后的写计数格雷码信号和当前时钟域1的读计数格雷码信号产生空指示信号。
具体而言,空指示逻辑模块110接收来自读计数器模块112的当前时钟域1的读计数格雷码信号以及来自写计数同步器模块109的同步后的写计数格雷码信号,对这二者进行比较以产生空指示信号,并且将空指示信号输出到读计数器模块112以及外部模块。其中,空指示信号用于指示数据缓存模块101是否为空,空指示信号为0表示数据缓存模块101不为空,而空指示信号为1表示数据缓存模块101为空。
S3203.由设置在时钟域1的分块1中的读计数器模块112响应于空指示信号指示数据缓存模块101不为空并且读指示信号指示从数据缓存模块101读出数据,在时钟域1进行计数以产生读计数格雷码信号。
具体地,读计数器模块112接收系统外部输入的读指示信号和来自空指示逻辑模块110的空指示信号,在读指示信号指示需要从数据缓存模块101读出数据(读指示信号为1)并且空指示信号指示数据缓存模块101不为空(空指示信号为0)的情况下,以格雷码在时钟域1进行计数,并且输出计数产生的读计数格雷码信号。其中,所产生的读计数格雷码信号输出到读格雷码译码模块108、读计数隔离模块111和空指示逻辑模块110。
S3204.由设置在时钟域1的分块1中的读格雷码译码模块108接收读计数器模块112所产生的读计数格雷码信号,将读计数格雷码信号译码成正常二进制编码的译码结果,对译码结果进行隔离以产生读地址,并且将读地址经由分块0和分块1间的接口传输到时钟域0的分块0中的数据缓存模块101,以由数据缓存模块101从缓存数据中选择读数据。
其中,对译码结果进行隔离包括但不限于:在时钟域1中对译码结果至少打一拍,以打断时序、消除亚稳态。此外,读地址从读格雷码译码模块108到达分块0和分块1间的接口的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S3204’.由设置在时钟域1的分块1中的读计数隔离模块111接收读计数器模块112所产生的读计数格雷码信号,对读计数格雷码信号进行隔离以产生隔离后的读计数格雷码信号,并且将隔离后的读计数格雷码信号经由分块0和分块1间的接口输出到时钟域0,即时钟域0的分块0中的读计数同步器模块106,以由读计数同步器模块106进行同步操作。
其中,对读计数格雷码信号进行隔离包括但不限于:在时钟域1中对读计数格雷码信号至少打一拍。此外,隔离后的读计数格雷码信号从读计数隔离模块111到达分块0和分块1间的接口的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S3205.由设置在时钟域0的分块0中的数据缓存模块101根据读地址从缓存数据中选择读数据,并且将读数据输出到时钟域1。
具体地,数据缓存模块101经由分块0和分块1间的接口接收来自时钟域1的分块1中的读格雷码译码模块108的读地址,根据该读地址从缓存数据中选择读数据,并且将读数据经由分块0和分块1间的接口传输到时钟域1的分块1中的读数据隔离模块107。其中,读地址经由数据缓存模块101中的组合逻辑得到读数据。此外,读地址从分块间的接口到达组合逻辑、经由组合逻辑得到读数据、以及读数据从组合逻辑到达分块间的接口的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的40%。
S3206.由设置在时钟域1的分块1中的读数据隔离模块107经由分块0和分块1间的接口接收来自时钟域0的分块0中的数据缓存模块101的读数据,对读数据进行隔离,并且输出隔离后的数据,即读出数据。
其中,对读数据进行隔离包括但不限于:在时钟域1中对读数据至少打一拍。此外,读数据从分块0和分块1间的接口到达读数据隔离模块107的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
上述实施例提供了一种用于在不同时钟域的分块间实现异步FIFO的方法,对于时钟域0的分块0而言,只需要设计时钟域0的时钟树且不需要时钟域1的时钟1参与,类似地,对于时钟域1的分块1而言,只需要设计时钟域1的时钟树且不需要时钟域0的时钟0参与,这有益于不同分块的时钟树的单独生成,降低了大型芯片设计中分块的时钟树的设计复杂度。
根据本发明的另一个实施例,基于图2所示的系统提供一种用于在不同时钟域的分块间实现异步FIFO的方法,该方法与图3A-3B所示的方法相比,在时钟域1的分块1中增加了多路复用模块,通过增加分块间的交互信号减少了时序约束。
图4A示意性地示出了该方法的数据写入过程,下文将结合图2描述该数据写入过程的各个步骤:
S4101.由设置在时钟域0的分块0中的读计数同步器模块206经由分块0和分块1间的接口接收由时钟域1的分块1中的读计数器模块213产生的并且经由读计数隔离模块212隔离的隔离后的读计数格雷码信号,将隔离后的读计数格雷码信号同步到时钟域0,并且将同步后的读计数格雷码信号传输到满指示逻辑205。其中,隔离后的读计数格雷码信号从分块0和分块1间的接口到达读计数同步器模块206的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S4102.由设置在时钟域0的分块0中的满指示逻辑模块205接收来自写计数器模块203的当前时钟域0的写计数格雷码信号以及来自读计数同步器模块206的同步后的读计数格雷码信号,对这二者进行比较以产生满指示信号,并且将满指示信号输出到写计数器模块203以及外部模块。
S4103.由设置在时钟域0的分块0中的写计数器模块203接收系统外部输入的写指示信号和来自满指示逻辑模块205的满指示信号,响应于满指示信号指示数据缓存模块201未满并且写指示信号指示存在写入数据,以格雷码的格式在时钟域0进行计数以产生写计数格雷码信号。所产生的写计数格雷码信号输出到写格雷码译码模块202、写计数隔离模块204和满指示逻辑模块205。
S4104.由设置在时钟域0的分块0中的写格雷码译码模块202接收写计数器模块203所产生的写计数格雷码信号,将写计数格雷码信号译码成正常二进制编码的写地址,并且将写地址传输到数据缓存模块201。
S4104’.由设置在时钟域0的分块0中的写计数隔离模块204接收写计数器模块203所产生的写计数格雷码信号,对写计数格雷码信号进行隔离以产生隔离后的写计数格雷码信号,并且将隔离后的写计数格雷码信号经由分块0和分块1间的接口传输到时钟域1的分块1中的写计数同步器模块210。其中,隔离后的写计数格雷码信号从写计数隔离模块204到达分块0和分块1间的接口的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S4105.由设置在时钟域0的分块0中的数据缓存模块201根据写地址将写入数据作为缓存数据进行缓存,并且将缓存数据传输到时钟域1。
具体地,由数据缓存模块201接收来自系统外部的写入数据和来自写格雷码译码模块202的写地址,根据写地址将写入数据缓存到数据缓存模块201中的相应的位置,并且经由分块0和分块1间的接口将缓存数据传输到时钟域1的分块1中的多路复用模块207。其中,缓存数据从数据缓存模块201到达分块0和分块1间的接口的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
图4B示意性地示出了方法的数据读出过程,下文将结合图2描述该数据读出过程的各个步骤:
S4201.由设置在时钟域1的分块1中的多路复用模块207经由分块0和分块1间的接口接收并缓存来自时钟域0的分块0中的数据缓存模块201的缓存数据。
S4202.由设置在时钟域1的分块1中的写计数同步器模块210经由分块0和分块1间的接口接收由时钟域0的分块0中的写计数器模块203产生的并且经由写计数隔离模块204隔离的隔离后的写计数格雷码信号,将隔离后的写计数格雷码信号同步到时钟域1,并且将同步后的写计数格雷码信号传输到空指示逻辑211。其中,隔离后的写计数格雷码信号从分块0和分块1间的接口到达写计数同步器模块210的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S4203.由设置在时钟域1的分块1中的空指示逻辑模块211接收来自读计数器模块213的当前时钟域1的读计数格雷码信号以及来自写计数同步器模块210的同步后的写计数格雷码信号,对这二者进行比较以产生空指示信号,并且将空指示信号输出到读计数器模块213以及外部模块。
S4204.由设置在时钟域1的分块1中的读计数器模块213接收系统外部输入的读指示信号和来自空指示逻辑模块211的空指示信号,响应于空指示信号指示数据缓存模块201不为空并且读指示信号指示从数据缓存模块201读出数据,以格雷码在时钟域1进行计数以产生读计数格雷码信号,并且输出计数产生的读计数格雷码信号。其中,所产生的读计数格雷码信号输出到读格雷码译码模块209、读计数隔离模块212和空指示逻辑模块211。
S4205.由设置在时钟域1的分块1中的读格雷码译码模块209接收读计数器模块213所产生的读计数格雷码信号,对读计数格雷码信号进行译码,对译码结果进行隔离以产生读地址,并且将读地址传输到时钟域1的分块1中的多路复用模块207。
S4205’.由设置在时钟域1的分块1中的读计数隔离模块212接收读计数器模块213所产生的读计数格雷码信号,对读计数格雷码信号进行隔离以产生隔离后的读计数格雷码信号,并且将隔离后的读计数格雷码信号经由分块0和分块1间的接口输出到时钟域0的分块0中的读计数同步器模块206。其中,隔离后的读计数格雷码信号从读计数隔离模块212到达分块0和分块1间的接口的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
S4206.由设置在时钟域1的分块1中的多路复用模块207接收来自读格雷码译码模块209的读地址,根据读地址从缓存数据中选择读数据,并且将读数据传输到读数据隔离模块208。
S4027.由设置在时钟域1的分块1中的读数据隔离模块208接收来自多路复用模块207的读数据,对读数据进行隔离,并且输出隔离后的数据,即读出数据。其中,缓存数据从分块0和分块1间的接口到达多路复用模块207、经由多路复用模块207得到读数据,以及读数据从多路复用模块207到达读数据隔离模块208的路径建立有时序约束,该路径的时序约束可以设置为不大于总时序预算的20%。
上述结合图4A-4B描述的方法实施例与图3A-3B描述的方法实施例相比,在分块0和分块1间的交互信号更多,但时序约束更少,适用于数据缓存模块深度较小并且数据的比特位宽较小的情况。
应当注意,尽管在上文详细描述中提及了用于执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.一种用于在不同时钟域的分块间实现异步FIFO的系统,其特征在于,包括设置在第一时钟域的第一分块中的数据缓存模块和写入装置,以及设置在第二时钟域的第二分块中的读出装置;
其中,所述写入装置被配置为:
将来自所述第二时钟域的读计数信号同步到所述第一时钟域;根据同步后的读计数信号和当前所述第一时钟域的写计数信号产生满指示信号;响应于所述满指示信号指示所述数据缓存模块未满并且写指示信号指示存在写入数据,在所述第一时钟域进行计数以产生写计数信号;
所述数据缓存模块被配置为:
根据所产生的写计数信号将所述写入数据作为缓存数据缓存到所述数据缓存模块;
所述读出装置被配置为:
将来自所述第一时钟域的写计数信号同步到所述第二时钟域;根据同步后的写计数信号和当前所述第二时钟域的读计数信号产生空指示信号;响应于所述空指示信号指示所述数据缓存模块不为空并且读指示信号指示从所述数据缓存模块读出数据,在所述第二时钟域进行计数以产生读计数信号;所产生的读计数信号用于从所述缓存数据中选择并且输出读数据;
其中,跨所述第一时钟域的第一分块和所述第二时钟域的第二分块交互信号的路径建立有时序约束。
2.根据权利要求1所述的系统,其特征在于,还包括设置在所述第二时钟域的第二分块中的读数据隔离模块;
其中,所述读出装置还被配置为从所产生的读计数信号获得读地址,经由所述第一时钟域的第一分块和所述第二时钟域的第二分块间的接口将所述读地址传输到所述数据缓存模块;
所述数据缓存模块还被配置为根据所述读地址从所述缓存数据中选择所述读数据,并且将所述读数据经由所述接口传输到所述读数据隔离模块;
所述读数据隔离模块被配置为将所述读数据在所述第二时钟域进行隔离以产生输出数据;
其中,所述读出装置与所述接口间的路径、从所述接口经由所述数据缓存模块到达所述接口的路径、所述接口与所述读数据隔离模块间的路径分别建立有相应的时序约束。
3.根据权利要求1所述的系统,其特征在于,还包括设置在所述第二时钟域的第二分块中的多路复用模块和读数据隔离模块;
其中,所述数据缓存模块还被配置为经由所述第一时钟域的第一分块和所述第二时钟域的第二分块间的接口将所述缓存数据传输到所述多路复用模块;
所述读出装置还被配置为从所产生的读计数信号获得读地址,并且将所述读地址传输到所述多路复用模块;
所述多路复用模块被配置为根据所述读地址从所述缓存数据中选择所述读数据,并且将所述读数据传输到所述读数据隔离模块;
所述读数据隔离模块被配置为将所述读数据在所述第二时钟域进行隔离以产生输出数据;
其中,所述数据缓存模块与所述接口间的路径、所述接口与所述读数据隔离模块间的路径分别建立有相应的时序约束。
4.根据权利要求1-3中任一项所述的系统,其特征在于,
所述写入装置包括:
读计数同步器模块,用于经由所述第一时钟域的第一分块和所述第二时钟域的第二分块间的接口接收所述读出装置产生的读计数信号,并且将所述读计数信号同步到所述第一时钟域;
满指示逻辑模块,用于根据所述同步后的读计数信号和当前所述第一时钟域的写计数信号产生所述满指示信号;
写计数器模块,用于响应于所述满指示信号指示所述数据缓存模块未满并且写指示信号指示存在写入数据,在所述第一时钟域进行计数以产生写计数信号;以及
所述读出装置包括:
写计数同步器模块,用于经由所述接口接收所述写入装置产生的写计数信号,并且将所述写计数信号同步到所述第二时钟域;
空指示逻辑模块,用于根据所述同步后的写计数信号和当前所述第二时钟域的读计数信号产生所述空指示信号;
读计数器模块,用于响应于空指示信号指示所述数据缓存模块不为空并且读指示信号指示从所述数据缓存模块读出数据,在所述第二时钟域进行计数以产生读计数信号。
5.根据权利要求4所述的系统,其特征在于,
所述写入装置还包括:
写计数隔离模块,用于将所述写计数器模块产生的写计数信号在所述第一时钟域进行隔离,并且将隔离后的写计数信号经由所述接口传输到所述写计数同步器模块;
所述读出装置还包括:
读计数隔离模块,用于将所述读计数器模块产生的读计数信号在所述第二时钟域进行隔离,并且将隔离后的读计数信号经由所述接口传输到所述读计数同步器模块;
其中,所述写计数隔离模块与所述接口间的路径、所述接口与所述写计数同步器模块间的路径、所述读计数隔离模块与所述接口间的路径、所述接口与所述读计数同步器模块间的路径分别建立有相应的时序约束。
6.根据权利要求1-3中任一项所述的系统,其特征在于,
所述写入装置还包括:
写计数译码模块,用于对所述写入装置产生的写计数信号进行译码,以产生写地址;所述写地址指示所述写入数据缓存到所述数据缓存模块的位置;
所述读出装置还包括:
读计数译码模块,用于对所述读出装置产生的读计数信号进行译码,并且将译码结果在所述第二时钟域进行隔离,以产生读地址;所述读地址用于从所述缓存数据中选择读数据。
7.一种用于在不同时钟域的分块间实现异步FIFO的方法,其特征在于,在第一时钟域的第一分块中设置数据缓存模块和写入装置,并且在第二时钟域的第二分块中设置读出装置,所述方法包括:
由所述写入装置将来自所述第二时钟域的读计数信号同步到所述第一时钟域,根据同步后的读计数信号和当前所述第一时钟域的写计数信号产生满指示信号,并且响应于所述满指示信号指示所述数据缓存模块未满并且写指示信号指示存在写入数据,在所述第一时钟域进行计数以产生写计数信号;
由所述数据缓存模块根据所产生的写计数信号将所述写入数据作为缓存数据进行缓存;
由所述读出装置将来自所述第一时钟域的写计数信号同步到所述第二时钟域,根据同步后的写计数信号和当前所述第二时钟域的读计数信号产生空指示信号,响应于空指示信号指示所述数据缓存模块不为空并且读指示信号指示从所述数据缓存模块读出数据,在所述第二时钟域进行计数以产生读计数信号;所产生的读计数信号用于从所述缓存数据中选择并且输出读数据;
其中,跨所述第一时钟域的第一分块和所述第二时钟域的第二分块交互信号的路径建立有时序约束。
8.根据权利要求7所述的方法,其特征在于,在所述第二时钟域的第二分块中设置读数据隔离模块,所述方法还包括:
由所述读出装置从所产生的读计数信号获得读地址,经由所述第一时钟域的第一分块和所述第二时钟域的第二分块间的接口将所述读地址传输到所述数据缓存模块;
由所述数据缓存模块根据所述读地址从所述缓存数据中选择所述读数据,并且将所述读数据经由所述接口传输到所述读数据隔离模块;
由所述读数据隔离模块将所述读数据在所述第二时钟域进行隔离以产生输出数据;
其中,所述读出装置与所述接口间的路径、从所述接口经由所述数据缓存模块到达所述接口的路径、所述接口与所述读数据隔离模块间的路径分别建立有相应的时序约束。
9.根据权利要求7所述的方法,其特征在于,在所述第二时钟域的第二分块中设置多路复用模块和读数据隔离模块,所述方法还包括:
由所述数据缓存模块经由所述第一时钟域的第一分块和所述第二时钟域的第二分块间的接口将所述缓存数据传输到所述多路复用模块;
由所述读出装置从所产生的读计数信号获得读地址,并且将所述读地址传输到所述多路复用模块;
由所述多路复用模块根据所述读地址从所述缓存数据中选择所述读数据,并且将所述读数据传输到所述读数据隔离模块;
由所述读数据隔离模块将所述读数据在所述第二时钟域进行隔离以产生输出数据;
其中,所述数据缓存模块与所述接口间的路径、所述接口与所述读数据隔离模块间的路径分别建立有相应的时序约束。
10.根据权利要求7-9中任一项所述的方法,其特征在于,还包括:
由所述写入装置将所产生的写计数信号在所述第一时钟域进行隔离,并且将隔离后的写计数信号经由所述第一时钟域的第一分块和所述第二时钟域的第二分块间的接口传输到所述读出装置以同步到所述第二时钟域;
由所述读出装置将所产生的读计数信号在所述第二时钟域进行隔离,并且将隔离后的读计数信号经由所述接口传输到所述写入装置以同步到所述第一时钟域。
CN202210277017.6A 2022-03-21 2022-03-21 用于在不同时钟域的分块间实现异步fifo的系统及方法 Pending CN114756197A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210277017.6A CN114756197A (zh) 2022-03-21 2022-03-21 用于在不同时钟域的分块间实现异步fifo的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210277017.6A CN114756197A (zh) 2022-03-21 2022-03-21 用于在不同时钟域的分块间实现异步fifo的系统及方法

Publications (1)

Publication Number Publication Date
CN114756197A true CN114756197A (zh) 2022-07-15

Family

ID=82327747

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210277017.6A Pending CN114756197A (zh) 2022-03-21 2022-03-21 用于在不同时钟域的分块间实现异步fifo的系统及方法

Country Status (1)

Country Link
CN (1) CN114756197A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115952132A (zh) * 2023-01-17 2023-04-11 北京象帝先计算技术有限公司 异步桥、soc、电子组件、电子设备及芯片设计方法
CN116701297A (zh) * 2023-08-08 2023-09-05 深圳比特微电子科技有限公司 异步桥电路、总线装置和片上系统
WO2024082497A1 (zh) * 2022-10-19 2024-04-25 声龙(新加坡)私人有限公司 异步信号处理方法及结构

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111367495A (zh) * 2020-03-06 2020-07-03 电子科技大学 一种异步先入先出的数据缓存控制器
CN112712829A (zh) * 2019-10-24 2021-04-27 珠海格力电器股份有限公司 一种跨时钟域的寄存器读写电路及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112712829A (zh) * 2019-10-24 2021-04-27 珠海格力电器股份有限公司 一种跨时钟域的寄存器读写电路及方法
CN111367495A (zh) * 2020-03-06 2020-07-03 电子科技大学 一种异步先入先出的数据缓存控制器

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024082497A1 (zh) * 2022-10-19 2024-04-25 声龙(新加坡)私人有限公司 异步信号处理方法及结构
CN115952132A (zh) * 2023-01-17 2023-04-11 北京象帝先计算技术有限公司 异步桥、soc、电子组件、电子设备及芯片设计方法
CN115952132B (zh) * 2023-01-17 2023-05-12 北京象帝先计算技术有限公司 异步桥、soc、电子组件、电子设备及芯片设计方法
CN116701297A (zh) * 2023-08-08 2023-09-05 深圳比特微电子科技有限公司 异步桥电路、总线装置和片上系统
CN116701297B (zh) * 2023-08-08 2024-02-27 深圳比特微电子科技有限公司 异步桥电路、总线装置和片上系统

Similar Documents

Publication Publication Date Title
CN114756197A (zh) 用于在不同时钟域的分块间实现异步fifo的系统及方法
JP4042856B2 (ja) クロックドメイン交差fifo
KR20070108331A (ko) 반도체기억장치
US5088089A (en) Apparatus for programmably accessing and assigning time slots in a time division multiplexed communication system
US4755971A (en) Buffer memory for an input line of a digital interface
US6807186B2 (en) Architectures for a single-stage grooming switch
JPH084254B2 (ja) 異なるビット速度のディジタルビット列を時分割多重化することにより多重化されたディジタルビット列の交差接続装置用のスイッチング要素
US6546451B1 (en) Method and apparatus for decoupling processor speed from memory subsystem speed in a node controller
KR100272945B1 (ko) 직병렬데이터변환기
KR100795465B1 (ko) 감소된 수의 핀을 구비한 직렬 압축 버스 인터페이스 및 직렬 압축 데이터 송신 방법
JPH10144071A (ja) 半導体記憶装置
KR19990075018A (ko) 톤과 디티엠에프 발생 기능을 포함한 에이티엠 셀 변환 장치
EP0122684B1 (en) Electronic switching system
US12009056B2 (en) Data transmission apparatus and method having clock gating mechanism
KR0153016B1 (ko) 전전자 교환기용 시공간 분할 스위칭 회로
KR100259139B1 (ko) 오디오 디코더용 입력 버퍼 제어장치
JP3201352B2 (ja) 同期化回路
KR970003140B1 (ko) 고속병렬동기 제어버스 방식을 이용한 정합회로
KR0144825B1 (ko) 시스템 제어기의 실시간 클럭 제어기
KR100350465B1 (ko) 선입선출 메모리를 이용한 동기화 장치 및 방법
JP2002223208A (ja) 多チャネルデータ伝送方法および方式
KR0181485B1 (ko) 데이터 통신용 데이터 버퍼링 장치
KR19990061928A (ko) 선입선출 메모리의 데이터 확장 입력장치
KR20020052626A (ko) 브이오아이피 게이트웨이에서 음성 트래픽 전달 시스템 및방법
KR100232494B1 (ko) 비트 폭 변환 장치

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