汎用 MATLAB API - 2023.2 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 日本語

次は、ユーザー定義のカスタム データ型で使用できる汎用 API のリストです。これらの API を使用すると、byte_arrays の形式でのみデータを送信および受信できます。転送する前にカスタム データ型を byte_arrays に変換し、受け取った値をカスタム データ型に変換してアプリケーションで使用できるようにする必要があります。変換 API は次のようになります。

API を使用するには、MATLAB ライブラリ パスを設定する必要があります。
vivado = getenv("XILINX_VIVADO");
libPath = fullfile(vivado, "/data/emulation/matlab/xtlm_ipc");
addpath(libPath)
データを送信または受信するクラスのインスタンシエート
input_port = axis_master( name)
output_port = axis_slave(name)

パラメーター:

  • name: トラフィック ジェネレーターに接続されているブロックのインターフェイス名と一致する文字列。
send_data()
ヒント: 汎用 API には、byte_array 形式のデータのみを使用します。ユーザー データ型から変換するには、後述の uInt16ToByteArray などの変換 API を使用してください。
send_data(data, tlast)
creates a non-blocking call to send data

何も返しません。

パラメーター:

  • data: create_byte_array() または次の変換 API を使用して作成したリスト
  • tlast: ブール値 (true または false)

次に例を示します。

input.send_data(data_byte_array, tlast)
receive_data()
ヒント: 汎用 API には、byte_array 形式のデータのみを使用します。受信後、データ型を使用したユーザーが読める形式に変換するには、後述の byteArrayTouInt16 などの変換 API を使用すしてください。
receive_data(data)
creates a blocking call to receive data

バイト配列の形式で受信したデータのリストを返します。

パラメーター:

  • data: 次の変換 API で変換可能なバイト配列
receive_data_with_size()
receive_data_with_size(data, data_size)
creates a blocking call to receive a specified amount of data

バイト配列の形式で受信したデータのリストを返します。

パラメーター:

  • data: 次の変換 API で変換可能なバイト配列
  • data_size: 受信するデータ量をバイト単位で示した整数値
注記: データのサイズはバイト単位で指定します。

次に例を示します。

output.receive_data_with_size(<recv_vector>, 512)

recv_vector は空のバイト配列であり、バイト配列の形式で受信したデータで満たされます。

receive_data_on_tlast()
receive_data_on_tlast(data)
creates a blocking call returning <data> after receiving tlast packet

バイト配列の形式で受信したデータのリストを返します。

パラメーター:

  • data: 次の変換 API で変換可能なバイト配列
表 1. Byte_Array 変換 API
API 説明

byte_array = input_port.uInt8ToByteArray(user_list)

byte_array = input_port.uInt16ToByteArray(user_list)

byte_array = input_port.uInt32ToByteArray(user_list)

byte_array = input_port.uInt64ToByteArray(user_list)

byte_array = input_port.int8ToByteArray(user_list)

byte_array = input_port.int16ToByteArray(user_list)

byte_array = input_port.int32ToByteArray(user_list)

byte_array = input_port.int64ToByteArray(user_list)

byte_array = input_port.floatToByteArray(user_list)

byte_array = input_port.doubleToByteArray(user_list)

byte_array = input_port.bfloat16ToByteArray(user_list)

指定されたデータ型を byte_array 値に変換してデータを送信
byte_array = input_port.uInt64ToByteArray(user_list)

Parameters:
  Returns list of specified data type converted from byte_array
  user_list → std::vector<T> 
  // T is the data type present in function signature. 
  // For example in byteArrayToFloat user_list is a vector of type float
  byte_array → list created using create_byte_array or conversion APIs

user_list = output_port.byteArrayTouInt8(byte_array)

user_list = output_port.byteArrayTouInt16(byte_array)

user_list = output_port.byteArrayTouInt32(byte_array)

user_list = output_port.byteArrayTouInt64(byte_array)

user_list = output_port.byteArrayToInt8(byte_array)

user_list = output_port.byteArrayToInt16(byte_array)

user_list = output_port.byteArrayToInt32(byte_array)

user_list = output_port.byteArrayToInt64(byte_array)

user_list = output_port.byteArrayToFloat(byte_array)

user_list = output_port.byteArrayToDouble(byte_array)

user_list = output_port.byteArrayToBfloat16(byte_array)

受信後、byte_array 値を指定のデータ型に変換
user_list = output_port.byteArrayTouInt16(byte_array)

Parameters:
  Returns list of specified data type converted from byte_array
  byte_array → list created using create_byte_array or conversion APIs
  user_list → std::vector<T> 
  // T is the data type present in function signature. 
  // For example in byteArrayToFloat user_list is a vector of type float