verilog实现可综合脉冲信号延时模块的三种方法-基础小知识(四)


脉冲信号间隔数个时钟周期后输出是常见的信号处理形式,这里总结了三种常见的同步时钟下脉冲信号延时的方法,仅供参考。~~~

1.1 背景

下面处理的都是单个周期宽度的脉冲信号,信号宽度与时钟周期相同。三种方法分别是延时打拍,寄存器移位,计数器延时

1.2 延时打拍

方法比较简单,适用于两拍,三拍传递数据,两拍跨时钟域同步,两拍信号上升沿、下降沿采样。

1.3 寄存器移位

较多次打拍从形式上较为繁琐,可以采用定义多为寄存器移位传输数据。

    input    pulse_in ;      //脉冲输入
    wire     pulse_out ;     //脉冲输出
reg  [9:0]   pulse_tmp ;     //存放脉冲在传输过程的临时数据  

     always @(posedge CLK or negedge rst_n)	begin	
	      if(!rst_n)
				pulse_tmp <= 10'd0;
         else if(pulse_in == 1'b1)//脉冲输入信号到来
             pulse_tmp <= {pulse_tmp[8:0],pulse_in};
		 else
             pulse_tmp <= {pulse_tmp[8:0],1'b0};       //每隔一个时钟周期,前移一位
		end
     assign pulse_out = pulse_tmp[9] ;        //间隔数个周期后,从高位输出   
1.4 计数器延时

原理为采样到输入脉冲后把flag信号置1,开始计数,计数到需要的延时之后,输出一个脉冲信号,同时清除计数,清零flag信号。

module pulse_delay(
		input     CLK  ,	 
		input     rst_n,
		input     Delay_IN  ,	//输入脉冲
		output    Delay_OUT //延时后的输出脉冲
	      );
     reg [7:0] delay_plus;
	 reg Delay_plus;
	 reg plus_flag;
	 
	 assign Delay_OUT = Delay_plus;
	always @(posedge CLK or negedge rst_n) begin
	  if(!rst_n)
	  	    plus_flag<= 1'b0;	  
	  else if(Delay_IN == 1'b1)
		    plus_flag<= 1'b1;
	  else if(delay_plus[7:0]==16'h8)
	  	    plus_flag<= 1'b0;
	end	
	always @(posedge CLK or negedge rst_n)	begin	
	      if(!rst_n)
			begin
				delay_plus[7:0] <= 8'd0;
				Delay_plus<= 1'b0;
			end	  
			else if(delay_plus[7:0]==16'h8 && plus_flag == 1'b1)//延时时间
			begin
				delay_plus[7:0] <= 8'd0;
				Delay_plus<= 1'b1;
			end
			else if (plus_flag == 1'b1) begin
				Delay_plus<= 1'b0;
				delay_plus[7:0] <= delay_plus[7:0]+1'b1;
			end		
			else 	begin
				delay_plus[7:0] <= 8'd0;
				Delay_plus<= 1'b0;
			end	
		end       						  
endmodule

计数器延时参考波形在这里插入图片描述
计数器延时参考波形

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Paul安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值