はじめに
プラットフォーム・デザイナー(旧 Qsys) で未定義のスレーブ領域にアクセスが発生した場合の挙動を確定させたい場合には下記の通り Default Slave を使用することを推奨しております。Default Slave を使用しない場合、アクセス先は定義されず、どこにアクセスが行くか不定となりますので、Default Slave の設定はしておきましょう。
-
[Intel® Quartus® Prime Standard Edition User Guide Platform Designer]
Accessing Undefined Memory Regions - [Where do transactions to undefined addresses get routed to in QSys?]
Default Slave を使用するには以下 2つの方法があります。
注記:
1番の方法であれば、Default Slave に使用するロジックを自由に決めることができるため、未定義領域のアクセスが発生した時の反応をカスタマイズすることができます。
2番の方法の場合、自動的に Default Slave のロジックが接続され、インターフェースによって挙動が異なります。
-
AXI の場合、下記の結果になります。
- Write アクセス: BRESP で DECEER 応答
- Read アクセス: RRESP で DECEER 応答
-
Avalon の場合、下記の結果になります。
- Write アクセス: アクセスが正常終了(データは投げ捨て)
- Read アクセス: オール 'F' のデータが返る
以下ではそれぞれの方法で Default Slave を追加する方法をご紹介します。
1. 特定のコンポーネントを Default Slave として使用する方法
- プラットフォーム・デザイナーの System Contents タブ内にあるタイトルバーに、マ
ウスポインターを配置します。
- 次に右クリックを行い、プルダウンメニューから Show Default Slave Column を選択します。
- Default Slave 列の表示が追加され、Avalon-MM Slave コンポーネントに対して、チェックボックスがチェックの無い状態で表示されます。
- 例えば PIO_2 という Avalon-MM スレーブ・コンポーネントの Default Slave 列にチェックを入れると、このコンポーネントのアドレスマップ(Base 列と End 列で示されるアドレス領域)が消えて、共に default と表示されます。
これにより未定義アドレスへのアクセスが発行された場合には上記で指定したコンポーネントに対してアクセスが発行されます。
2. ツールの設定で自動的に Default Slave を追加する方法
- Interconnect Requirements タブをクリックします。
・Add ボタンをクリックし以下の通りパラメーターを追加します。
- Identifier: $system
- Setting: Automate default slave insertion
- Value: TRUE
これにより未定義アドレスへのアクセスが発行された場合、インターコネクトに自動追加された Default Slave に対してアクセスが発行されます。