AR# 5202

LogiCORE PCI - シングル サイクルのグラントがどのように処理されるか、 M_ADDR_N をアサートすると常にトランザクションが開始されるか

説明

キーワード : single, cycle, grant, GNT, PCI, LogiCORE, m_addr_n, シングル, サイクル, グラント

重要度 : 標準

概要 :
PCI v3.0 LogiCORE インターフェイスで、シングル サイクルのグラントはどのようにして処理されますか。

M_ADDR_N をアサートすると、常にトランザクションが開始されるのですか。

ソリューション

1

GNT# 信号が 1 サイクル分のみ PCI コアにアサートされた場合、PCI インターフェイスではバス マスタが想定されません。

タイミングを合わせるため、PCI コアのインターフェイスは、GNT# 信号がアサートされてから 2 クロック後に FRAME# 信号がアサートされるように設計されています。 その理由は、クロック 1 で GNT# がアサートされてから解除された場合、クロック 2 でアービタがバスを別のマスタに許可し、クロック 3 で LogiCORE インターフェイスと別のマスタの両方が FRAME# をアサートすると、問題が発生することがあるからです。 ここでバスの競合が発生します。

コアがシングル サイクルの GNT# を受け取ると、ユーザー アプリケーションに M_ADDR_N をアサートしますが、これはコアが FRAME# をアサートしてバスを所有しているということにはなりません。 ユーザー アプリケーションは、コアが実際にバスを所有しているかどうかを確認するため M_DATA 信号を監視する必要があります。 GNT# が 2 クロック サイクル間またはそれ以上の間アサートされていると、M_DATA がアサートされます。

ユーザー アプリケーションは、M_ADDR_N によるトランザクションの開始を監視している場合に、M_DATA がアサートされなければ、回復して実際のトランザクションが開始されるまで待つよう設計する必要があります。 M_DATA を使用せずに M_ADDR_N を複数アサートすることも可能です。 基本的には、アービタが 1 サイクルのみの GNT# をデバイスに送るたびに発生します。

v3.0 PCI コアでは、ユーザーがバス トランザクションを開始する要求を出したことが記憶されます。 その後、アービタが 2 サイクルの GNT# を送るか、データ転送が行われるまで、REQ# をアサートし続けることで、バスに要求し続けます。

2

PCI LogiCORE バージョン 3.0 では、ロジックが変更されています。 これは、すべての Virtex デバイス、および 4000XLA、Spartan-XL デバイスに適用されます。 ユーザーがバスを要求すると、その要求がコアで記憶され、 データ転送が行われるまでバス要求が継続されます。 ある時点で GNT_IO 信号が 2 クロック以上アサートされるとすれば、これにより問題は解決されます。

コアがデータの転送を待つ間、ユーザー デザインからのほかの要求は拒否されます。
AR# 5202
日付 12/15/2012
ステータス アクティブ
種類 一般