0

Verilog で基本的な AES アルゴリズムを設計しています。128 ビットの配列をそれぞれ 8 ビットの 16 の部分に分割する必要があります。

たとえば (基本的な 8 ビットの例)、10111011 を受信した場合、4 つの出力 10 11 10 11 を生成する必要があります。

4

2 に答える 2

4

配列からバイトを取得するのは簡単です:

module huge_array (
  input [128-1:0] data
);
  wire [7:0] first_byte,
  assign first_byte = data[7:0];

  wire [7:0] second_byte,
  assign second_byte = data[8*2-1:8*1];
endmodule

データがメモリにフォーマットされていると、はるかに簡単になります。

module huge_array2 (
  input [7:0] data [0:16]
);
  wire [7:0] first_byte,
  assign first_byte = data[0];

  wire [7:0] second_byte,
  assign second_byte = data[1];
endmodule
于 2012-11-15T17:18:28.030 に答える
2

二重パック配列は機能します:

reg [127:0] in;
wire [15:0] [7:0] out_1 = in; // msb in entry 15
wire [0:15] [7:0] out_2 = in; // msb in entry 0

一度に1バイトだけを読み取る必要がある場合は、Verilog-2001またはSystemVerilogで次のように実行できます。

reg [127:0] in;
reg [3:0] idx;
wire [7:0] out = in[8*idx +: 8];
于 2013-01-09T22:49:31.720 に答える