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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4100|回复: 2

[原创] vivado仿真功能有bug???仿真结果与ISE和modelsim不一致

[复制链接]
发表于 2016-7-19 21:49:00 | 显示全部楼层 |阅读模式

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

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

x
ISE或modelsim的行为仿真时序图:
counter_ise_or_modelsim.png
vivado2014/vivado2016的行为仿真时序图:
counter_vivado2014_2016.png
counter源码:





  1. `timescale 1ns / 1ps

  2. module counter(
  3.     input clk,
  4.     input rst,
  5.     input enable,
  6.     output [7:0] count
  7.     );

  8. reg [7:0] count_r;
  9. assign count = count_r;

  10. always@(posedge clk)
  11.     if(rst)
  12.         count_r <= 8'd0;
  13.     else begin
  14.         if(enable) begin
  15.             if(count_r < 8'd203)
  16.                 count_r <= count_r + 1'b1;
  17.             else
  18.                 count_r <= 8'd0;   
  19.         end
  20.     end
  21. endmodule


复制代码


techbench源码:




  1. module counter_tb();

  2. reg clk;
  3. reg reset;
  4. reg enable;
  5. wire [7:0] count;

  6. counter uut (
  7.         .clk(clk),
  8.         .rst(reset),
  9.         .enable(enable),
  10.         .count(count)
  11.     );

  12. initial begin
  13.         // Initialize Inputs
  14.         clk = 0;
  15.         reset = 1;
  16.         enable = 0;
  17.         // Wait 100 ns for global reset to finish
  18.         #100;
  19.         reset = 0;
  20.         @(posedge clk);
  21.         @(posedge clk);
  22.         @(posedge clk);
  23.         @(posedge clk);
  24.         @(posedge clk);
  25.         @(posedge clk);
  26.         @(posedge clk);
  27.         enable = 1'b1;
  28.         @(posedge clk);
  29.         @(posedge clk);
  30.         @(posedge clk);
  31.         @(posedge clk);
  32.         enable = 1'b0;
  33.         @(posedge clk);
  34.         @(posedge clk);
  35.         @(posedge clk);
  36.         @(posedge clk);
  37.         enable = 1'b1;
  38.         @(posedge clk);
  39.         @(posedge clk);
  40.         @(posedge clk);
  41.         @(posedge clk);
  42.         #100;
  43.        $finish;
  44.         // Add stimulus here
  45. end   

  46. always #5 clk = ~clk;
  47.    
  48. endmodule


复制代码
发表于 2016-7-20 09:00:55 | 显示全部楼层
TESTBENCH在产生ENABLE信号时给个单位延迟试试
 楼主| 发表于 2016-7-20 16:59:40 | 显示全部楼层
回复 2# huster


   这个问题解决了,就是在enable 前加一个单位延迟,谢谢啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-25 02:18 , Processed in 0.021367 second(s), 10 queries , Gzip On, Redis On.

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