1. はじめに
このコンテンツでは Platform Designer(旧 Qsys)における、Arbitration (アービトレーション)の設定について解説しています。
1つの Slave に対して複数の Master からアクセスする場合、排他的にアクセスする為にアービターの挿入が必要です。
Platform Designer では、自動的にアービターが挿入されるため、ユーザーは Arbitration の設定で種類と Arbitration Shares の設定だけを行います。
デフォルトの設定では Round-Robin Arbitration が有効になっています。
詳しい仕様は、以下のユーザーガイドを参照ください。
Intel Quartus Prime Pro Edition User Guide: Platform Designer
2. Arbitration の種類と設定方法
Arbitration の種類は 表1 の通り 2 つになります。
Arbitration Shares の意味合いが種類によって異なります。
【表1】 Arbitration の種類
Arbitration の種類 | Arbitration Shares の意味 | 概要 |
Round-Robin Arbitration | 優先権割り当てサイクル数 | 優先権割り当てサイクル数(トランザクションの回数)を設定して、 Master が順番にそのサイクル数のアクセスを繰り返します |
Fixed Priority Arbitration | 優先順位 |
優先順位の高い Master にアクセス権が渡されます。 優先順位が低い Master はアクセス権が放棄されるまでアクセスできません |
2-1. Round-Robin Arbitration の詳細
Round-Robin Arbitration は、優先権割り当てサイクル数として Arbitration Shares を Master ごとに設定し、優先権割り当てサイクル数ごとに順番に Master がアクセスを行っていく設定です。
必ずアクセスするタイミングがある為、優先権割り当てサイクル数ごとにすべての Master が平等にアクセスを実行できます。
図1 は Arbitration Shares が Master 1 が "3"、Master 2 が "2" と設定されてた場合の波形例です。
波形から読み取れる通り Master 1 が 3 サイクル分、Master 2 が 2 サイクル分のアクセスサイクルを確保できていることがわかります。
【図1】 Round-Robin Arbitration の波形例
また、確保したサイクル分実行されないアクセスだった場合は、残りのアクセスサイクル数を放棄して次の Master に譲る動作になります。
2-2. Fixed Priority Arbitration の詳細
Fixed Priority Arbitration は優先度を Arbitration Shares で設定し、その優先度が高い Master が優先的にアクセス権を獲得できる設定です。Arbitration Shares の数字が大きいほど優先度が高くなります。
(例) 低い: 0<1<2<4<7 :高い
複数の Master から同時にアクセスが要求された場合は、優先度の一番高い Master にアクセス権が渡ります。
Fixed Priority Arbitration の設定時に、Arbitration Shares を同じ数値に設定する事は出来ません。
Error Message が表示されますので、異なる数値を設定してください。
図2 は Arbitration Shares が Master 1 が "2"、Master 2 が "1" と設定されてた場合の波形例です。
優先度は Master 1 が高くなっています。
波形から読み取れる通り、Master 2 のアクセス中に Master 1 のアクセス要求があった場合、Master 1 にアクセス権が渡り、Master 1 がアクセス権を放棄するまで、Master 2 はアクセスを待ちます。
【図2】 Fixed Priority Arbitration の波形例
2-3. Arbitration Shares の設定方法
Quartus® Prime Pro Edition ver.19.3 の表示をベースに解説いたします(Standard Edition でも同様です)。
Platform Designer にて Arbitration Shares の数字を表示させます。
System Views 画面上を右クリックして、図3 のように "Show Arbitration Shares" の設定ボタンがあるので、クリックして有効にしてください。
【図3】 Arbitration Shares の設定方法
Slave への接続を行う黒丸が数字に変わって入力できるようになり、Arbitration Shares の設定ができるようになったかと思います。この Arbitration Shares の数字は、Round-Robin Arbitration なのか、Fixed Priority Arbitration なのかによって意味合いが変わってきますので、実現したい Arbitration 方式に合わせて数字を設定してください。
3. Round-Robin Arbitration と Fixed Priority Arbitration の切り替え方法
Round-Robin Arbitration と Fixed Priority Arbitration の切り替え方法は、Quartus® Prime の Standard Edition と Pro Edition で異なっています。以下にそれぞれの方法を解説します。
3-1. Quartus® Prime Standard Edition での切り替え方法(ver.19.1 の例)
図 4 のように Platform Designer にて、Interconnect Requirements を表示させて下さい。
Identifier 欄から Slave の名称を選択し、Setting 欄で "Slave arbitration scheme" を設定すると、
Value 欄で切り替えられるようになります。
【図4】 Srandard Edition における Round-Robin と Fixed Priority の切り替え方法
3-2. Quartus® Prime Pro Edition での切り替え方法(ver.19.3 の例)
図5 のように Platform Designer にて、Domains を表示させ、Memory Mapped Domain で Master を選択すると、Interconnect Parameters を設定できるようになり、Interface タブを選択してください。
Identifier 欄から Slave の名称を選択し、Setting 欄で "Slave arbitration scheme" を設定すると、
Value 欄で切り替えられるようになります。
切り替える際に、カーソルを合わせて Enter を押すことで反映されますので、ご注意ください。
KDB:How do I designate a slave to use fixed-priority arbitration in Platform Designer?
【図5】 Pro Edition における Round-Robin と Fixed Priority の切り替え方法
4. まとめ
以上、Platform Designer(旧 Qsys)における、Arbitration の設定方法について説明しました。
Platform Designer では、自動的にアービターが挿入されるので、ユーザーは Arbitration の種類と Arbitration Shares の設定だけを行います。
設定可能な Arbitration の種類には、Round-Robin と Fixed Priority の 2 種類があります。
Arbitration Shares の設定は、Quartus® Prime Standard Edition と Pro Edition で同様の手順でできますが、Round-Robin Arbitration と Fixed Priority Arbitration の切り替え方法は、Standard Edition と Pro Edition で異なっていますので注意してください。