VHDL代码疑问:out_1相对input_sig_1延迟1个时钟周期的原因咨询
VHDL代码时序问题解答
核心结论
延迟和input_sig_1是signal、input是port无关——port本质就是带方向属性的signal,两者的赋值行为完全一致。真正的原因是信号赋值的执行时机不同:
具体分析
并发赋值的即时性
代码中的input_sig_1 <= input;是一条并发赋值语句,只要input发生变化,input_sig_1会在当前仿真时刻立即更新,和input完全同步,没有任何时钟延迟。进程内赋值的时钟触发特性
out_1 <= input_sig_1;是在时钟上升沿触发的进程内部执行的赋值:- 只有当时钟上升沿到来时,才会将此刻
input_sig_1的当前值锁存到out_1中。 - 这相当于给
input_sig_1做了一级寄存器打拍,因此out_1的波形会比input_sig_1延迟一个时钟周期。
- 只有当时钟上升沿到来时,才会将此刻
input_sig_2的同步逻辑
input_sig_2 <= input;同样是在时钟上升沿时执行的赋值,所以input_sig_2也是input经过一级寄存器打拍后的结果。这就是为什么out_1和input_sig_2波形一致——两者都是原信号打一拍后的输出。
补充说明
如果想让out_1和input_sig_1同步,只需要把out_1 <= input_sig_1;改成并发赋值即可,不需要放在时钟进程里。
内容的提问来源于stack exchange,提问作者anor
相关产品推荐
相关产品推荐

