我在Verilog中有一个自定义模块,它需要几个输入和几个参数。在Verilog中使用附加参数实例化自定义模块的向量
module modA (
input inp1, input inp2, ... output out);
parameter my_addr;
...
endmodule
对于我使用的具体硬件相关的各种原因,我需要创建这个模块,使用不同的参数,每次(因为my_addr对应于特定内存位置,我的许多实例然后从主机访问)。此外,我想要一个简单的方法来访问所有的输出。我觉得做这样
wire [9:0] outputs;
modA #(.my_addr) all_modA[9:0](.inp1(inp1), .inp2(inp2), .out(outputs));
东西于是我不得不all_modA的元素的载体,和输出的第n个元素将对应于MODA的第n个实例。这听起来像它会工作得很好,除了我需要传递一个唯一的地址到每个实例。当我一次只做一个实例化时,仅定义一个参数非常容易,但我不明白每次如何传递唯一标识符。
有什么办法可以做到这一点?问题是,如果我使用for循环,那么我不会看到如何使用唯一标识符来实例化每个modA。如果我不使用for循环,那么我不确定如何添加唯一标识符。
我将如何确定some_identifier是什么? – user147177
它是'begin..end'块的任何**标识符。这是生成块的用户定义标签。可以在这里使用任何字符串。 – sharvil111
在我的特殊情况下,每个输出都是16位线。我会写 “wire [15:0] outputs [0:10];”? – user147177