CN110427168B - 一种实现任意深度低传输延时的异步fifo的方法及装置 - Google Patents

一种实现任意深度低传输延时的异步fifo的方法及装置 Download PDF

Info

Publication number
CN110427168B
CN110427168B CN201910563113.5A CN201910563113A CN110427168B CN 110427168 B CN110427168 B CN 110427168B CN 201910563113 A CN201910563113 A CN 201910563113A CN 110427168 B CN110427168 B CN 110427168B
Authority
CN
China
Prior art keywords
addr
module
incr
flag
fifo
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
CN201910563113.5A
Other languages
English (en)
Other versions
CN110427168A (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.)
Information Technology Innovation Center Of Tianjin Binhai New Area
Tianjin Xinhaichuang Technology Co ltd
Original Assignee
Information Technology Innovation Center Of Tianjin Binhai New Area
Tianjin Xinhaichuang 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 Information Technology Innovation Center Of Tianjin Binhai New Area, Tianjin Xinhaichuang Technology Co ltd filed Critical Information Technology Innovation Center Of Tianjin Binhai New Area
Priority to CN201910563113.5A priority Critical patent/CN110427168B/zh
Publication of CN110427168A publication Critical patent/CN110427168A/zh
Application granted granted Critical
Publication of CN110427168B publication Critical patent/CN110427168B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

本发明提供了一种实现任意深度低传输延时的异步FIFO的方法及装置,应用本发明,将本时钟域内的读写地址的增量进行编码,编码信息具备bit间无关的特性,之后经过进行跨时钟域处理,在对方时钟域内再进行解码,得到地址增量信息。本发明设计了异步FIFO的读写地址跨时钟域同步方式为传递地址增量,不再需要传递完整的地址信息;本发明设计了地址增量编解码方式,使得亚稳态出现的状态不稳定问题对系统功能无害化,简化了跨时钟处理逻辑复杂度,降低了异步FIFO传输延时;本发明的FIFO的深度可以是任意值;本发明地址跨异步可以在2~3拍内完成,使得异步FIFO的传输处理延时可以缩短为3~4拍。

Description

