在vivado

时间:2016-03-18 21:06:13

标签: verilog xilinx vivado

虽然研究似乎不可能: Passing parameter to xci core

我正在设计一个使用Xilinx FIFO实例的自定义内核。但是,顶层模块具有在IP Packager中公开的参数,应该修改包含的FIFO核心。

module top();
 parameter C_FIFO_DEPTH = 256
 xilinx_fifo_core #(
  .FIFO_DEPTH(C_FIFO_DEPTH)
) my_fifo_instance (...);

这样,当有人实例化我的模块时,通过覆盖参数C_FIFO_DEPTH,它们也会改变嵌入式FIFO的深度。

虽然这适用于用户编写的模块,但它不适用于IP内核(xci)的实例,这些实例似乎只能通过"定制IP" GUI。

我禁用了上下文生成,但仍然没有骰子。

我目前正在使用打包核心中的tcl脚本制作一个(非常混乱)解决方案,但是迫切需要一个优雅的解决方案。

2 个答案:

答案 0 :(得分:1)

我无法想到任何优雅的解决方案,但这里有三个更混乱的解决方案:

(1)只需使用您需要的最大FIFO。 (显然可能是对区域的浪费。)

(2)创建一系列不同大小的FIFO,并使用generate case选择正确的FIFO。 (如果有用尺寸范围合理限制,则只有任何好处。)

(3)不使用IP块 - 设计自己的FIFO。 (你可能想过这个。)

答案 1 :(得分:0)

您可以使用XPM_FIFO_xxx内核来做到这一点。在UG953库指南中查找文档和示例。您也可以使用XPM_MEMORY_xxx对RAM进行操作。