【发布时间】:2021-12-10 13:13:06
【问题描述】:
我正在尝试从信号ext_sample_clk 生成一个脉冲。我的设计目前有 2 个时钟信号,clk 和 ext_sample_clk,这是我通过测试台生成的。以下是我的简化代码。除此之外,我还有clk 和重置生成逻辑,为简单起见,我没有显示。如果需要,我可以分享。
module tb;
reg clk;
reg rst;
reg ext_sample_clk;
reg ext_sample_clk_r1;
wire ext_sample_pulse_orig;
//clock gen logic
always
begin
clk = 1'b1;
#5; // 10 ns
clk = 1'b0;
#5;
end
// reset gen logic
initial
begin
rst = 1;
#(100);
rst = 0;
end
// ext_sample_clk logic
always
begin
ext_sample_clk = 1'b1;
#50;
ext_sample_clk = 1'b0;
#50;
end
// register the ext_sample_clk logic, should infer a flip flop
always @(posedge clk) begin
if (rst)
ext_sample_clk_r1 <= 0;
else
ext_sample_clk_r1 <= ext_sample_clk; // lhs doesn't appear to be delayed by 1 clock cycle wrt to rhs
end
assign ext_sample_pulse_orig = ext_sample_clk && !ext_sample_clk_r1;
endmodule
与 ext_sample_clk 相比,我希望 ext_sample_clk_r1 延迟一个时钟脉冲。但以下是我在 Vivado 上运行仿真时观察到的情况。
谁能解释为什么我在 ext_sample_clk_r1 中没有看到参考 ext_sample_clk 的时钟周期延迟。我错过了什么吗?
【问题讨论】:
标签: verilog simulation fpga vivado test-bench