FC2カウンター FPGAの部屋 Spartan-6のPCIe Endpoint Block IPの勉強3(pio_writeReadBack_test1その1)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Spartan-6のPCIe Endpoint Block IPの勉強3(pio_writeReadBack_test1その1)

Spartan-6のPCIe Endpoint Block IPの勉強2(シミュレーションでRoot Portの動作を確認2)”の続き。
今回は、pio_writeReadBack_test1を行った。pio_writeReadBack_test1は”Spartan-6 FPGA PCI Express 用インテグレイテッド エンドポイント ブロック ユーザー ガイド (英語版)”の150ページに全ソースが載っている。これをtests.vに追加した。だが、それだけではだめで、信号やTASKの実体は下の階層のVerilogソースにあるので、board.RP.tx_usrappまでのパスを全部の信号やTASKに追加した。一部を転載すると下のような感じになっている。

board.RP.tx_usrapp.P_READ_DATA = 32'hffff_ffff; // make sure P_READ_DATA has known initial value
board.RP.tx_usrapp.TSK_TX_MEMORY_WRITE_32(board.RP.tx_usrapp.DEFAULT_TAG, board.RP.tx_usrapp.DEFAULT_TC, 10'd1, board.RP.tx_usrapp.BAR_INIT_P_BAR[ii][31:0] , 4'hF, 4'hF, 1'b0);


まさにVerilogだから、参照出来ているので、VHDLの言語仕様ではできない。良いのか悪いのかよく分からないが、下位の信号やTASKが自由に使えるのは取り敢えず便利だ。
書き直してコンパイル、リンクして、下のコマンドでISimを起動した。

demo_tb.exe -gui -testplusarg TESTNAME=pio_writeReadBack_test1


Root Port (RP)から、多量のパケットを送信して、同様のパケットを受信している。下にRPの送受信タイミングを示すISimの波形ウインドウを示す。
pio_writeReadBack_test1_1_100605.png

次にEndPointを見てみる。やっと、EndPointでも送信と受信を観測することができた。下にEndPointの送受信タイミングのISimの波形ウインドウを示す。
pio_writeReadBack_test1_2_100605.png

黄色い四角の部分で、パケットを受信して、次にパケットを送信している。
シミュレーション時のISimのログを下に示す。

