簡體   English   中英

如何使用 genvar 變量訪問輸入信號?

[英]How can I use genvar variable to access input signals?

我有一個帶有 30 個向量輸入的模塊。我在 for 循環分配中需要幫助。

module test (
  input [3:0] i0,
  input [3:0] i1,
  input [3:0] i2,
  ...
  input [3:0] i29

);

wire [3:0] int_i [0:29];

genvar j;
generate
  for (j=0; j<30; j=j+1) begin
    assign int_i[j] = i(j) //need help here 
  end
endgenerate


endmodule

有沒有一種簡單的方法可以在 Verilog 中做到這一點。 我知道我可以通過創建輸入的二維向量在 System verilog 中做到這一點。 但是有沒有辦法在 Verilog 中做到這一點?

在 Verilog 中做到這一點的唯一方法是將二維數組展平為單個向量。

module test (
  input [30*4-1:0] i;
);
wire [3:0] int_i [0:29];
genvar j;
for (j=0; j<30; j=j+1) begin
    assign int_i[j] = i[4*j+:4];
end

這是一個 systemverilog 功能,在 verilog 中,這應該將輸入數組打包成一個向量(我包含了一個參數以使事情自動化):

module test
# (
   parameter WIDTH = 4,
   parameter DEPTH = 30
  ) (input [(WIDTH*DEPTH)-1:0] i);

wire [WIDTH-1:0] int_i [DEPTH-1:0];
genvar j;

generate
 for(j=0; j<DEPTH; j=j+1) begin: assign_i_gen //..(don't forget to name the for loop)
   assign int_i[j] = i[(WIDTH*j)+:WIDTH];
 end
endgenerate

暫無
暫無

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

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