Arrays Verilog、logic或ing整个阵列
假设我有这样一个数组:Arrays Verilog、logic或ing整个阵列,arrays,input,verilog,Arrays,Input,Verilog,假设我有这样一个数组: parameter n=100; reg array[0:n-1]; 如何获得数组中每一位的逻辑或值? 结果电路必须是组合电路 这是我的后续问题 (请参阅下面的讨论答案)我不知道这是否符合您的设计要求,但使用100位总线reg[n-1:0]阵列可能会更容易而不是使用1位导线阵列。Verilog没有支持数组的最佳语法。如果你有一个总线,你可以只分配result=|数组 如果您必须使用数组,那么我可能首先考虑将它转换成具有生成循环的总线,然后做同样的操作: paramete
parameter n=100;
reg array[0:n-1];
如何获得数组中每一位的逻辑或值?
结果电路必须是组合电路
这是我的后续问题
(请参阅下面的讨论答案)我不知道这是否符合您的设计要求,但使用100位总线
reg[n-1:0]阵列可能会更容易代码>而不是使用1位导线阵列。Verilog没有支持数组的最佳语法。如果你有一个总线,你可以只分配result=|数组代码>
如果您必须使用数组,那么我可能首先考虑将它转换成具有生成循环的总线,然后做同样的操作:
parameter n=100;
reg array[0:n-1];
wire [n-1:0] dummywire;
genvar i;
generate
for (i = 0; i < n; i = i+1) begin
assign dummywire[i] = array[i];
end
endgenerate
assign result = |dummywire;
参数n=100;
reg数组[0:n-1];
金属丝[n-1:0]达姆金属丝;
genvar i;
生成
对于(i=0;i
我不知道有什么更优雅的方法可以在阵列上实现这一点。我不知道这是否符合您的设计要求,但使用100位总线reg[n-1:0]阵列可能会容易得多代码>而不是使用1位导线阵列。Verilog没有支持数组的最佳语法。如果你有一个总线,你可以只分配result=|数组代码>
如果您必须使用数组,那么我可能首先考虑将它转换成具有生成循环的总线,然后做同样的操作:
parameter n=100;
reg array[0:n-1];
wire [n-1:0] dummywire;
genvar i;
generate
for (i = 0; i < n; i = i+1) begin
assign dummywire[i] = array[i];
end
endgenerate
assign result = |dummywire;
参数n=100;
reg数组[0:n-1];
金属丝[n-1:0]达姆金属丝;
genvar i;
生成
对于(i=0;i
我不知道有什么更优雅的方法可以在数组上执行此操作。Tim的回答显示了一个压缩数组声明。了解这个数组与未打包数组之间的区别非常有帮助
和未打包的数组是reg unpacket[0:9]代码>。我明白了,但两者有什么区别呢?简言之,reg[9:0]打包代码>将作为单个值访问,而reg unpacket[9:0]
不能。Sopacked=6代码>有效,但解包=6代码>不可用。我应该注意到,打包/解包是SystemVerilog术语,但在Verilog中的概念是相同的。了解这个数组与未打包数组之间的区别非常有帮助
和未打包的数组是reg unpacket[0:9]代码>。我明白了,但两者有什么区别呢?简言之,reg[9:0]打包代码>将作为单个值访问,而reg unpacket[9:0]
不能。Sopacked=6代码>有效,但解包=6代码>不可用。我应该注意到,打包/解包是SystemVerilog术语,但在Verilog中的概念是相同的。