FIFO Generate IP核使用——异步复位

server/2024/9/25 0:37:43/

FIFO Generator IP核提供了一个复位输入,当该输入被激活时,它会复位所有的计数器和输出寄存器。对于块RAM或分布式RAM实现,复位FIFO并不是必需的,可以在FIFO中禁用复位引脚。共有两种复位类型选项:异步复位和同步复位。
在这里插入图片描述
异步复位(rst)激活时,会异步地复位所有的计数器、输出寄存器和存储器。当实现复位时,它会在内部与每个相应的时钟域同步,以将FIFO的内部逻辑设置为已知状态。这种同步逻辑允许在IP核内部正确设置复位逻辑的定时,以避免闪烁和亚稳态行为。

在应用复位时,时钟必须可用。如果由于任何原因在复位时丢失了时钟,那么当时钟恢复时必须再次应用复位。违反这一要求可能会导致意外的行为。有时,忙碌信号可能会卡住,可能需要重新配置FPGA。

如果在异步复位时使用的是最慢时钟宽度的一个周期,并且断言发生在最慢时钟上升沿附近,那么复位检测可能无法正确进行,导致意外的行为。为了避免这种情况,总是建议将异步复位断言至少保持3个或C_SYNCHRONIZER_STAGE(以较大者为准)个最慢时钟周期。

1 使用RAM(BRAM)、分布式RAM(Distributed RAM)和移位RAM(Shift RAM)时钟时

当使用异步复位时,确保在两次连续复位之间有至少6个时钟周期(在独立时钟情况下为较慢的时钟)的间隔。以下是对这些类型FIFO在使用异步复位时的一些关键注意事项:

在使用块RAM(BRAM)的异步复位时,提供了一个额外的安全电路选项(如上图所示,Enable Safety Circuit),以确保BRAM输入信号的断言和去断言是同步发生的。如果使用安全电路选项,你需要在应用下一个重置或发起任何写操作之前,等待wr_rst_busy信号从1过渡到0。对于BRAM的DRC(Design Rule Check)警告,如果与异步复位和安全电路相关,可以视为误报。

如果选择了FIFO生成器的安全电路选项,需要确保复位(rst)信号在写/读时钟周期(以较慢者为准)中至少被断言为高(逻辑1)3个或C_SYNCHRONIZER_STAGE(以较大者为准)个周期。

