Xilinx FIFO RST复位

记录在使用Xilinx的FIFO Generate的时候遇到的问题(modelsim仿真和ILA都能遇到);

——full,empty 等信号一直keep high;

直接原因
以下内容说的都是Asynchronous Reset;

在手册pg057-fifo-generator.pdf,Page127中有介绍:
在这里插入图片描述

拙劣的翻译:

进行复位操作的时候,读写时钟必须是有效的。不管什么原因,在复位操作的时刻,读写时钟如果丢失,必须在读写时钟有效的时刻再次进行复位操作。违反此操作将导致不可预期的行为发生。甚至,信号busy会被卡住,并可能需要重新配置FPGA。

其他建议
文中后续也有对异步复位的建议:

拙劣的翻译:

如果异步复位的信号宽度是一个慢时钟宽度(应该是读写时钟中较慢的那一个),而且是在非常靠近满时钟上升沿的时候断言,那么复位检测就可能不会遇到这种导致无法预期的行为发生情况。为了避免这种情况,尽管在本手册中在一些时候说断言慢时钟的一个周期,但通常建议异步复位信号断言至少三个慢时钟周期。

文中有个定义C_SYNCHRONIZER_STAGE不理解什么意思,有知道的可以评论交流。

时序

在手册中也给出了建议的复位时序:在这里插入图片描述

需要注意:FIFO的所有输出信号在图中的No Access Zone期间必须视为无效;

可以观察到时序:

RST信号有8个慢时钟周期的高电平;
在RST上升沿时期,7个wr_clk周期后WR_RST_BUSY信号拉高,FULL信号拉高,此时的wr_en信号应该拉低;
在RST上升沿时期,7个rd_clk周期后RD_RST_BUSY信号拉高,EMPTY信号拉高,此时的rd_en信号应该拉低,而且此时的数据输出端口均为无效;
复位周期 + 60个满时钟周期后,FIFO可以正常读写;
手册中也给出了一个不安全的时序图:在这里插入图片描述

这个图中最明显的就是Async Reset的复位周期为3个慢时钟周期。

这样的时序情况下可能会引起一些异常(但是这个时序后面FIFO还是可以进行读写工作的)。

仿真
在modelsim仿真的时序中,如果FIFO的复位出现在了wr_clk或者rd_clk之前,那FIFO是不能进行读写的(注意FULL信号和EMPTY信号是会强行拉高的):
在这里插入图片描述

而后,再次进行FIFO的复位,FULL和EMPTY信号恢复正常,FIFO可以正常读写了: 

在这里插入图片描述

 总结
用FIFO IP的时候要注意 RST信号,建议满足:

1. 有效复位必须在wr_clk和rd_clk有效之后;
2. 有效复位至少要维持慢时钟的8个周期;
3. 复位操作过后,建议要等待至少60个慢时钟周期,再去使用FIFO进行读写操作;

按照这三个条件,对FIFO的RST进行配置,目前还没遇到问题,如有问题,评论沟通。
 

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vivado中,FIFO的清零或复位操作可以通过使能FIFO复位信号来实现。根据引用中的描述,当启用FIFO复位信号后,wr_rst_busy复位需要经过约20个时钟周期才能完成。因此,在Vivado中清零或复位FIFO,需要等待一段时间,直到wr_rst_busy复位完成。 FIFO的清零或复位操作可以通过以下步骤实现: 1. 确定FIFO模块的实例名称或标识符,以便在设计代码中使用。 2. 在代码中,使用相应的语言(如Verilog或VHDL)来实现清零或复位FIFO的逻辑。具体的实现方式取决于FIFO的类型和需求。 3. 在设计约束文件(如XDC文件)中,为FIFO复位信号指定正确的物理引脚或逻辑信号连接。 4. 在Vivado中编译和合成设计,并生成比特流文件。 5. 使用生成的比特流文件加载设计到目标设备中,并确保FIFO复位操作按预期工作。 需要注意的是,FIFO的清零或复位操作可能会影响FIFO中的数据,因此在实际应用中需要谨慎处理清零或复位操作的时机和条件,以确保数据的正确性和一致性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vivado与ISE关于FIFO和BRam的复位信号差异](https://blog.csdn.net/CAOXUN_FPGA/article/details/129317095)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [IP核的使用之FIFO(Vivado)](https://blog.csdn.net/yifantan/article/details/127515689)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值