Cortex-A9内蔵FPGA“Zynq”入門 割り込み処理の実現


IRQ信号を出すGIC回路とSerial Peripheral Interfaceを接続

PLからPSへの割り込みとGIC回路

図1 Zynqの割り込みシステムでは,PL側で発生したイベントをIRQ_F2P(Interrupt Request from FPGA to Processor)ポートを介してPSに通知する.画像クリックで動画を見る.または記事を読む.[提供・著]中村 晋一郎
詳細[VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門

Zynqデバイスでは,PL(Programmable Logic)側の回路からPS(Processing System)側のCortex-A9プロセッサへ割り込みを送信できます.このしくみは,汎用割り込みコントローラ(GIC:Generic Interrupt Controller)によって実現されます.

Zynqの割り込みシステムでは,PL側で発生したイベントをIRQ_F2P(Interrupt Request from FPGA to Processor)ポートを介してPSに通知します.この際,複数の割り込み信号を一括して処理するためにxlconcat IPを用いることが一般的です.GICは受信した割り込みを適切に管理し,優先度の制御やマスキングを行います.

割り込み処理の基本的な流れは以下のとおりです.

  1. PL側で割り込み信号を発生させる.
  2. xlconcatを介して複数の割り込み信号を統合する.
  3. IRQ_F2Pポートを通じてPSに通知する.
  4. GICが割り込みを受信し,適切な割り込みハンドラを実行する.

このプロセスを理解することで,FPGAとプロセッサ間の連携を効果的に設計できます.

SPIとの接続と割り込み処理

Serial Peripheral Interface(SPI)は,シリアル通信を行うための一般的なインターフェースです.ZynqではPL側にSPIコントローラを配置し,PSと連携させることで効率的なデータ通信が可能になります.SPI通信ではデータの送受信が完了したことを知らせるために割り込みを利用できます.

SPI通信における割り込み処理の流れは以下のとおりです.

  1. PS側のSPIコントローラが送信データをバッファに書き込む.
  2. PL側のSPIスレーブがデータを受信し,処理を行う.
  3. データの受信が完了すると,PL側の回路が割り込みを発生させる.
  4. IRQ_F2Pポートを通じてPSに通知される.
  5. GICが割り込みを処理し,適切な割り込みハンドラが実行される.

このようにSPIと割り込みを組み合わせることで,データの送受信を効率的に行えます.

キーワード:汎用割り込みコントローラ(GIC)

GICの役割

GICは,複数の割り込み信号を管理し,PSのプロセッサに適切に通知する役割をもちます.Zynqのような複雑なシステムでは,多数の割り込み信号が発生するため,それらを適切に処理することが求められます.

GICは以下のような機能を提供します.

  1. 複数の割り込みソースを管理する.
  2. 優先度を設定し,重要度の高い割り込みを優先して処理する.
  3. 割り込みのマスキング(無効化)やイネーブル(有効化)を制御する.
  4. 割り込み処理の終了を通知し,次の割り込みを受け付ける.

割り込み処理の流れ

GICによる割り込み処理は,以下の手順で行われます.

  1. 割り込み発生源(PLまたはPSの周辺デバイス)がGICに割り込み要求を送る.
  2. GICは割り込みの優先度を判断し,処理可能な状態かを確認する.
  3. プロセッサに割り込み通知を送信する.
  4. プロセッサが適切な割り込みハンドラを実行する.
  5. 処理が完了すると,GICに対して割り込みの終了を通知する.

GICを適切に活用することで,効率的な割り込み処理が可能となり,システム全体のパフォーマンスを向上させることができます.〈著:ZEPマガジン〉

動画を見る,または記事を読む

著者紹介

  • 2002年より業務用映像音声機器メーカに勤務.システムアーキテクチャ設計やファームウェア開発業務に携わる.2020年にリベラルロジック株式会社を設立.

著書

  1. [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.
  2. アプリはスクリプトで柔軟に!マイコン用MicroPythonプログラミング,Interface 2016年10月号,CQ出版社.
  3. シンプル・便利・基本的!フリー・ソフトで高品質プログラミング,Interface 2015年11月号,CQ出版社.
  4. 音遊び!Blackfin DSP基板でディジタル信号処理初体験,Interface 2015年2月号,CQ出版社.
  5. ROM 10Kバイト/RAM 1Kバイトでヒストリ機能付き! コマンド入力ライブラリNT-Shell,Interface 2013年1月号,CQ出版社.
  6. SDメモリーカード対応のポータブルFPGA書き込み器,トランジスタ技術2011年9月号,CQ出版社.
  7. 世界温度計 コラム イーサネット通信用のライブラリが充実,トランジスタ技術2011年5月号,CQ出版社.

参考文献

  1. FPGA/Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
  2. Zynq FPGA入門 コンピュータ・チップの自作,ZEPエンジニアリング株式会社.
  3. Zynq FPGA入門 自作回路とCPUの通信,ZEPエンジニアリング株式会社.
  4. Zynq FPGA入門 独自のコンピュータ・チップ,ZEPエンジニアリング株式会社.
  5. Zynq FPGA入門 2つのチップ内CPU構成法,ZEPエンジニアリング株式会社.
  6. Zynq FPGA入門 各社FPGAと利用できるCPU,ZEPエンジニアリング株式会社.
  7. Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
  8. HDL超入門!スイッチ読み取り回路とLED駆動回路のHDLソースコード,ZEPエンジニアリング株式会社.
  9. 超入門!スイッチ読み取り回路とLED駆動回路のHDLソースコード,ZEPエンジニアリング株式会社.
  10. FPGAキット DE10入門 PWM信号生成回路IP,ZEPエンジニアリング株式会社.
  11. FPGAキット DE10入門 論理合成前の動作確認,ZEPエンジニアリング株式会社.
  12. FPGAキット DE10入門 正しく動かない乗算器,ZEPエンジニアリング株式会社.
  13. Artix-7 FPGA入門 A-D変換回路の実験,ZEPエンジニアリング株式会社.
  14. FPGA×HDL超入門 2種類のリセット回路,ZEPエンジニアリング株式会社.
  15. FPGA×HDL超入門 2種類のリセット回路,ZEPエンジニアリング株式会社.
  16. FPGA×HDL入門 レジスタの同期運転,ZEPエンジニアリング株式会社.
  17. FPGA×HDL超入門 4桁の7segLED制御,ZEPエンジニアリング株式会社.
  18. Xilinx FPGA入門 回路バイナリの合成,ZEPエンジニアリング株式会社.
  19. Xilinx FPGA入門3 重要な2つのファイル,ZEPエンジニアリング株式会社.
  20. Xilinx FPGA入門2 回路データ・バイナリを転送,ZEPエンジニアリング株式会社.
  21. Xilinx FPGA入門1 スイッチONでLED点灯,ZEPエンジニアリング株式会社.
  22. FPGA入門 演算回路の動作テスト
  23. 自作CPU入門:コンピュータの頭脳を理解する,ZEPエンジニアリング株式会社.
  24. 自作CPU入門2:部品どうしをつなぐ「バス」,ZEPエンジニアリング株式会社.