FPGA|CPLD|ASICwilliam hill官网
直播中

番茄番茄

11年用户 637经验值
私信 关注
[问答]

verilog 检测上升沿和下降沿的一种方法

各位好,有个问题像大家请教一下,检测上升沿和下降沿的 ,当检测到上升沿时


out 输出1,检测到下降沿时out 输出0,用的以下的代码,
但是用逻辑分析仪查看波形如下,out 输出1延迟了两个时钟周期20ns,请问下有


没有好的代码方法让这个延迟时间短一点,测量了别人的延迟只有5ns




  1. reg sig_in0;
  2. reg sig_in1;

  3. wire rising_edge;
  4. wire falling_edge;

  5. assign  rising_edge  = ~sig_in0 &  sig_in1;
  6. assign  falling_edge =  sig_in0 & ~sig_in1;

  7. always@(posedge clk) begin
  8.       sig_in0 <= sig_in1;
  9.       sig_in1 <= mcu_sig_3 ;
  10. end

  11. always @(posedge clk)  begin
  12.        if( falling_edge_3)
  13.            out <= 0;         
  14.         else if(rising_edge_3)
  15.            out <= 1;   
  16. end




回帖(8)

489240

2014-12-18 23:37:00
你的比较方法不对,这种边沿检测法,用的是时序威廉希尔官方网站 ,最小时间当然是1个时钟周期,你说的5ns,估计是组合逻辑的延时吧,这是不能比较的。
比如
always @(posedge  mcu_sig_3 or negedge rst_n)
begin
   if(!rst_n)
      out <= 0;
   else
      out <= 1;
end

这个从判断mcu_sig_3上升沿,到out输出,就快, 几ns而已,就是一个选择器的输出延时而已。。。。但这种方法没有意思,FPGA设计的边沿判断,都是采用2级寄存器打拍的方法,只要系统设计合理,不在乎那两个时钟周期。
举报

624877

2014-12-25 08:57:24
如果想使用边沿检测法做你如上所述的输出,并且想减小输出延时,只能提高检测时钟频率!
举报

lilong135984

2014-12-25 20:40:29
你的延时肯定是两个时钟周期啊,产生rising_edge或者falling_edge需要一个时钟周期,检测它们然后产生输出由需要一个周期。
举报

郑广

2014-12-26 21:46:42
posedge 和 negedge  本身就是类似边沿检测的功能
举报

1

2015-1-18 10:24:48
规范设计时,还得用时钟采样打拍
举报

风魔小象

2015-1-18 21:03:57
学习学习
举报

闵祥涛

2015-1-23 22:14:24
受教育了。
举报

风魔小象

2015-1-23 22:22:25
常用的方法,哈哈
举报

更多回帖

发帖
×
20
完善资料,
赚取积分