Verilog综合时延迟#用不了了,如何解决 50
我想实现这样一个东西。就是每当a变化时,a的值会延迟一段时间再赋值给b,求各位大神如何实现啊~~,我们用的板子产生的是50Mhz的wirea;regb;always@(a...
我想实现这样一个东西。就是每当a变化时,a的值会延迟一段时间再赋值给b,求各位大神如何实现啊~~,我们用的板子产生的是50Mhz的
wire a;
reg b;
always @ (a)
begin
#100000
b=a;
end 展开
wire a;
reg b;
always @ (a)
begin
#100000
b=a;
end 展开
3个回答
2014-03-25
展开全部
需要定义一个计数器,以下代码供参考
reg [7:0] a_buf;
always @ (posedge clk or negedge rst_n)
if(!rst_n)
a_buf <= 8'b0;
else
a_buf <= a;
always @ (posedge clk or negedge rst_n)
if(!rst_n)
cnt <= 20'b0;
else if (cnt >= 20'd100000)
cnt <= 20'b0;
else if (a_buf != a)
cnt <= 20'b1;
else if (cnt >= 20'b1)
cnt <= cnt + 1'b1;
always @ (posedge clk or negedge rst_n)
if(!rst_n)
b <= 8'b0;
else if (cnt == 20'd100000)
b <= a;
reg [7:0] a_buf;
always @ (posedge clk or negedge rst_n)
if(!rst_n)
a_buf <= 8'b0;
else
a_buf <= a;
always @ (posedge clk or negedge rst_n)
if(!rst_n)
cnt <= 20'b0;
else if (cnt >= 20'd100000)
cnt <= 20'b0;
else if (a_buf != a)
cnt <= 20'b1;
else if (cnt >= 20'b1)
cnt <= cnt + 1'b1;
always @ (posedge clk or negedge rst_n)
if(!rst_n)
b <= 8'b0;
else if (cnt == 20'd100000)
b <= a;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#这个只能仿真用的,要定时的话,设计一个定时器吧。
追问
定时器不是要时钟输入吗?那么always里怎么写啊?
追答
always里可以调用task或function。具体用法看书吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询