在Verilog中实例化通用模块

Dir*_*Bit 2 generics verilog parameter-passing

我试图找出如何使用generate函数实例化一个通用模块,同时覆盖它的两个paramateres.

我有一个通用的仲裁器,我应该向它发送两个参数(HEIGHTSIZE).这两个参数也被定义为"顶部"模块中的参数

以下是我在顶层中实例化PRRA模块(内部模块)的方法.

genvar i;
generate for(i=0 ; i<M ; i=i+1)
begin
    PRRA arbiter (
        .clk(clk),
        .reset(reset),
        .request(request[i]),
        .grant(grant[i])
        );
end
endgenerate
Run Code Online (Sandbox Code Playgroud)

使用defparam不起作用.显然我错了.

我尝试在生成之前/之后/内部使用它但它没有通过:/

任何人都可以帮忙

Mor*_*gan 7

目前尚不清楚你是如何尝试将参数传递给下层模块的,因为提供的代码示例没有引用HEIGHT或SIZE,但这是你传递参数的方式:

PRRA #(
    .HEIGHT  ( HEIGHT_from_top )
    .SIZE    ( SIZE_from_top   )
) arbiter (
    .clk     (clk       ),
    .reset   (reset     ),
    .request (request[i]),
    .grant   (grant[i]  )
);
Run Code Online (Sandbox Code Playgroud)

你在哪里:

module PRRA #(
  parameter HEIGHT = -1,
  parameter SIZE   = -1
)(
 //inputs ...
 //outputs ...
);
//...
endmodule
Run Code Online (Sandbox Code Playgroud)