请教:用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 [/ 关键是busy的第一个上升沿到来之前的低电平不用计数,要不会影响其他信号。 先定义一个两位的移位寄存器,每个时钟来之后让busy信号在此移位寄存器移位,当次寄存器中的数为10时 楼上的方法不错
8楼的不错 8楼的说得不错,, 可以对下降沿信号delay一拍,然后做个标志找下降沿,就可以了吧
是呀,lz好好看看书吧
问题已经解决,多谢各位热心回答。
便检测到busy的下降沿了,这样就可以开始记述了!
Busy,Busy_d
定义一个延迟信号(寄存器敲一拍)
busy_pos = busy && ~busy_d;
busy_neg =~ busy && busy_d;
