目次
- はじめに
- FPGAマイコンについて
- FPGAマイコンを使用するメリット
- FPGAマイコンの実装例
- これからの展望
1. はじめに
昨今FPGAが様々な機器に用いられる例をよく目にします。
FPGA(Field Programmable Gate Array)とは回路構成をプログラムによって自由に書き換えられるデバイスです。
最近では民間の電子機器、IoTインフラ、仮想通貨のマイニング、EOL対策などにも使用されています。
ルネサスのプロセッサIPと周辺IPを組み合わせた多数個モーターの実装例を元にFPGAマイコンについてご紹介します。ロボット製作や制御を楽に行いたい方には良い解決策になると思います。
2. FPGAマイコンについて
まずはFPGAマイコンとは何を指しているかについて説明していきます。
FPGAマイコンとは、FPGAに汎用マイコンの機能を実装したものと定義します。
近年ではArm® (ライセンスアーキテクチャ)やRISC-V(オープンでロイヤリティフリーな拡張可能アーキテクチャ)をFPGAに実装した例も雑誌やブログで紹介されています。
今回の実装例ではルネサス製IPのH8S(CPU)とモータ制御用のタイマーとしてTPU(Timer Pulse Unit)を使用します。この実装例は12軸モーターアプリケーションパッケージとしてニュースリリースされました。https://www.renesas.com/about/press-room/renesas-strengthens-ip-license-portfolio-ip-utilities-facilitate-device-development
3. FPGAマイコンを使用するメリット
FPGAで使用可能なアナログ入出力を含めて、既存の汎用マイコンと同じレジスタインターフェースをとっており、プログラムの再利用が可能です。
今回の場合も、実装に先立つ事前評価として、H8Sマイコン向けに作られた平成 8年当時のアプリケーションノートのプログラムを再利用して、ステッピングモーター4個の制御を行うことができました。
さらに、もし従来、基板上に複数のマイコンで回路を構成していたという場合は、周辺IPを統合することで1チップ化が可能になる場合があります。
お客様のアプリケーションに合わせてTPUや周辺IPを選択可能です。
通常のマイコンと比べて多数のセンサやモーターを制御可能です。
下記にメリット示します。
- マイコンと比べピンの配置を自由に設定できます。
- 多軸モーターやセンサなど、好きな個数のものを一つのデバイスで統合制御可能です。
- プログラムの書き換えにより回路の機能変更が可能です。
- ピン数を多く使用することができます。今回は、MAX10開発キットに接続可能な拡張ボードを用い、モータ制御用出力48本を使用しました。
- 生産中止という事がなく、継続的に使用することが可能です。
4. FPGAマイコンの実装例
今回はH8SをFPGAに実装します。
FPGA実装の実績が多く、また、論理規模もコンパクトなため選択しました。
マイコン製品としては、新規採用非推奨などになっていますが
FPGAを使用することで継続的に使用することができます。
また、元のマイコンに機能を追加し、より幅広い使用が可能になります。
今回の例ではルネサスのIPであるH8SとTPU×2を使用して、12軸モーター制御可能なFPGAマイコンを紹介します。
通常のマイコンやラズパイなどのシングルボードコンピュータでは6個以上のモーターを一つのデバイスで個別制御するのは難しいです。ちなみにサーボモーターならラズパイなどで複数制御する例を見かけます。ただし、サーボモーターは高価で消耗品ということは製品開発を行う上で考慮しておく必要があります。
今回のFPGAマイコンではステッピングモーター12個、
またはBLDC(ブラシレスDC)モーター6個を統合制御できる機能を持っています。
それ以上個数を増やしたい場合は実装するTPUを増やす必要があります。
一つのTPUに対してステッピングモーター4個、
またはBLDCモーター2個動作させることができます。
実装例ではH8Sに元々搭載されているものにTPUを2つ追加しているので
ステッピングモーター12個,またはBLDCモーター6個になっています。
DTC(データトランスファコントローラ)や割り込みコントローラをうまく活用すれば、TPUをさらに追加することも可能です。
TPUを追加実装すれば、さらに多数のモーターを制御することができます。
今回の場合は、BLDCモーターは120°通電制御のみ使用出来ます。
ベクトル制御を行いたい場合は既にラインナップされているIP(MTU等)を実装することで可能になります。
実装したIPでは、内蔵RAM 4kBでプログラムを動作させました。
FPGAでは、RAMの容量を変更することが可能なので、今後プログラムを拡張する場合にも対応できるようになっています。
ハードウエアの制約を考慮しないソフト面では、プログラム上に定義されているモーターの最大数を任意の値に変更し、制御関数を追加すれば、20個でも30個でも回すことができると思います。
ハード面では、先に述べた通り、TPU一つに対しステッピングモーター4個、またはBLDCモーター2個まで回すことができます。
さらにTPUの後段に接続されるPPG(プログラマブルパルスジェネレータ) は最大16 ビットのデータ出力が可能で、最大4 ビット×4 系統の出力を行うことができます。ステッピングモーターは4つの出力信号、BLDCモーターは6つの出力信号が必要なので、対応は図のようになります。
TPU,PPGとモーターの対応図
ステッピングモーターを32個回したいときのイメージ
5. これからの展望
将来的には、センサや通信関係も実装していくことができれば、ロボットのマイコンやドローンのフライトコントローラなどが書き換え可能なプログラマブルデバイスに置き換わっていくと予想しています。他にも通常のマイコンと同様の機能も備えているので、昨今の半導体不足に対応する解決策になるかもしれません。