在HDLBits中有一道题,
对于8位向量中的每一位,检测输入信号何时从一个时钟周期的0变化到下一个时钟周期的1(正边缘检测)。输出位应该在发生0到1转换后的周期,如下示意图所示:
给出的答案为:
module top_module (
input clk,
input [7:0] in,
output reg [7:0] temp_in,
output reg [7:0] pedge
);
always @(posedge clk) begin
temp_in <= in;
pedge <= ~temp_in & in;
end
endmodule
从题目的图上来看,input in[7:0]的0-1变化是和clk上升沿同步,但其实图上表达的是,in[7:0]比clk上升沿延迟一段时间从0突变为1,为验证input in[7:0]和clk同步和不同步时输出的波形,做了仿真
当in相较于clk晚一个步长时,仿真和题目所给波形一致,表明题目的input和clk不是同步的,always@(posedge clk) temp_in<