怎么判断输入方波信号的上升沿
signal clk_r1 : std_logic;
process(clk)
begin
if rising_edge(clk) then
clk_r1 <= Square_wave;
end if;
end process;
pulse_signal <= clk and (not clk_r1);
不好意思,不知道哦。
小编自问自答吗
但是如果信号和时钟关系不定的话,是不是当作异步处理,再多加一级锁存,否则pulse_signal可能是个很窄的脉冲
把时钟作为采样时钟 方波信号作为被采样信号 , 将方波信号延迟两排 ,如 :
always@(posedge clk or negedge reset)
begin
if(!reset)
begin
reg_signal1<=1'b0;
reg_signal2<=1'b0;
end
else
begin
reg_signal1<=signal;
reg_signal2<=reg_signal1;
end
end
上升沿 即是 (!reg_signal2 && reg_signal1) == 1;
一楼正解
要判断方波的上升沿,首先要保证系统时钟频率要比方波信号的频率高。
然后用系统时钟将输入的方波信号寄存在一个两位的寄存器中(MSB:signal_i_d,LSB:signal_i),寄存器的值为10(或01),说明是上升沿(或下降沿)
把方波当做采样对象嘛,两级锁存用异或的方式就可以判断了
要区分快采慢 还是 慢采快,区别对待。快采慢很容易,两级触发器级联处理;慢采快,先展宽后,再两级触发器级联处理
