メインコンテンツ

readPort

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

説明

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

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

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

すべて折りたたむ

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

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

hFPGA = fpga("Xilinx")
hFPGA = 

  fpga with properties:

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

    

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

%% Add register interface
addRegisterInterface(hFPGA, ...
	"InterfaceID", "AXI4-Lite", ...
	"BaseAddress", 0xA0000000, ...
	"AddressRange", 0x10000);

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

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

DUT 端子オブジェクトをレジスタ インターフェイスにマッピングしてから、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]

    

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

%% Add register interface
addRegisterInterface(hFPGA, ...
	"InterfaceID", "DUT1_Registers");

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

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

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

%% Add register interface
addRegisterInterface(hFPGA, ...
	"InterfaceID", "DUT2_Registers");

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

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

DUT 端子オブジェクトをレジスタ インターフェイスにマッピングしてから、オプションの 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 で導入