假设我有一个这样的数组:
parameter n=100;
reg array[0:n-1];
如何获得数组中每个位的逻辑OR值? 结果电路必须是组合的。
这是来自this one.的后续问题 (见答案下面的讨论)
答案 0 :(得分:4)
我不知道这是否符合您的设计要求,但使用百位总线reg [n-1:0] array;
可能比使用1位线阵列更容易。 Verilog没有最好的语法来支持数组。如果你有一辆公共汽车而你可以分配result = |array;
如果你必须使用一个数组,那么我可能会考虑首先把它变成带有生成循环的总线,然后再做同样的事情:
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;
我不知道有更优雅的方法在数组上执行此操作。