Xyloniボード上の全リソースを活用するプログラムを開発しよう


1万円 FPGAスタータキットで作る RISC-V CPU


[Webinar/KIT/data]新人技術者のためのRISC-V CPU設計 初めの一歩(5月31日~6月7日,2日コース)


Xyloniボードをフル活用する

図1 Xyloniボードに搭載されたプッシュ・ボタン,LED,SDカード・スロットの全機能を利用するプログラムXyloni_BoardTestを制作.画像クリックで動画を見る.または記事を読む.参考:[VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門

Xyloniボードに搭載されたプッシュ・ボタン,LED,SDカード・スロットの全機能を利用するプログラムXyloni_BoardTestは,システム全体の動作確認と割込み処理の学習を両立できるスタンドアロン・アプリケーションです.本プログラムは,RTOSを使用せず,C言語とRISC-V向け周辺機能APIだけで構成されています.

LEDの点滅パターンは4種類あります.点滅パターンはBTN1の操作で順に切り替えることができます.点滅速度はBTN2で変更でき,4段階で切り替わります.さらに,UARTターミナルを接続していれば,1や2を入力することでBTN1,BTN2の操作を代替できます.

SDカード情報を確認する

SDカード・スロットも活用されています.UARTターミナル上で改行を送信すると,SDカード情報が表示されます.この処理は,割込み処理や周辺機能制御の実践的なサンプルとして有用です.SDカード制御には,Efinix社が提供する`sd_ctrl.c`および`sd_ctrl.h`が使われます.

開発環境とプロジェクト構成

開発にはEfinix社が提供するRISC-V IDE(Efinity Embedded Software ICE)を使います.プロジェクト作成時にはMakefileベースで構築し,BSP設定やsrcディレクトリ内に必要なファイルを配置していきます.以下のファイルをコピーして,ビルド・プロセスに追加する必要があります.

  1. trap.S:割込みエントリ処理
  2. sd_ctrl.c:SDカード制御ロジック
  3. sd_ctrl.h:SDカード関連ヘッダ

このような構成により,ソフトウェア全体がハードウェアの検証と教育用途の両方に適した設計になります.

割込み処理とは何か

RISC-Vでは割込み(Interrupt)は外部イベントに応答するための重要なしくみです.ソフトウェアは通常,順番に命令を実行しますが,外部入力やタイマなどのイベントが発生したとき,処理を一時的に中断し,割込みハンドラを実行します.これによりリアルタイムな応答が可能になります.

RISC-Vの割込み構造

RISC-VにはMachineレベル割込み(Mレベル割込み)と呼ばれる最上位の割込みがあります.割込みは$mtvec$レジスタに指定されたアドレスから始まる処理にジャンプし,trap.Sなどのハンドラで適切に処理されます.ソフトウェアは$mie$レジスタで割込みの有効化を制御し,$mip$レジスタで発生状況を確認します.

Xyloni_BoardTestでは,ボタンの入力やUART受信など複数の割込み要因が存在し,それらを1つのエントリ・ポイントtrap.Sでハンドリングします.割込みベクタの設定,ステータスの保存と復帰,対象イベントの特定という一連の手順を理解することが重要です.

割込み処理を用いる利点

ポーリングと比較した場合,割込み処理には以下のような利点があります.

  1. CPUリソースの有効利用ができる
  2. リアルタイムなイベント処理が可能
  3. 外部入出力との高効率な同期ができる

特にI$^$2CやSPIといったバス通信を行う場合,応答待ちの時間をほかの処理に割り当てられるため,全体のスループットが向上します.

〈著:ZEPマガジン〉

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

著者紹介

  • 出身地:京都市左京区
  • 仕事:1986年,日立製作所に入社し,SHマイコンの開発に従事.以降,ルネサステクノロジ,ベンチャー企業,大手半導体メーカにて,画像処理用SoCや各種マイコンおよび関連半導体デバイスの開発を統括.現在もマイコン製品設計に取り組んでいる.
  • 趣味:1978年からマイコン・FPGA・GPUと戯れ
  • 執筆活動:2000年からマイコンを絡めた雑誌記事と書籍を執筆

著書

  1. [VOD/KIT]実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
  2. ARMベース・システムLSI開発の事例研究,Design Wave Magazine 2006年5月号,CQ出版社.
  3. ARM汎用プロセッサで使える汎用JTAGデバッガを自作する,Design Wave Magazine 2008年6月号,CQ出版社.
  4. 並列処理プロセッサxCORE徹底研究,インターフェース 2014年11月号~2015年6月号(連載),CQ出版社.
  5. Cで直叩き!超並列コンピュータGPU全速力,トランジスタ技術 2019年9月号(特集),CQ出版社.ほか
  6. 今すぐ使えるH8マイコン基板 初版2010年,増補版2011年,CQ出版社.
  7. 2枚入り小型ARMマイコン基板 2011年,CQ出版社.
  8. ARM PSoCで作るMyスペシャル・マイコン 基板付き 2013年,CQ出版社.
  9. ARM PSoCで作るMyスペシャル・マイコン 開発編  2013年,CQ出版社.
  10. SHマイコン活用記事全集 2014年,CQ出版社.
  11. FPGA電子工作スーパキット 2016年,CQ出版社.
  12. MAX10実験キットで学ぶFPGA&コンピュータ 2016年,CQ出版社.
  13. 完全版FPGA電子工作オールインワン・キット 2016年,CQ出版社.

参考文献

  1. Lチカ入門!ソフトウェア屋のためのHDL事はじめ,ZEPエンジニアリング株式会社.
  2. Zynqで作るカスタム・コンピュータ・チップ,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]一緒に動かそう!Lチカから始めるFPGA開発【基礎編&実践編】,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]Xilinx製FPGAで始めるHDL回路設計入門,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]Zynqで初めてのFPGA×Linux I/O搭載カスタムSoC製作,ZEPエンジニアリング株式会社.
  6. [VOD]カメラ×ラズパイで一緒に!初めての画像処理プログラミング
  7. [VOD/KIT] 実習キットで一緒に作る!オープンソースCPU RISC-V入門,ZEPエンジニアリング株式会社.
  8. [VOD/KIT]ARM Cortex-A9&FPGA内蔵SoC Zynqで初体験!オリジナル・プロセッサ開発入門,ZEPエンジニアリング株式会社.