正像我之前所说的,较XPS的IP核而言,Vivado IP核在创建、打包、使用等各方面都更加简单便捷,同样的Vivado IP核抛弃了以往复杂的IP核文件组织模式,仅使用一个component.xml文件对IP核进行描述。

下面,我们就看一下这个component.xml如何替代*.mpd,*.pao等文件的。

1、IP文件夹

首先,打开一个IP核的文件夹,这里我挑的是用HLS生成的PWM IP核,其他IP核如,Vivado自带IP、Vivado打包的IP,也是类似的。

从上图中可以看出,文件和文件夹的命名都具有一定的自明性,基本上能看出来是什么作用。constraints存放的是约束文件、doc存放的是描述文档、drivers存放的是IP核的软件驱动程序、hdl存放的是IP核用到的hdl文件。压缩包是供Vivado的IP Catalog导入用的,Vivado自带IP和使用Vivado打包的IP貌似是没有这个压缩包的。有兴趣的话可以依次打开这些文件和文件夹,看看内容。

2、component.xml分析

在分析xml文件之前,先回归一下XPS中IP核的重要描述文件及其作用。

1) mpd(Microprocessor Peripheral Defination,外设定义)文件:mpd文件定义了该IP和外部互联的接口,以及需要外部指定的参数。

2) pao(Peripheral Analyze Order,外设分析顺序)文件,可以看出pao文件定义了需要综合的源文件以及使用什么样的顺序进行综合。

3) BBD(Black-Box Definition)文件,用来管理你用到的黑盒部分的硬件网表文件,指明了这些网标文件的存放位置。

4) hdl目录里面有所有的设计文件,包括.v和.vhd。

5) 其他,如doc目录

在Vivado中mpd、pao等描述文件消失了,但是对应的描述内容都放到了component.xml中,具体情况,看一下代码:

首先给出component.xml的整体结构图,从图中可以看出,2级节点有:

vendor、library、name、version、busInterfaces、memoryMaps、mode1、fileSets、description、parameters、vendorExtensions。

其中,vendor、library、name、version就是所谓的VLNV,是一个IP的ID,具有唯一性。

busInterfaces、parameters、model三个节点(有可能不止这三个)能够代替mpd文件。展开看一下:

busInterfaces,该节点描述IP和使用的总线所包含的信号,由于AXI-Lite总线信号较多,这里就不展开代码了。

parameters,该节点描述了IP核使用的参数

<spirit:parameters>  <spirit:parameter>        <spirit:name>C_S_AXI_PWM_IO_ADDR_WIDTH</spirit:name>        <spirit:displayName>Address width</spirit:displayName>      <spirit:value spirit:format="long"                spirit:resolve="user"                spirit:id="PARAM_VALUE.C_S_AXI_PWM_IO_ADDR_WIDTH"                spirit:order="2"             spirit:configGroups="1 S_AXI_PWM_IO_(AXI4Lite_Slave_Interface)"              spirit:minimum="5"               spirit:maximum="32">5</spirit:value>    </spirit:parameter>   <spirit:parameter>        <spirit:name>Component_Name</spirit:name>       <spirit:value spirit:resolve="user"               spirit:id="PARAM_VALUE.Component_Name"               spirit:order="1">pwm_v1_0</spirit:value>    </spirit:parameter></spirit:parameters>

model下描述某个端口的子节点,包括端口方向等属性

<spirit:port>    <spirit:name>out_r</spirit:name>    <spirit:wire>    <spirit:direction>out</spirit:direction>    <spirit:vector>          <spirit:left spirit:format="long"                       spirit:resolve="immediate">0</spirit:left>        <spirit:right spirit:format="long"                      spirit:resolve="immediate">0</spirit:right>    </spirit:vector>      <spirit:wireTypeDefs>        <spirit:wireTypeDef>                 <spirit:typeName>std_logic_vector</spirit:typeName>                 <spirit:viewNameRef>xilinx_verilogsynthesis</spirit:viewNameRef>                <spirit:viewNameRef>xilinx_verilogbehavioralsimulation</spirit:viewNameRef>          </spirit:wireTypeDef>      </spirit:wireTypeDefs> </spirit:wire></spirit:port>

