当前位置: 首页 > ds >正文

Verilog 仿真问题:打拍失败

1:记录一下在今的天仿真的时候,对信号打拍操作,发现打拍失败。

打拍失败现象如下:

verilog代码如下:

    always @ (posedge clkb or negedge rst_n)if (!rst_n)beginpulse_reg1	<=	0;pulse_reg2	<=	0;endelsebeginpulse_reg1	<=	pulse_ina	;pulse_reg2	<=	pulse_reg1	;end

仿真代码如下:

module sim_slow2fast_cdc ( );reg		clka	;reg		clkb	;reg		rst_n	;reg		pulse_ina;wire	pulse_outb;slow2fast_cdc	slow2fast_cdc_inst (.clka		(clka)	,.clkb		(clkb)	,.rst_n		(rst_n)	,.pulse_ina	(pulse_ina)	,.pulse_outb	(pulse_outb));always #10	clka = ~clka;always #6	clkb = ~clkb;initial	beginclka		=	0;clkb		=	0;rst_n		=	0;pulse_ina	=	0;#25rst_n		=	1;	// 复位无效#5	// 对齐clk_come;	#45clk_come;	#35clk_come;	#50clk_come;endtask	clk_come;beginpulse_ina	=	1;	// 来一个慢时钟下的高脉冲#20pulse_ina	=	0;endendtaskendmodule


2:现象:可以看见pulse_reg1将pulse_ina信号采集并没有延迟1拍,从而形成打拍失败的结果;

3:问题原因:因为我们这个pulse_ina是模拟外部信号进入,是reg变量,我这里是D触发器要去采集pulse_ina,这里仿真代码是使用的是阻塞赋值;故而出现仿真打拍失败。

4:解决办法:将仿真文件里面的pulse_ina的阻塞赋值改成非阻塞赋值,即可解决。

修改之后仿真代码:

                         

5:仿真结果如下;

放大图效果:

6:总结:打拍成功;

7:参考资料
                                         
Verilog 仿真问题:打拍失败_哔哩哔哩_bilibili

http://www.xdnf.cn/news/17342.html

相关文章:

  • jdk动态代理如何实现
  • 对 .NET线程 异常退出引发程序崩溃的反思
  • 八股——IM项目
  • C++ 运算符重载:避免隐式类型转换的艺术
  • 译 | 在 Python 中从头开始构建 Qwen-3 MoE
  • 【ArcGIS】分区统计中出现Null值且Nodata无法忽略的问题以及shp擦除(erase)的使用——以NDVI去水体为例
  • 最新教程 | CentOS 7 下 MySQL 8 离线部署完整手册(含自动部署脚本)
  • vite项目中集成vditor文档编辑器
  • 低代码系统的技术深度:超越“可视化操作”的架构与实现挑战
  • 【机器学习篇】02day.python机器学习篇Scikit-learn基础操作
  • 疯狂星期四文案网第30天运营日记
  • 自学嵌入式 day43 中断系统
  • 数据结构与算法的认识
  • Linux 防火墙(firewalld)详解与配置
  • 【概念学习】早期神经网络
  • IPS知识点
  • spring-dubbo
  • ##Anolis OS 8.10 安装oracle19c
  • 从零开始的CAD|CAE开发: 单柱绕流+多柱绕流
  • vue封装一个cascade级联 多选 全选组件 ,原生写法Input,Checkbox,Button
  • 看不见的伪造痕迹:AI时代的鉴伪攻防战
  • Codeforces Round 987 (Div. 2)
  • 数据结构—队列和栈
  • 问题定位排查手记1 | 从Windows端快速检查连接状态
  • Java面试宝典:类加载器分层设计与核心机制解析
  • PyCharm vs. VSCode 到底哪个更好用
  • C++、STL面试题总结(二)
  • 图论(邻接表)DFS
  • SpringBoot 接入SSE实现消息实时推送的优点,原理以及实现
  • 【Linux系统】进程间通信:命名管道