首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在合成的verilog中包含时间延迟?

如何在合成的verilog中包含时间延迟?
EN

Stack Overflow用户
提问于 2013-06-28 17:34:13
回答 2查看 8.8K关注 0票数 2

我正在尝试用verilog写一个可合成的代码,其中我需要包含几秒钟的时间延迟。我已经使用#delay进行了模拟,但这对于synthesizer来说是不能接受的。

在综合FSM的过程中,状态的改变不是基于某种条件,而是经过几秒钟的时延,我希望采用上述的时延方法。FSM必须在4秒后将状态从state_1切换到state_2,在2秒后从state_2切换到state_3,依此类推。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-01 12:52:01

对于在一段时间延迟后切换状态,我希望这段代码能有所帮助。

current_state=state_1;

for(i=0;i<=timedelay*freq;i=i+1)

@posedge;

current_state=state_2;

票数 2
EN

Stack Overflow用户

发布于 2013-06-28 18:16:06

如果您知道您的时钟频率是x Hz,并且您想等待y秒,那么只需使用计数器并等待,直到您达到数字x*y。

例如,对于1 1kHz的时钟和3秒的延迟,该代码将在该时间延迟之后触发do_something。

代码语言:javascript
复制
`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;
end
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17361606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档