Verilog 仿真问题:打拍失败

Verilog 仿真问题:打拍失败

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

打拍失败现象如下:

verilog代码如下:

cpp

复制代码

always @ (posedge clkb or negedge rst_n)

if (!rst_n)

begin

pulse_reg1 <= 0;

pulse_reg2 <= 0;

end

else

begin

pulse_reg1 <= pulse_ina ;

pulse_reg2 <= pulse_reg1 ;

end

仿真代码如下:

cpp

复制代码

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 begin

clka = 0;

clkb = 0;

rst_n = 0;

pulse_ina = 0;

#25

rst_n = 1; // 复位无效

#5 // 对齐

clk_come; #45

clk_come; #35

clk_come; #50

clk_come;

end

task clk_come;

begin

pulse_ina = 1; // 来一个慢时钟下的高脉冲

#20

pulse_ina = 0;

end

endtask

endmodule

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

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

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

修改之后仿真代码:

5:仿真结果如下;

放大图效果:

6:总结:打拍成功;

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

相关文章

电磁炉美的和苏泊尔哪个好
谁有365体育投注网站

电磁炉美的和苏泊尔哪个好

🕒 08-26 👁️ 3538
印度喝什么白酒,印度人喝什么酒
365bet官网

印度喝什么白酒,印度人喝什么酒

🕒 07-26 👁️ 3922
flv播放器有哪些?7款免费的flv文件格式播放器推荐
365bet中文版app

flv播放器有哪些?7款免费的flv文件格式播放器推荐

🕒 07-14 👁️ 7415
淝水之战衍生的四个成语故事
谁有365体育投注网站

淝水之战衍生的四个成语故事

🕒 08-11 👁️ 9672
清明上河圖
365bet中文版app

清明上河圖

🕒 07-23 👁️ 563
一般做美甲能维持多久啊?
谁有365体育投注网站

一般做美甲能维持多久啊?

🕒 07-16 👁️ 8072
手机品牌报价大全
谁有365体育投注网站

手机品牌报价大全

🕒 08-28 👁️ 2497
2025 年 15 大数据采集服务推荐
谁有365体育投注网站

2025 年 15 大数据采集服务推荐

🕒 07-15 👁️ 3491
冷门!巴西热身赛不敌摩洛哥
365bet中文版app

冷门!巴西热身赛不敌摩洛哥

🕒 07-17 👁️ 741