Simulator is doing circuit initialization process.
Running test {pio_writeReadBack_test1}......
[ 0] : System Reset Asserted...
Finished circuit initialization process.
[ 399600000] : System Reset De-asserted...
[ 960680600] : Transaction Reset Is De-asserted...
board.EP.s6_pcie_v1_3_i.PCIE_A1.B_PCIE_A1_INST.SHIP.SHELL.BUT.pcie_pcie_inv.pcie_pcie.pcie_core.xil_pcie_sa_mod18.xil_pcie_sa_mod19.com.tlm.u_tlm_rx.xil_pcie_sa_mod75 checking
[ 1894626600] : Transaction Link Is Up...
[ 1895816600] : TSK_PARSE_FRAME on Transmit
[ 2233396600] : TSK_PARSE_FRAME on Receive
[ 2295792600] : Check Device/Vendor ID - PASSED
[ 2296992600] : TSK_PARSE_FRAME on Transmit
[ 2559776600] : TSK_PARSE_FRAME on Receive
[ 2696968600] : Check CMPS ID - PASSED
[ 2696968600] : SYSTEM CHECK PASSED
[ 2696968600] : Inspecting Core Configuration Space...
[ 2698168600] : TSK_PARSE_FRAME on Transmit
[ 2739366600] : TSK_PARSE_FRAME on Transmit
[ 2966151800] : TSK_PARSE_FRAME on Receive
[ 3007750600] : TSK_PARSE_FRAME on Receive
[ 3140542600] : TSK_PARSE_FRAME on Transmit
[ 3181740600] : TSK_PARSE_FRAME on Transmit
[ 3407728200] : TSK_PARSE_FRAME on Receive
[ 3452524600] : TSK_PARSE_FRAME on Receive
[ 3582916200] : TSK_PARSE_FRAME on Transmit
[ 3624114600] : TSK_PARSE_FRAME on Transmit
[ 3849302600] : TSK_PARSE_FRAME on Receive
[ 3890898600] : TSK_PARSE_FRAME on Receive
[ 4025289800] : TSK_PARSE_FRAME on Transmit
[ 4066488600] : TSK_PARSE_FRAME on Transmit
[ 4290876600] : TSK_PARSE_FRAME on Receive
[ 4335672600] : TSK_PARSE_FRAME on Receive
[ 4467663800] : TSK_PARSE_FRAME on Transmit
[ 4508862600] : TSK_PARSE_FRAME on Transmit
[ 4735664600] : TSK_PARSE_FRAME on Receive
[ 4777262600] : TSK_PARSE_FRAME on Receive
[ 4910064600] : TSK_PARSE_FRAME on Transmit
[ 4951262600] : TSK_PARSE_FRAME on Transmit
[ 5177262600] : TSK_PARSE_FRAME on Receive
[ 5222064600] : TSK_PARSE_FRAME on Receive
[ 5352462600] : TSK_PARSE_FRAME on Transmit
[ 5393664600] : TSK_PARSE_FRAME on Transmit
[ 5618864600] : TSK_PARSE_FRAME on Receive
[ 5660462600] : TSK_PARSE_FRAME on Receive
[ 5793664600] PCI EXPRESS BAR MEMORY/IO MAPPING PROCESS BEGUN...
BAR 0: VALUE = 00000000 RANGE = fff00000 TYPE = MEM32 MAPPED
BAR 1: VALUE = 00000000 RANGE = 00000000 TYPE = DISABLED
BAR 2: VALUE = 00000000 RANGE = 00000000 TYPE = DISABLED
BAR 3: VALUE = 00000000 RANGE = 00000000 TYPE = DISABLED
BAR 4: VALUE = 00000000 RANGE = 00000000 TYPE = DISABLED
BAR 5: VALUE = 00000000 RANGE = 00000000 TYPE = DISABLED
EROM : VALUE = 00000000 RANGE = 00000000 TYPE = DISABLED
[ 5793664600] : Setting Core Configuration Space...
[ 5794864600] : TSK_PARSE_FRAME on Transmit
[ 5836062600] : TSK_PARSE_FRAME on Transmit
[ 5877264600] : TSK_PARSE_FRAME on Transmit
[ 5918462600] : TSK_PARSE_FRAME on Transmit
[ 5959664600] : TSK_PARSE_FRAME on Transmit
[ 6000862600] : TSK_PARSE_FRAME on Transmit
[ 6042064600] : TSK_PARSE_FRAME on Transmit
[ 6060464600] : TSK_PARSE_FRAME on Receive
[ 6083262600] : TSK_PARSE_FRAME on Transmit
[ 6108465400] : TSK_PARSE_FRAME on Receive
[ 6124464600] : TSK_PARSE_FRAME on Transmit
[ 6150061800] : TSK_PARSE_FRAME on Receive
[ 6194864600] : TSK_PARSE_FRAME on Receive
[ 6239662600] : TSK_PARSE_FRAME on Receive
[ 6284464600] : TSK_PARSE_FRAME on Receive
[ 6329262600] : TSK_PARSE_FRAME on Receive
[ 6374064600] : TSK_PARSE_FRAME on Receive
[ 6418862600] : TSK_PARSE_FRAME on Receive
[ 6524464600] : Transmitting TLPs to Memory 32 Space BAR 00000000
[ 6525664600] : TSK_PARSE_FRAME on Transmit
[ 6530864600] : TSK_PARSE_FRAME on Transmit
[ 6783664600] : TSK_PARSE_FRAME on Receive
[ 6930862600] : Test PASSED --- Write Data: 01020304 successfully received
[ 6934865000] : Finished transmission of PCI-Express TLPs
Stopped at time : 69348650 ps : File "H:/HDL/FndtnISEWork/Spartan6/sp605_pcie_ISE121/s6_pcie_v1_3/simulation/tests/tests.v" Line 254

  1. 2010年06月05日 05:03 |
  2. PCI Express
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1489-79b2a736
この記事にトラックバックする(FC2ブログユーザー)