Parameterisable Black Box Modules, Parameterisable IP inside my own IP - Xilinx

Parameterisable Black Box Modules, Parameterisable IP inside my own IP - Xilinx

我正在创建一些 IP,而不是运行算法模板。基本上我已经设计了它,以便 VHDL 可以为任何定点数据表示参数化,GENERICSD_WIDTHFRAC.

我正在使用 Xilinx IP 内核进行运算,因此我需要在使用 IP 时将这些参数保留为 D_WIDTH 中的更改。我想将它们保留为黑匣子,以便在外部定义它们。但是在属性定义中,宽度可以是可变的,例如

ATTRIBUTE BLACK_BOX_PAD_PIN OF sub_dsp : COMPONENT IS "A[31:0],B[31:0],CLK,CE,SCLR,S[31:0]";

数据宽度固定为 32,正如我所描述的,我需要这些是可变的:

ATTRIBUTE BLACK_BOX_PAD_PIN OF sub_dsp : COMPONENT IS "A[D_WIDTH-1:0],B[D_WIDTH-1:0],CLK,CE,SCLR,S[D_WIDTH-1:0]";

这行得通吗?或者有没有其他方法可以把可参数化的IP集成到我自己的IP中!?

谢谢 山姆

我认为这可行:

ATTRIBUTE BLACK_BOX_PAD_PIN OF sub_dsp : COMPONENT IS "A[" & integer'image(D_WIDTH-1) & ":0],B[" & integer'image(D_WIDTH-1) & ":0],CLK,CE,SCLR,S[" & integer'image(D_WIDTH-1) & ":0]";

可能还有其他方法可以解决这个问题。一些 Xilinx IP 内核是 "clear-source",因此您可以将源代码添加到您的项目中并将它们实例化,就好像它是您的代码一样。不过,您松散了更新的 GUI 参数化和工具管理。

根据您的算法,您可以为 Xilinx 的 IP 内核使用最大宽度,并将较小的 D_WIDTH 映射到 IP 的 lsb。如果 Xilinx 的优化机制 trim 设计中未使用的位,则此方法效果很好,这在很大程度上取决于您执行的操作。

您也可以在代码中为所有 D_WIDTH 使用泛型,但这会变得非常丑陋。