matrx2010 发表于 2011-11-13 13:20:38

EDK 调用ISE生成的IP

在EDK定制用户IP需要调用ISE生成的IP,在网上搜索了解决方案如下,
在ISE中封装HDL,并使用IP,设计分三大步:
第一步:像通常建立工程设计一样,先编写一个模块,如:
module add(a,b,c)
   Input a,b;
   output
   assign c=a+b;
endmodule

设置综合选项,综合过程中不能加入IO buf和iob(考虑到跟外部模块接口问题):

在综合设置中,-iobuf不要勾选,-iob选 NO,综合,生成网表add.ngc;

第二步:制作一个blackbox模块(就是一个IP的wrapper封装设计),如下:
   module add(a,b,c)
   input a,b;
   output
endmodule
只申明端口。
第三步:使用此IP,需要先把第二步的blackbox以v文件形式加入到工程,再调用这个模块,再把add.ngc文件加入到工程文件夹下即可(注意此过程在综合实现时候,要把第一步的两个选项选上)。

按照以上的步骤建立工程,然后在modelsim测试发现输出C一直是高阻态,感觉像是第一步生成的网表没有加进去,斑竹知道这里面哪一步有问题吗
testbench.v
module testbench;

    // Inputs
    reg a;
    reg b;

    // Outputs
    wire c;

    // Instantiate the Unit Under Test (UUT)
    ip_test uut (
      .a(a),
      .b(b),
      .c(c)
    );

    initial begin
      // Initialize Inputs
      a = 0;
      b = 0;

      // Wait 100 ns for global reset to finish
      #10 a=1;
            b=0;
       #20 a=1;
            b=1;
      #30 a=0;
          b=1;
      #200 $stop;            
      
      // Add stimulus here

    end
      
endmodule
http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_694752XUO9CU.png
(原文件名:QQ截图20111113131821.png)

matrx2010 发表于 2011-11-13 13:21:45

希望各位大侠不吝指教

matrx2010 发表于 2011-11-13 15:21:41

我将上面的程序下载到板子发现是正确的,不知道怎么解释,难道调用的IP不能用modelsim仿真……
页: [1]
查看完整版本: EDK 调用ISE生成的IP