关于 触发器 always 延时的问题
时间:10-02
整理:3721RD
点击:
被一个问题困死在 实验室。笨的我诶。
求问
always@(posedge clk)
ld_<r=#1 ld;
这种 触发器赋值的语句是怎么延时的呢?
就是ld的值 要在下个周期赋值给 ld_r 呢?
是不是 因为 写的测试代码的问题?
因为有的时候写的同样的代码 触发器赋值是延时的了。有的时候又冒得延时?
想不通啊想不通。
求高人 指点啊,求高人指点。
求问
always@(posedge clk)
ld_<r=#1 ld;
这种 触发器赋值的语句是怎么延时的呢?
就是ld的值 要在下个周期赋值给 ld_r 呢?
是不是 因为 写的测试代码的问题?
因为有的时候写的同样的代码 触发器赋值是延时的了。有的时候又冒得延时?
想不通啊想不通。
求高人 指点啊,求高人指点。
#1的东西是不可综合的,如果在电路级是不可能实现延时的,一般都是用在仿真中,就是行为级上有这个操作,但是寄存器或者门级就没有。不知道你说的有时候有,有时候没有的情况分别是什么时候。
回去好好看看书
always@(posedge clk)
ld_<r=#1 ld;
这句话,在clk上升沿的时候采样ld的值,然后延迟1个时间单位后,赋值给ld_r
二楼总结的好。
关于你问的有时延时有时没有延时,可能跟你仿真时候加的跟delay相关的option有关吧。
建议好好看书,好好看tool的user manual
方便仿真debug
综合会被忽略
一般延时都是通过寄存器来完成的,无法直接综合的
加个中间变量
同意四楼
二楼和四楼正解。事实上,这种延迟的写法在电路的功能实现上一点用处都没有,只是有的时候在验证中要看做过了多少条语句,或者说走过了多少个寄存器才设置的这个时间。完全是为验证服务的。
