芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 520|回复: 0

仿真FIFO时,wr_rst_busy信号出现未知态的原因

[复制链接]

该用户从未签到

59

主题

81

帖子

1338

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1338
发表于 2024-1-4 09:41:44 | 显示全部楼层 |阅读模式
【问题描述】
在使用xilinx的FIFO时,创建了一个工作在FWFT模式下的由块RAM搭建的独立时钟FIFO。在对其仿真时,wr_rst_busy信号出现了未知态的情况。这种情况实际上是因为Vivado仿真器为了能够兼容更多的设计,默认仿真语言是mixed导致的。这里wr_rst_busy信号虽然显示的是未知态,但却不影响它实际应当是什么值,因此放任不管即可。
image.png
以wr_en信号为例,在激励中,wr_en需要在等待wr_rst_busy下降沿之后才能拉高
[] 纯文本查看 复制代码
initial begin
Reset   = 1'b1;
wr_en = 1'b0;
rd_en = 1'b0;
din   = 8'hff;
#(20*3+1);
Reset = 1'b0;

@(negedge wr_rst_busy);  
//write data
while(full == 1'b0)
begin
@(posedge wr_clk);
#1;
wr_en = 1'b1;
din   = din + 1'b1;
end
........

但从图中波形可以看到,仿真器在wr_rst_busy未知态时检测到其下降沿,随后拉高了wr_en。这也说明了wr_rst_busy信号只是显示未知态,实际被使用时,仍是正确的值。

【解决办法】
如果实在想要让波形能够正确显示,可以将仿真器语言修改为verilog后再重新仿真,但是这种方式会导致仿真器的兼容性变差,尤其在仿真一些包含verilog和VHDL代码的设计或IP核时,很容易导致仿真结果与实际结果相差甚远。因此,不建议修改


仿真语言修改
image.png

重新仿真后的结果
image.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2024-5-2 12:53 , Processed in 0.109766 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表