如何將 qsys 子模塊設置爲參數可調的方式給另外的qsys 調用 (Instance Parameters)

原創 by DeeZeng工具

Intel FPGA Quartus 軟件中的 Qsys工具 也就是 Platform Designer 系統集成工具,能夠ui

  1.  圖形化界面操做
  2.  使用系統自帶ip,自定義ip
  3.  系統自動生成 ip 間的鏈接
  4.  設計好的 qsys 系統 可做爲模塊給其餘qsys系統調用

qsys_overview

若是咱們不對 qsys子模塊進行設置,那在新的qsys中整合的時候,將只能使用qsys子模塊中固定的設置。spa

 

那咱們如何將 qsys 子系統設置成像自定義ip 同樣有參數傳入呢?設計

 咱們能夠經過 Instance Parameters 的方式實現,qsys子系統添加後效果以下圖3d

 qsys_instance_ip

 

具體的步驟以下:code

  1.  打開須要設置參數傳入的 qsys
  2. 在 View -> Instance Parameters 打開 Instance Parameters 窗口
    • qsys_instance_parameters
  3.  在 Instance 窗口界面設置  參數傳入orm

    •  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 子系統保存好。blog

在另外的qsys中調用的時候,咱們將能夠看到:ip

qsys_instance_ip0

  這樣 咱們的qsys 子系統,也可以進行參數設置了!相似於一個可設置參數的ip。 ci

相關文章
相關標籤/搜索