verilog编程:脉冲采样
(2010-05-30 12:31:30)
标签:
杂谈 |
假设clkout为需要输出的脉冲信号,高电平有效,脉冲宽度为5个clkin;counter[2:0]为计数器,p为输入脉冲
1)首先用clkin对低电平脉冲进行两级采样,防止亚稳态传播
always@(posedge clkin)
begin
clkin1
<= p;
clkin2
<= clkin1;
end
2)对第二级出来的数据进行上升沿检测
always(posedge clkin)
clk3
<= clk2;
assign clk4 =
(~clk3)&clk2;
3)当检测到上升沿时,触发计数器进行计数。
always@(posedge clkin)
begin
if(clk4==1)
clkout
<= 1;
else if(counter==3'd5)
clkout
<= 0;
end
always@(posedge clk)
begin
if(clk4==1)
counter
<= 0;
else
if(clkout==1)
counter
<= counter +1;
else
counter
<= 0;
end
1)首先用clkin对低电平脉冲进行两级采样,防止亚稳态传播
2)对第二级出来的数据进行上升沿检测
3)当检测到上升沿时,触发计数器进行计数。
前一篇:脉冲边沿检测(Verilog)

加载中…