Main Content

readPort

出力データを読み取って端子のデータ型と次元とともに返す

R2020b 以降

説明

data = readPort(hFPGA, portName) は出力データを読み取って、その値を端子のデータ型と次元とともに返します。

data = readPort(hFPGA, portName,InterfaceID) は、オプションの InterfaceID 引数を使用して、重複した端子名をもつ DUT から出力データを読み取って、その値を端子のデータ型と次元とともに返します。

data,valid = readPort(hFPGA, portName) は出力データを読み取って、その値を端子のデータ型と次元、および出力データが有効かどうかを示すオプションの出力とともに返します。

すべて折りたたむ

この例では、AXI4 スレーブ インターフェイスにマッピングされた DUT 端子からデータを読み取る方法を示します。

XilinxVendor にして fpga オブジェクトを作成します。

hFPGA = fpga("Xilinx")
hFPGA = 

  fpga with properties:

       Vendor: "Xilinx"
   Interfaces: [0x0 fpgaio.interface.InterfaceBase]

    

関数addAXI4SlaveInterfaceを使用して、AXI4 スレーブ インターフェイスを hFPGA オブジェクトに追加します。

%% AXI4 Slave
addAXI4SlaveInterface(hFPGA, ...
	"InterfaceID", "AXI4-Lite", ...
	"BaseAddress", 0xA0000000, ...
	"AddressRange", 0x10000);

HDL IP コアの DUT 端子を hdlcoder.DUTPort オブジェクト配列として指定してから、その端子を AXI4 スレーブ インターフェイスにマッピングします。

hPort = hdlcoder.DUTPort("h_out1", ...
	"Direction", "OUT", ...
	"DataType", numerictype(1,16,10), ...
	"Dimension", [1 1], ...
	"IOInterface", "AXI4-Lite", ...
	"IOInterfaceMapping", "0x104");

DUT 端子オブジェクトを AXI4 スレーブ インターフェイスにマッピングしてから、関数 readPort を使用してデータを読み取ります。

mapPort(hFPGA, hPort);

data = readPort(hFPGA, "h_out1");

この例では、AXI4-Stream インターフェイスにマッピングされた DUT 端子からデータを読み取る方法を示します。

ターゲット デバイス用のオブジェクトを作成します。

hFPGA = fpga("Xilinx")
hFPGA = 

  fpga with properties:

       Vendor: "Xilinx"
   Interfaces: [0x0 fpgaio.interface.InterfaceBase]

    

関数 addAXI4StreamInterface を使用して、AXI4-Stream インターフェイスを hFPGA オブジェクトに追加します。

addAXI4StreamInterface(hFPGA, ...
	"InterfaceID", "AXI4-Stream", ...
	"WriteEnable", true, ...
      "ReadEnable", true, ...
	"WriteFrameLength", 1024, ...
	"ReadFrameLength", 1024);

DUT 端子を hdlcoder.DUTPort オブジェクト配列として指定してから、その端子を AXI4-Stream インターフェイスにマッピングします。

hPort = hdlcoder.DUTPort("y_out", ...
	"Direction", "OUT", ...
	"DataType", numerictype(1,16,10), ...
	"Dimension", [1 1], ...
	"IOInterface", "AXI4-Stream");

DUT 端子オブジェクトを AXI4-Stream インターフェイスにマッピングしてから、関数 readPort を使用してデータを読み取ります。

mapPort(hFPGA, hPort);

data = readPort(hFPGA, "y_out");

この例では、InterfaceID 引数を使用して、重複した端子名をもつ DUT からデータを読み取る方法を示します。

XilinxVendor にして fpga オブジェクトを作成します。

hFPGA = fpga("Xilinx")
hFPGA = 

  fpga with properties:

   Top-Level Properties

       Vendor: "Xilinx"
   Interfaces: [0x0 fpgaio.interface.InterfaceBase]

    

関数addAXI4SlaveInterfaceを使用して、AXI4 スレーブ インターフェイスを hFPGA オブジェクトに追加します。

%% AXI4 Slave
addAXI4SlaveInterface(hFPGA, ...
	"InterfaceID", "DUT1_Registers");

HDL IP コアの DUT 端子を hdlcoder.DUTPort オブジェクト配列として指定してから、その端子を AXI4 スレーブ インターフェイスにマッピングします。

p1 = hdlcoder.DUTPort("myPort", ...
	"Direction", "IN", ...
	"IOInterface", "DUT1_Registers", ...
	"IOInterfaceMapping", "0x100");
mapPort(hFPGA,p1);

関数addAXI4SlaveInterfaceを使用して、AXI4 スレーブ インターフェイスを hFPGA オブジェクトに追加します。

%% AXI4 Slave
addAXI4SlaveInterface(hFPGA, ...
	"InterfaceID", "DUT2_Registers");

HDL IP コアの DUT 端子を hdlcoder.DUTPort オブジェクト配列として指定してから、その端子を AXI4 スレーブ インターフェイスにマッピングします。

p2 = hdlcoder.DUTPort("myPort", ...
	"Direction", "IN", ...
	"IOInterface", "DUT2_Registers", ...
	"IOInterfaceMapping", "0x100");
mapport(hFPGA,p2);

DUT 端子オブジェクトを AXI4 スレーブ インターフェイスにマッピングしてから、オプションの引数 InterfaceID を指定した関数 readPort を使用してデータを読み取ります。

data = readPort(hFPGA, "DUT2_Registers", "myPort", 5);

入力引数

すべて折りたたむ

ターゲット ベンダーの fpga オブジェクト。fpga オブジェクトとして指定します。

DUT 端子の名前。string として指定します。DUT 端子を hdlcoder.DUTPort オブジェクト配列として作成します。portName を指定する前に、関数 mapPort を使用して端子を AIX インターフェイスにマッピングしておく必要があります。

FPGA インターフェイスの名前。string として指定します。

出力引数

すべて折りたたむ

DUT 端子 PortName から読み取られた出力データ。スカラーまたはベクトルとして返されます。

読み取ったデータが有効かどうか。boolean データ型の true または false として返されます。この引数は、ReadTimeout の値が有限値に設定されていて、端子が AXI4-Stream インターフェイスにマッピングされている場合にのみ使用可能です。

バージョン履歴

R2020b で導入