Avalon® インターフェイスの仕様書

ID 683091
日付 9/26/2022
Public
ドキュメント目次

3.2. Avalon® Memory Mapped インターフェイス信号の役割

信号の役割により、 Avalon® のメモリー・マッピングされたホストポートとエージェント・ポートで許可される信号のタイプが定義されます。

この仕様では、すべての信号が Avalon® メモリーマップド・インターフェイスに存在することを必要としていません。かならず必要な信号は 1 つもありません。 Avalon® メモリーマップド・インターフェイスの最低要件として、読み出し専用インターフェイスの場合は readdata、書き込み専用インターフェイスの場合は writedata および write が必要です。

次の表は、 Avalon® メモリーマップド・インターフェイスの信号の役割を記載しています。

表 9.   Avalon® メモリーマップド信号の役割 Avalon® メモリーマップド信号の一部は、アクティブ High またはアクティブ Low にすることができます。アクティブ Low の場合、信号名は _n で終わります。
信号の役割 方向 必須 詳細
基本的な信号
address 1 から 64 ホスト → エージェント いいえ

ホスト: デフォルトで、address 信号はバイトアドレスを表します。アドレスの値は、データ幅に合わせる必要があります。データワード内の特定のバイトに書き込みを行う場合、ホストで byteenable 信号を使用する必要があります。ワードのアドレス指定に関しては、addressUnits インターフェイスのプロパティーを参照してください。

エージェント: デフォルトで、インターコネクトは、バイトアドレスをエージェントのアドレススペースのワードアドレスに変換します。エージェントの観点において、各エージェント・アクセスはデータのワードに対するものです。

例えば、address = 0 ではエージェントの最初のワードが選択されます。address = 1 では、エージェントの 2 番目のワードが選択されます。バイトのアドレス指定に関しては、addressUnits インターフェイスのプロパティーを参照してください。

byteenable

byteenable_n

2、4、8、16、32、64、128 ホスト → エージェント いいえ 幅が 8 ビットを超えるインターフェイスでの転送時に 1 つ以上の特定のバイトレーンを有効にします。byteenable の各ビットは、writedata および readdata のバイトに対応します。byteenable のホストビット <n> は、バイト <n> が書き込まれているかを示します。書き込み時に、byteenable は書き込まれているバイトを指定します。他のバイトはエージェントで無視されます。読み出し時に、byteenable はホストが読み出しているバイトを示します。副作用がなく単に readdata を返すエージェントでは、読み出し時に byteenable を無視することができます。インターフェイスに byteenable 信号がない場合、転送は、すべての byteenable がアサートされているように進行します。

複数の byteenable 信号がアサートされている場合、アサートされているレーンはすべて隣接しています。

debugaccess 1 ホスト → エージェント いいえ アサートされると、 Nios® II プロセッサーは ROM としてコンフィグレーションされているオンチップメモリーに書き込むことができます。
read

read_n

1 ホスト → エージェント いいえ アサートされている際は、read 転送を示します。提供されている場合は、readdata が必要です。
readdata 8、16、32、64、128、256、512、1024 エージェント → ホスト いいえ read 転送に応答してエージェントからホストに駆動される readdata です。読み出しをサポートするインターフェイスに必要です。
response [1:0] 2 エージェント → ホスト いいえ

response 信号は、応答ステータスを伝達するオプションの信号です。

注: 信号は共有されているため、インターフェイスでは書き込み応答と読み出し応答を同じクロックサイクルで発行または受け入れることができません。
  • 00: OKAY - トランザクションに対する成功応答です。
  • 01: RESERVED - エンコーディングは予約済みです。
  • 10: SLVERR - エンドポイントのエージェントからのエラーです。トランザクションが失敗したことを示します。
  • 11: DECODEERROR - 未定義の位置に対するアクセスが試行されたことを示します。

読み出し応答の場合

  • それぞれの readdata には、1 つの応答が送信されます。読み出しバースト長 N は、N 数の応答になります。少ない応答は無効です (エラーが発生した場合も)。応答信号の値は、バースト内のそれぞれの readdata で異なる場合があります。
  • インターフェイスには読み出しコントロール信号が必要です。パイプラインのサポートは、readdatavalid 信号で可能です。
  • 読み出しエラー発生時は、対応する readdata は「don't care」になります。

書き込み応答の場合

  • それぞれの書き込みコマンドには、1 つの書き込み応答を送信する必要があります。書き込みバーストの応答は 1 つのみになり、バースト内の最後の書き込み転送が受け入れられた後に送信する必要があります。
  • writeresponsevalid が提供されている場合、すべての書き込みコマンドは書き込み応答で完了する必要があります。
write

write_n

1 ホスト → エージェント いいえ アサートされている際は、write 転送を示します。提供されている場合は、writedata が必要です。
writedata 8、16、32、64、128、256、512、1024 ホスト → エージェント いいえ 書き込み転送のデータです。幅は、readdata の幅と同じにする必要があります (両方が存在する場合)。書き込みをサポートするインターフェイスに必要です。
待機状態の信号
lock 1 ホスト → エージェント いいえ lock では、ホストが調停に勝つと、そのホストがエージェントへのアクセスを複数のトランザクションにわたって維持することが保証されます。lock のアサートは、ロックされるトランザクション・シーケンスの最初の read または write と一致します。lock は、ロックされているトランザクション・シーケンスの最後のトランザクションでデアサートされます。lock のアサートは、調停に勝つことを保証するものではありません。ロックをアサートしているホストに権利が付与されると、そのホストは、lock がデアサートされるまでその権利を保有します。

