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

ID 683091
日付 12/21/2020
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: SLAVEERROR— エンドポイントのスレーブからのエラーです。トランザクションが失敗したことを示します。
  • 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はオプションです。スレーブでは、データ転送をカウントすることにより、常に内部で次の書き込みバースト・トランザクションの開始を計算することができます。

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