触发器仿真的问题
时间:10-02
整理:3721RD
点击:
对一个D触发器仿真:
如果同步端D在CK有效沿变化,Q端输出会延迟一个时钟周期。
如果我将D和CK同时延迟1ns后再接到D触发器上,Q却和输入D保持一致,请问这是什么原因?是同步的原因吗?
如果同步端D在CK有效沿变化,Q端输出会延迟一个时钟周期。
如果我将D和CK同时延迟1ns后再接到D触发器上,Q却和输入D保持一致,请问这是什么原因?是同步的原因吗?
贴出代码一看
可能跟你仿真的激励产生方法有关
TOP
- wire d_w, ck_w;
- BUFX3M buf1_i (.A(d_f), .Y(d_w)); // 1ns delay
- BUFX3M buf2_i (.A(ck_f), .Y(ck_w)); // 1ns delay
- ff ff_i (
- .d (d_w),
- .ck (ck_w),
- .q (q_f)
- );
TB
- reg ck;
- reg d;
- full u_full (
- .d_f (d),
- .ck_f (ck),
- .q_f (q)
- );
- initial
- begin
- ck = 0;
- end
- always #50 ck = ~ck;
- initial
- begin
- @(posedge ck) d <= 0;
- @(posedge ck) d <= 1;
- # 500 $finish;
- end
是在modelsim里面看的吗?
试试把ck比d延迟1ns看看结果有不同?
如果是在modelsim下,注意仿真时把vopt关掉
在VCS下
如果ck延迟d 1ns,ck和d经过buf后各自延迟1ns,输出和没有buf的情况应该一致吧?都在ck有效时采,不存在 在有效沿 采之前状态的数据还是之后的问题 吧?
FF的D端数据怎么能在时钟沿变化呢? setup和hold问题怎么处理?
vcs下不清楚
modelsim下,如果未关掉vopt选项,并且时钟和数据完全无相偏的话,仿真器的行为不可预计
lz可以在vcs下试验下,是否存在相同的问题?