Main Content

writePort

MATLAB から DUT 端子にデータを書き込む

R2020b 以降

説明

writePort(hFPGA, portName, data) は、data で指定した入力データを、端子 portName のデータ型にキャストし、その端子にマッピングされているインターフェイスにディスパッチしてデータを書き込みます。データを書き込む前に、MATLAB® からターゲットの FPGA または SoC デバイス hFPGA への接続を設定してから、関数 mapPort を使用して portName をそのインターフェイスにマッピングします。

writePort(hFPGA, portName,data,InterfaceID) は、オプションの引数 InterfaceID を使用することで、data で指定した入力データを、重複している端子 portName のデータ型にキャストし、その端子にマッピングされているインターフェイスにディスパッチしてデータを書き込みます。

valid=writePort(hFPGA, portName, data) は、データ書き込みが完了したかどうかを示す Valid 信号を返します。

すべて折りたたむ

この例では、AXI4 スレーブ インターフェイスにマッピングされた 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", "AXI4-Lite", ...
	"BaseAddress", 0xA0000000, ...
	"AddressRange", 0x10000);

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

hPort_h_in1 = hdlcoder.DUTPort("h_in1", ...
	"Direction", "IN", ...
	"DataType", numerictype(1,16,10), ...
	"Dimension", [1 1], ...
	"IOInterface", "AXI4-Lite", ...
	"IOInterfaceMapping", "0x100");

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

mapPort(hFPGA, hPort_h_in1);

writePort(hFPGA, "h_in1", 5);

この例では、AXI4-Stream インターフェイスにマッピングされた DUT 端子にデータを書き込む方法を示します。

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

hFPGA = fpga("Xilinx")
hFPGA = 

  fpga with properties:

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

    

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

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

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

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

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

mapPort(hFPGA, hPort);

writePort(hFPGA, "x_in", sin(linspace(0, 2*pi, 1024)));

この例では、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 スレーブ インターフェイスにマッピングします。

p = hdlcoder.DUTPort("myPort", ...
	"Direction", "IN", ...
	"IOInterface", "AXI4-Lite", ...
	"IOInterfaceMapping", "0x100");

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

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

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

p = hdlcoder.DUTPort("myPort", ...
	"Direction", "IN", ...
	"IOInterface", "AXI4-Lite", ...
	"IOInterfaceMapping", "0x100");

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

mapPort(hFPGA, p);

writePort(hFPGA, "DUT2_Registers", "myPort", 5);

入力引数

すべて折りたたむ

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

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

DUT 端子 PortName に書き込む入力データ。スカラーまたはベクトルとして指定します。

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

出力引数

すべて折りたたむ

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

バージョン履歴

R2020b で導入