输入.延迟1拍
时间:10-02
整理:3721RD
点击:
做时序电路时,输入端口的input, 输入到D寄存器,D寄存器在上升沿时读取数据。
我想请教下各位,这时候实际系统中的输入数据,是在时钟上升沿来临之前就稳定了,这样就不会延迟1个时钟;还是在上升沿同时变化,这样就会延迟1个时钟。
我被这种延迟一拍的逻辑搞的头痛,因为我尝试用计数器来打拍控制其他的操作,但这种延迟一拍,让我感觉很混乱。
比如我想在cnt=1时,进行操作输出1时刻的data_in。但cnt=1时,由于输入延迟(?),此时输出的data_in,可能是之前一个时钟,0时刻的data_in。
下面的代码只是用来说明...
请各位帮忙解惑。对这种延迟一拍后,再对其他的逻辑进行控制,总感觉有问题。而且,cnt一开始直接就跳变成1了嘛。都不是从0开始的,要循环完一次,才再次从0开始。
我想请教下各位,这时候实际系统中的输入数据,是在时钟上升沿来临之前就稳定了,这样就不会延迟1个时钟;还是在上升沿同时变化,这样就会延迟1个时钟。
我被这种延迟一拍的逻辑搞的头痛,因为我尝试用计数器来打拍控制其他的操作,但这种延迟一拍,让我感觉很混乱。
比如我想在cnt=1时,进行操作输出1时刻的data_in。但cnt=1时,由于输入延迟(?),此时输出的data_in,可能是之前一个时钟,0时刻的data_in。
下面的代码只是用来说明...
- always@(posedge clk)
- begin
- cnt <= cnt + 1;
- end
- always@(cnt)
- begin
- case(cnt)
- 1 ...ouput data_in;
- 2 ...B;
- .....
- end
请各位帮忙解惑。对这种延迟一拍后,再对其他的逻辑进行控制,总感觉有问题。而且,cnt一开始直接就跳变成1了嘛。都不是从0开始的,要循环完一次,才再次从0开始。
在上升沿到来之前数据就已经准备好了
请问这是怎么实现的呢? 比如我要在testbench里面,在每个时钟上升沿前把数据准备好,应该怎么写?如果我有个全局复位,我手动在全局复位de-assert前一个时钟(时钟-1),输入有效数据,则在时钟0时,复位已经无效了,而时钟上升沿读取的则是稳定的、在时钟-1时输入的数据,是这样操作吗?提前一个时钟准备好数据?
顶一下。求助。
不需要设置,只要时序没有违背就可以
建议你在写代码前把你想要的时序画好,然后再写代码
