0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

教你打包一个自己的Vivado IP核

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-16 16:21 次阅读

写在前面
模块复用是逻辑设计人员必须掌握的一个基本功,通过将成熟模块打包成IP核,可实现重复利用,避免重复造轮子,大幅提高我们的开发效率。

接下来将之前设计的串口接收模块和串口发送模块打包成IP核,再分别调用这两个IP核,构成串口接收--发送循回,依次验证IP核打包及调用是否成功。

源码在这:串口(UART)的FPGA实现
Vivado版本:Vivado 2019.2
开发板:xc7a35tfgg484-2

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

pYYBAGIMo_yABsTrAAMHlQrWHB4743.png

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

pYYBAGIMpACAWISXAAMBQAPDSzQ092.png

3、点击Next

poYBAGIMpAWAPR_1AAD9jNhcBfw163.png

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

1---将当前工程打包为IP核
2----将当前工程的模块设计打包为IP核
3----将一个特定的文件夹目录打包为IP核
4----创建一个带AXI接口的IP核

pYYBAGIMpAaAB45PAAEqFIqEUzE531.png

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

pYYBAGIMpAiAV82jAACNaOVmEtw253.png

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

poYBAGIMpAqAdgdcAABWNls8zrM557.png

pYYBAGIMpAyAMlAnAAECdtH1svM113.png

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

poYBAGIMpA-AbvvmAAMt5Lrk1r4613.png

在右边的界面可以配置一系列参数

Identification:主要是一系列信息,如IP名字,开发者、版本号等。因为本文仅作示范,所以我这边所有信息都没改

compatibility:兼容的系列,这里根据自己需求添加所需要的系列芯片就好了。我这边保持默认

file groups:IP核的文件架构,可以添加或删除文件。比如添加仿真文件、例化文件,说明文件等。我这边保持默认

Customization Parameters:定制化参数。可对参数进行自己的配置,如参数名称啊,类型啊,自定义区间,可选列表等。

poYBAGIMpBGAV_3iAADLTjk43Ak600.png

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

pYYBAGIMpBOAMp8zAADz-DjP5Dk836.png

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

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

pYYBAGIMpBWAf6IWAADDZbwsRHk284.png

pYYBAGIMpBeAASzUAADAdXjhvpc930.png

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

poYBAGIMpBqAVHwLAADGsXDuKJY836.png

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

poYBAGIMpByAVN96AADVip-X2Bo219.png

这个警告是因为IP核打包器在设计中推断出了时钟端口或是复位端口。例如:如果信号名称包含以下任何一种:[ ]clk,[ ]clkin, [ ]clock[ ], [ ]aclk 或 [ ]aclkin,那么IP打包器就会为将其判断成为时钟接口。被自动判断出的接口,IP打包器会倾向于认为你使用AXI接口来处理这个信号,因为IP打包器工具主要是针对于AXI接口。所以如果你的IP中并不使用AXI总线,这两条警告可以直接忽略,在实际的IP中不会有任何的影响。

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

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

pYYBAGIMpB6AGuo0AADNicZ4bY8834.png

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

poYBAGIMpCGASAbKAADJCoYaKPM740.png

IP核成功打包,如下:

pYYBAGIMpCKAMgy7AABCLqYzQuE836.png

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

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

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

poYBAGIMpCWAPBbYAADnM0_GBRA751.png

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

poYBAGIMpCeAF31_AACZtKO5_hU045.png

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

pYYBAGIMpCmAMujaAACdJivCH-Y898.png

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

pYYBAGIMpCyAGXefAACtd6YcwbU890.png

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

pYYBAGIMpC-AIkTnAAC89O6UruY167.png

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

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

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

测试
下载bit流文件,使用串口调试助手发送一包数据给FPGA,理论上FPGA马上回相同的信息给串口调试助手(此时串口波特率9600):

pYYBAGIMpDKAPPtpAACk8dKg9yQ410.png

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

poYBAGIMpDOAEBBxAAB3-PzuGh4305.png

重新生成并下载bit流文件,使用串口调试助手发送一包数据给FPGA,理论上FPGA马上回相同的信息给串口调试助手(此时串口波特率115200):

pYYBAGIMpDaASCZ5AACj6FlWebA200.png

参考资料
UG1118----Creating and Packaging Custom IP

米联客----XILINX 7 系列 FPGA 基础入门

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IP核
    +关注

    关注

    4

    文章

    317

    浏览量

    49041
  • Vivado
    +关注

    关注

    18

    文章

    790

    浏览量

    65099
