2016-03-01 42 views

回答

1

的Verilog方式:

reg [a-1:0] or_of_array; 
integer i; 
always @* begin 
    or_of_array = array[0]; 
    for(i=1; i<b; i=i+1) begin 
    or_of_array = or_of_array | array[i]; 
    end 
end 

SystemVerilog的方式:

logic [a-1:0] or_of_array; 
always_comb begin 
    or_of_array = 0; 
    foreach(array[i]) begin 
    or_of_array |= array[i]; 
    end 
end 

的SystemVerilog还支持wire [a-1:0] wire_or_of_array = array.or();但并非所有合成器的支持。

0

您可以直接使用循环到或每个元素与以前的元素。

wire [a-1:0] op; 

// Inside an always block 
for (int i = 0; i < array.size(); i++) 
    op = op | array[i]; 
相关问题