Vivado IP核打包指南:详细教程带你轻松创建自定义IP核
FPGA技术联盟 2023-07-21

写在前面

模块复用是逻辑设计人员必须掌握的一个基本功,通过将成熟模块打包成IP核,可实现重复利用,避免重复造轮子,大幅提高我们的开发效率。 接下来将之前设计的串口接收模块和串口发送模块打包成IP核,再分别调用这两个IP核,构成串口接收--发送循回,依次验证IP核打包及调用是否成功。需要的工具: Vivado版本:Vivado 2019.2

打包

1、首先打开发送模块的VIVADO工程,确保其编译无误(最好进行仿真验证、上板验证保证其功能正确性),如下:

2、点击Tools-----create and package new ip

3、点击Next

4、选择选项1,点击Next,各选项含义:

  • 1---将当前工程打包为IP核

  • 2----将当前工程的模块设计打包为IP核

  • 3----将一个特定的文件夹目录打包为IP核

  • 4----创建一个带AXI接口的IP核

    5、选择IP存放路径,建议专门建一个文件夹来管理所有建立的IP核,然后点击Next

    6、点击OK,然后点击NEXT,会自动创建一个新工程,用来生成IP核

    7、新生成的IP核打包工程如下:

在右边的界面可以配置一系列参数:Identification:主要是一系列信息,如IP名字,开发者、版本号等。因为本文仅作示范,所以我这边所有信息都没改compatibility:兼容的系列,这里根据自己需求添加所需要的系列芯片就好了。我这边保持默认file groups:IP核的文件架构,可以添加或删除文件。比如添加仿真文件、例化文件,说明文件等。我这边保持默认Customization Parameters:定制化参数。可对参数进行自己的配置,如参数名称啊,类型啊,自定义区间,可选列表等。

点击BPS----edit parameter,对参数进行配置(该参数为串口模块的波特率)

将格式Format改为long类型,再勾上Specify Range,Type改成List of values,再添加3个参数(仅作示范)--4800、9600、115200。再将默认值Default value改为9600。这样就将该参数配置成了可选参数,默认9600,可选值:4800、9600、115200。

再使用同样的方法将参数CLK_FRE(模块时钟频率)改为long类型,默认50000000.

Ports and Interfaces:这里展示了IP的接口,可根据需求添加、删除接口或者总线。

需要说明的是,这里很容易报警告:

这个警告是因为IP核打包器在设计中推断出了时钟端口或是复位端口。例如:如果信号名称包含以下任何一种:[ ]clk,[ ]clkin, [ ]clock[ ], [ ]aclk 或 [ ]aclkin,那么IP打包器就会为将其判断成为时钟接口。

被自动判断出的接口,IP打包器会倾向于认为你使用AXI接口来处理这个信号,因为IP打包器工具主要是针对于AXI接口。所以如果你的IP中并不使用AXI总线,这两条警告可以直接忽略,在实际的IP中不会有任何的影响。

Addressing and Memory:地址分配和储存映射。本设计用不到,直接跳过,感兴趣的可以看XILINX的手册UG1118。

Customization GUI:参数设置的GUI界面。可以对以后配置IP核的界面做一个修改。可以看到,红框内的参数都是我设置好的默认值。

Review and Package:IP核总览及生成界面。点击Package IP完成IP打包

IP核成功打包,如下:

打包串口接收模块uart_rx

使用同样的方法把串口接收模块也打包成IP。

调用

接下来分别调用这两个IP核,构成串口接收--发送循回,依次验证IP核打包及调用是否成功。

首先新建一个工程,点击Settings----IP----Repository, 添加IP核所在路径:

点击 create block design,新建一个BD模块,建议名称与项目名称一致。

在BD编辑窗口添加IP,搜uart就出现了我们打包的两个IP核:

分别添加串口发送模块和串口接收模块:

把对外的四个端口(clk,rst,txd,rxd)引出来,右击sys_clk,点击make external ,其他三个端口操作一致;再把对应的线连接,然后点击regenerate layout:

