微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 调用Xilinx 的乘累加器IP核,然后进行仿真,得到的波形与预期的不一样,如何解决?

调用Xilinx 的乘累加器IP核,然后进行仿真,得到的波形与预期的不一样,如何解决?

时间:10-02 整理:3721RD 点击:

在ISE 14.7中定制了一个乘累加器,对其进行了例化,然后利用ISim进行仿真测试以实现乘累加的操作,结果输出端s的仿真波形不是预期的效果:


仿真时出现了一个警告:

WARNING:HDLCompiler:687 -"d:/Xilinx/14.7/ISE_DS/ISE//verilog/src/glbl.v" Line 5: Illegal redeclaration of module <glbl>.


不知道是不是这个警告导致的问题,还是测试模块编写有问题?本人刚刚开始学习FPGA编程,这个问题已经困扰了两周了,若是有哪位大神知道如何得到正确的仿真波形请帮帮忙,非常感谢!


源程序:

moduleMultAcc(clk,ce,sclr,bypass,subtract,a,b,s);

  input clk;

  input ce;

  input sclr;

  input bypass;

  input subtract;

  input [7:0] a;

  input [7:0] b;

  output [15:0] s;


  MultAccum MultAcc (

.clk(clk),

.ce(ce),

.sclr(sclr),

    .bypass(bypass),

    .subtract(subtract),

    .a(a),

    .b(b),

.s(s)

  );


Endmodule


测试代码:

moduleMultAcc_tb;


       // Inputs

       reg clk;

       reg ce;

       reg sclr;

       reg bypass;

       reg subtract;

       reg [7:0] a;

       reg [7:0] b;


       // Outputs

       wire [15:0] s;


       // Instantiate the Unit Under Test (UUT)

       MultAcc myMultAcc (

              .clk(clk),

              .ce(ce),

              .sclr(sclr),

              .bypass(bypass),

              .subtract(subtract),

              .a(a),

              .b(b),

              .s(s)

       );


       initial begin

              // Initialize Inputs

              clk = 0;

              ce = 0;

              sclr = 0;

              bypass = 0;

              subtract = 0;

              a = -8'b1010;

              b = -8'b101;


          #10 ce=1;

           #55bypass=1;

           #35bypass=0;

           #30sclr=1;

           #20sclr=0;

           #40subtract=1;

       end


       // Add stimulus here

       always #5 clk=~clk;

       always@(posedge clk)

              begin

               a=a+8'b10;b=b+8'b1;

              end

endmodule

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

网站地图

Top