割り込み処理は、選択したプロセッサによって異なります。
- MicroBlaze™ プロセッサの場合、割り込みの管理には AXI Interrupt Controller IP を使用する必要があります。
- AMD Zynq™ 7000 SoC プロセッサまたは Zynq MPSoC の場合、Zynq プロセッサ内の Generic Interrupt Controller ブロックで割り込みが処理されます。
使用されるプロセッサにかかわらず、Concat IP を使用して割り込みピンをまとめて駆動する必要があります。簡単な説明は、前述の Concat に関するセクションを参照してください。
Concat IP の入力をさまざまな割り込みソースで駆動します。このため、Concat IP は適切な数の入力ポートをサポートするように設定する必要があります。次の図に示すように、[Number of Ports] を割り込みソース数にします。
dout
) の幅はパラメーター伝搬時に自動的に設定されます。AXI Interrupt Controller では複数のパラメーターを設定可能です。次の図は、AXI Interrupt Controller の [Basic] タブに表示されるパラメーターを示しています。この中の複数のパラメーターを設定可能です。
- [Number of Peripheral Interrupts]: パラメーター伝搬中に自動的に設定され、ユーザーは設定できません。この値は、Concat IP の入力を駆動する割り込みソースの数によって決まります。
- [Fast Interrupt Mode]: レイテンシの短い割り込みが必要な場合に設定できます。
- [Peripheral Interrupts Type]: [Auto] に設定されていますが、[Auto] から [Manual] に変更するとユーザーが設定できるようになります。[Manual] に設定すると、これらのフィールドに値を直接指定できます。
- [Processor Interrupt Type]: 次の 2 つのオプションがあります。
- [Interrupt type]
- [Interrupt type] 設定によって、[Level Interrupt] または [Edge Interrupt]。
[Interrupt type] を [Edge Interrupt] にすると、[Edge type] が選択でき、[Interrupt type] を [Level Interrupt] にすると [Level type] を選択できます。
割り込みソースがエッジ トリガーなのかレベル トリガーなのかを選択できます。エッジ トリガーの場合は割り込みが立ち上がりエッジなのか立ち下がりエッジなのかを、レベル トリガーの場合は割り込みがアクティブ High なのかアクティブ Low なのかを指定できます。
IP インテグレーターでは、この値は通常接続された割り込み信号から自動的に判断されますが、手動で設定することもできます。
次の図は、AXI Interrupt Controller の [Advanced] タブのパラメーターを示しています。これらのパラメーターの詳細は、 『AXI Interrupt Controller (INTC) LogiCORE IP 製品ガイド』 (PG099) を参照してください。
ここでは、[Asynchronous Clocks] オプションに特に注意する必要があります。AXI Interrupt Controller では、デザインの割り込みソースが同じクロック ドメインからのものであるのか、異なるクロック ドメインからのものであるのかが判断されます。
割り込みが異なるクロック ドメインで駆動されたものである場合は、Vivado IDE の [Enable Asynchronous Clock operation] が自動的にオンになります。この場合、カスケード接続された同期レジスタが割り込みソースに追加されます。
[Clocks] タブでは、クロック周波数を指定できるので、アウト オブ コンテキスト (OOC) 合成フロー用に制約を生成できます。