一种实现任意深度低传输延时的异步FIFO的方法及装置
技术领域
本发明属于数字电路技术领域,尤其是涉及一种实现任意深度低传输延时的异步FIFO的方法及装置。
背景技术
FIFO是在数字电路设计中经常使用的一种先进先出存储结构,通常来讲,如果按读写时钟是否同步分类,FIFO可分为同步FIFO和异步FIFO。通常一个异步FIFO的内部结构,包括了用于存储数据的双口RAM,用于指示存储数据位置的读指针和写指针,以及根据读写指针产生full、empty指示的控制逻辑组成。在通常的设计中,异步fifo因涉及到读写两个时钟频率和相位是完全异步的,需要采用格雷码实现读写指针的跨异步处理。
但是,大部分的异步FIFO的设计中,读指针和写指针需要借助于格雷码转换才能实现时钟域跨接处理,导致读写指针跨时钟域处理的时间较长。因FIFO的空满指示都是根据读写指针的对比才能产生,FIFO中的数据必须在empty无效后才能被读取,就产生了数据在FIFO中产生较长时间的滞留的问题。通常的异步FIFO设计从数据写入到数据读出,需要有7~11拍的延时。
与此同时,因指针采用了格雷码设计,FIFO的深度就需要设计成2的幂次方,在某些特定场景下,可能所需要的FIFO深度只比2的幂次方多一点点,这是就会产生ram空间的浪费。而且随着ram深度的增加,读写指针及格雷码的数据宽度也会随之增加,进一步增加了时钟域跨接的时序收敛难度,而如果通过增加pipe line的方式优化时序的化,又间接地又造成了读写指针跨时钟域处理的时延的增大。
发明内容
有鉴于此,本发明旨在提出一种实现任意深度低传输延时的异步FIFO的装置,将本时钟域内的读写地址的增量进行编码,编码信息具备bit间无关的特性,之后经过进行跨时钟域处理,在对方时钟域内再进行解码,得到地址增量信息。
为达到上述目的,本发明的技术方案是这样实现的:
一种实现任意深度低传输延时的异步FIFO的装置,包括双口RAM,其左侧的接口工作在写侧工作时钟域下,其右侧的接口工作于读侧工作时钟域下,左侧接口连接full_gen模块、wr_addr模块、wr_addr_incr模块、rd_addr_cp模块和wr_div_flag模块,所述full_gen模块、wr_addr模块、wr_addr_incr模块、rd_addr_cp模块和wr_div_flag模块均工作于写侧工作时钟域下,右侧接口连接Empty_gen模块、rd_addr模块、rd_addr_incr模块、wr_addr_cp模块,所述Empty_gen模块、rd_addr模块、rd_addr_incr模块、wr_addr_cp模块均工作于读侧工作时钟域下;
所述wr_addr模块用于实现对fifo写地址的控制,每当产生wr一次有效写指示并且full信号为0时,wr_addr加1.wr_addr的输出可作为RAM的写地址,其中,full为fifo满指示,din为写入fifo中的数据,wr为din的写有效指示信号;
所述wr_div_flag模块为一个周期计时模块,根据wr_div给出的分频指示,以固定间隔输出分频指示信号给wr_addr_incr模块时钟,其中wr_div为fifo写侧分频器输出的分频系数控制信号;
所述wr_addr_incr模块用于记录wr_addr的增长量,记录相邻两次wr_div_flag输出的分频指示期间,wr_addr增长的数量,并将增长的编码为wr_incr_flag指示信号;
所述rd_addr_cp模块用于在wr_clk时钟域内维护读侧地址值的镜像,根据rd_incr_flag指示信号,转换为wr_clk时钟域下rd_addr_cp每个工作时钟周期需要增长的量,并进行累加;
所述full_gen模块在wr_clk时钟域内,通过比较wr_addr和rd_addr_cp的变化关系,给出fifo的full指示信号;
所述rd_addr模块用于实现对fifo读地址的控制,每当产生rd一次有效读指示并且empty信号为0时,rd_addr加1.rd_addr的输出可作为RAM的读地址,其中,empty为fifo的空指示,dout为读出的数据,rd为fifo的读有效指示信号;
所述rd_div_flag模块为一个周期计时模块,根据rd_div给出的分频指示,以固定间隔输出分频指示信号给rd_addr_incr模块时钟,其中,rd_div为读侧分频器的分频系数控制信号;
所述rd_addr_incr模块用于记录rd_addr的增长量,记录相邻两次rd_div_flag输出的分频指示期间,rd_addr增长的数量,并将增长的编码为rd_incr_flag指示信号;
所述wr_addr_cp模块用于在rd_clk时钟域内维护读侧地址值的镜像,根据wr_incr_flag指示信号,转换为rd_clk时钟域下wr_addr_cp每个工作时钟周期需要增长的量,并进行累加;
所述empty_gen模块在rd_clk时钟域内,通过比较rd_addr和wr_addr_cp的变化关系,给出fifo的empty指示信号。
进一步的,所述full_gen模块在比较wr_addr和rd_addr_cp的变化关系前,设置wr_addr_w1和rd_addr_cp_w1两个1bit的指示信号,每当wr_addr或rd_addr_cp从fifo_deepth向全0反转时,相对应的wr_addr_w1和rd_addr_cp_w1的最高位也发生一次反转,那么,当wr_addr_w1*fifo_deepth+wr_addr-rd_addr_cp_w1*fifo_deepth-rd_addr_cp的值等于fifo_deepth时,给出full信号指示,其中,fifo_deepth为RAM的深度。
进一步的,所述empty_gen模块在比较rd_addr和wr_addr_cp的变化关系前,设置rd_addr_w1和wr_addr_cp_w1两个1bit的指示信号,每当rd_addr或wr_addr_cp从fifo_deepth向全0反转时,相对应的rd_addr_w1和wr_addr_cp_w1的最高位也发生一次反转,那么,当wr_addr_cp_w1*fifo_deepth+wr_addr_cp-rd_addr_w1*fifo_deepth-rd_ad dr的值等于0时,给出emtpy信号指示,其中,fifo_deepth为RAM的深度。
进一步的,所述rd_incr_flag和wr_incr_flag指示每发生一次电平翻转,地址需要增加,具体为,rd_incr_flag[0]和wr_incr_flag[0]表示每发生一次电平翻转,表明地址需要增加1;rd_incr_flag[1]和wr_incr_flag[1]表示每发生一次电平翻转,表明地址需要增加1,rd_incr_flag[2]和wr_incr_flag[2]表示每发生一次电平翻转,表明地址需要增加3,rd_incr_flag[3]和wr_incr_flag[3]表示每发生一次电平翻转,表明地址需要增加5,rd_incr_flag[4]和wr_incr_flag[4]表示每发生一次电平翻转,表明地址需要增加10。
进一步的,通过各个Rd/wr_incr_flag位域是否翻转的组合表示读写时钟频率相差20倍时,地址增量的变化值,设置地址增量与flag之间的编解码对应关系为,0:-----;1:----x;2----xx;3:--x--;4:--x-x;5:-x---;6:-x—x;7:-x-xx;8:-xx--;9:-xx-x;10:x----;11:x---x;12:x—xx;13:x-x--;14:x-x-x;15:xx--;16:xx—x;17:xx-xx;18:xxx--;19:xxx-x;20:xxxxx,其中,-表示对应的bit电平不发生反转,x表示对应bit电平发生反转;
如果异步FIFO工作时读写时钟频差超过20倍,则只需要增加Rd/wr_incr_flag位域的位宽。
本发明的另一目的在于提出一种实现任意深度低传输延时的异步FIFO的方法,具体方案是这样实现的:
(1)当发生写操作后,数据被存入RAM中,wr_addr的值增加1,当wr_div_flag指示产生时,wr_addr_incr输出对应的编码;
(2)Wr_addr_cp采样到编码,wr_addr_cp增加1;
(3)Empty_gen模块根据wr_addr_cp和rd_addr产生empty指示;
(4)当发生读操作后,数据从RAM中读取,rd_addr的值增加1,当rd_div_flag指示产生时,rd_addr_incr输出对应的编码;
(5)Rd_addr_cp采样到编码,rd_addr_cp增加1;
(6)Full_gen模块根据wr_addr和rd_addr_cp的值产生相应的full信号。
相对于现有技术,本发明所述的一种实现任意深度低传输延时的异步FIFO的方法及装置具有以下优势:
(1)本发明设计了异步FIFO的读写地址跨时钟域同步方式为传递地址增量,不再需要传递完整的地址信息;
(2)本发明设计了地址增量编解码方式,使得亚稳态出现的状态不稳定问题对系统功能无害化,简化了跨时钟处理逻辑复杂度,降低了异步FIFO传输延时;
(3)本发明的FIFO的深度可以是任意值;
(4)本发明地址跨异步可以在2~3拍内完成,使得异步FIFO的传输处理延时可以缩短为3~4拍;
(5)地址跨异步的时序约束不再有类似max_delay的具体要求,可以按照完全异步路径进行约束。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的异步FIFO结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
如图1所示,本发明提供一种异步FIFO结构,其中wr_clk为写侧工作时钟,din为写入fifo中的数据,wr为din的写有效指示信号,full为fifo满指示,wr_div为fifo写侧分频器输出的分频系数控制信号。
rd_clk为读侧工作时钟,dout为读出的数据,rd为fifo的读有效指示信号,empty为fifo的空指示,rd_div为读侧分频器的分频系数控制信号。
full_gen模块、wr_addr模块、wr_addr_incr模块、rd_addr_cp模块和wr_div_flag模块均工作于wr_clk时钟域下。Empty_gen模块、rd_addr模块、rd_addr_incr模块、wr_addr_cp模块均工作于rd_clk时钟域下。RAM为双口RAM,其左侧的接口工作在wr_clk时钟域下,其右侧的接口工作于rd_clk时钟域下,这里为描述方便,假设RAM的深度为fifo_deepth。
wr_addr模块实现对fifo写地址的控制,每当产生wr一次有效写指示并且full信号为0时,wr_addr加1.wr_addr的输出可作为RAM的写地址。
wr_div_flag模块为一个周期计时模块,根据wr_div给出的分频指示,以固定间隔输出分频指示信号给wr_addr_incr模块时钟。
wr_addr_incr模块记录了wr_addr的增长量,它记录相邻两次wr_div_flag输出的分频指示期间,wr_addr增长的数量。并将增长的编码为wr_incr_flag指示信号。
rd_addr_cp模块在wr_clk时钟域内维护了读侧地址值的镜像,其根据rd_incr_flag指示信号,转换为wr_clk时钟域下rd_addr_cp每个工作时钟周期需要增长的量,并进行累加。
full_gen模块在wr_clk时钟域内,通过比较wr_addr和rd_addr_cp的变化关系,给出fifo的full指示信号。比较前,设置wr_addr_w1和rd_addr_cp_w1两个1bit的指示信号,每当wr_addr或rd_addr_cp从fifo_deepth向全0反转时,相对应的wr_addr_w1和rd_addr_cp_w1的最高位也发生一次反转。那么,当wr_addr_w1*fifo_deepth+wr_addr–addr_cp_w1*fifo_deepth-rd_addr_cp的值等于fifo_deepth时,给出full信号指示。
rd_addr模块实现对fifo读地址的控制,每当产生rd一次有效读指示并且empty信号为0时,rd_addr加1.rd_addr的输出可作为RAM的读地址。
rd_div_flag模块为一个周期计时模块,根据rd_div给出的分频指示,以固定间隔输出分频指示信号给rd_addr_incr模块时钟。
rd_addr_incr模块记录了rd_addr的增长量,它记录相邻两次rd_div_flag输出的分频指示期间,rd_addr增长的数量。并将增长的编码为rd_incr_flag指示信号。
wr_addr_cp模块在rd_clk时钟域内维护了读侧地址值的镜像,其根据wr_incr_flag指示信号,转换为rd_clk时钟域下wr_addr_cp每个工作时钟周期需要增长的量,并进行累加。
empty_gen模块在rd_clk时钟域内,通过比较rd_addr和wr_addr_cp的变化关系,给出fifo的empty指示信号。比较前,设置rd_addr_w1和wr_addr_cp_w1两个1bit的指示信号,每当rd_addr或wr_addr_cp从fifo_deepth向全0反转时,相对应的rd_addr_w1和wr_addr_cp_w1的最高位也发生一次反转。那么,当wr_addr_cp_w1*fifo_deepth+wr_addr_cp–rd_addr_w1*fifo_deepth-rd_addr的值等于0时,给出emtpy信号指示。
其中,rd_incr_flag和wr_incr_flag指示的含义类似,其flag指示具体含义如表1所示:
表1
指示信号 描述
Rd/wr_incr_flag[0] 每发生一次电平翻转,表明地址需要增加1
Rd/wr_incr_flag[1] 每发生一次电平翻转,表明地址需要增加1
Rd/wr_incr_flag[2] 每发生一次电平翻转,表明地址需要增加3
Rd/wr_incr_flag[3] 每发生一次电平翻转,表明地址需要增加5
Rd/wr_incr_flag[4] 每发生一次电平翻转,表明地址需要增加10
按照如表1所示的定义,如果想表示0~19的地址增量变化,则有如下地址增量与flag之间的编解码对应关系,表中-表示对应的bit电平不发生反转,x表示对应bit电平发生反转。如表2所示
表2
地址增量 Rd/wr_incr_flag[4:0] 地址增量 Rd/wr_incr_flag[4:0]
0 ----- 10 -----
1 ----x 11 x---x
2 ---xx 12 x--xx
3 --x-- 13 x-x--
4 --x-x 14 x-x-x
5 -x--- 15 xx--
6 -x—x 16 xx--x
7 -x-xx 17 xx-xx
8 -xx-- 18 xxx--
9 -xx-x 19 xxx-x
20 xxxxx
按照表2的定义,理论上通过各个Rd/wr_incr_flag位域是否翻转的组合可以表示读写时钟频率相差20倍时,地址增量的变化值。如果异步FIFO工作时读写时钟频差超过20倍,则只需要增加Rd/wr_incr_flag位域的位宽均可。
Rd/wr_incr_flag经过上述编码后,在进行跨时钟域时,需要配置合适的wr_div和rd_div的值,保证每次Rd/wr_incr_flag的翻转均可被可靠的采样到。如此,Rd/wr_incr_flag只通过打拍完成亚稳态消除即可,无需考虑Rd/wr_incr_flag的各bit之间的相位关系。举例说明,如果有一个地址增量7,则根据上述表格的编解码方法,Rd/wr_incr_flag会编码为-x-xx,该编码经过跨时钟域处理之后,因各bit间的相位是无法保证的,假设Rd/wr_incr_flag[1:0]的走线延时比较大,则前一拍时钟采样的编码可能会变更为-x---,其含义为5后一拍时钟采样的编码可能会是---xx,其含义为2,总和还是为7。
为了更清楚的说明该异步FIFO的工作原理,再从工作状态变化中描述其工作过程如下:
1、异步FIFO解复位后,wr_addr和rd_addr的初始值均为0.full信号为0,empty信号为1;
2、当发生一次写操作后,数据被存入RAM中,wr_addr的值变更为1,当wr_div_flag指示产生时,则wr_addr_incr输出编码----x;
3、Wr_addr_cp采样到----x编码,wr_addr_cp增加1;
4、Empty_gen模块根据wr_addr_cp和rd_addr产生empty指示;.
5、当发生一次读操作后,数据从RAM中读取,rd_addr的值增加1,当rd_div_flag指示产生时,rd_addr_incr输出编码----x;
6、Rd_addr_cp采样到----x编码,rd_addr_cp增加1;
7、Full_gen模块根据wr_addr和rd_addr_cp的值产生相应的full信号。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种实现任意深度低传输延时的异步FIFO的装置,其特征在于:
包括双口RAM,其左侧的接口工作在写侧工作时钟域下,其右侧的接口工作于读侧工作时钟域下,左侧接口连接full_gen模块、wr_addr模块、wr_addr_incr模块、rd_addr_cp模块和wr_div_flag模块,所述full_gen模块、wr_addr模块、wr_addr_incr模块、rd_addr_cp模块和wr_div_flag模块均工作于写侧工作时钟域下,右侧接口连接empty_gen模块、rd_addr模块、rd_addr_incr模块、wr_addr_cp模块和rd_div_flag模块,所述empty_gen模块、rd_addr模块、rd_addr_incr模块、wr_addr_cp模块、rd_div_flag模块均工作于读侧工作时钟域下;
所述wr_addr模块用于实现对fifo写地址的控制,每当产生wr一次有效写指示并且full信号为0时,wr_addr加1,wr_addr的输出作为RAM的写地址,其中,full为fifo满指示,din为写入fifo中的数据,wr为din的写有效指示信号;
wr_div_flag模块为一个周期计时模块,根据wr_div给出的分频指示,以固定间隔输出分频指示信号给wr_addr_incr模块时钟,其中wr_div为fifo写侧分频器输出的分频系数控制信号;
所述wr_addr_incr模块用于记录wr_addr的增长量,记录相邻两次wr_div_flag输出的分频指示期间,wr_addr增长的数量,并将增长的编码为wr_incr_flag指示信号;
所述rd_addr_cp模块用于在wr_clk时钟域内维护读侧地址值的镜像,根据rd_incr_flag指示信号,转换为wr_clk时钟域下rd_addr_cp每个工作时钟周期需要增长的量,并进行累加;
所述full_gen模块在wr_clk时钟域内,通过比较wr_addr和rd_addr_cp的变化关系,给出fifo的full指示信号;
所述full_gen模块在比较wr_addr和rd_addr_cp的变化关系前,设置wr_addr_w1和rd_addr_cp_w1两个1bit的指示信号,每当wr_addr或rd_addr_cp从fifo_deepth向全0反转时,相对应的wr_addr_w1和rd_addr_cp_w1的最高位也发生一次反转,那么,当wr_addr_w1*fifo_deepth+wr_addr-rd_addr_cp_w1*fifo_deepth-rd_addr_cp的值等于fifo_deepth时,给出full信号指示,其中,fifo_deepth为RAM的深度;
所述empty_gen模块在比较rd_addr和wr_addr_cp的变化关系前,设置rd_addr_w1和wr_addr_cp_w1两个1bit的指示信号,每当rd_addr或wr_addr_cp从fifo_deepth向全0反转时,相对应的rd_addr_w1和wr_addr_cp_w1的最高位也发生一次反转,那么,当wr_addr_cp_w1*fifo_deepth+wr_addr_cp-rd_addr_w1*fifo_deepth-rd_addr的值等于0时,给出emtpy信号指示,其中,fifo_deepth为RAM的深度;
所述rd_addr模块用于实现对fifo读地址的控制,每当产生rd一次有效读指示并且empty信号为0时,rd_addr加1,rd_addr的输出可作为RAM的读地址,其中,empty为fifo的空指示,dout为读出的数据,rd为fifo的读有效指示信号;
所述rd_div_flag模块为一个周期计时模块,根据rd_div给出的分频指示,以固定间隔输出分频指示信号给rd_addr_incr模块时钟,其中,rd_div为读侧分频器的分频系数控制信号;
所述rd_addr_incr模块用于记录rd_addr的增长量,记录相邻两次rd_div_flag输出的分频指示期间,rd_addr增长的数量,并将增长的编码为rd_incr_flag指示信号;
所述wr_addr_cp模块用于在rd_clk时钟域内维护写侧地址值的镜像,根据wr_incr_flag指示信号,转换为rd_clk时钟域下wr_addr_cp每个工作时钟周期需要增长的量,并进行累加;
所述empty_gen模块在rd_clk时钟域内,通过比较rd_addr和wr_addr_cp的变化关系,给出fifo的empty指示信号;
所述rd_incr_flag和wr_incr_flag指示每发生一次电平翻转,地址需要增加。
2.根据权利要求1所述的一种实现任意深度低传输延时的异步FIFO的装置,其特征在于:
具体为,rd_incr_flag[0]和wr_incr_flag[0]表示每发生一次电平翻转,表明地址需要增加1;rd_incr_flag[1]和wr_incr_flag[1]表示每发生一次电平翻转,表明地址需要增加1,rd_incr_flag[2]和wr_incr_flag[2]表示每发生一次电平翻转,表明地址需要增加3,rd_incr_flag[3]和wr_incr_flag[3]表示每发生一次电平翻转,表明地址需要增加5,rd_incr_flag[4]和wr_incr_flag[4]表示每发生一次电平翻转,表明地址需要增加10。
3.根据权利要求2所述的一种实现任意深度低传输延时的异步FIFO的装置,其特征在于:
通过各个rd/wr_incr_flag位域是否翻转的组合表示读写时钟频率相差20倍时,地址增量的变化值,设置地址增量与flag之间的编解码对应关系为,0:-----;1:----x;2----xx;
3:--x--;
4:--x-x;
5:-x---;
6:-x—x;
7:-x-xx;
8:-xx--;
9:-xx-x;
10:x----;
11:x---x;
12:x—xx;
13:x-x--;
14:x-x-x;
15:xx--;
16:xx—x;
17:xx-xx;
18:xxx--;
19:xxx-x;
20:xxxxx,其中,-表示对应的bit电平不发生反转,x表示对应bit电平发生反转;
如果异步FIFO工作时读写时钟频差超过20倍,则只需要增加rd/wr_incr_flag位域的位宽。
4.根据权利要求1-3任一所述的一种实现任意深度低传输延时的异步FIFO的装置的异步FIFO的方法,其特征在于:
具体包括如下步骤:
(1)当发生写操作后,数据被存入RAM中,wr_addr的值增加1,当wr_div_flag指示产生时,wr_addr_incr输出对应的编码;
(2)wr_addr_cp采样到编码,wr_addr_cp增加1;
(3)empty_gen模块根据wr_addr_cp和rd_addr产生empty指示;
(4)当发生读操作后,数据从RAM中读取,rd_addr的值增加1,当rd_div_flag指示产生时,rd_addr_incr输出对应的编码;
(5)rd_addr_cp采样到编码,rd_addr_cp增加1;
(6)full_gen模块根据wr_addr和rd_addr_cp的值产生相应的full信号。
CN201910563113.5A 2019-06-26 2019-06-26 一种实现任意深度低传输延时的异步fifo的方法及装置 Active CN110427168B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910563113.5A CN110427168B (zh) 2019-06-26 2019-06-26 一种实现任意深度低传输延时的异步fifo的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910563113.5A CN110427168B (zh) 2019-06-26 2019-06-26 一种实现任意深度低传输延时的异步fifo的方法及装置

