Cortex-A9内蔵FPGA“Zynq”入門


AXIバス経由でLチカ,レジスタを使った//GPIO制御の実験

AXI GPIOのあらまし

図1 AXI GPIOのレジスタを操作してLEDの点灯制御を行ってみた.VivadoとVitisを組み合わせることで,ハードウェアからソフトウェアまで一貫した設計が可能なことを確認.画像クリックで動画を見る.または記事を読む.[提供・著]中村 晋一郎
詳細[VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門

ZynqデバイスにはAXI GPIOが搭載されており,AXIバス経由でGPIO(汎用入出力)を制御できます.AXI GPIOは,以下の特徴をもっています.

  1. 2系統のGPIOを内蔵
  2. AXIインターコネクト回路を介した通信
  3. 割り込みコントローラとの接続が可能

このGPIOモジュールは,シンプルな32ビット・レジスタを2本用いて制御します.GPIOコアへのアクセスはメモリマップ方式で行い,レジスタの書き換えによって出力を変更します.

GPIOレジスタの詳細

AXI GPIOには主に2種類のレジスタがあります.

  1. データ・レジスタ(0x0000):GPIOの状態を設定する
  2. 制御レジスタ(0x0004):入出力の方向を設定する

制御レジスタに`0`を書き込むことで,GPIOピンを出力モードに設定できます.さらに,データ・レジスタを操作することで,LEDを点灯または消灯できます.

AXI GPIOの制御手順

GPIO制御は以下の手順で行います.

  1. Vivado上でGPIOコアを追加し,適切な名前を付与する
  2. Vitisで生成された`xparameters.h`を参照し,GPIOのベース・アドレスを確認する
  3. 制御レジスタを設定して入出力方向を決定する
  4. データ・レジスタを操作し,出力値を制御する

Vivado上でGPIOの名称を適切に設定することがポイントです.`axi_gpio_rgb_led`と命名すれば,Vitis側では`XPAR_AXI_GPIO_RGB_LED_XXX`という名称で参照でき,可読性が向上します.

AXIバスとは?

AXI(Advanced eXtensible Interface)は,ARMが策定したバス・インターフェース規格です.高性能なデータ転送を可能にするしくみが特徴です.

  1. パイプライン化されたデータ転送
  2. アドレス・フェーズとデータ・フェーズの分離
  3. バースト転送のサポート

AXIはZynqのようなFPGA内蔵プロセッサにおいて,プロセッサと周辺回路を接続するための重要な役割を果たします.AXI GPIOはこのAXIバスを介して動作し,プロセッサとGPIO間のデータ転送をスムーズに行います.〈著: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エンジニアリング株式会社.