原创 by DeeZeng [ Intel FPGA笔记 ]
Intel FPGA Quartus 软件中的 Qsys工具 也就是 Platform Designer 系统集成工具,可以
- 图形化界面操作
- 使用系统自带ip,自定义ip
- 系统自动生成 ip 间的连接
- 设计好的 qsys 系统 可作为模块给其他qsys系统调用
如果我们不对 qsys子模块进行设置,那在新的qsys中整合的时候,将只能使用qsys子模块中固定的设置。
那我们如何将 qsys 子系统设置成像自定义ip 一样有参数传入呢?
我们可以通过 Instance Parameters 的方式实现,qsys子系统添加后效果如下图
具体的步骤如下:
- 打开需要设置参数传入的 qsys
- 在 View -> Instance Parameters 打开 Instance Parameters 窗口
-
在 Instance 窗口界面设置 参数传入
-
- 在第3步骤 图章1 Instance Parameters 中: 设置 传入参数 名称,类型,范围,解释等
- 在第3步骤 图章2 Instance Script 中: 将参数通过写脚本绑定的 qsys 中的各个 ip。 比如上图中 是将 qsys 的DATA_WIDTH 传给了 dma_write_master_0的 DATA_WIDTH
- 如下附录了 比较完整的 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 子系统,也能够进行参数设置了!类似于一个可设置参数的ip。