Verilog同步整形电路

CPLD/FPGA同步电路具备最稳定的工作状态和工作性能,因此经常需要将外部输入的异步信号进行同步处理(与系统时钟同步)和整形(将输入信号由不规则波形提取为具备一个时钟周期长的脉冲信号)
  同步整形的基本方法就是通过时钟对异步信号连续采样得到同步信号,然后由前后两次的同步采样进行逻辑组合得到整形输出。
  以下是一个利用上升沿完成信号同步整形的设计:


module syn_posedge_2WideClk(clk, rst_n, din, dout);  
    input clk;  
    input rst_n;  
    input din;  
    output dout;  
       
     reg d_temp1, d_temp0, d_temp2;  
       
     always @(posedge clk) begin  
          
        if(!rst_n) begin  
            d_temp2 <= 0;  
            d_temp1 <= 0;  
            d_temp0 <= 0;  
        end  
        else begin  
            d_temp0 <= din;  
            d_temp1 <= d_temp0;  
            d_temp2 <= d_temp1;  
        end  
    end  
      
    assign dout = d_temp0 && (~d_temp2);  
  
endmodule 


总结:首 先,通过D触发器采样输入信号,将其数值宽度划分为一个时钟周期宽度的数值。其次,设定两次采样,则是结合后面的处理电路,将输出信号同步到一个时钟宽 度。如果要将输入信号同步到N个时钟宽度,则需要N+1级D触发器级联,然后将第1级和第N+1级触发器的值送入后续处理逻辑。第三,对D触发采样值的处 理逻辑,就是一个简单的判断上升沿的组合逻辑,其逻辑为:dout = d_temp0 && (d_temp(N+1))

你可能感兴趣的:(FPGA那些事)