Cortex-A9内蔵FPGA Zynq 入門


アプリ層とBSP層の接続

BSP層のAPIを利用してアプリケーション層からハードウェアを操作

図1 BSP APIを利用して,I$^2$Cインターフェースの温湿度センサHDC1080(Texas Instruments)に温湿度センサを制御するハードウェアとソフトウェアをZynq-7000に効率よく実装.画像クリックで動画を見る.または記事を読む.[提供・著]中村 晋一郎
詳細[VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門

組み込みシステムにおいて,アプリケーション層とボード・サポート・パッケージ(BSP)層の適切な接続は,効率的な開発を行うために重要です.Zynq-7000シリーズでは,BSPに含まれるAPIを活用することで,ハードウェアの制御が容易になります.

BSP層は,デバイス・ドライバや周辺回路の制御を行うAPI群を提供しています.アプリケーション層からBSP層のAPIを呼び出すことで,ハードウェアの詳細を意識せずにデバイスを操作できます.

  1. BSP層は,ハードウェア抽象化の役割を果たす
  2. アプリケーション層は,BSP層のAPIを利用してハードウェアを操作する
  3. BSPの構造を理解することで,独自IPコアとの統合が容易になる

VivadoとVitisを用いたワークフローでは,まずハードウェア設計をVivadoで行い,Vitisでソフトウェアを開発します.具体的には,I$^2$Cインターフェースをもつ温湿度センサを操作するため,AXI IICコアを利用した構成を実装します.

温湿度センサのI$^2$C制御

Zynqで温湿度センサ(Texas Instruments製HDC1080)を制御するには,I$^2$C通信を適切に実装する必要があります.I$^2$Cはシリアル通信の一種で,マスタ・スレーブ方式を採用しています.

  1. I$^2$Cは,SDA(データ線)とSCL(クロック線)の2本の信号線を使用する
  2. マスタ(Zynq)がスレーブ(HDC1080)に対して通信を開始する
  3. スレーブはアドレス指定された後,データを送受信する

HDC1080は,温度と湿度を測定する機能をもち,I$^2$C経由でデータを取得できます.XilinxのBSPに含まれるxiic APIを利用することで,I$^2$C通信を容易に実装できます.

ターミナルでのデータ表示

取得した温湿度データをターミナルに表示することで,センサが正常に動作しているかを確認できます.Vitisで開発したアプリケーションは,UART経由でPCにデータを送信し,ターミナル・ソフトウェアで受信できます.

  1. 温湿度データはI$^2$C経由で取得される
  2. 取得したデータを適切な単位に変換する
  3. UARTを使用してPCのターミナルへ送信する

この方法により,センサの値をリアルタイムで観測できます.アプリケーション層では,取得したデータをフォーマットし,視認しやすい形で表示します.

I$^2$Cのしくみ

I$^2$Cの基本構造

I$^2$C(Inter-Integrated Circuit)は,短距離のデバイス間通信プロトコルであり,2本の信号線(SDAとSCL)を使用します.シリアル通信の中でも,複数のスレーブデバイスを1つのバスに接続できる点が特徴です.

  1. シングル・マスタ・マルチスレーブ構成が可能
  2. クロック信号(SCL)に同期したデータ通信
  3. 7ビットまたは10ビットのアドレス指定方式

マスタ(Zynqなど)はクロックを制御し,スレーブ(HDC1080など)とのデータ送受信を管理します.

I$^2$Cの通信手順

通信は,マスタがスレーブのアドレスを送信し,ACK(Acknowledgment)応答を受け取ることで開始します.その後,データの送信や受信を行います

  1. スタート・コンディション:SDAがLOWの状態でSCLがHIGHになると開始
  2. アドレス送信:7ビットまたは10ビットのアドレスを送信
  3. ACK受信:スレーブが応答を返す
  4. データ送信・受信:1バイトずつデータを送受信
  5. ストップ・コンディション:SDAがHIGHの状態でSCLがHIGHになると終了

〈著: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エンジニアリング株式会社.