加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有