ストリーミング・ベースの線形レイヤーの FPGA ハードウェア・アクセラレータを作成するには、 hls_math.h、hls_stream.h、ap_fixed.h などの Vitis HLS ライブラリを使用します。以下にコードの例を示す：

```
#include "hls_math.h"
#include "hls_stream.h"
#include "ap_fixed.h"

typedef ap_fixed<32, 10> data_t；

void linear_layer_accelerator(hls::stream<data_t> &in_stream、
                              hls::stream<data_t> &out_stream、
                              data_t weights[]、
                              data_t bias[]) { 
    // アクセラレータ本体
}
```

アクセラレータ本体には、入力ストリームからデータを読み込み、入力ベクトルとウェイトベクト ルのドット積を計算し、バイアスを加算し、出力ストリームに出力データを書き込むループを含める 必要があります。HLS の数学関数を使用して、ドット積と加算演算を実行することができます。以下にその例を示します：

```
#pragma HLS PIPELINE II=1

// 入力ストリームからデータを読み込む
data_t in_data = in_stream.read()；

// 入力ベクトルと重みベクトルの内積を計算する
data_t dot_prod = 0；
for (int i = 0; i < N_WEIGHTS; i++) { 以下のようにします。
    dot_prod += weights[i] * in_data；
}

// バイアスを加える
data_t out_data = dot_prod + bias[0]；

// 出力データを出力ストリームに書き込む
out_stream.write(out_data)；
```

アクセラレータ本体を記述したら、Vitis HLSでコンパイルしてFPGAハードウェア・アクセラレータを生成します。
To create an FPGA hardware accelerator for a streaming-based linear layer, you can use Vitis HLS libraries including hls_math.h, hls_stream.h, and ap_fixed.h. You can start by declaring the input and output streams as well as the weight and bias arrays, using the ap_fixed&#60;32,10&#62; fixed point type. Here is an example of the code:

#include "hls_math.h"
#include "hls_stream.h"
#include "ap_fixed.h"

typedef ap_fixed<32, 10> data_t;

void linear_layer_accelerator(hls::stream<data_t> &in_stream,
                              hls::stream<data_t> &out_stream,
                              data_t weights[],
                              data_t bias[]) {
    // Accelerator body
}

The accelerator body should contain a loop to read data from the input stream, calculate the dot product of the input vector and the weights vector, add the bias, and write the output data to the output stream. You can use the HLS math functions to perform the dot product and the addition operations. Here is an example of how to do this:

#pragma HLS PIPELINE II=1

// Read data from input stream
data_t in_data = in_stream.read();

// Calculate dot product of input vector and weights vector
data_t dot_prod = 0;
for (int i = 0; i < N_WEIGHTS; i++) {
    dot_prod += weights[i] * in_data;
}

// Add bias
data_t out_data = dot_prod + bias[0];

// Write output data to output stream
out_stream.write(out_data);

Once you have written the body of the accelerator, you can compile it with Vitis HLS to generate the FPGA hardware accelerator.