arrays - 数组元素的 Verilog OR

标签 arrays for-loop verilog system-verilog

我想对参数化数量的 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/

相关文章:

Verilog 奇怪的仿真结果综合后

arrays - 在 ColdFusion 中使用 JSON 数据

c++ - 复制 C 风格的数组和结构

JavaScript - 如何访问对象数组中的特定值

r - 对于多行 (i+1) 的函数?

python - Numpy - 在 Python 中创建一个输入为两个矩阵、输出为二进制矩阵的函数

arrays - Swift 数组行为

ios - iOS:使用在后台运行的方法进行循环?

verilog - Verilog 中的参数数组

unit-testing - 如何进行仅在断言失败时通过的测试?