0

为什么前者可以输出数据,后者输出为0

为什么前者可以输出数据,后者输出为0
源代码:
module register(latch_en,fs_cnt_temp1,fx_cnt_temp1, fx_data_latch);
input [31:0] fs_cnt_temp1;
input [31:0] fx_cnt_temp1;
input latch_en; //锁存使能端
output reg [31:0] fx_data_latch;
//parameter define
parameter CLK_FS = 32’d50_000_000;
//main mode
always@ (latch_en)
begin
if (!latch_en)
fx_data_latch <= 32’d0;
else
fx_data_latch <= (CLK_FS / fs_cnt_temp1) * fx_cnt_temp1;
end

endmodule
仿真波形图:
1.jpg
2.jpg
两者只是在tb文件里输入不同;
前者仿真文件:
initial
begin
fs_cnt_temp1 = 32’d50_000_000; fx_cnt_temp1 = 32’d2000;
latch_en = 1’b0;

#10 latch_en = 1’b1;

#100 latch_en = 1’b0;

#100 $stop(0);
end
后者仿真文件:
initial
begin
fs_cnt_temp1 = 32’d50_000_000; fx_cnt_temp1 = 32’d2000;
latch_en = 1’b0;

#10 latch_en = 1’b1;fs_cnt_temp1 = 32’d50_000_001;

#100 latch_en = 1’b0;

#100 $stop(0);
end
想请问各位大佬,是源代码中进行算术运算的问题还是有别的原因?

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
我叫布拉格 头像
0

1、fx_data_latch <= (CLK_FS / fs_cnt_temp1) * fx_cnt_temp1;
verilog中不能直接使用乘除法,可以建立个ip核去调用。

编辑 标为违禁 删除 链接 更多选项...
coco 头像

评论

我还遇到了在模块里可以抓到信号A的波形,在顶层对信号A的连线就抓不到的情况,也不知道为啥?

白与阶下行 头像白与阶下行 ( 2022-06-28 10:38:35 +0800 )编辑
登录/注册后进行回答