UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 42571

Virtex-5、Virtex-6、Spartan-6、7 系列模块 RAM — 违反了启用的设置和保持规定,可能会在第一次读取或写入过程中出现错误

描述

对于所有 Xilinx FPGA 模块 RAM 而言,包括启用(EN)在内的所有控制信号的设置与保持时间都必须在断言和去断言过程中得到满足。

违反了 EN 的设置/保持规定,可能会在 Virtex-5、Virtex-6、Spartan-6 和 7 系列模块 RAM 中导致第一次读取或写入失败。

解决方案

总之,模块 RAM 的所有设置及保持时间都必须满足,以确保模块 RAM 能够按照用户指南中的定义正常工作。

在某些条件下,违反设置/保持时间规定可能会出现在任何控制信号上(如地址、写入启用和重置等),对于模块 RAM 而言,这时端口启用可能处于工作状态(如 ENA/ENB=1),也可能端口启用信号本身就违反了设置/保持规定。

如果异步重置(或任何其它控制信号)被去断言,或者该时钟在器件工作过程中丢失(包括短暂丢失,如失去 DCM/MMCM 输入时钟或进入 BRAM 的 BUFR/BUFG),就会出现违反设置/保持规定的情况。

在这种情况下,即便写入启用为低,模块 RAM 内容也会损坏,进而可能会导致第一个读取/写入操作行为不正常。

建议要始终适当同步所有异步信号,包括重置和进行适当的时序分析,以避免这种情况发生。

如果这种情况无法避免,我们建议在第一次读取或写入前整整一个时钟周期断言 EN 信号。绑定 EN 为一个常量高,进而始终启用 BRAM,这也是一个选项。

数据手册:每个系列的 DC 和 AC 转换特性都记录着 RAM 的时序参数。

时序也记录在存储器资源用户指南中,包括 Trcck_en 和 Trckc_en,可定义为:

"Trck_en:在 BRAM 的 EN 输入位置,启用信号必须稳定的时钟之后的时间。"


模块 RAM 作为硬 FIFO (Virtex-5、 Virtex-6、 Spartan-6、 7 系列)

在使用具有异步时钟的内建 FIFO 时,重置之后的第一个字的读取可能会不正确,因为存在重置信号时序问题。 

在实例化原语时可能会出现这个问题,在 Core Generator 中使用 FIFO Generator 内核时也有可能出现该问题。

注意:这个问题只会在 RDCLK 和 WRCLK 彼此真正异步时才会出现,同样的时钟管理器生成的时钟不会受到影响。

如果 RDCLK 和 WRCLK 为异步,而且 FIFO 的重置不同步于 RDCLK,即便重置信号满足时序分析过程中的时序要求,重置后的第一个字的读取也有可能会不正确。

这是因为存在在内建 FIFO 中内部生成的信号。为避免这一问题,应让重置同步于 RDCLK,以确保满足该系列的其他重置要求。

如: 对于 Virtex-5:

  • 重设信号必须在至少三个读取时钟及写入时钟周期内保持为高。
  • 在重置过程中,RDEN 和 WREN 必须保持为低。

FIFO Generator 内核将自动将重置同步于最慢的时钟。

因此,使用 WRCLK 慢于 RDCLK 的 FIFO Generator 可能会导致该问题。

重置信号必须在其通过内核之前同步于 RDCLK。

在 UltraScale/UltraScale+ MPSoC 器件中,有一个重置为 WRCLK 的同步器,所以这不再适用。

链接问答记录

相关答复记录

AR# 42571
日期 03/03/2017
状态 Active
Type 综合文章
器件
  • Virtex-5
  • Virtex-6
  • Virtex-7
  • More
  • Kintex-7
  • Artix-7
  • Spartan-6
  • Less
的页面