对于AXI接口的异步复位,在IP核内部断言wr_rst_busy,在复位期间,AXI接口可能会暂时不可用,直到wr_rst_busy信号变为0,并且相关的*axi**valid/*axi**ready信号表明接口已准备好。

表3-7定义了块RAM、分布式RAM和移位RAM FIFO在加电和复位状态下输出端口的值。下溢信号(underflow)取决于rd_en(读使能)。如果rd_en被激活且FIFO为空,则下溢信号被激活。同样,溢出信号取决于wr_en(写使能)。如果wr_en被激活且FIFO已满,则溢出信号被激活。
在这里插入图片描述
对于这些FIFO配置,有两种可用的异步复位行为:满标志复位为1和满标志复位为0。根据所选的满标志复位值,复位要求和FIFO的行为是不同的。FIFO的复位需求和行为会根据所选择的满标志复位值(full flags reset value)的不同而有所差异。
在这里插入图片描述
复位是边沿触发的,而不是电平触发的。同步逻辑寻找rst的上升边沿,并为IP核创建一个内部复位。

请注意,异步复位的断言会立即导致IP 核进入预定的复位状态——这不依赖于任何时钟切换。

复位同步逻辑用于确保不同时钟域中的逻辑在同一时间退出复位模式——这是通过将异步复位的去断言同步到适当的时钟域来实现的。这样做可以避免闪烁和亚稳态。这种同步分别在读写时钟上检测到异步复位的上升边沿后,需要三个时钟周期(写或读)来完成。

为了避免意外行为,建议遵循复位时序要求,并在rst被断言/置高时不建议驱动/切换wr_en/rd_en。

满标志复位值为1

在这个配置中,FIFO需要至少一个写/读时钟周期的异步复位脉冲(以较慢者为准)。当在写时钟的上升沿检测到复位时,需要3个写时钟周期来完成适当的复位同步。在这段时间内,full、almost_full和prog_full标志会被复位(asserted)。当复位被撤销后,这些标志在五个时钟周期(wr_clk/clk,取决于使用的是写时钟还是公共时钟)后撤销(deasserted),然后FIFO可以接受写操作。

为了确保在FIFO IP核处于复位状态时不会发生写操作,full和almost_full标志会被复位(asserted)。当FIFO退出复位状态并准备好进行写操作时,full和almost_full标志会撤销(deassert)。这通常发生在异步复位撤销后的约五个时钟周期。

如图3-31所示,提供了复位期间FIFO行为的示例时序图。请注意,在这种配置下,上电(power-up)时的值与复位状态的值是不同的。
在这里插入图片描述
满标志复位值为0

在这个配置中,FIFO需要至少一个写/读时钟周期的异步复位脉冲(以较慢者为准)来完成适当的复位同步。在复位期间,full、almost_full和prog_full标志会被撤销(deasserted)。当FIFO退出复位同步状态后,它准备好进行写操作,这通常发生在异步复位断言后的约五个时钟周期。

2 在7系列中内置FIFO的公共/独立时钟配置时

表3-8 定义了内置FIFO在电源上电和复位状态期间输出端口的值。dout复位值仅支持具有嵌入式寄存器选项的公共时钟内置FIFO。内置FIFO需要至少五个读和写时钟周期的异步复位脉冲。为了确保在所有内置FIFO配置中的一致性,建议为内置FIFO提供至少5个读和写时钟周期的异步复位脉冲。然而,FIFO生成器IP核具有一个内置机制,确保所有内置FIFO的复位脉冲至少持续五个读和写时钟周期。

在复位期间,rd_en(读使能)和wr_en(写使能)端口需要被撤销(即不允许进行读或写操作)。复位断言会导致full和prog_full标志撤销(即不指示FIFO已满或接近满),而empty和prog_empty标志置位(即指示FIFO为空或接近空)。当异步复位被释放后,IP核退出复位状态并准备好进行写操作。如图3-34所示。
在这里插入图片描述
FIFO(First-In, First-Out)的underflow(下溢)和overflow(上溢)信号的行为是依赖于读使能(rd_en)和写使能(wr_en)信号的。

Underflow(下溢)::当FIFO为空(即没有任何数据可读)时,如果读使能(rd_en)信号被断言(即设置为高电平或逻辑真),则FIFO的下溢信号会被触发(断言)。

Overflow(上溢):当FIFO已满(即没有空间写入新数据)时,如果写使能(wr_en)信号被断言(即设置为高电平或逻辑真),并且有一个写操作尝试将数据写入FIFO,则FIFO的上溢信号会被触发(断言)。


http://www.ppmy.cn/server/34669.html

相关文章

python爱心代码高级

编写一个高级的 Python 爱心代码并不难,我们可以利用 Python 的图形库来绘制一个漂亮的爱心图案。以下是一个简单但精美的 Python 爱心代码示例: import turtle# 创建画布 canvas turtle.Screen() canvas.bgcolor("black")# 创建画笔 pen tu…

第五十一周:文献阅读+CNN-LSTM-AM

目录 摘要 Abstract 文献阅读:基于CNN-LSTM-AM时空深度学习模型的城市供水预测 现存问题 提出方法 创新点 方法论 CNN-LSTM-AM模型 研究实验 数据集 预处理 评估指标 实验过程 合格性验证 模型实现 总结 摘要 本周阅读的文献《Urban Water Supply …

秋招后端开发面试题 - Java IO

目录 Java IO前言面试题Java IO 流?字节流 vs 字符流区别?字节缓冲流 vs 字符缓冲流?打印流?System.out.println() 是什么?随机访问流?管道流?讲讲 Filter 流?常见的 IO 模型&#x…

震撼来袭!AI创新燃爆2024中关村论坛,唯迈医疗破解心脑血管“命门”危机

4月29日,备受瞩目的2024中关村论坛圆满闭幕。国内领先的介入诊疗全流程解决方案企业——唯迈医疗,携新一代Taikon太空 DSA和介入手术机器人惊艳亮相,以AI赋能介入诊疗,为心脑血管疾病治疗带来了革命性的突破,引发党央媒…

一款自研的热门 AI 产品招募开发者和运营伙伴

🚀 产品介绍 「帝阅」🌟🌟🌟 是一款个人专属知识管理与创造的 AI Native 产品 为用户打造一位专属的侍读助理,帮助提升用户获取知识效率和发挥创造力 让用户更好地去积累知识、管理知识、运用知识 详情见产品手册&am…

沃伦·巴菲特将AI比做原子弹:“瓶中精灵”使诈骗成为最快增长产业|TodayAI

在伯克希尔哈撒韦公司的年度股东大会上,投资大师沃伦巴菲特对人工智能的未来提出了严重警告。巴菲特对这项可以模拟现实并产生误导性内容的技术表示担忧,他认为这将成为史上增长最快的行业之一。 巴菲特在会上说:“当你思考诈骗人们的潜力时…

C++ 类模板

一、类模板的定义 类模板是C中一种特殊的模板,用于创建通用的类。通过类模板,我们可以定义一个通用的类,这个类可以接受不同类型的数据作为其成员或参数。在使用类模板时,我们需要指定具体的数据类型,编译器会根据指定…

【小行星数据预处理py-】

#数据的导入 import pandas as pd import numpy as np#导入EXCEL表格数据;na_values指定了将Excel文件中的空单元格转换为NaN df_excelpd.read_excel(C:/Users/galax/Desktop/MBA小行星数据/4000.xls,na_values0) #定义0为缺失值 see_datadf_excel #统计每一列的缺失值个数 pri…