DeeZeng 秋

我的FPGA笔记

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

原创 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。 

posted on 2019-07-08 17:09  DeeZeng  阅读(589)  评论(0编辑  收藏  举报