FIFO复位流程

  • 09/03 18:55

1.1 问题背景

在FIFO的使用过程中不可避免的在某些应用下必须使用reset信号,将当前FIFO中数据清空,但是我们现在调用的xilinx的FIFO核在复位条件不满足时会偶现FIFO进入复位状态无法恢复,必须重新断上电才能恢复的问题,所以在使用FIFO时我们必须严格的按照datasheet上要求执行,以免出现异常。

1.2 IP核形式FIFO异步复位要求

IP核形式FIFO复位主要参考pg057-fifo-generator.pdf文档中说明。详见第3章RESET段描述。

其中reset要求如图1所示:

图1 FIFO Asynchronous Reset Socket Timing

结合文档详细说明,reset主要符合以下五点:

  • 如果不必要,则建议不例化reset信号。
  • 复位过程中读写时钟必须稳定,若过程中出现时钟不稳定,则等时钟稳定了再次进行一次复位。
  • 复位信号保持时间长度必须大于3个周期的慢时钟长度。
  • 复位过程中不允许有读写操作,即reset信号和wr_rst_busy信号任意一个为高的时候wr_en和rd_en信号必须为低。
  • 第2次复位在有wr_rst_busy指示信号时应等wr_rst_busy信号拉低,若无该信号则两次复位之间至少相隔6个周期的慢时钟长度。

1.3 XMP形式FIFO异步复位要求

XMP形式FIFO复位主要参考ug974-vivado-ultrascale-libraries.pdf文档中说明。详见第2章XMP_FIFO_ASYNC段描述.

其中reset要求如图2所示:

图2 XPM_FIFO RESET Behavior

结合文档详细说明,reset主要符合以下四点:

  • 复位信号必须与写时钟同步,复位有效时读写时钟必须都稳定。
  • 写复位过程中不允许有写信号;即reset信号、wr_rst_busy信号任意一个为高时不允许有wr_en信号为高
  • 读复位过程中不允许有读信号;即rd_rst_busy信号拉高时不允许rd_en信号为高
  • 第2次复位必须等第一次复位完成后才可进行,即wr_rst_busy信号拉低后才可以进行第二次复位。

总结

建议复位标志同时满足IP核和XMP的要求,方便代码移植和修改,但由于客观原因不能同时满足,则至少保证符合当前使用FIFO类型的要求。

若可以同时满足,则按照如下进行:

  • 复位信号必须与写时钟同步,复位有效时读写时钟必须同时稳定
  • 复位信号时间长度必须大于慢时钟的3个时钟周期长度
  • 在reset、wr_rst_busy、rd_rst_busy三个信号任意一个为高时,不允许有wr_en或rd_en拉高。
  • 第2次复位必须等上一次复位完成后才可使能,及必须等到wr_rst_busy、rd_rst_busy信号都拉低以后才能开启第二次复位流程。
人工客服
(售后/吐槽/合作/交友)
  • 器件型号:LFE3-70EA-6FN484I
    • 数量 1
    • 建议厂商 Lattice Semiconductor Corporation
    • 器件描述 Field Programmable Gate Array, 375MHz, 67000-Cell, PBGA484, 23 X 23 MM, LEAD FREE, FPBGA-484
    • 参考价格 暂无数据
    • 风险等级
    • ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:EP2C8F256C8N
    • 数量 1
    • 建议厂商 Altera Corporation
    • 器件描述 Field Programmable Gate Array, 516 CLBs, 402.5MHz, 8256-Cell, CMOS, PBGA256, LEAD FREE, FBGA-256
    • 参考价格 暂无数据
    • 风险等级
    • ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:XC2C384-10FTG256I
    • 数量 1
    • 建议厂商 AMD Xilinx
    • 器件描述 Flash PLD, 10ns, 384-Cell, CMOS, PBGA256, 17 X 17 MM, 1 MM PITCH, LEAD FREE, FTBGA-256
    • 参考价格 $596.21
    • 风险等级
    • ECAD模型
    • 数据手册
    • 查看更多信息