我正在尝试用verilog写一个可合成的代码,其中我需要包含几秒钟的时间延迟。我已经使用#delay进行了模拟,但这对于synthesizer来说是不能接受的。
在综合FSM的过程中,状态的改变不是基于某种条件,而是经过几秒钟的时延,我希望采用上述的时延方法。FSM必须在4秒后将状态从state_1切换到state_2,在2秒后从state_2切换到state_3,依此类推。
发布于 2013-07-01 12:52:01
对于在一段时间延迟后切换状态,我希望这段代码能有所帮助。
current_state=state_1;
for(i=0;i<=timedelay*freq;i=i+1)
@posedge;
current_state=state_2;
发布于 2013-06-28 18:16:06
如果您知道您的时钟频率是x Hz,并且您想等待y秒,那么只需使用计数器并等待,直到您达到数字x*y。
例如,对于1 1kHz的时钟和3秒的延迟,该代码将在该时间延迟之后触发do_something。
`define CLOCK_FREQ 1000
`define TIME_DELAY 3
reg [31:0] count=0;
assign do_something = (count==`CLOCK_FREQ*`TIME_DELAY);
always @(posedge clk)
begin
count <= count + 1'b1;
endhttps://stackoverflow.com/questions/17361606
复制相似问题