你把这个工作想的太复杂了,其实你不论用那种方法做这个事情,计数器进行时间的计量,比较器确定到达预定的时间没,语言到硬件的编译结果的基本元件都是不会变化的,verilog中的function 也好,task也好只是为了简化设计语言的,学好verilog的前提条件是明白自己编写的程序编译器给出了怎样的编译结果,语言与硬件怎样的对应关系,就像你的这个问题,只要一个计数器加一个比较器就可以实现事情在状态机中:
staten_1:
t_cnt <= 0;
staten_2: //延时控制
t_cnt <= t_cnt +1;
if (t_cnt < NEED_TIME)
state <= staten_2;
else
stete <= staten_3;
staten_3: //延迟时间到
其他的解决方法很多,但都脱不开计数器加比较器的硬件实现
同意如下观点
你把这个工作想的太复杂了,其实你不论用那种方法做这个事情,计数器进行时间的计量,比较器确定到达预定的时间没,语言到硬件的编译结果的基本元件都是不会变化的,verilog中的function 也好,task也好只是为了简化设计语言的,学好verilog的前提条件是明白自己编写的程序编译器给出了怎样的编译结果,语言与硬件怎样的对应关系,就像你的这个问题,只要一个计数器加一个比较器就可以实现事情在状态机中:
staten_1:
t_cnt <= 0;
staten_2: //延时控制
t_cnt <= t_cnt +1;
if (t_cnt < NEED_TIME)
state <= staten_2;
else
stete <= staten_3;
staten_3: //延迟时间到