我想实现这样一个东西。就是每当a变化时,a的值会延迟一段时间再赋值给b,求各位大神如何实现啊~~,我们用的板子产生的是50Mhz的
wire a;
reg b;
always @ (a)
begin
#100000
b=a;
end
Verilog综合时延迟#用不了了,如何解决
答案:3 悬赏:0 手机版
解决时间 2021-04-07 04:56
- 提问者网友:喧嚣尘世
- 2021-04-06 12:02
最佳答案
- 五星知识达人网友:独钓一江月
- 2021-04-06 13:29
这个简单,你在always里面加一个计数过程,计数到10000时把a的值赋给b。。
还有你这个程序这么写是很不好的,没有时钟啊。。一般都在时钟的变化沿来控制其他变量变化的。。你的输入端口肯定要有个clk,然后用ucf约束到对应的板子的50Mhz的时钟引脚上。。不然怎么下板子
还有你这个程序这么写是很不好的,没有时钟啊。。一般都在时钟的变化沿来控制其他变量变化的。。你的输入端口肯定要有个clk,然后用ucf约束到对应的板子的50Mhz的时钟引脚上。。不然怎么下板子
全部回答
- 1楼网友:迟山
- 2021-04-06 14:39
#这个只能仿真用的,要定时的话,设计一个定时器吧。
再看看别人怎么说的。
- 2楼网友:孤独的牧羊人
- 2021-04-06 14:28
需要定义一个计数器,以下代码供参考
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;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