zoukankan      html  css  js  c++  java
  • 如何将 qsys 子模块设置为参数可调的方式给另外的qsys 调用 (Instance Parameters)

    原创 by DeeZeng [ Intel FPGA笔记 ]

    Intel FPGA Quartus 软件中的 Qsys工具 也就是 Platform Designer 系统集成工具,可以

    1.  图形化界面操作
    2.  使用系统自带ip,自定义ip
    3.  系统自动生成 ip 间的连接
    4.  设计好的 qsys 系统 可作为模块给其他qsys系统调用

    qsys_overview

    如果我们不对 qsys子模块进行设置,那在新的qsys中整合的时候,将只能使用qsys子模块中固定的设置。

    那我们如何将 qsys 子系统设置成像自定义ip 一样有参数传入呢?

     我们可以通过 Instance Parameters 的方式实现,qsys子系统添加后效果如下图

     qsys_instance_ip

    具体的步骤如下:

    1.  打开需要设置参数传入的 qsys
    2. 在 View -> Instance Parameters 打开 Instance Parameters 窗口
      • qsys_instance_parameters
    3.  在 Instance 窗口界面设置  参数传入

      •  qsys_instance_par0
    4.  在第3步骤 图章1 Instance Parameters 中: 设置 传入参数 名称,类型,范围,解释等
    5.  在第3步骤 图章2 Instance Script 中: 将参数通过写脚本绑定的 qsys 中的各个 ip。 比如上图中 是将 qsys 的DATA_WIDTH 传给了 dma_write_master_0的 DATA_WIDTH
    6.  如下附录了 比较完整的 Script 代码: 
    # request a specific version of the scripting API
    package require -exact qsys 16.1
    
    # Set the name of the procedure to manipulate parameters
    set_module_property COMPOSITION_CALLBACK compose
    
    
    proc compose {} {
     set_instance_parameter_value dma_read_master_0 DATA_WIDTH [ get_parameter_value DATA_WIDTH ]
     set_instance_parameter_value dma_read_master_0 LENGTH_WIDTH [ get_parameter_value LENGTH_WIDTH ]
     set_instance_parameter_value dma_read_master_0 FIFO_DEPTH [ get_parameter_value FIFO_DEPTH ]
     set_instance_parameter_value dma_read_master_0 GUI_MAX_BURST_COUNT [ get_parameter_value GUI_MAX_BURST_COUNT ]
     set_instance_parameter_value modular_sgdma_dispatcher_0 DESCRIPTOR_FIFO_DEPTH [ get_parameter_value DESCRIPTOR_FIFO_DEPTH ]
    
     set_instance_parameter_value mm_clock_crossing_bridge_1 DATA_WIDTH [ get_parameter_value DATA_WIDTH ]
     set_instance_parameter_value mm_clock_crossing_bridge_1 MAX_BURST_SIZE [ get_parameter_value GUI_MAX_BURST_COUNT ]
     set_instance_parameter_value mm_clock_crossing_bridge_1 RESPONSE_FIFO_DEPTH [ get_parameter_value RESPONSE_FIFO_DEPTH]
     set_instance_parameter_value mm_clock_crossing_bridge_1 ADDRESS_WIDTH [ get_parameter_value LENGTH_WIDTH]
    
     set_instance_parameter_value mm_bridge_0 DATA_WIDTH [ get_parameter_value DATA_WIDTH ]
     set_instance_parameter_value mm_bridge_0 MAX_BURST_SIZE [ get_parameter_value GUI_MAX_BURST_COUNT ]
     set_instance_parameter_value mm_bridge_0 ADDRESS_WIDTH [ get_parameter_value LENGTH_WIDTH]
    }

    操作完如上6个步骤,将qsys 子系统保存好。

    在另外的qsys中调用的时候,我们将可以看到:

    qsys_instance_ip0

      这样 我们的qsys 子系统,也能够进行参数设置了!类似于一个可设置参数的ip。 

  • 相关阅读:
    转 无障碍阅读 role aria-*
    (转)edm注意事项
    Spring IOC机制之使用注解配置bean
    Spring IOC机制使用SpEL
    使用Spring IOC容器引用外部属性文件
    如何将属性文件中的值保存到类中
    基于XML的类的属性的装配
    Java——事务
    Eclipse中使用Spring IOC容器的具体方法
    Java之批处理的实现
  • 原文地址:https://www.cnblogs.com/DeeZeng/p/11152074.html
Copyright © 2011-2022 走看看