这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 请教一个关于检测回波时间的问题,怎么能让一个上升沿来了之后计数器停止计数。

共5条 1/1 1 跳转至

请教一个关于检测回波时间的问题,怎么能让一个上升沿来了之后计数器停止计数。

菜鸟
2014-07-03 09:22:56     打赏

我现在要做一个回波的首波时间检测,具体判断方法为使用一个门槛电压和比较器进行比较,

当TimeEnd=1时我就认为是回波已经来了。

然后做出来的仿真如下 :

如图

使用的是计数的方式来计算回波的时间,前面一段为激发和拖尾,我不认为是回波到来的时刻,所以让计数一直进行,然后到后面遇见高电平就停止计数。

现在存在的问题是,回波来之后TimeEnd信号的波形如图后半段所示, 我怎么才能在回波一来临的时候就停止计数??

下面是现在的程序

module TimeDetection  (
                        clk,                               
reset,
  //PHOneStart,
  TimeEnd,                           //全波列和比较器比较,高电平有效表示首波已经到来。

TimeData
                       );
 input clk;
 input reset;
    //input PHOneStart;
 input TimeEnd;
 output TimeData;
 reg [11:0] TimeData;
 
parameter  Time_Exc = 12'd799;                             //16us
 
always @ (posedge clk or negedge reset)
  if (!reset)
   TimeData <= 12'd0;
 // else if (PHOneStart)
 //  TimeData <= 12'd0;
  else if (TimeData < Time_Exc)
   TimeData <= TimeData+12'd1;  
  else if (TimeData > Time_Exc-12'd1 && TimeEnd==0)
   TimeData <= TimeData+12'd1;
  else if (TimeData >Time_Exc-12'd1 && TimeEnd==1)
   TimeData <= TimeData;


endmodule


菜鸟
2014-07-03 09:23:40     打赏
2楼
具体用语言怎么实现?

高工
2014-07-03 09:47:13     打赏
3楼
这不是用语言怎么实现问题,这是怎么来鉴别激发信号和回波信号的思路问题。

菜鸟
2014-07-03 09:56:47     打赏
4楼

激发信号是自己产生的,所以我有办法鉴别,问题是到了回波到了以后TimeEnd这个信号是会在1,0 之间变动的

问题是我怎么在首波来的时候让计数停止


菜鸟
2014-07-07 17:09:25     打赏
5楼
reg [1:0] cstate;
always @(posedge clk ,negedge reset)
	if(!reset)
		begin
		TimeData <= 12'd0;
		cstate   <= 2'b00;
		end
	else case(cstate)
		2'b00: begin
			   if (TimeData < Time_Exc)
					begin
					TimeData <= TimeData+12'd1;
					cstate <= 2'b00;
					end
			   else if (TimeData > Time_Exc-12'd1 && TimeEnd==0)
					    begin
						TimeData <= TimeData+12'd1;
						cstate <= 2'b00;
						end
			   else if (TimeData >Time_Exc-12'd1 && TimeEnd==1)
					    begin
						TimeData <= TimeData;
						cstate <= 2'b01;
						end
				end
		2'b01: begin
			   cstate <= 2'b01;
			   TimeData <= TimeData;
			   end
		default:begin
			    cstate <= 2'b00
				TimeData <= 1'b0;
				end
		endcase

 


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]