我想对参数化数量的 32 位总线进行 OR,如下所示: out_bus = 总线 1 |巴士2 |巴士 3 | ... |总线N;
我还想将总线声明为数组(N 是一个固定参数,在编译时定义):
reg [31:0] 总线 [N-1:0];
我能想到的最好的方法是这样的:
parameter N;
reg [N-1:0] temp;
reg [31:0] out_bus;
reg [31:0] bus[N-1:0];
always @(*) begin
for (j=0; j<32; j=j+1) begin : bits
for (k=0; k < N; k=k+1) begin : bus
temp = bus[k][j];
end
out_bus[j] = |temp;
end
end
这需要是可综合的。一定有更清洁/更好的方法,不是吗?
最佳答案
如果您使用的是 SystemVerilog,则可以将整个 always
block 替换为
assign out_bus = bus.or();
关于arrays - 数组元素的 Verilog OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42819017/