使用ISE创建IP核(以加法器的IP核建立为例)

举报
李锐博恩 发表于 2021/07/15 08:03:18 2021/07/15
【摘要】 IP核介绍: IP(知识产权)核将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等做成一个“黑盒”或者可修改参数的模块,供设计者使用。IP核包括硬IP与软IP。调用IP核能避免重复劳动,大大减轻设计人员的工作量。 IP Core生成器(Core Generator)是Xilinx FPGA设计中的一个重要设计工具,提供了大量成熟的、高效的...

IP核介绍:

IP(知识产权)核将一些在数字电路中常用但比较复杂的功能块,如FIR滤波器,SDRAM控制器,PCI接口等做成一个“黑盒”或者可修改参数的模块,供设计者使用。IP核包括硬IP与软IP。调用IP核能避免重复劳动,大大减轻设计人员的工作量。

IP Core生成器(Core Generator)是Xilinx FPGA设计中的一个重要设计工具,提供了大量成熟的、高效的IP Core为用户所用,涵盖了汽车工业、基本单元、通信和网络、数字信号处理、FPGA特点和设计、数学函数、记忆和存储单元、标准总线接口等8大类,从简单的基本设计模块到复杂的处理器一应俱全。配合Xilinx网站的IP中心使用,能够大幅度减轻设计人员的工作量,提高设计可靠性。 

Core Generator最重要的配置文件的后缀是.xco,既可以是输出文件又可以是输入文件,包含了当前工程的属性和IP Core的参数信息。 

下面介绍在ISE中新建IP类型的源文件来启动Core Generator的方法:

1)在ISE Project Navigator新建工程,在工程管理区单击鼠标右键,在弹出的菜单中选择New Source,选中IP类型,在File Name文本框中输入adder(注意:该名字不能出现英文的大写字母),然后点击Next按键,进入IP Core目录分类页面,如下图示:



点击Next,以加法器模块为例介绍,找到并选中Math Funcation  Adder & Subtracter  Adder Subtracter v11.0,如下图:


点击Next,进入Summary界面,点击Finish,弹出一个Adder Subtracter 配置界面,如下图:


配置信息如上,根据自己的需求进行配置,配置完成后点击Generate,若在工程管理区出现一个“adder.xco”的文件。这样加法器的IP Core已经生成并成功调用。

如下图示单击adder.xco,双击View HDL Instatiation Template,即可复制,在Verilog HDL中例化adder IP核。



实例解析:

例:调用加法器的IP core,并用其实现图4-15所示的2级加法树。


按照上述方法,产生两个IP核,adder16和adder17,在verilog HDL源程序中例化即可实现上述加法树。其verilog HDL设计代码为:


  
  1. `timescale 1ns / 1ps
  2. //
  3. // Company:
  4. // Engineer:
  5. //
  6. // Create Date: 18:31:11 05/28/2018
  7. // Design Name:
  8. // Module Name: adder_2
  9. // Project Name:
  10. // Target Devices:
  11. // Tool versions:
  12. // Description:
  13. //
  14. // Dependencies:
  15. //
  16. // Revision:
  17. // Revision 0.01 - File Created
  18. // Additional Comments:
  19. //
  20. //
  21. module adder_2(
  22. input [15:0] a,
  23. input [15:0] b,
  24. input [15:0] c,
  25. input [15:0] d,
  26. input en,
  27. input clk,
  28. output [17:0] out
  29. );
  30. wire [16:0] out1, out2; //out1为a与b之和,out2是c与d之和
  31. adder16
  32. u1(
  33. .a(a),
  34. .b(b),
  35. .clk(clk),
  36. .ce(en),
  37. .s(out1)
  38. );
  39. adder16
  40. u2(
  41. .a(c),
  42. .b(d),
  43. .clk(clk),
  44. .ce(en),
  45. .s(out2)
  46. );
  47. adder17
  48. u3(
  49. .a(out1),
  50. .b(out2),
  51. .clk(clk),
  52. .ce(en),
  53. .s(out)
  54. );
  55. endmodule

RTL schematic为:




测试文件为:


  
  1. `timescale 1ns / 1ps
  2. // Company:
  3. // Engineer:
  4. //
  5. // Create Date: 18:50:40 05/28/2018
  6. // Design Name: adder_2
  7. // Module Name: F:/ISE_file/adder_IP/adder_2_tb.v
  8. // Project Name: adder_IP
  9. // Target Device:
  10. // Tool versions:
  11. // Description:
  12. //
  13. // Verilog Test Fixture created by ISE for module: adder_2
  14. //
  15. // Dependencies:
  16. //
  17. // Revision:
  18. // Revision 0.01 - File Created
  19. // Additional Comments:
  20. //
  21. module adder_2_tb;
  22. // Inputs
  23. reg [15:0] a;
  24. reg [15:0] b;
  25. reg [15:0] c;
  26. reg [15:0] d;
  27. reg en;
  28. reg clk;
  29. // Outputs
  30. wire [17:0] out;
  31. // Instantiate the Unit Under Test (UUT)
  32. adder_2 uut (
  33. .a(a),
  34. .b(b),
  35. .c(c),
  36. .d(d),
  37. .en(en),
  38. .clk(clk),
  39. .out(out)
  40. );
  41. always
  42. begin
  43. #10 clk = ~clk;
  44. end
  45. initial begin
  46. // Initialize Inputs
  47. a = 0;
  48. b = 0;
  49. c = 0;
  50. d = 0;
  51. en = 0;
  52. clk = 0;
  53. // Wait 100 ns for global reset to finish
  54. #100;
  55. // Add stimulus here
  56. a = 15;
  57. b = 25;
  58. c = 45;
  59. d = 85;
  60. en = 1;
  61. end
  62. endmodule

仿真结果为:


(仿真结果是否有问题,有待确认)

参考地址

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/80484252

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。