cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PIOによるマスター動作

kurihara
Xilinx Employee
Xilinx Employee
5 0 338

このブログでは、ザイリンクス Integrated block for PCI Express IP ( endpoint mode)に付属の PIO デザインを、マスター動作させるシミュレーション実行方法を紹介します。

概要:

Integrated Block for PCI Express IPを生成し、Example Designを開くと、ユーザー デザインとして PIO が作成されているのが分かります。このユーザー デザインは、基本的にルート ポートのトランザクションに応答するものですが、マスターとしても動作できます。

kurihara_0-1619138610257.png

 

 

マスター イネーブル ビットの設定

PCI Express デバイスをマスター動作させるには、先ず、バス マスター イネーブル ビットを設定する必要があります。

バス マスター イネーブル ビットは、PCI コンフィギュレーションレジスター内のコマンド レジスターのビット2にあります。

kurihara_1-1619138610270.png

 

PCI Express Base Specification, Rev. 4.0 Version 1.0, September 27. 2017, PCI-SIG

 

Example Designでバス マスター イネーブル ビットを設定するには、ルート ポート モデルに含まれているpcie_exp_usrapp_txモジュールから、TSK_TX_TYPE0_CONFIGURATION_WRITEタスクを実行して、エンドポイントに対してコンフィギュレーション書き込みトランザクションを発生させます。

kurihara_2-1619138610274.png

 

上記の例では、3845行目を次の様に変更します。

TSK_TX_TYPE0_CONFIGURATION_WRITE(DEFAULT_TAG, 12'h04, 32'h00000006, 4'h1);

*この時に、bit1 memory space enableを‘0’にしないように注意してください。

 

testnamepio_writeReadBack_test0 にする

pcie_exp_usrapp_txモジュールには、シミュレーションでのテストの種類を指定するtestname変数があります。この変数に pio_writeReadBack_test0 を指定します。

testname = "pio_writeReadBack_test0";

実際のテストのタスクは、 sample_tests.vh ファイル内に記載されています。

 

PIOをマスター動作させる

PIOをマスター動作させるには、BAR0のオフセット アドレス11’hEA8に32’hAAAA_BBBBを書き込むことで起動されます。sample_tests.vh を開き、 pio_writeReadBack_test0 以降のタスクに移動します:

kurihara_3-1619138610279.png

 

DATA_STORE変数に次のライト・データを指定します。

   board.RP.tx_usrapp.DATA_STORE[0] = 8'hBB;

    board.RP.tx_usrapp.DATA_STORE[1] = 8'hBB;

    board.RP.tx_usrapp.DATA_STORE[2] = 8'hAA;

    board.RP.tx_usrapp.DATA_STORE[3] = 8'hAA;

 

TSK_TX_MEMORY_WRITE_32タスクのターゲット アドレスを次のように変更します:

board.RP.tx_usrapp.TSK_TX_MEMORY_WRITE_32(board.RP.tx_usrapp.DEFAULT_TAG,                                                                 board.RP.tx_usrapp.DEFAULT_TC, 11'd1,                                                                    board.RP.tx_usrapp.BAR_INIT_P_BAR[board.RP.tx_usrapp.ii][31:0]+11'hEA8, 4'h0, 4'hF, 1'b0);

これで準備が整いましたので、シミュレーションを実行します。

kurihara_4-1619138610282.png

 

kurihara_5-1619138610286.png

 

1DWのメモリー 読み出しトランザクションが発行されます。

 

 

結果、32’h03020100のCompletionが返信されます。

kurihara_7-1619138654008.png