同步整形电路

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

 收藏代码

  1. module syn_posedge_2WideClk(clk, rst_n, din, dout);  
  2.     input clk;  
  3.     input rst_n;  
  4.     input din;  
  5.     output dout;  
  6.        
  7.      reg d_temp1, d_temp0, d_temp2;  
  8.        
  9.      always @(posedge clk) begin  
  10.           
  11.         if(!rst_n) begin  
  12.             d_temp2 <= 0;  
  13.             d_temp1 <= 0;  
  14.             d_temp0 <= 0;  
  15.         end  
  16.         else begin  
  17.             d_temp0 <= din;  
  18.             d_temp1 <= d_temp0;  
  19.             d_temp2 <= d_temp1;  
  20.         end  
  21.     end  
  22.       
  23.     assign dout = d_temp0 && (~d_temp2);  
  24.   
  25. endmodule  


功能仿真得到的波形为: 

同步整形电路_第1张图片 

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

你可能感兴趣的:(FPGA开发)