我面临一个奇怪的问题。该代码适用于简单的 ALU。仅将感兴趣的代码粘贴到此处:
always @(posedge clk or posedge rst)
begin
if (rst == 1) begin
mul_valid_shr = 3'b000;
end else begin
if (op_mul_i == 1) begin
mul_valid_shr = 3'b111;
end else begin
mul_valid_shr <= mul_valid_shr << 1;
end
end
end
在always块之外:
assign mul_valid = mul_valid_shr[2];
使用我的测试台进行的综合后功能仿真具有以下结果:
重置已经很低了,为什么SIM卡第一次不能工作,但第二次和第三次工作正常?如果我触发op_mul_i
在 100ns 标记之前,即使rst
是低的,甚至mul_result
第一次停止工作。
欢迎任何猜测。
更新:完整代码在这里:https://www.edaplayground.com/x/28Hx
Xilinx 模拟器会在任何综合后模拟的前 100ns 内模拟 FPGA 全局复位,因此您基本上必须将逻辑保持在复位和时钟状态至少 100ns 才能获得合理的结果。 UG900 第 13 页提到了这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)