通用 MATLAB API - 2023.2 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2023-12-13
Version
2023.2 简体中文

此处提供了可搭配用户定义的定制数据类型使用的通用 API 列表。您只能利用这些 API 以 byte_arrays 形式发送和接收数据。您必须在传输数据前将自己的定制数据类型转换为 byte_arrays,并将接收到的值转换回您的定制数据类型才可供您的应用使用。转换 API 如下所述。

您需要设置 MATLAB 库路径才能使用 API:
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