首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Verilog:传递参数

Verilog:传递参数
EN

Stack Overflow用户
提问于 2013-12-10 13:29:24
回答 2查看 749关注 0票数 0

我已经写了两个verilog模块。第一个文件名为topmodule.v,第二个文件名为tx.v。topmodule.v模块将参数data31:0传递给tx.v。我想从data31:0中获取变量Rmax和Cmax。在那之后,我想使Rmax和Cmax成为总线的宽度。此外,我想定义一个维度为Cmax-x-Rmax的reg矩阵,称为Mat。我在代码的第6行收到错误,"Range必须由常量表达式限定“。请帮助我解决这个问题。代码如下所示。

代码语言:javascript
复制
tx (data, output)
input [31:0] data;
reg [15:0] Rmax, Cmax;
assign Rmax [15:0] = data [31:16];
assign Cmax [15:0] = data [15:0];
reg [Rmax-1:0] Matrix [0:Cmax-1];
EN

回答 2

Stack Overflow用户

发布于 2013-12-10 14:00:36

这个错误的意思和它所说的差不多,你不能有一个可变大小的总线或数组。

声明你的矩阵是你所需要的最大大小,如果你想使用一个更小的矩阵,那么只需使用它的一部分,而剩下的部分则留空。

请记住,总线的宽度是物理对象,它们不能在电路运行时更改,只能在合成期间更改。

票数 2
EN

Stack Overflow用户

发布于 2013-12-10 20:10:28

如果你真的想让它们成为参数,那就使用它:

代码语言:javascript
复制
module tx #(parameter DATA=32'h00000000) (
  // inputs and outputs here
  );

  reg [DATA[31:16]-1:0] Matrix [0:DATA[15:0]-1];

然而,我并不是很确定你想要实现什么。显示更多伪代码,并获得更有用的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20486865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档