×
FPGA/DSP > 可编程逻辑 > 详情

xilinx IP建立向导创建的目录和文件的作用分析

发布时间:2020-05-13 发布时间:
|

     xilinx IP建立向导创建的目录和文件都是做什么的?这是由错误ERROR:HDLCompiler:Instantiating from unknown module所引发的思考。

  使用了XPS中建立和导入IP向导(简称ipwiz),默认的源码文件只有hdl/verilog目录下的"userlogic.v"和hdl /vhdl目录下的"ipname.vhd"文件。当我们的设计变复杂了,需要更多的设计文件如.v、.vhd、.ngc等文件和多个模块/实体的时候,如果不进行一些设置,编译器会提示找不到module的错误提示:ERROR:HDLCompiler:Instantiating from unknown module 。怎样才能让编译器找到我们所有的设计文件和模块呢?

  例如,这几天我做了一个字符VGA的IP核,IP的名字是axi_vga,hdl目录下的设计文件结构如下:

  

  除了user_logic.v和axi_vga.vhd文件是由ipwiz生成的,其他的设计文件均是后续添加上的。将IP导入到ARM PS系统后,进行DRC检查,再运行bit生成,会出现以下错误提示:

  错误不止这一条,其他的设计文件如CGROM.v、DPBRAM.v、user_logic.v和DCM1.vhd都出现找不到module的错误。这就很奇怪了,因为设计文件都在同一个目录下啊,为什么编译器会找不到呢?

  为了知道这个错误产生的原因并解决它,就需要详细了解ipwiz产生的目录和文件了。

  ipwiz产生的目录有三个,我们一一分析。

  1、 hdl目录

  hdl目录里面有所有的设计文件,包括.v和.vhd的。因为AXI总线接口模块都是以VHDL语言描述,xilinx为了方便管理不同类型的设计文件,因而细分了verilog和vhdl两个文件夹存放设计文件。

  2、 devl目录

  在使用ipwiz向导时,有一个可选择项是是否需要生产测试ise工程,如果选择了,那么这个目录将会生产测试用的ise工程,如果没有选择,那么devl目录只会保留几个log文件。

  3、 data目录

  data目录存放的是IP的配置文件,如.prj 文件、.mpd 文件和.pao 文件等。

  .mpd(Microprocessor Peripheral Defination,外设定义)文件

  .mpd文件定义了外设的互联接口,包括和AXI总线的信号以及对外信号。我们通过修改这个文件将告诉ARM PS系统,这个IP有8个输出引脚,并通过修改system.ucf约束连接到zynq的外部引脚上。.mpd文件内容如下:

  


  其中39~43行
 

  是定义的对外引脚信号,其他均为AXI内部互联接口。

  .prj文件

  .prj该包含了IP所需要使用的文件以及路径。Ipwiz生成默认的.prj文件内容如下:

  可以看到,这个IP除了使用ISE的提供的库文件(来完成AXI接口和协议),并把它们定义成库proc_common_v3_00_a和库 axi_lite_ipif_v1_01_a;同时这个IP还使用到了两个默认生成的设计源文件user_logic.v和axi_vga.vhd,并把它们定义到库axi_vga_v1_00_a中,而这个库就是我们IP的名字。

  .pao(Peripheral Analyze Order,编译顺序)文件

  .pao文件定义了需要编译哪写HDL文件且以什么样的顺序编译。ipwiz生成的.pao文件内容如下:

  可以看到,对于在.prj文件中定义的文件和库,编译器会编译库proc_common_v3_00_a和库 axi_lite_ipif_v1_01_a里面的所有实体;同时也将使用axi_vga_v1_00_a库中的user_logic实体,它来自于一个 verilog类型文件,将使用axi_vga实体,它来自于一个vhdl类型的文件。同时编译顺序也确定下来。

  由以上的分析可以知道,data目录下的文件信息都非常重要,.mpd文件定义了外设的接口,.prj文件定义了IP所需要使用的文件以及路径,而.pao定义了需要编译哪写源文件以及使用什么样的顺序进行编译。知道了这些,对于最开始出现的那个问题,我们就知道该如何解决了:

  1、 修改data目录下的.prj文件,把所有设计源文件都添加到其中;

  2、 修改data目录下的.pao文件,把所有设计实体都添加到其中。

  修改完的.prj文件内容如下

  修改完的.pao文件内容如下

  修改完成后,“rescan user repositories“将所做的修改更新到工程中,然后再进行DRC检查和生成bit文件,错误ERROR:HDLCompiler:Instantiating from unknown module 消失,XST综合成功。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
低代码软件快速开发平台全球领导者Mendix 助力中国企业实现数字化转型