这里我们的 Block Design 就设计完成了,在 Diagram 窗口空白处右击,然后选择“Validate Design” 验证设计。验证完成后弹出对话框提示“Validation Successful”表明设计无误,点击“OK”确认。最后按 快捷键“Ctrl+S”保存设计。

接下来在 Source 窗口中右键点击 Block Design 设计文件“system.bd”,然后依次执行“Generate Output Products”和“Create HDL Wrapper”。

然后添加管脚约束,生成bit流文件。

返回设计阶段,点击IP核框图,将波特率改为115200,如下:

IP打包彻底完成。


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • EDA
  • 仿真
  • CAD
  • 芯片
  • 如何选择全定制与半定制ASIC设计

    ASIC分为全定制和半定制。全定制设计需要设计者完成所有电路的设计,因此需要大量人力物力,灵活性好但开发效率低下。如果设计较为理想,全定制能够比半定制的ASIC芯片运行速度更快。半定制使用库里的标准逻辑单元(...

    09-12
  • IGMPv2的组播路由器选举机制的优势是什么?

    IGMPv2 igmp版本2对版本1所做的改进主要有:(1)共享网段上组播路由器的选举机制共享网段表示一个网段上有多个组播路由器的情况。在这种情况下,由于此网段上运行igmp的路由器都能从主机那里收到成员资格报告消息,...

    09-12
  • 物理地址在不同计算机体系中的表现如何?

    在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对地址。 地址从0开始编号,顺序地每次加1,因此存储器的...

    09-12
  • 假芯片对电子行业的影响分析

    芯片的重要性不言而喻,可以说,一切智能电子设备都离不开芯片。但是,由于目前芯片相对短缺,因此市场上出现了部分假芯片。为增进大家对芯片的认识,本文将对假芯片的相关内容予以介绍。如果你对芯片具有兴趣,不...

    09-12
  • 语音芯片在儿童玩具中的创新使用

    芯片是一种非常重要的电子器件,可以说,芯片制作能力强的企业或者国家都占据着重要地位。为增进大家对芯片的认识,本文将对语音芯片的应用范围、语音芯片的选择予以介绍。如果你对语音芯片具有兴趣,不妨继续往下...

    09-12
  • 语音芯片在日常生活中的应用有哪些?

    芯片在诸多产品中都有所应用,如手机处理器芯片、蓝牙芯片、AI芯片等等。虽然我们可能对芯片的底层知识并不了解,但是对于芯片的作用,还总是能说出个一二三。为增进大家对芯片的认识,本文将对语音芯片如何录音、...

    09-04
  • 压力变送器的常见故障及解决方案是什么?

    压力变送器在工业环境中具有重要应用,对于压力变送器,电气等专业的朋友相对更为熟悉。为增进大家对压力变送器的认识,本文将基于两点介绍压力变送器:1、压力变送器的日常维护,2、压力变送器如何校准。如果你对...

    09-04
  • 电子元器件散热方法的常见误区

    元器件是电子领域的基本元件,很多重要的设备都是通过元器件构建起来的。为增进大家对电子元器件的认识,本文将对元器件的几种常见的散热方法予以详细介绍。如果你对元器件具有兴趣,不妨和小编一起来继续往下阅读...

    08-26
  • 熔断器与断路器的选择性比较

    熔断器和断路器在主要性能方面存在一些差异,为了更好选择和使用熔断器和断路器,下面针对熔断器和断路器的主要性能进行对比。

    08-13
  • MATLAB仿真RLC电路基础教程

    本文演示如何用MATLAB进行电路仿真,测量RLC电路的电压。我用的是R2014a,不同版本软件界面

    08-09
  • 分析一个共集电极放大电路

    仿真前仿真中示波器波形图双击示波器图标,调节X轴扫描为500μS/Div,A、B通道Y轴幅度均为1V/Div。

    07-25
下载排行榜
更多
评测报告
更多
广告