FC2カウンター FPGAの部屋 Spartan-6のPCIe Endpoint Block IPの勉強4(PIOデザインの勉強)
FC2ブログ

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

FPGAの部屋

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

Spartan-6のPCIe Endpoint Block IPの勉強4(PIOデザインの勉強)

Spartan-6のPCIe Endpoint Block IPのサンプル・デザイン、PIOデザインの勉強をする。これは、下の図で言うと、Spartan-6のPCIe Endpoint Block IPの下の部分で、サンプル・デザインの時のメモリやIOの実装だ。実際には4つのBRAMが載っていて、それぞれ違うアドレスを持っている。
pcie_example_design_1_100526.png

Root PortからのTLPを受信したEnd Pointは、どのBase Address Register (BAR) にヒットしたかをtrn_rbar_hit_n[6:0]でユーザー回路に知らせるようだ。下に、trn_rbar_hit_n[6:0]の説明をユーザーズガイドから引用する。

Receive BAR Hit: Active low. Indicates BAR(s)
targeted by the current receive transaction.
Asserted throughout the packet, from trn_rsof_n to trn_reof_n.
• trn_rbar_hit_n[0] => BAR0
• trn_rbar_hit_n[1] => BAR1
• trn_rbar_hit_n[2] => BAR2
• trn_rbar_hit_n[3] => BAR3
• trn_rbar_hit_n[4] => BAR4
• trn_rbar_hit_n[5] => BAR5
• trn_rbar_hit_n[6] => Expansion ROM Address.
Note that if two BARs are configured into a single 64-bit address, both corresponding trn_rbar_hit_n bits are asserted.


#そういえば、End Pointとユーザー回路のインターフェースを真面目に勉強するのを忘れていた。これは後で勉強することにする。

4つのBRAMがどのBARに割り当てられているかを示すテーブルがユーザーズガイド129ページからに載っている。Table 9-1: TLP Traffic Typesを下に引用する。
pcie_example_design_2_100527.png

上図のようになるようだが、疑問が2つ。End Point IPは、前回、1つのBARで、1MBytesに設定したはずなのだが、それは無視されるのだろうか?サンプル・デザインはこのコンフィギュレーションになるの?
ep_mem0はIOで、trn_rbar_hit_n[6:0]はDefaultと書いてあるが、PCIeはそうなるのかな?PCIでは、IOもBARにアドレスを登録するんじゃなかったか?

もう少し、PCIeの勉強が必要なようだ。

ソースを読んでみたところ、64ビット幅アドレスは無効になっていた。trn_rbar_hit_n[0] => BAR0の32ビット幅アドレスは有効でBRAMがアサインされていた。trn_rbar_hit_n[6] => Expansion ROM Addressも有効でBRAMがアサインされていた。それ以外のアクセスがあったときは、デフォルトのIO領域のBRAMがアクセスされていた。

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

コメント

コメントの投稿


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

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