verilog 中为何要用基础时钟侦查其他时钟信号的上升沿,而不用posedge直接测

verilog 中为何要用always @(posedge clk) SCKr <= {SCKr[1:0], SCK};
wire
SCK_risingedge = (SCKr[2:1]==2'b01); // now we can detect SCK rising
edges
wire SCK_fallingedge = (SCKr[2:1]==2'b10); // and falling
侦测上升沿,而不直接用posedge

最好不要用运算之后的信号来做一个模块的输入时钟,因为信号的时钟要求非常高的质量,对于duty-cycle, jitter, skew(占空比、抖动、偏移)都有非常高的要求。但是组合逻辑生成的时钟可能会有毛刺等等对于时钟是非常致命的东西。
除非你非常有把握,否则不建议这样的设计方法。
说明:在时序电路设计中,尽量使用全局时钟,而不要用由全局时钟衍生出来的信号。
希望可以帮到你
温馨提示:答案为网友推荐,仅供参考
相似回答