verilog - 是否可以在编译时在 verilog 中声明模块输入?
问题描述
例如,我有以下生成块:
localparam N = 4
localparam P = 16
genvar i;
generate
for(i=0;i<P;i=i+1)
begin: dmnGen
localparam [N-1:0]r = func_r(i);
and dmn(OUT[i], S[3][r[3]], S[2][r[2]], S[1][r[1]], S[0][r[0]], EN);
end
endgenerate
我想S[x][r[x]]
根据参数 N 向和门添加输入。是否可以在编译时以编程方式添加输入?
解决方案
您不能根据参数更改端口连接数。但是您可以生成一组级联and
门,更好的是,使用归约 & 运算符。
localparam N = 4
localparam P = 16
genvar i,j;
for(i=0;i<P;i=i+1) begin: dmnGen
localparam [N-1:0]r = func_r(i);
wire [N-1:0] p;
assign OUT[i] = &p;
for(j=0;j<N;j=j+1)
assign p[j] = S[j][r[j]];
end
endgenerate
推荐阅读
- c# - 为什么我的 web api 在 C# 中使用 https 而不是 http
- swift - 结合预取和缓存结果
- youtube-dl - 最佳音频和视频质量在 youtube-dl 中不起作用
- azure-devops-server-2020 - Azure DevOps Server 2020 - 在服务挂钩失败/禁用时获取通知
- javascript - 单击子菜单Javascript时如何将活动类添加到菜单中?
- python - Django bulk_create 与 m2m 字段上的 get_or_create()
- amazon-web-services - Ansible efs 接入点创建
- android - 将 Json(改造响应)存储到 Room 数据库
- php - 如何在php中的其他页面元素上显示动态列表视图选定项目
- debugging - 我可以使用 PDSOE 进行“立即”调试吗?