Publications (2)

Publication Number Publication Date
CN110427168A CN110427168A (zh) 2019-11-08
CN110427168B true CN110427168B (zh) 2023-03-07

Family

ID=68409678

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910563113.5A Active CN110427168B (zh) 2019-06-26 2019-06-26 一种实现任意深度低传输延时的异步fifo的方法及装置

Country Status (1)

Country Link
CN (1) CN110427168B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111324562B (zh) * 2020-02-16 2021-08-06 苏州浪潮智能科技有限公司 一种ahb总线跨时钟域的系统及工作方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6263410B1 (en) * 1998-09-15 2001-07-17 Industrial Technology Research Institute Apparatus and method for asynchronous dual port FIFO
CN101373424B (zh) * 2008-09-19 2011-10-12 北京中星微电子有限公司 一种异步先进先出存储器的数据读写方法、装置及系统
CN103377029B (zh) * 2012-04-12 2016-05-25 中国航空工业集团公司第六三一研究所 参数化的通用fifo控制方法
CN102929808B (zh) * 2012-11-02 2015-09-16 长沙景嘉微电子股份有限公司 一种高可靠性的跨时钟域数据传输电路
CN104516710A (zh) * 2013-09-26 2015-04-15 快捷半导体(苏州)有限公司 一种异步缓存方法、异步缓存器及集成电路
CN106055512B (zh) * 2016-06-16 2019-04-12 天津安泰微电子技术有限公司 一种mipi接口raw10数据重组编码与读出方法
CN107577623A (zh) * 2017-07-19 2018-01-12 成都华微电子科技有限公司 跨时钟域异步fifo及数据处理方法

