微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教:用verilog实现在一个信号的下降沿之后开始计数

请教:用verilog实现在一个信号的下降沿之后开始计数

时间:10-02 整理:3721RD 点击:

请教:怎么用verilog实现在一个信号的下降沿之后开始计数。
            --    --    --    --    --    --    --    --
           |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
clk  -----    --    --    --    --    --    --    --    ------

               ---------------                           --------
              |                  |                        |
busy -----                     --------------------
如图:在busy信号下降沿到来之后,对其低电平进行计数。

@(negedge clk)
    cnt <= cnt + 1;
不行吗?

不是在时钟信号下降沿计数,而是对时钟信号控制的另外一个信号的下降沿到来之后计数

reg [7:0] cnt;
always @(posedge clk)
  if(busy)
    cnt <= 'b0;
else
    cnt <= cnt + 1'b1;

描述的还是不够清楚
busy低电平到高电平后,计数是清零啊,还是停止啊?

5# bjtu_glh [/
是呀,lz好好看看书吧

关键是busy的第一个上升沿到来之前的低电平不用计数,要不会影响其他信号。
问题已经解决,多谢各位热心回答。

先定义一个两位的移位寄存器,每个时钟来之后让busy信号在此移位寄存器移位,当次寄存器中的数为10时
便检测到busy的下降沿了,这样就可以开始记述了!

楼上的方法不错

8楼的不错

8楼的说得不错,,
Busy,Busy_d
定义一个延迟信号(寄存器敲一拍)
busy_pos = busy && ~busy_d;
busy_neg =~ busy && busy_d;

可以对下降沿信号delay一拍,然后做个标志找下降沿,就可以了吧

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top