fileSets节点:描述了各种情况下所用到的资源文件

综合时用到的文件:

<spirit:fileSet>  <spirit:name>xilinx_verilogsynthesis_view_fileset</spirit:name>     <spirit:file>            <spirit:name>constraints/pwm_ooc.xdc</spirit:name>          <spirit:userFileType>xdc</spirit:userFileType>          <spirit:userFileType>USED_IN_out_of_context</spirit:userFileType>           <spirit:userFileType>USED_IN_synthesis</spirit:userFileType>            <spirit:userFileType>USED_IN_implementation</spirit:userFileType>    </spirit:file>    <spirit:file>            <spirit:name>hdl/verilog/pwm.v</spirit:name>            <spirit:fileType>verilogSource</spirit:fileType>     </spirit:file>    <spirit:file>            <spirit:name>hdl/verilog/pwm_ap_rst_if.v</spirit:name>          <spirit:fileType>verilogSource</spirit:fileType>     </spirit:file>    <spirit:file>            <spirit:name>hdl/verilog/pwm_pwm_io_if.v</spirit:name>          <spirit:fileType>verilogSource</spirit:fileType>     </spirit:file>    <spirit:file>            <spirit:name>hdl/verilog/pwm_top.v</spirit:name>            <spirit:fileType>verilogSource</spirit:fileType>            <spirit:userFileType>CHECKSUM_b1913739</spirit:userFileType>     </spirit:file></spirit:fileSet>

软件驱动程序的文件

<spirit:fileSet>  <spirit:name>xilinx_softwaredriver_view_fileset</spirit:name>   <spirit:file>            <spirit:name>drivers/pwm_top_v1_0/data/pwm_top.mdd</spirit:name>            <spirit:userFileType>mdd</spirit:userFileType>   </spirit:file>    <spirit:file>            <spirit:name>drivers/pwm_top_v1_0/data/pwm_top.tcl</spirit:name>            <spirit:fileType>tclSource</spirit:fileType>     </spirit:file>    <spirit:file>            <spirit:name>drivers/pwm_top_v1_0/src/Makefile</spirit:name>            <spirit:fileType>unknown</spirit:fileType>   </spirit:file>    <spirit:file>            <spirit:name>drivers/pwm_top_v1_0/src/xpwm.c</spirit:name>          <spirit:fileType>cSource</spirit:fileType>   </spirit:file>    <spirit:file>            <spirit:name>drivers/pwm_top_v1_0/src/xpwm.h</spirit:name>          <spirit:fileType>cSource</spirit:fileType>   </spirit:file>    <spirit:file>            <spirit:name>drivers/pwm_top_v1_0/src/xpwm_hw.h</spirit:name>           <spirit:fileType>cSource</spirit:fileType>   </spirit:file>    <spirit:file>            <spirit:name>drivers/pwm_top_v1_0/src/xpwm_linux.c</spirit:name>            <spirit:fileType>cSource</spirit:fileType>   </spirit:file>    <spirit:file>            <spirit:name>drivers/pwm_top_v1_0/src/xpwm_sinit.c</spirit:name>            <spirit:fileType>cSource</spirit:fileType>   </spirit:file></spirit:fileSet>

xml中使用的是相对路径,解析时,会到IP核文件夹下查找相应资源。

3、总结

各个节点就不再一一分析了,总而言之,Vivado利用一个XML文件对IP核的接口、总线、资源文件等各方面进行了描述。在使用IP核的过程中,我们不再需要手动去更改一些文件,所以不像在XPS中那样需要对IP核的文件组织必须要有好的理解才行。不过既然有网友提出这个问题,我就写一下吧,希望能够有所帮助。

