微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 触发器仿真的问题

触发器仿真的问题

时间:10-02 整理:3721RD 点击:
对一个D触发器仿真:
如果同步端D在CK有效沿变化,Q端输出会延迟一个时钟周期。
如果我将D和CK同时延迟1ns后再接到D触发器上,Q却和输入D保持一致,请问这是什么原因?是同步的原因吗?

贴出代码一看
可能跟你仿真的激励产生方法有关

TOP

  1. wire d_w, ck_w;

  2. BUFX3M buf1_i (.A(d_f), .Y(d_w));       // 1ns delay
  3. BUFX3M buf2_i (.A(ck_f), .Y(ck_w));     // 1ns delay

  4. ff      ff_i (
  5. .d      (d_w),
  6. .ck     (ck_w),
  7. .q      (q_f)
  8. );

复制代码

TB

  1. reg ck;
  2. reg d;


  3. full    u_full  (
  4.         .d_f    (d),
  5.         .ck_f   (ck),
  6.         .q_f    (q)
  7. );

  8. initial
  9. begin
  10.         ck = 0;
  11. end

  12. always  #50         ck = ~ck;

  13. initial
  14. begin
  15.         @(posedge ck) d <= 0;
  16.         @(posedge ck) d <= 1;
  17.         # 500 $finish;
  18. 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下试验下,是否存在相同的问题?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top