CN108829373B - 一种异步fifo实现电路 - Google Patents
一种异步fifo实现电路 Download PDFInfo
- Publication number
- CN108829373B CN108829373B CN201810533118.9A CN201810533118A CN108829373B CN 108829373 B CN108829373 B CN 108829373B CN 201810533118 A CN201810533118 A CN 201810533118A CN 108829373 B CN108829373 B CN 108829373B
- Authority
- CN
- China
- Prior art keywords
- fifo
- fifo1
- fifo2
- signal
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods 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
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
本发明一种异步fifo实现电路,包括fifo控制模块,以及基于异步时钟clk1和clk2设置的基于clk1的同步fifo1和基于clk2的同步fifo2;同步fifo1和同步fifo2中的数据宽度相同;fifo控制模块包括与基于clk1的同步fifo1交互的fifo1状态控制模块,与基于clk2的同步fifo2交互的fifo2状态控制模块,以及跨时钟域脉冲转换模块;fifo1状态控制模块和fifo2状态控制模块用于根据电路的输入信号分别对同步fifo1和同步fifo2进行状态控制;状态控制包括IDLE态、WR态和RD态;跨时钟域脉冲转换模块用于clk1时钟域和clk2时钟域之间脉冲信号的转换。
Description
技术领域
本发明涉及硬件电路设计领域,具体为一种异步fifo实现电路。
背景技术
在硬件设计中,大数据量的传输一般会使用到fifo。对于写入和读出数据为同一时钟域的同步fifo,可采用同步双端口RAM或寄存器实现;而对于写入和读出数据为不同时钟域下的异步fifo,一般采用异步双端口RAM实现。对于常用的工艺库,如ASIC/SOC实现工艺库,以及FPGA及CPLD基本单元库,大多数无异步双端口RAM,或RAM容量与设计需求不符,为此直接限制了设计的灵活性,需使用其他设计方案完成所需功能。
现有技术中,公开号为CN 102866874A的中国专利“通用异步FIFO模块存储方法”,解决了现有异步FIFO模块存在对于D锁存器存储结构fifo的IP核不能够使用的问题,但该方法在每次读写FIFO时,均要判断不同时钟域下的读写地址关系,直接导致异步FIFO的读写速度慢;公开号为CN1478226的中国专利“混合异步同步系统的低等待时间FIFO电路”,通过对存储单元的控制,解决了FIFO读写速度慢的问题,但电路逻辑复杂,通用性差;申请号为CN200810159783.2的中国专利“基于FIFO的异步双FIFO的数据缓存方法”,所设计异步双FIFO对接收、发送的连续和分段有严格的要求,通用性差;公开号为CN 102253916A的中国专利“同异步转换的双端双通道FIFO”,采用固定地址机制进行异步读写,与实际应用相关,通用性差。但是均会受限于工艺库,还存在着电路逻辑复杂,通用性差的问题。
发明内容
针对现有技术中存在的问题,本发明提供一种异步fifo实现电路,可使异步fifo的实现对工艺库受限的程度最小化,电路逻辑简单,通用性强。
本发明是通过以下技术方案来实现:
一种异步fifo实现电路,包括fifo控制模块,以及基于异步时钟clk1和clk2设置的基于clk1的同步fifo1和基于clk2的同步fifo2;
所述的同步fifo1和同步fifo2中的数据宽度相同;
所述的fifo控制模块包括与基于clk1的同步fifo1交互的fifo1状态控制模块,与基于clk2的同步fifo2交互的fifo2状态控制模块,以及跨时钟域脉冲转换模块;fifo1状态控制模块和fifo2状态控制模块用于根据电路的输入信号分别对同步fifo1和同步fifo2进行状态控制;状态控制包括IDLE态、WR态和RD态三种状态控制;跨时钟域脉冲转换模块用于clk1时钟域和clk2时钟域之间脉冲信号的转换。
优选的,所述电路包括如下端口,开始执行信号start、结束执行信号end、fifo类型选择信号sel、时钟clk1、基于fifo1的清空信号flush1、基于fifo1的读使能信号rd1、基于fifo1的读数据rdata1、基于fifo1的写使能信号wr1、基于fifo1的写数据wdata1、基于fifo1的满标志full1、基于fifo1的几乎满标志af1、基于fifo1的空标志empty1、基于fifo1的几乎空标志ae1、时钟clk2、基于fifo2的清空信号flush2、基于fifo2的读使能信号rd2、基于fifo2的读数据rdata2、基于fifo2的写使能信号wr2、基于fifo2的写数据wdata2、基于fifo2的满标志full2、基于fifo2的几乎满标志af2、基于fifo2的空标志empty2和基于fifo2的几乎空标志ae2。
进一步,开始执行信号start、结束执行信号end分别连接fifo1状态控制模块和跨时钟域脉冲转换模块;fifo类型选择信号sel连接fifo1状态控制模块,其取反连接fifo2状态控制模块;fifo1状态控制输出fifo1写请求信号wr_req1、fifo2写授权信号wr_gntq,连接到跨时钟域脉冲转换模块;fifo2状态控制输出fifo2写请求信号wr_req2、fifo1写授权信号wr_gnts,连接到跨时钟域脉冲转换模块;跨时钟域脉冲转换模块输出fifo1写授权信号wr_gnt1和fifo2的写请求信号wr_regq,连接到fifo1状态控制模块;跨时钟域脉冲转换模块输出fifo2写授权信号wr_gnt2和fifo1的写请求信号wr_regs,连接到fifo2状态控制模块。
进一步,基于fifo1的满标志full1、基于fifo1的几乎满标志af1、基于fifo1的空标志empty1、基于fifo1的几乎空标志ae1信号用于标志同步fifo1的状态;基于fifo2的几乎满标志af2、基于fifo2的空标志empty2、基于fifo2的几乎空标志ae2用于标志同步fifo2的状态。
进一步,fifo1状态控制模块和fifo2状态控制模块设计相同,其状态机分为如下三种状态;
初始状态机为IDLE态,当开始执行信号start有效后,根据fifo类型选择信号sel信号选择,当sel选择为0时,状态机选择为RD态,否则选择为WR态;
RD态判定在当前fifo非空条件下,对写操作请求wr_req反馈写授权信号wr_gnt,同时控制进行写数据的读出,并确保读出数据在下一次写操作请求有效前,数据保持稳定,在结束执行信号end有效后,转入IDLE态;
WR态判定在当前fifo非满条件下,发出写操作请求wr_req,并根据写授权信号wr_gnt,完成数据的写入操作,在结束执行信号end有效后,转入IDLE态。
进一步,跨时钟域脉冲转换模块用于clk1时钟域和clk2时钟域之间脉冲信号的转换;
针对clk1时钟域下的脉冲信号:开始执行信号start、结束执行信号end、fifo1写请求信号wr_req1和fifo2写授权信号wr_gntq,分别生成clk2时钟域下的脉冲信号:开始执行信号starts、结束执行信号ends、fifo1的写请求信号wr_reqs和fifo2写授权信号wr_gnt2;
针对clk2时钟域下的脉冲信号:fifo2写请求信号wr_req2和fifo1写授权信号wr_gnts,分别生成clk1时钟域下的脉冲信号:fifo1写请求信号wr_req1和fifo2写授权信号wr_gnt1。
进一步,当fifo类型选择信号sel=0时,电路呈基于clk1的写端口和基于clk2的读端口;
同步fifo1接收基于clk1的数据,并将数据读出写入同步fifo2;同步fifo2接收同步fifo1的数据,并基于clk2将数据读出;
其基于fifo1的读使能信号rd1、基于fifo1的读数据rdata1、基于fifo2的写使能信号wr2和基于fifo2的写数据wdata2无效;
fifo1状态控制模块使用IDLE和WR状态,fifo2状态控制模块使用IDLE和RD状态;wr_req1、wr_gnt1、wr_regs和wr_gnts信号无效。
进一步,当fifo类型选择信号sel=1时,电路呈基于clk1的读端口和基于clk2的写端口;
同步fifo2接收基于clk2的数据,并将数据读出写入同步fifo1;同步fifo1接收同步fifo2的数据,并基于clk1将数据读出;
其基于fifo2的读使能信号rd2、基于fifo2的读数据rdata2、基于fifo1的写使能信号wr1和基于fifo1的写数据wdata1无效;
fifo2状态控制模块使用IDLE和WR状态,fifo1状态控制模块使用IDLE和RD状态;wr_req2、wr_gnt2、wr_regq和wr_gntq信号无效。
与现有技术相比,本发明具有以下有益的技术效果:
本发明一种异步fifo的实现电路,基于现有工艺库条件实现的基于异步时钟的2个同步fifo,完成异步fifo的实现,控制逻辑简单,大大减少异步fifo对工艺库受限的影响,实现电路通用性强。其具体效果如下:
1)可完成异步时钟域下数据的正确写入和读出功能;
2)采用基于clk1的同步fifo1和基于clk2的同步fifo2来实现异步fifo,可最小化工艺库对异步fifo的设计限制,同时fifo1和fifo2对fifo仅要求宽度保持一致,深部可不一致,可根据实际需求进行设计,使设计更加灵活。
3)该异步fifo可通过fifo类型选择信号sel选择基于时钟的端口作为写端口还是作为读端口,使用灵活,在发送接收fifo不同时使用的设计中,可仅使用一个异步fifo,通过控制sel信号,改变基于时钟的读写端口,完成异步发送fifo和异步接收fifo的功能。
4)对于不同需求下的异步fifo,该电路的实现方法明确,控制逻辑简单,通用性强。
附图说明
图1为基于clk的fifo端口结构框图。
图2为本发明实例中所述的一种异步fifo实现电路示意图。
图3为本发明实例中所述的sel=0时的异步fifo实现电路示意图。
图4为本发明实例中所述的sel=1时的异步fifo实现电路示意图。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明一种异步fifo实现电路,其实现思路如下:
首先,基于异步时钟clk1和clk2,分别完成基于clk1的同步fifo1和基于clk2的同步fifo2的实现,其中,fifo1和fifo2对数据宽度要求相同,数据深度可不同。
其次,基于clk1的同步fifo1、基于clk2的同步fifo2,以及fifo控制模块共同完成异步fifo的实现。
第三,fifo控制模块由fifo1状态控制模块、fifo2状态控制模块以及跨时钟域脉冲转换模块组成。
第四,fifo1状态控制模块和fifo2状态控制模块设计相同,其状态机可分为三种状态,
初始状态机为IDLE态,当开始执行信号start有效后,根据fifo类型选择信号sel信号选择,当sel选择为0时,状态机选择为RD态,否则选择为WR态;
RD态判定在当前fifo非空条件下,对写操作请求wr_req反馈写授权信号wr_gnt,同时控制进行写数据的读出,并确保读出数据在下一次写操作请求有效前,数据保持稳定,在结束执行信号end有效后,转入IDLE态;
WR态判定在当前fifo非满条件下,发出写操作请求wr_req,并根据写授权信号wr_gnt,完成数据的写入操作,在结束执行信号end有效后,转入IDLE态。
第五,跨时钟域脉冲转换模块完成不同时钟域间脉冲的转换。针对clk1时钟域下的脉冲信号:开始执行信号start、结束执行信号end、fifo1写请求信号wr_req1、fifo2写授权信号wr_gntq,分别生成clk2时钟域下的脉冲信号:开始执行信号starts、结束执行信号ends、fifo1的写请求信号wr_reqs、fifo2写授权信号wr_gnt2;针对clk2时钟域下的脉冲信号:fifo2写请求信号wr_req2、fifo1写授权信号wr_gnts,分别生成clk1时钟域下的脉冲信号:fifo1写请求信号wr_req1、fifo2写授权信号wr_gnt1。
最后,开始执行信号start、结束执行信号end分别连接fifo1状态控制和跨时钟域脉冲转换模块;fifo类型选择信号sel连接fifo1状态控制模块,其取反连接fifo2状态控制模块;fifo1状态控制输出fifo1写请求信号wr_req1、fifo2写授权信号wr_gntq,连接到跨时钟域脉冲转换模块;fifo2状态控制输出fifo2写请求信号wr_req2、fifo1写授权信号wr_gnts,连接到跨时钟域脉冲转换模块;跨时钟域脉冲转换模块输出fifo1写授权信号wr_gnt1和fifo2的写请求信号wr_regq,连接到fifo1状态控制模块;跨时钟域脉冲转换模块输出fifo2写授权信号wr_gnt2和fifo1的写请求信号wr_regs,连接到fifo2状态控制模块。
具体的,如图1所示,基于clk的同步fifo的端口包括:时钟clk、fifo清空信号flush、读使能信号rd、读出数据rdata、写入使能信号wr、写入数据wdata、fifo满标志full、fifo几乎满标志af、fifo空标志empty、fifo几乎空标志ae。
如图2为一种异步fifo实现电路,由基于clk1的同步fifo1、基于clk2的同步fifo2以及fifo控制模块组成。该电路的端口为:开始执行信号start、结束执行信号end、fifo类型选择信号sel、时钟clk1、基于fifo1的清空信号flush1、基于fifo1的读使能信号rd1、基于fifo1的读数据rdata1、基于fifo1的写使能信号wr1、基于fifo1的写数据wdata1、基于fifo1的满标志full1、基于fifo1的几乎满标志af1、基于fifo1的空标志empty1、基于fifo1的几乎空标志ae1、时钟clk2、基于fifo2的清空信号flush2、基于fifo2的读使能信号rd2、基于fifo2的读数据rdata2、基于fifo2的写使能信号wr2、基于fifo2的写数据wdata2、基于fifo2的满标志full2、基于fifo2的几乎满标志af2、基于fifo2的空标志empty2、基于fifo2的几乎空标志ae2。
fifo控制模块由fifo1状态控制、fifo2状态控制以及跨时钟域脉冲转换模块组成。开始执行信号start、结束执行信号end分别连接fifo1状态控制和跨时钟域脉冲转换模块;fifo类型选择信号sel连接fifo1状态控制模块,其取反连接fifo2状态控制模块;fifo1状态控制输出fifo1写请求信号wr_req1、fifo2写授权信号wr_gntq,连接到跨时钟域脉冲转换模块;fifo2状态控制输出fifo2写请求信号wr_req2、fifo1写授权信号wr_gnts,连接到跨时钟域脉冲转换模块;跨时钟域脉冲转换模块输出fifo1写授权信号wr_gnt1和fifo2的写请求信号wr_regq,连接到fifo1状态控制模块;跨时钟域脉冲转换模块输出fifo2写授权信号wr_gnt2和fifo1的写请求信号wr_regs,连接到fifo2状态控制模块。
基于fifo1的满标志full1、基于fifo1的几乎满标志af1、基于fifo1的空标志empty1、基于fifo1的几乎空标志ae1信号用于标志fifo1的状态。基于fifo2的几乎满标志af2、基于fifo2的空标志empty2、基于fifo2的几乎空标志ae2用于标志fifo2的状态。
fifo1状态控制模块和fifo2状态控制模块设计相同,其状态机可分为三种状态,初始状态机为IDLE态,当开始执行信号start有效后,根据fifo类型选择信号sel信号选择,当sel选择为0时,状态机选择为RD态,否则选择为WR态;RD态判定在当前fifo非空条件下,对写操作请求wr_req反馈写授权信号wr_gnt,同时控制进行写数据的读出,并确保读出数据在下一次写操作请求有效前,数据保持稳定,在结束执行信号end有效后,转入IDLE态;WR态判定在当前fifo非满条件下,发出写操作请求wr_req,并根据写授权信号wr_gnt,完成数据的写入操作,在结束执行信号end有效后,转入IDLE态。
跨时钟域脉冲转换模块完成不同时钟域间脉冲的转换。针对clk1时钟域下的脉冲信号:开始执行信号start、结束执行信号end、fifo1写请求信号wr_req1、fifo2写授权信号wr_gntq,分别生成clk2时钟域下的脉冲信号:开始执行信号starts、结束执行信号ends、fifo1的写请求信号wr_reqs、fifo2写授权信号wr_gnt2;针对clk2时钟域下的脉冲信号:fifo2写请求信号wr_req2、fifo1写授权信号wr_gnts,分别生成clk1时钟域下的脉冲信号:fifo1写请求信号wr_req1、fifo2写授权信号wr_gnt1。
当fifo类型选择信号sel=0时,如图3所示,异步fifo表现出的是基于clk1的写端口和基于clk2的读端口,即:fifo1接收基于clk1的数据,并将数据读出写入fifo2;fifo2接收fifo1的数据,并基于clk2将数据读出。在该电路下,异步fifo的端口基于fifo1的读使能信号rd1、基于fifo1的读数据rdata1、基于fifo2的写使能信号wr2、基于fifo2的写数据wdata2无效。fifo1状态控制模块使用IDLE和WR状态,fifo2状态控制模块使用IDLE和RD状态。wr_req1、wr_gnt1、wr_regs、wr_gnts信号无效。
当fifo类型选择信号sel=1时,如图4所示,异步fifo表现出的是基于clk1的读端口和基于clk2的写端口,即:fifo2接收基于clk2的数据,并将数据读出写入fifo1;fifo1接收fifo2的数据,并基于clk1将数据读出。在该电路下,异步fifo的端口基于fifo2的读使能信号rd2、基于fifo2的读数据rdata2、基于fifo1的写使能信号wr1、基于fifo1的写数据wdata1无效。fifo2状态控制模块使用IDLE和WR状态,fifo1状态控制模块使用IDLE和RD状态。wr_req2、wr_gnt2、wr_regq、wr_gntq信号无效。
本发明已经应用于一款高密度集成多种外设的SOC设计中,该SoC使用了本发明中的异步fifo。针对该SoC使用的工艺库中无异步双端口RAM问题,本发明给出了一种解决方案,加速了异步时钟域间大数据量传输,本电路设计逻辑简单,通用性强。
首先,基于异步时钟clk1和clk2,分别完成基于clk1的同步fifo1和基于clk2的同步fifo2的实现,其中,fifo1和fifo2对数据宽度要求相同,数据深度可不同。
其次,基于clk1的同步fifo1、基于clk2的同步fifo2,以及fifo控制模块共同完成异步fifo的实现。
第三,fifo控制模块由fifo1状态控制模块、fifo2状态控制模块以及跨时钟域脉冲转换模块组成。
第四,fifo1状态控制模块和fifo2状态控制模块设计相同,其状态机可分为三种状态,
初始状态机为IDLE态,当开始执行信号start有效后,根据fifo类型选择信号sel信号选择,当sel选择为0时,状态机选择为RD态,否则选择为WR态;
RD态判定在当前fifo非空条件下,对写操作请求wr_req反馈写授权信号wr_gnt,同时控制进行写数据的读出,并确保读出数据在下一次写操作请求有效前,数据保持稳定,在结束执行信号end有效后,转入IDLE态;
WR态判定在当前fifo非满条件下,发出写操作请求wr_req,并根据写授权信号wr_gnt,完成数据的写入操作,在结束执行信号end有效后,转入IDLE态。
第五,跨时钟域脉冲转换模块完成不同时钟域间脉冲的转换。针对clk1时钟域下的脉冲信号:开始执行信号start、结束执行信号end、fifo1写请求信号wr_req1、fifo2写授权信号wr_gntq,分别生成clk2时钟域下的脉冲信号:开始执行信号starts、结束执行信号ends、fifo1的写请求信号wr_reqs、fifo2写授权信号wr_gnt2;针对clk2时钟域下的脉冲信号:fifo2写请求信号wr_req2、fifo1写授权信号wr_gnts,分别生成clk1时钟域下的脉冲信号:fifo1写请求信号wr_req1、fifo2写授权信号wr_gnt1。
最后,开始执行信号start、结束执行信号end分别连接fifo1状态控制和跨时钟域脉冲转换模块;fifo类型选择信号sel连接fifo1状态控制模块,其取反连接fifo2状态控制模块;fifo1状态控制输出fifo1写请求信号wr_req1、fifo2写授权信号wr_gntq,连接到跨时钟域脉冲转换模块;fifo2状态控制输出fifo2写请求信号wr_req2、fifo1写授权信号wr_gnts,连接到跨时钟域脉冲转换模块;跨时钟域脉冲转换模块输出fifo1写授权信号wr_gnt1和fifo2的写请求信号wr_regq,连接到fifo1状态控制模块;跨时钟域脉冲转换模块输出fifo2写授权信号wr_gnt2和fifo1的写请求信号wr_regs,连接到fifo2状态控制模块。
Claims (6)
1.一种异步fifo实现电路,其特征在于,包括fifo控制模块,以及基于异步时钟clk1和clk2设置的基于clk1的同步fifo1和基于clk2的同步fifo2;
所述的同步fifo1和同步fifo2中的数据宽度相同;
所述的fifo控制模块包括与基于clk1的同步fifo1交互的fifo1状态控制模块,与基于clk2的同步fifo2交互的fifo2状态控制模块,以及跨时钟域脉冲转换模块;fifo1状态控制模块和fifo2状态控制模块用于根据电路的输入信号分别对同步fifo1和同步fifo2进行状态控制;状态控制包括IDLE态、WR态和RD态三种状态控制;跨时钟域脉冲转换模块用于clk1时钟域和clk2时钟域之间脉冲信号的转换;
所述电路包括如下端口,开始执行信号start、结束执行信号end、fifo类型选择信号sel、时钟clk1、基于fifo1的清空信号flush1、基于fifo1的读使能信号rd1、基于fifo1的读数据rdata1、基于fifo1的写使能信号wr1、基于fifo1的写数据wdata1、基于fifo1的满标志full1、基于fifo1的几乎满标志af1、基于fifo1的空标志empty1、基于fifo1的几乎空标志ae1、时钟clk2、基于fifo2的清空信号flush2、基于fifo2的读使能信号rd2、基于fifo2的读数据rdata2、基于fifo2的写使能信号wr2、基于fifo2的写数据wdata2、基于fifo2的满标志full2、基于fifo2的几乎满标志af2、基于fifo2的空标志empty2和基于fifo2的几乎空标志ae2;
跨时钟域脉冲转换模块用于clk1时钟域和clk2时钟域之间脉冲信号的转换;
针对clk1时钟域下的脉冲信号:开始执行信号start、结束执行信号end、fifo1写请求信号wr_req1和fifo2写授权信号wr_gntq,分别生成clk2时钟域下的脉冲信号:开始执行信号starts、结束执行信号ends、fifo1的写请求信号wr_reqs和fifo2写授权信号wr_gnt2;
针对clk2时钟域下的脉冲信号:fifo2写请求信号wr_req2和fifo1写授权信号wr_gnts,分别生成clk1时钟域下的脉冲信号:fifo1写请求信号wr_req1和fifo2写授权信号wr_gnt1。
2.根据权利要求1所述的一种异步fifo实现电路,其特征在于,开始执行信号start、结束执行信号end分别连接fifo1状态控制模块和跨时钟域脉冲转换模块;fifo类型选择信号sel连接fifo1状态控制模块,其取反连接fifo2状态控制模块;fifo1状态控制输出fifo1写请求信号wr_req1、fifo2写授权信号wr_gntq,连接到跨时钟域脉冲转换模块;fifo2状态控制输出fifo2写请求信号wr_req2、fifo1写授权信号wr_gnts,连接到跨时钟域脉冲转换模块;跨时钟域脉冲转换模块输出fifo1写授权信号wr_gnt1和fifo2的写请求信号wr_regq,连接到fifo1状态控制模块;跨时钟域脉冲转换模块输出fifo2写授权信号wr_gnt2和fifo1的写请求信号wr_regs,连接到fifo2状态控制模块。
3.根据权利要求1所述的一种异步fifo实现电路,其特征在于,基于fifo1的满标志full1、基于fifo1的几乎满标志af1、基于fifo1的空标志empty1、基于fifo1的几乎空标志ae1信号用于标志同步fifo1的状态;基于fifo2的几乎满标志af2、基于fifo2的空标志empty2、基于fifo2的几乎空标志ae2用于标志同步fifo2的状态。
4.根据权利要求1所述的一种异步fifo实现电路,其特征在于,fifo1状态控制模块和fifo2状态控制模块设计相同,其状态机分为如下三种状态;
初始状态机为IDLE态,当开始执行信号start有效后,根据fifo类型选择信号sel信号选择,当sel选择为0时,状态机选择为RD态,否则选择为WR态;
RD态判定在当前fifo非空条件下,对写操作请求wr_req反馈写授权信号wr_gnt,同时控制进行写数据的读出,并确保读出数据在下一次写操作请求有效前,数据保持稳定,在结束执行信号end有效后,转入IDLE态;
WR态判定在当前fifo非满条件下,发出写操作请求wr_req,并根据写授权信号wr_gnt,完成数据的写入操作,在结束执行信号end有效后,转入IDLE态。
5.根据权利要求1所述的一种异步fifo实现电路,其特征在于,当fifo类型选择信号sel=0时,电路呈基于clk1的写端口和基于clk2的读端口;
同步fifo1接收基于clk1的数据,并将数据读出写入同步fifo2;同步fifo2接收同步fifo1的数据,并基于clk2将数据读出;
其基于fifo1的读使能信号rd1、基于fifo1的读数据rdata1、基于fifo2的写使能信号wr2和基于fifo2的写数据wdata2无效;
fifo1状态控制模块使用IDLE和WR状态,fifo2状态控制模块使用IDLE和RD状态;wr_req1、wr_gnt1、wr_regs和wr_gnts信号无效。
6.根据权利要求1所述的一种异步fifo实现电路,其特征在于,当fifo类型选择信号sel=1时,电路呈基于clk1的读端口和基于clk2的写端口;
同步fifo2接收基于clk2的数据,并将数据读出写入同步fifo1;同步fifo1接收同步fifo2的数据,并基于clk1将数据读出;
其基于fifo2的读使能信号rd2、基于fifo2的读数据rdata2、基于fifo1的写使能信号wr1和基于fifo1的写数据wdata1无效;
fifo2状态控制模块使用IDLE和WR状态,fifo1状态控制模块使用IDLE和RD状态;wr_req2、wr_gnt2、wr_regq和wr_gntq信号无效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810533118.9A CN108829373B (zh) | 2018-05-25 | 2018-05-25 | 一种异步fifo实现电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810533118.9A CN108829373B (zh) | 2018-05-25 | 2018-05-25 | 一种异步fifo实现电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108829373A CN108829373A (zh) | 2018-11-16 |
CN108829373B true CN108829373B (zh) | 2020-08-18 |
Family
ID=64146563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810533118.9A Active CN108829373B (zh) | 2018-05-25 | 2018-05-25 | 一种异步fifo实现电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108829373B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274171B (zh) * | 2018-12-04 | 2022-02-11 | 珠海格力电器股份有限公司 | 一种数据传输装置及方法 |
CN110825344A (zh) * | 2019-11-12 | 2020-02-21 | 天津飞腾信息技术有限公司 | 一种异步数据传输方法和结构 |
CN111580595A (zh) * | 2020-05-08 | 2020-08-25 | 济南浪潮高新科技投资发展有限公司 | 一种用于fpga的相关衍生时钟域中信号同步的系统 |
CN112948322B (zh) * | 2021-02-26 | 2023-05-16 | 西安微电子技术研究所 | 一种基于弹性缓存的虚通道及实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10124449A (ja) * | 1996-06-05 | 1998-05-15 | Compaq Computer Corp | 複数バッファ割り当て機能を備えたコンピュータ・システム |
JP4442199B2 (ja) * | 2003-11-20 | 2010-03-31 | ヤマハ株式会社 | 非同期信号入力装置及びサンプリング周波数変換装置 |
CN202394543U (zh) * | 2011-12-30 | 2012-08-22 | 西安国能科技有限公司 | 一种钟控异步先入先出fifo存储器 |
CN105119715A (zh) * | 2015-07-03 | 2015-12-02 | 合肥工业大学 | 一种基于重加密算法的fpga虚拟io片间互连数字电路 |
CN206133550U (zh) * | 2016-07-08 | 2017-04-26 | 中南大学 | 一种soc异步时钟域信号接口的系统 |
-
2018
- 2018-05-25 CN CN201810533118.9A patent/CN108829373B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10124449A (ja) * | 1996-06-05 | 1998-05-15 | Compaq Computer Corp | 複数バッファ割り当て機能を備えたコンピュータ・システム |
JP4442199B2 (ja) * | 2003-11-20 | 2010-03-31 | ヤマハ株式会社 | 非同期信号入力装置及びサンプリング周波数変換装置 |
CN202394543U (zh) * | 2011-12-30 | 2012-08-22 | 西安国能科技有限公司 | 一种钟控异步先入先出fifo存储器 |
CN105119715A (zh) * | 2015-07-03 | 2015-12-02 | 合肥工业大学 | 一种基于重加密算法的fpga虚拟io片间互连数字电路 |
CN206133550U (zh) * | 2016-07-08 | 2017-04-26 | 中南大学 | 一种soc异步时钟域信号接口的系统 |
Non-Patent Citations (1)
Title |
---|
基于MIPS核的片上系统总线控制器设计;袁丹寿等;《计算机工程与应用》;20041231(第36期);第102-105页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108829373A (zh) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108829373B (zh) | 一种异步fifo实现电路 | |
US6209072B1 (en) | Source synchronous interface between master and slave using a deskew latch | |
US8239607B2 (en) | System and method for an asynchronous data buffer having buffer write and read pointers | |
CN102981776B (zh) | 双倍数据率虚拟静态随机存取存储器及其控制器、存取与操作方法、写入与读取方法 | |
EP0868697B1 (en) | Interface for transferring data between two clock domains | |
US8250328B2 (en) | Apparatus and method for buffered write commands in a memory | |
CN104282325B (zh) | 具有读取定时信息的多数据速率存储器 | |
US7310396B1 (en) | Asynchronous FIFO buffer for synchronizing data transfers between clock domains | |
US7573770B1 (en) | Distributed front-end FIFO for source-synchronized interfaces with non-continuous clocks | |
JP3712471B2 (ja) | コンピュータシステム及び第1の回路と第2の回路との間でデータを転送するインタフェース回路 | |
US7725625B2 (en) | Latency insensitive FIFO signaling protocol | |
US7394721B1 (en) | Method and apparatus for data synchronization to local clock on memory reads | |
CN101692346B (zh) | 一种存储器数据采样装置及一种采样控制器 | |
CN104978150A (zh) | 存储器装置的控制方法、存储器装置和存储器系统 | |
KR20060017876A (ko) | 멀티플렉스된 메모리를 갖는 데이터 처리 회로 | |
CN110825344A (zh) | 一种异步数据传输方法和结构 | |
CN111966628B (zh) | 一种多核组合式大容量数据同步存储方法 | |
CN101510182B (zh) | 低速dma接口的片上系统和内存访问方法 | |
CN115437972A (zh) | 一种带时钟切换的乒乓缓存方法、装置及接口控制器 | |
CN1856835A (zh) | 同步的ram存储电路 | |
CN115168264A (zh) | 一种跨时钟域的apb总线桥及其方法 | |
EP1122737A1 (en) | Circuit for managing the transfer of data streams from a plurality of sources within a system | |
US6931561B2 (en) | Apparatus and method for asynchronously interfacing high-speed clock domain and low-speed clock domain using a plurality of storage and multiplexer components | |
US10742216B1 (en) | Clock domain crossing for an interface between logic circuits | |
CN114691556B (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 |