Vivado中IP核生成文件相关推荐

  1. Vivado中IP核的xci, xcix, .dcp文件的区别

    早在2017年1月初,我们宣布Xilinx IP目录中的所有IP使用xci和xcix格式的文件,这已经不是什么新鲜事了,其实我们之前一直在说这是我们多年来的主要建议,这其中包括很多重要的原因,xci文 ...

  2. Vivado 中IP报严重警告Could not find module的解决办法

    问题描述: In a simple IP Integrator design containing a MIG 7series IP, an error message similar to the ...

  3. 教程:在Vivado中指定VSCode作为文本编辑器

    教程:在Vivado中指定VSCode作为文本编辑器 更新历史 20190325: 首次发布 20201027: 对本文第三步中需要填写的内容做了修改,使得VSCode能够实现光标的自动定位.该修改的 ...

  4. Vivado IP核生成设置

    vivado中design with ip相比于ise感觉还是改进了. 首先我们简单介绍一下vivado中design with ip的设计过程: (1)打开IP Catlog定制自己的IP设计,比如 ...

  5. Vivado中RTL封装IP流程

    Vivado中RTL封装IP流程 前言 本文记录自己将RTL代码封装成IP的流程,以供之后查阅使用.最近一个月在做一个数据仲裁与转发的项目,已经完成功能仿真,准备将其封装成IP在Block Desig ...

  6. FPGA设计中,Vivado 调用IP核详细操作步骤

    FPGA设计中,Vivado 调用IP核详细操作步骤 今天给大侠带来了FPGA设计中,Vivado 调用IP核详细操作步骤,话不多说,手把手教学,请往下看. 首先咱们来了解一下vivado的IP核,I ...

  7. 弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩

    弟中弟级,基于Vivado的IP核封装以及仿真调用,FPGA入门小玩 IP核:知识产权核,指某一方提供的.形式为逻辑单元的可重用模块.IP核通常已经通过了设计验证,设计人员以IP核为基础进行设计,可以 ...

  8. vivado中复数乘法器IP核使用小结

    vivado中复数乘法器IP核使用小结 添加ip核 进入工程,点击IP Catalog,在弹出的窗口中点击数学功能–math functions,选择multipliers–complex multi ...

  9. vivado中bit文件怎么没有生成_「超实用」一分钟学会用最小存储空间保存Vivado工程...

    在平常调试FPGA的过程中,大家会发现Vivado工程动辄数百兆大小,甚至几个G都很常见.如果调试的版本过多,就连几个T的硬盘也不够用.怎么办呢?其实,Vivado自带了一种使用tcl命令保存viva ...

最新文章

  1. python 天气预报
  2. 对讲机的那点事:带你玩转LD800数字车载台读、写频操作:一
  3. postfix和dovecot服务异常,重启服务后又会自动停掉的解决办法
  4. 尊重个体多样性,科学人文终统一
  5. Palo Doris不会用?(基础指南)
  6. 《软件项目管理(第二版)》第 2 章——项目准备和启动 重点部分总结
  7. 类似 Observer Pattern 的 NSNotificationCenter (实例)
  8. NLP(新闻文本分类)——数据读取与数据分析
  9. 一款好看的提示框-------记录一下地址
  10. 如何在Ubuntu 14.10 上安装WordPress?
  11. 【Oracle】创建用户
  12. unity可以直接转h5吗_瞎折腾:用Unity撸纯HTML5移动游戏/应用
  13. Python实现好友信息管理系统 添加、删除、修改、备注、查询好友信息
  14. 95后阿里P7晒出工资单:狠补了这个,真香…
  15. OSChina 周四乱弹 ——跌倒,就在那附近找找好吃的。
  16. 人人都是首席质量官--读后感
  17. 广告行业计费模式专业术语
  18. Python百日百行代码挑战-day8,day9,day10,游戏实战系列-五子棋
  19. 图片内容巴特勒 (隐藏文字到图片)
  20. 速卖通装修html自定义代码,Shopify基础建站教程,独立站装修主题代码设置

热门文章

  1. Review: Maximum Energy Efficiency Tracking for Wireless Power Transfer Systems
  2. 基于STC8G8K64U三通道高速ADC采集板
  3. java 计时器归零_终止Java中的计时器
  4. python中scale的用法_Python Decimal scaleb()用法及代码示例
  5. unitoy机器人怎么联网_机器人操作说明
  6. css通配选择符用什么表示,css的选择符
  7. java for 嵌套_Java中的for循环嵌套
  8. 查看Android API文档的正确方式
  9. gRPC异步处理应答
  10. mybatis10--自连接多对一查询