この手順では、さまざまな IP の個々の割り込み信号を AMD Concat ブロックを介して割り込みコントローラーに接続し、1 つのバスに連結します。させるため、さまざまな IP スレーブの割り込み信号をます。Concat ブロックは、複数の入力を 1 つのバス出力にまとめる汎用ブロックです。割り込みコントローラーの入力にはバスが必要なので、異なる AXI スレーブ コアからの個々の割り込み信号を 1 つのバスにまとめる必要があります。
- デザイン キャンバスを右クリックし、Add IP をクリックします。
- [Search] フィールドに「
concat
」と入力して、AMD Concat ブロックを検索し、このコアをダブルクリックします。次の図に示す AMD Concat コアが IP インテグレーターのデザイン キャンバスにインスタンシエートされます。
-
Concat block ブロックを右クリックし、Customize
Block をクリックします。
次の図に示す [Re-customize IP] ダイアログ ボックスが開きます。
- [Number of Ports] を
4
に変更し、[In0 Width] フィールドでマウスをクリックしてこの変更を反映させます。新しく設定した入力ポートの数を反映して、ダイアログ ボックスがアップデートされます。さまざまなスレーブ IP ブロックの割り込みポートを割り込みコントローラーに接続するには、ポートが 3 つ必要です。4 番目のポートは、Constant ブロックを使用して信号を High または Low に接続するために使用します。
-
OK をクリックします。
割り込みバスを作成するため、Concat ブロックに AXI スレーブの割り込み信号を接続します。
ヒント: バスから信号を取り出すには、Concat ブロックではなく、Slice ブロックを使用します。 - カーソルを AXI UART Lite の
interrupt
ピンの上に置きます。注記: カーソルの形が鉛筆に変わり、そのピンから接続が可能であることが示されます。 -
interrupt
ピンをクリックしてマウスを押したままにし、Concat ブロックのinput
ピンまでドラッグします。接続ワイヤをドラッグすると、入力ポートに緑色のチェック マークが表示され、接続が有効であることが示されます。
- マウスのボタンを放します。Vivado IP インテグレーターで選択したピンが接続されます。
- 同じ方法を使用して、AXI IIC ブロックと AXI Quad SPI ブロックの割り込みピンを Concat ブロックの入力ピンに接続します。
これで割り込み信号は Concat ブロックに接続されましたが、入力ピンが 1 つ接続されずに残っています。必要な数の入力のみが含まれるようこのブロックを再カスタマイズすることもできますが、このチュートリアルでは、Constant ブロックを使用して、この余分な入力を固定します。
- デザイン キャンバスを右クリックし、Add
IP をクリックします。
IP カタログが開きます。
- [Search] フィールドに「
cons
」と入力して、AMD Constant ブロックを検索し、このコアをダブルクリックします。AMD の Constant ブロックがサブシステム デザインにインスタンシエートされます。
- Constant ブロックを Concat ブロックの近くに移動します。
- Constant ブロックの出力ピンをクリックしてマウスを押したままにし、カーソルを Concat ブロックの未接続の 4 番目の入力ピンまでドラッグして接続します。
接続ワイヤをドラッグすると、入力ピンに緑色のチェック マークが表示され、接続が有効であることが示されます。
- マウスのボタンを放します。Vivado IP インテグレーターで選択したピンが接続されます。
さまざまな AXI スレーブの割り込みピンをダブルクリックすると、これらのピンがデフォルトでアクティブ High になっている (立ち上がりエッジでトリガーされる) ことを確認できます。この場合、不要な割り込みを防ぐため、Concat ブロックの 4 番目の入力を Constant ブロックを使用して固定する必要があります。
-
Constant block ブロックをダブルクリックして、IP を再カスタマイズします。
[Re-customize IP] ダイアログ ボックスが開きます。
- [Const Val] に
0
と入力し、OK をクリックします。
Concat ブロックの 4 番目の入力がフロート状態ではなくなりました。これで、Concat ブロックで連結した割り込み信号を割り込みコントローラーに接続できます。
- Concat ブロックの出力ピン
dout[3:0]
をクリックしてマウスを押したままにし、Interrupt Controller ブロックのintr[0:0]
ピンにドラッグして接続します。 -
Regenerate Layout ボタン をクリックし、サブシステム デザインを再描画します。
デザイン レイアウトは次の図のようになります。
注記: Interrupt Controller ブロックの割り込み信号の 1 ビット バス幅は、Concat ブロックの 4 ビット信号幅と異なります。これは、Vivado ツールでデザイン検証中に自動的に修正されます。ヒント: Interrupt Controller ブロックをインスタンシエートすると、割り込みポートはデフォルトで 1 ビットになります。デザインの検証中、Concat ブロックの出力信号の幅がパラメーター伝搬により Interrupt Controller ブロックの入力信号に渡され、Interrupt Controller ブロックのポート幅が自動的に変更されます。 - Interrupt Controller ブロックの interrupt pin ピンを右クリックし、Make External をクリックします。
これにより、割り込み出力ピンが IP サブシステム デザイン外の出力ポート (プロセッサなど) に接続されます。
Interrupt Controller ブロックのすべての割り込みには、Concat ブロックに接続された順序に基づいて優先順位が付けられます。割り込みバスのビット 0 が最優先されます。
割り込みポートが High (アクティブ) になると、どのスレーブが割り込みを発生させたのかがプロセッサにより判断されます。 複数の割り込みがある場合は、優先順位に従って処理されます。
- をクリックします。