可能的时钟域跨越?

时间:2018-05-21 08:43:45

标签: verilog digital-design

请参阅以下代码。 (为了清楚起见,它是YCbCr 4:2:2到4:4:4 SerDes。)

always @(posedge clk_54, posedge reset) begin
    if (reset)
        cntr <= 0;
    else if (flag_in) 
        cntr <= cntr+1; 
end

always @(posedge clk_54, posedge reset) begin
    if (reset) begin
        Y  <= 0;
        Cb <= 0;
        Cr <= 0; end
    if (cntr==0) 
        Cb <= YCbCr;
    else if ((cntr==1)||(cntr==3)) 
        Y <= YCbCr; 
    else if (cntr==2) 
        Cr <= YCbCr;
end

输入时钟为54 MHz。 cntr是一个两位计数器。 flag_in是一个告诉计数器何时开始的标志。很明显,三个输出信号Y,Cb或Cr都不会以比27 MHz(54的一半)更快的速率变化。如果是这样,我可以安全地采样27 MHz的信号,而不用担心时钟域交叉问题,设置和保持等等吗?

0 个答案:

没有答案