lock を備えるホストをバーストホストにすることはできません。ロックを備えるホストの調停優先度の値は無視されます。

lock は、リードモディファイライト (RMW) 操作に特に便利です。標準的なリードモディファイライト操作には、次の手順が含まれます。

  1. ホスト A はロックをアサートし、複数のビットフィールドをもつ 32 ビット・データを読み出します。
  2. ホスト A はロックをデアサートし、1 ビット・フィールドを変更して 32 ビット・データを書き戻します。

lock を使用することで、ホスト A の読み出しと書き込みの間にホスト B が書き込みを行うことを防ぎます。

waitrequest

waitrequest_n

1 エージェント → ホスト いいえ エージェントは、read または write 要求に応答することができない場合に waitrequest をアサートします。これにより、インターコネクトで転送を続行する準備ができるまで、ホストを強制的に待機させます。転送が開始される際はかならず、ホストで転送を開始し、waitrequest がデアサートされるまで待機します。ホストでは、アイドル状態の際に、waitrequest のアサート状態を想定してはいけません。waitrequest は、システムのプロパティーに応じて High の場合と Low の場合があります。

waitrequest がアサートされている際に、エージェントへのホスト・コントロール信号は一定に保たれている必要があります (beginbursttransfer を除く)。beginbursttransfer 信号を表すタイミング図に関しては、読み出しバーストの図を参照してください。

Avalon® のメモリー・マッピングされたエージェントでは、アイドルサイクル時に waitrequest をアサートすることが可能です。 Avalon® のメモリー・マッピングされたホストでは、waitrequest がアサートされている際にトランザクションを開始し、その信号がデアサートされるまで待機することが可能です。システムのロックアップを回避するため、エージェント・デバイスではリセット時に waitrequest をアサートする必要があります。

パイプライン信号
readdatavalid

readdatavalid_n

1 エージェント → ホスト いいえ 可変レイテンシーのパイプライン化された read 転送に使用されます。アサートされている際は、readdata 信号に有効なデータが含まれていることを示します。バーストカウント値が <n> の読み出しバーストでは、readdatavalid 信号が <n> 回アサートされる必要があります (各 readdata アイテムに 1 回)。read の受け入れと readdatavalid のアサート間には、少なくとも 1 サイクルのレイテンシーが必要です。readdatavalid 信号を表すタイミング図に関しては、可変レイテンシーでのパイプライン読み出し転送を参照してください。

エージェントでは、 エージェントが新しいコマンドを waitrequest でストールしているかいないかにかかわらず、readdatavalid をアサートしてホストにデータを転送することができます。

ホストがパイプライン読み出しをサポートしている場合に必要です。読み出し機能を備えるバーストホストには、readdatavalid 信号を含める必要があります。

writeresponsevalid 1 エージェント → ホスト いいえ

オプションの信号です。提供されている場合、インターフェイスは書き込みコマンドに対する書き込み応答を発行します。

アサートされている場合は、応答信号の値は有効な書き込み応答です。

writeresponsevalid は、書き込みコマンドが受け入れられてから 1 クロックサイクル以上が経過してからのみアサートされます。コマンドの受け入れから writeresponsevalid のアサートまでには、少なくとも 1 クロックサイクルの遅延があります。

書き込みコマンドは、バーストの最後のビートがエージェントに発行され、waitrequest が Low の場合に受け入れられたとみなされます。writeresponsevalid は、バーストの最後のビートが発行された後 1 クロックサイクル以上が経過してからアサートすることができます。

バースト信号
burstcount 1 から 11 ホスト → エージェント いいえ バーストホストで使用され、各バースト内の転送数を示すものです。burstcount パラメーターの最大値は、2 の累乗にする必要があります。幅が <n> のバーストカウント・インターフェイスでは、最大 2(<n>-1) のサイズのバーストをエンコードすることができます。例えば、4ビットの burstcount 信号では、最大 8 のバーストカウントをサポートすることができます。最小の burstcount は 1 です。constantBurstBehavior プロパティーは、burstcount 信号のタイミングを制御します。読み出し機能を備えるバーストホストには、readdatavalid 信号を含める必要があります。

バイトアドレスを使用するバーストホストとエージェントの場合、アドレスの幅には次の制約が適用されます。

<address_w> >=
                  <burstcount_w> +
log2(<symbols_per_word_of_interface>)

ワードアドレスを使用するバーストホストとエージェントの場合は、上の式から log2 項が省略されます。

beginbursttransfer 1 インターコネクト → エージェント いいえ バーストの最初のサイクルでアサートされ、バースト転送が開始されることを示します。この信号は、waitrequest の値にかかわらず、1 サイクル後にデアサートされます。beginbursttransfer を表すタイミング図に関しては、読み出しバースト内の図を参照してください。

beginbursttransfer はオプションです。エージェントでは、データ転送をカウントすることにより、常に内部で次の書き込みバースト・トランザクションの開始を計算することができます。

警告: この信号は使用しないでください。この信号は、レガシー・メモリー・コントローラーをサポートするために存在します。