我现在要做一个回波的首波时间检测,具体判断方法为使用一个门槛电压和比较器进行比较,
当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