Also Published As

Publication number Publication date
CN110427168A (zh) 2019-11-08

Similar Documents

Publication Publication Date Title
CN111367495B (zh) 一种异步先入先出的数据缓存控制器
US6553448B1 (en) Method for unit distance encoding of asynchronous pointers for non-power-of-two sized buffers
JP3645584B2 (ja) データ転送同期装置
US6509851B1 (en) Method for using a recovered data-encoded clock to convert high-frequency serial data to lower frequency parallel data
US6801143B2 (en) Method and apparatus for generating gray code for any even count value to enable efficient pointer exchange mechanisms in asynchronous FIFO'S
CN110427168B (zh) 一种实现任意深度低传输延时的异步fifo的方法及装置
AU642547B2 (en) First-in first-out buffer
CN109062538B (zh) 环形先进先出缓冲器及数据传输接口、系统、方法
US6546451B1 (en) Method and apparatus for decoupling processor speed from memory subsystem speed in a node controller
CN116226018A (zh) 一种数据解码结构
CN209765494U (zh) 一种异步fifo装置
US10635394B2 (en) Binary-to-gray conversion circuit, related FIFO memory, integrated circuit and method
CN113517894B (zh) 串并转换电路
EP1879101B1 (en) A method and system for controlling data synchronization in FIFO memories, and related synchronizer
CN115202612A (zh) 基于异步fifo的超导单磁通量子跨时钟域通信方法及系统
CN103377029A (zh) 参数化的通用fifo控制方法
CN113238610A (zh) 一种计数器信号同步的方法、装置、设备及存储介质
US7899955B2 (en) Asynchronous data buffer
CN108462655B (zh) Fc链路弹性缓冲区电路
CN219958216U (zh) 一种芯片原型验证调试板
JP5091911B2 (ja) コード変換回路およびカウンタ
JP2006172672A (ja) Fifoメモリ
CN111208972A (zh) 同源不同频的同步fifo
KR100557561B1 (ko) Fifo 저장 장치
JPS6341276B2 (zh)

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