可参数化的黑匣子模块,我自己的IP内部的可参数化IP - Xilinx

时间:2015-04-15 11:26:14

标签: vhdl fpga 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中??

由于 萨姆

1 个答案:

答案 0 :(得分:2)

我认为这样可行:

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的优化机制将未使用的位从设计中删除,这很有效,这在很大程度上取决于您执行的操作。

你也可以在你的代码中使用泛型用于所有D_WIDTH,但这真的很难实现。