インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

17.6.2.7. 割り込み

さまざまなイベントの結果として、割り込みを生成することができます。DMAレジスター5 (Status Register) には、割り込みを発生させることのできる各イベントのステータスビットが含まれています。レジスター7 (Interrupt Enable Register) には、発生し得る割り込みソースそれぞれのイネーブルビットが含まれています。

割り込みには2つのグループ (NormalとAbnormal) があり、レジスター5 (Status Register) で示されます。割り込みは、対応するビット位置に1を書き込むことでクリアされます。グループ内の有効な割り込みがすべてクリアされると、対応するSummaryビットがクリアされます。両方のSummaryビットがクリアされると、sbd_intr_o割り込み信号がデアサートされます。MACが割り込みアサートの原因である場合、レジスター5 (Status Register) のGLIGMITTI、またはGLPIIビットのいずれかが1に設定されます。

図 71.  Summary割り込み (sbd_intr_o) の生成
注: レジスター5 (Status Register) は、割り込みステータスレジスターです。割り込みピン (sbd_intr_o) は、対応する割り込みイネーブルビットがレジスター7 (Interrupt Enable Register) で設定されている場合にのみ、このステータスレジスターのいずれかのイベントによってアサートされます。

割り込みはキューに入りません。ドライバーが割り込みに応答する前に割り込みイベントが発生した場合、追加の割り込みは生成されません。例えば、レジスター5 (Status Register) のビット6 (Receive Interrupt) は、1つまたは複数のフレームがホストバッファーに転送されたことを示しています。ドライバーは、最後に記録された位置からDMAが所有する最初の位置まで、すべての記述子をスキャンする必要があります。

割り込みは、同時に発生している複数のイベントに対して1回のみ生成されます。ドライバーは、割り込みの原因についてレジスター5 (Status Register) をスキャンする必要があります。ドライバーがレジスター5 (Status Register) の適切なビットをクリアした後は、新しい割り込みイベントが発生するまで割り込みは再度生成されません。例えば、コントローラーがレジスター5 (Status Register) のビット6 (Receive Interrupt) を設定し、ドライバーがレジスター5 (Status Register) の読み出しを開始します。次に、レジスター5 (Status Register) のビット7 (Receive Buffer Unavailable) で示される割り込みが発生します。ドライバーはReceive Interrupt (ビット6) をクリアします。ただし、アクティブ、つまり保留中のReceive Buffer Unavailable割り込みのために、sbd_intr_o信号はデアサートされません。

レジスター9 (Receive Interrupt Watchdog Timer Register) のビット7:0 (riwtフィールド) により、受信割り込みを柔軟に制御することができます。この割り込みタイマーが0以外の値でプログラムされている場合、このタイマーは、RX DMAがシステムメモリーに対する受信フレームの転送を完了するとすぐに、受信割り込みをアサートすることなくアクティブになります。これは、対応するReceive Descriptor (RDES1[31]) で受信割り込みが有効にされていないために起こります。このタイマーがプログラムされている値で終了すると、AISビットが設定され、対応するAIEがレジスター7 (Interrupt Enable Register) で有効になっている場合は、割り込みがアサートされます。フレームがメモリーに転送されると、このタイマーは、タイマーが終了する前に無効になります。また、受信割り込みが有効になっている場合は割り込みがトリガーされます。

信号のNISとAISがレジスターされます。