在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2061|回复: 0

[讨论] Active-HDL 是前仿真吗?

[复制链接]
发表于 2013-5-17 11:07:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
写了一个程序,代码如下:




  1. //在两个进程中进行阻塞赋值,观察时候有先后顺序;并观察testbench的结果,以判断testbench是前仿还是后仿
  2. module test9(clk,rst,in,temp,out);
  3. input clk,rst;
  4. input [1:0] in;
  5. output reg [1:0] out;
  6. output reg [1:0] temp;

  7. always @(posedge clk or negedge rst)
  8.         if(!rst)
  9.                 temp=in;
  10.                 else
  11.                 temp=temp+1;

  12. always @(posedge clk or negedge rst)
  13.         if(!rst)
  14.                 out=0;
  15.                 else
  16.                 out=temp;
  17. endmodule


复制代码



经过综合,RTL图如下:
捕获.JPG

可见out和temp的赋值是同时进行的,没有先后顺序,若使用非阻塞型的赋值,情况也是如此;

用Active-HDL的testbench进行仿真,代码如下:




  1. //-----------------------------------------------------------------------------
  2. //
  3. // Title       : test9_1
  4. // Design      : test9
  5. // Author      :
  6. // Company     :
  7. //
  8. //-----------------------------------------------------------------------------
  9. //
  10. // File        : test9_1.v
  11. // Generated   : Fri May 17 10:59:29 2013
  12. // From        : interface description file
  13. // By          : Itf2Vhdl ver. 1.22
  14. //
  15. //-----------------------------------------------------------------------------
  16. //
  17. // Description :
  18. //
  19. //-----------------------------------------------------------------------------
  20. `timescale 1 ns / 1 ps

  21. //{{ Section below this comment is automatically maintained
  22. //   and may be overwritten
  23. //{module {test9_1}}
  24. module test9_1 ();
  25. //}} End of automatically maintained section

  26. // -- Enter your statements here -- //
  27. reg clk,rst;

  28. reg [1:0] in;
  29. wire [1:0] out,temp;

  30. initial
  31.         begin
  32.         rst=1;
  33.         #10 rst=0;
  34.         #10 rst=1;
  35. end                       

  36. initial
  37.         clk=0;

  38. always
  39.         #5 clk=~clk;       

  40. initial
  41.         in=0;  

  42.        
  43. test9 cc(clk,rst,in,temp,out);       
  44. endmodule


  45. //在两个进程中进行阻塞赋值,观察时候有先后顺序;并观察testbench的结果,以判断testbench是前仿还是后仿
  46. module test9(clk,rst,in,temp,out);
  47. input clk,rst;
  48. input [1:0] in;
  49. output reg [1:0] out;
  50. output reg [1:0] temp;

  51. always @(posedge clk or negedge rst)
  52.         if(!rst)
  53.                 temp=in;
  54.                 else
  55.                 temp=temp+1;

  56. always @(posedge clk or negedge rst)
  57.         if(!rst)
  58.                 out=0;
  59.                 else
  60.                 out=temp;
  61. endmodule


复制代码



仿真结果时序图如下:
捕获.JPG

out和temp是同步进行输出,所以我判断改仿真为前仿真,没有考虑D触发器的计算时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-23 13:03 , Processed in 0.030607 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表