收藏 人收藏

    评论

    相关推荐

    Vivado 使用Simulink设计FIR滤波器

    vivado工程 System Generator提供了几种导入方法: 1、直接生成hdl网表文件。 生成的.v或.vhd文件直接例化dsp的IP,用户可直接将代码文件添加至
    发表于 04-17 17:29

    FPGA实现基于Vivado的BRAM IP核的使用

    文章是基于Vivado的 2017.1的版本,其他版本都大同小异。 首先在Vivado界面的右侧选择IP Catalog 选项。
    的头像 发表于 12-05 15:05 518次阅读

    FPGA新IP学习的正确打开方式

    的情况时,总会遇到些以前未曾接触过的新内容,这些新内容会让我们感到陌生和恐惧,不知道该如何下手。 那么今天以xilinx vivado 为例分享学习FPGA 新IP的正确打开方式
    发表于 11-17 11:09

    为什么说Vivado是基于IP的设计?

    Vivado是Xilinx公司2012年推出的新一代集成开发环境,它强调系统级的设计思想及以IP为核心的设计理念,突出IP核在数字系统设计中的作用。
    的头像 发表于 09-17 15:37 1146次阅读
    为什么说<b class='flag-5'>Vivado</b>是基于<b class='flag-5'>IP</b>的设计?

    Vivado设计套件用户指南:创建和打包自定义IP

    电子发烧友网站提供《Vivado设计套件用户指南:创建和打包自定义IP.pdf》资料免费下载
    发表于 09-13 14:54 0次下载
    <b class='flag-5'>Vivado</b>设计套件用户指南:创建和<b class='flag-5'>打包</b>自定义<b class='flag-5'>IP</b>

    Vivado Design Suite用户指南:创建和打包自定义IP

    电子发烧友网站提供《Vivado Design Suite用户指南:创建和打包自定义IP.pdf》资料免费下载
    发表于 09-13 11:34 0次下载
    <b class='flag-5'>Vivado</b> Design Suite用户指南:创建和<b class='flag-5'>打包</b>自定义<b class='flag-5'>IP</b>

    Vivado Design Suite用户指南:采用IP进行设计

    电子发烧友网站提供《Vivado Design Suite用户指南:采用IP进行设计.pdf》资料免费下载
    发表于 09-13 11:18 0次下载
    <b class='flag-5'>Vivado</b> Design Suite用户指南:采用<b class='flag-5'>IP</b>进行设计

    Vivado IP核Shared Logic选项配置

    在给Vivado中的一些IP核进行配置的时候,发现有Shared Logic这一项,这里以Tri Mode Ethernet MAC IP核为例,如图1所示。
    的头像 发表于 09-06 17:05 633次阅读
    <b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b>核Shared Logic选项配置

    Vivado中BRAM IP的配置方式和使用技巧

    FPGA开发中使用频率非常高的两个IP就是FIFO和BRAM,上一篇文章中已经详细介绍了Vivado FIFO IP,今天我们来聊一聊BRAM IP
    的头像 发表于 08-29 16:41 2994次阅读
    <b class='flag-5'>Vivado</b>中BRAM <b class='flag-5'>IP</b>的配置方式和使用技巧

    移植E203到非官方开发板,32.768KHz的时钟无法通过IP分频得出怎么处理?

    VIVADO 的官方IP最少分频出4MHz多,而32.768KHz太小了,难道只能自己写分频器吗? 谢谢。
    发表于 08-12 07:03

    如何在Vivado中配置FIFO IP

    Vivado IP核提供了强大的FIFO生成器,可以通过图形化配置快速生成FIFO IP核。
    的头像 发表于 08-07 15:36 1928次阅读
    如何在<b class='flag-5'>Vivado</b>中配置FIFO <b class='flag-5'>IP</b>核

    VCS独立仿真Vivado IP核的问题补充

    在仿真Vivado IP核时分两种情况,分为未使用SECURE IP核和使用了SECURE IP核。
    的头像 发表于 06-20 14:23 660次阅读
    VCS独立仿真<b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b>核的问题补充

    xilinx vivado调用cordic IP进行实现时报错多重驱动?

    vivado2019.2建立工程,工程中调用cordic IP进行atan求解,功能仿真时正常且满足要求;综合时正常;实现时报错提示多重驱动。 如果经cordic计算后的输出值不用于后续的操作
    发表于 06-06 17:17

    VCS独立仿真Vivado IP核的问题补充

    在仿真Vivado IP核时分两种情况,分为未使用SECURE IP核和使用了SECURE IP核。
    的头像 发表于 06-06 14:45 1274次阅读
    VCS独立仿真<b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b>核的问题补充

    VCS独立仿真Vivado IP核的一些方法总结

    最近,需要使用VCS仿真一个高速并串转换的Demo,其中需要用到Vivado的SelectIO IP核以及IDELAYCTRL,IDELAY2原语。而此前我只使用VCS仿真过Quartus的IP核。
    的头像 发表于 06-06 11:09 1729次阅读
    VCS独立仿真<b class='flag-5'>Vivado</b> <b class='flag-5'>IP</b>核的一些方法总结