微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > vivado仿真功能有bug?仿真结果与ISE和modelsim不一致

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

时间:10-02 整理:3721RD 点击:
ISE或modelsim的行为仿真时序图:



vivado2014/vivado2016的行为仿真时序图:



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

复制代码

TESTBENCH在产生ENABLE信号时给个单位延迟试试



   这个问题解决了,就是在enable 前加一个单位延迟,谢谢啊。

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

网站地图

Top