簡體   English   中英

如何在一個時鍾周期內對二維數組中的每個元素進行“或”運算? Verilog

[英]How can I OR every element in two dimensional array in one clock cycle? Verilog

線[a-1:0]陣列[b-1:0];

如何對b數組元素進行OR運算並得到a位結果,結果為1 clk? 謝謝

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(); 但可能並非所有合成器都支持。

您可以直接使用循環,也可以直接使用每個元素與上一個元素。

wire [a-1:0] op;

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM