Arduino MKR Vidor 4000でFPGAを素早く簡単に適用

著者 Steve Leibson
DigiKeyの北米担当編集者の提供
2018-11-13

多くの設計者は、マイクロコントローラやマイクロプロセッサ上で実行されるファームウェアがあまりにも遅いと、遅かれ早かれ気づきます。そこで、フィールドプログラマブルゲートアレイ(FPGA)は、高速、リアルタイム、組み込み設計の問題をハードウェア速度で解決するプログラム可能な方法を提供します。しかし、FPGAを最大限に活用するには、従来、テクノロジの学習が必要でしたが、コストと納期の重圧のため、多くの設計者にはそのような学習を行う余裕がありませんでした。

FPGAの習得には、多くの場合、新しいプログラミング言語(Verilog またはVHDL)の学習、大規模な開発ツールパッケージのダウンロード、FPGAでビットストリームを生成するためのまったく新しいツール開発フローの学習が必要で、場合によってはFPGA開発ボード用に多額の費用(おそらく数百ドルか数千ドル)がかかります。FPGAは組み込み設計ツールボックスの中で極めて便利なツールであるにもかかわらず、これらの障害があるため、多くの設計エンジニアはFPGAの使用を避けています。

いくつかのベンダーは、初心者用FPGAボードを提供することでFPGA使用の障壁を下げようとしていますが、新しいハードウェア記述言語と開発ツールを学習する必要があるため、依然として高い障壁があり、FPGAの普及が妨げられています。こうした障壁を打ち破るArduinoの最新の取り組みが、Arduino MKR Vidor 4000と呼ばれる新しい低コストの開発ボードで、組み込みシステム設計においてFPGAを使用する独自のアプローチを表しています。

Arduino MKR Vidor 4000は、非常に人気のある Arduino IDEにシームレスに統合されたFPGAをプログラムする方法を備えています。この手法を利用すると、特別なArduinoライブラリ拡張機能を使用してFPGAレベルのパフォーマンスを得ることができるため、組み込みシステム開発者はArduinoスケッチから直接、その利点に素早くアクセスでき、一方、より高度な設計者はこのテクノロジへの自信が増すにつれて、より複雑なFPGAを使用したモデルを採用できるようになります。

この記事では、MKR Vidor 4000ボードの機能を紹介する前に、FPGAの必要性について説明します。次に、 Arduinoの新しく簡素化された、FPGAを使用する際のアプローチを詳しく説明します。

第1世代のArduino開発ボード

2005年に導入された最初のArduino開発ボードは、単純な8ビット マイクロコントローラのAtmel(現Microchip Technology)AVRをベースにしていました。この開発ボードのその後の世代の多くもまた、このマイクロコントローラファミリのさまざまな品種に基づいています。Arduino開発ボード シリーズは、低コストで簡単な Arduino IDEのため、モノのインターネット(IoT)製品開発用の人気のプラットフォームとなっており、STEM/STEAMプロジェクト(科学・技術・工学・芸術・数学を融合した教育プログラム)によく使用されています。実際、オリジナルのArduinoボードは、広く成功した最初のオープンソースハードウェアのプロジェクトです。

初めて組み込みプログラミングに触れる学生に人気のボードで、今では世界中の何十万人ものデザイナー、エンジニア、開発者、メーカーがArduino開発ボードシリーズのさまざまなバージョンを使用しています。創造性は無限で、音楽からゲーム、おもちゃ、スマートホーム、農業、自動運転車に至るまで、その用途は広がっています。

Arduinoユーザーが、オリジナルのArduinoアーキテクチャをより複雑なアプリケーションに利用し続けていると、パフォーマンスの問題に遭遇しました。1つの問題は、オリジナルのArduinoマイクロコントローラの単純な8ビットアーキテクチャにありました。もう1つの問題は、多くのリアルタイム周辺機器、特に高速タイマ、高周波PWM(パルス幅変調)出力、直交エンコーダなど時間にシビアな周辺機器のソフトウェア実装です。この問題に対処する1つの方法は、より高速で強力なマイクロコントローラを使用することですが、結局のところ、リアルタイム環境でソフトウェアができることは限られています。一部の高速リアルタイム機能はハードウェアに実装する必要があります。

ArduinoとFPGAの統合

課題は、Arduinoのシンプルさを損なわずに、Arduinoを使用する組み込み開発者がFPGAリソースを利用できるようにすることです。Arduinoは、FPGAをArduinoアーキテクチャに追加することで、ハードウェアの観点からこの課題を解決しました。これにより、FPGAはArduinoのライブラリを通じてArduinoマイクロコントローラの周辺リソースを拡張します。これらのライブラリは既存のArduinoユーザーには馴染みがあり、Arduinoのネイティブの周辺機器を利用するときや、Arduinoの拡張ヘッダに周辺機器ボードを追加するときに頻繁に使用されます。

結果として生まれたMKR Vidor 4000と呼ばれるArduino開発ボードは、32 ビットArm® Cortex®-M0+プロセッサコアをベースとしたMicrochip TechnologyのSAMD21低電力マイクロコントローラの処理能力とIntel (旧Altera)のCyclone 10 10CL016を組み合わせています(図 1)。

image

図1:Arduino MKR Vidor 4000開発ボードは、Microchip SAMD21マイクロ
コントローラと Intel Cyclone 10 FPGAをベースにしています。
(画像提供: Arduino)

FPGAには、高速DSPを実装するための15,408個のプログラマブルロジックエレメント、516,096ビットの組み込みRAM、および56個の18 x 18ビットハードウェア乗算器が含まれています。FPGAの各I/Oピンは150MHz以上の高速でトグルできます。これは、オンボードSAMD21マイクロコントローラのI/O機能よりもかなり高速です。つまり、オンボードFPGAは、Arduino MKR Vidor 4000ボードにかなりの処理能力とI/O馬力を提供するのです。

Arduino MKR Vidor 4000は、以前のArduinoボードとは比較にならない新しいMKRフォームファクタを備えたMaker Arduinoボードシリーズの1つです。 MKR シリーズには次のものも含まれます。

  • IoTアプリケーション用のオンボードLoRa RFモジュールを備えたArduino MKR WAN 1300接続ボード
  • グローバルGSM接続を必要とするIoTアプリケーション向けのオンボードセルラーRFモジュールを備えたArduino MKR GSM 1400接続ボード

これまでのArduino開発ボードと同様、ArduinoのMKRシリーズは、初心者と専門家の両者がシステムの試作を迅速に行うために使用できるように開発されました。Arduinoは、本格的なエンジニアリングプロジェクトでArduinoの開発ボードが試作、さらには生産にまで使用されているケースが増えているのを見て、このシリーズのボードを開発しました。

Arduino MKR Vidor 4000には、初期のシンプルなArduinoには通常搭載されていない周辺機器が多数含まれています。28ピンのMKRピンヘッダインターフェースがあり、コンセプトは似ていますが、物理的には元のArduinoシールドヘッダと異なります。このヘッダインターフェースのI/O ピンは、SAMD21マイクロコントローラまたはIntel Cyclone 10 FPGAのいずれかによって制御できます。標準化されたMKRピンヘッダ インターフェースに加えて、Arduino MKR Vidor 4000ボードの周辺機器ポートのリストには次のものが含まれます。

  • マイクロUSBコネクタ
  • マイクロHDMI ビデオ出力コネクタ
  • Raspberry Pi カメラモジュールと互換性のあるMIPIビデオカメラコネクタ
  • U-BLOXNINA-W102 RFトランシーバモジュールで実装されたWi-FiおよびBLE(Bluetooth Low Energy)RFインターフェース
  • ユーザーがプログラム可能な最大25個のピンを備えたMiniPCIeコネクタ

Arduino MKR Vidor 4000開発ボードには真のPCIeインターフェースポートがないことに注意してください。 MiniPCIe ポートに関連付けられたコネクタを再利用するだけで、MiniPCIeエッジ コネクタ上のCyclone 10 FPGAのI/Oピンの多くが分離されます。これは安価で大量生産できるコネクタであり、何百万ものPCマザーボードで広く使用されているので、その信頼性は証明されています。 MiniPCIe コネクタを使用すれば、Arduino MKR Vidor 4000ボードをより大きなシステムやI/O拡張ボードに簡単に接続することができます。

Arduino MKR Vidor 4000開発ボードは、非常に多くのI/Oコネクタがあるにもかかわらず、小型です。寸法は83mm(3.25インチ) x 25mm(0.98インチ)で、組み込みコンピューティング用途で一般的になりつつある狭いスペースにも収まります。ボードの消費電流定格は100mAであるため、バッテリ駆動システムを含む多くの組み込みシステムプロジェクトの電力限界内にも適合するはずです。

図1に示すように、ボードには3.7Vのリチウムポリマー(LiPo)バッテリを直接接続するためのコネクタがあります。ただし、消費電流はFPGAに何が実装されているか、そしてインスタンス化されたハードウェアの実行速度によって異なります。そのため、バッテリ容量の計算が複雑になり、最終的にはバッテリのサイズを正しく決定するために多少の実験が必要になります。

MKR Vidor 4000ボードのビデオ出力は、Intel Cyclone 10 FPGAによって生成される真のHDMIビデオ出力です。Arduinoには、MKR Vidor 4000ボード用のArduino IDEにAdafruit GFXグラフィックス コアライブラリが組み込まれており、SAMD21マイクロコントローラがArduinoスケッチ(プログラムコードの単位)を使用してソフトウェア制御の下でグラフィックスを生成できるようになっています。

また、Arduino は、MKR Vidor 4000ボード用に特別に作成された2つのメイン ライブラリ、 VidorPeripheralsVidorGraphicsを通じて、いくつかのハードウェアIPブロックをArduino IDEに追加しました。これらのハードウェアIPブロックは、関連する周辺ライブラリがArduinoスケッチに含まれている場合、Arduino MKR Vidor 4000上のIntel Cyclone 10 FPGAで自動的に構築されます。現在のペリフェラルIPブロックのリストには次のものが含まれます。

  • I2Cポート
  • SPIポート
  • UART
  • 高周波PWMコントローラ
  • 高速タイマ
  • 高速直交デコーダ
  • Adafruit Neopixelアドレス指定可能なRGBスマートLEDコントローラ

同様に、Arduino MKR Vidor 4000ボードのソフトウェアライブラリには、ボードのMIPI(Mobile Industry Processor Interface)カメラ入力用のビデオキャプチャコードが含まれています。このライブラリには、接続されたカメラから640 x 480ピクセルのビデオ画像をキャプチャできるルーチンが含まれています。カメラの24 ビットRGB画像は、Cyclone 10 FPGAに直接接続されているボードの8メガバイトSDRAMに記録されます。さらに、Arduino MKR Vidor 4000ボードのI2Cインターフェースの1つを使用して、接続されたカメラの制御レジスタとステータスレジスタにアクセスすることもできます。

I2CやSPIなどのこれらの周辺機器の一部は、以前のArduinoボードのソフトウェアIPブロックとしてすでに利用可能でした。これらの初期のソフトウェア実装と、Arduino MKR Vidor 4000ボードのFPGAに実装された同等のIPブロックとの違いは、これらの周辺機器のFPGAバージョンがはるかに優れたパフォーマンスを提供することです。

たとえば、各I2CおよびSPIのインスタンス化は、ボードのFPGA内の個別のプログラム可能なハードウェアブロックを使用して実装されます。その結果、このようなシリアルポートを複数インスタンス化してもパフォーマンスが低下することはありません。

FPGAの速度の例:高速直交エンコーディング

直交エンコーダは、3Dプリンタで使用されるステッピングモータの位置決定フィードバックメカニズムとしてよく使われます。ソフトウェアベースのエンコーダは速度が制限されているため、問題が発生する可能性があり、例えばプロセッサが他のコードの実行で忙しい時、カウントを見逃す可能性があります。Cyclone 10 FPGAハードウェアでインスタンス化されたArduino MKR Vidor 4000ボードの直交エンコーダは100MHzのクロックで駆動され、32ビットのハードウェアカウンタを実装しているため、実際の物理システムでカウントを見逃すことはありません。

インスタンス化された各直交エンコーダは個別のFPGAブロックを使用して実装されるため、複数のエンコーダをインスタンス化してもパフォーマンスが低下することはありません。より多くのエンコーダを実装するには、単にFPGAの内部プログラマブルロジックをより多く使用するだけで済みます。これはFPGAのハードウェア並列処理の主な利点です。

FPGA の使用は簡単です - Arduino の方法

Arduino MKR Vidor 4000ボードは、周辺機器ブロックをFPGAハードウェアで実装し、多くのArduinoスケッチライターがすでに慣れ親しんでいるのと同じライブラリメカニズムを用いて利用できるようにして、FPGAを使いやすくしています。VHDLやVerilogのような新しいハードウェア記述言語 (HDL)を学習する必要はありません。開発者にとって、FPGAベースの周辺機器は、プログラマーの観点から他のC++オブジェクトと同じように見えます。 Arduinoは、このようなハードウェアIPブロック周辺機器を今後さらに追加する予定です。

Arduinoは、オリジナルのArduino IDEのソフトウェアスタックよりはるかに下位に拡張されたソフトウェアスタックを使用して、この魔法のトリック(FPGAハードウェアを、強化された周辺機器ブロックのように見せる)を達成しました。MKR Vidor 4000ボードのソフトウェアスタックは、JTAG接続を介してSAMD21マイクロコントローラに接続されているFPGA上でインスタンス化されたメールボックスに送信されるリモートプロシージャコールを使用して、 ArduinoのC++バリアントで書かれた高レベルのスケッチとボードのFPGAハードウェア間のリンクを作成します(図2)。

image

図2:MKR Vidor 4000開発ボードのArduinoソフトウェアスタックは、
JTAG APIを介してIntel Cyclone 10 FPGAに送信されるリモート
プロシージャコールを使用します。Intel Cyclone 10 FPGAは、
FPGAのプログラマブルハードウェアでインスタンス化された
Arduinoドライバを備えています。(画像提供:Steve Leibson)

このソフトウェアスタックを使用してFPGAベースの周辺機器にアクセスすることは、正しいVidor周辺ライブラリへの適切な呼び出しをインクルードするだけで簡単にできます。 Arduinoスケッチ開発者は、VidorのFPGAマジックトリックがどのように動作するかを知る必要はありません。いとも簡単にマジックトリックがやってのけます。

プログラマブルハードウェアで実装され、事前に定義された周辺IPブロックにアクセスすることは、FPGAを使用してシステムパフォーマンスを向上させる有効な方法であることは確かですが、結果として得られるパフォーマンスの向上はFPGAの全能力のほんの一部にすぎません。それでも、ArduinoはMKR Vidor 4000のユーザーに対し、非常に規模の大きいArduinoオープンソースコミュニティを通じて、選択肢を増やすために追加の周辺ブロックを開発することを奨励しています

Arduino MKR Vidor 4000ボードは、まだ汎用のFPGA開発ボードではありません。それはHDLコードを使用したオンボードCyclone 10 FPGAの直接プログラミングをサポートしていないためです。ただし、Arduinoは、MKR Vidor 4000ボード上で直接FPGAのHDLコードを実装するデモを行うIntelのQuartusプロジェクトをリリースすることで、より上級ユーザーがArduino MKR Vidor 4000ボードのFPGAの有用性をさらに実感できるようにすることも計画しています。Quartusは、Intelが自社のFPGAを使用してFPGAデザインを開発するために設計者に提供する包括的なHDL開発ツールです。

ArduinoがArduino MKR Vidor 4000ボードのため、このQuartusプロジェクトを公開すれば、設計者、エンジニア、メーカー、およびHDLプログラミングを学びたい学生は、より高度なFPGAプロジェクトのための低コストの開発および生産プラットフォームとしてボードを使用できるようになります。この直接的なFPGAプログラミング機能を使用すると、設計者はArduino MKR Vidor 4000ボードのFPGAでほぼあらゆる種類のハードウェアブロックをインスタンス化できるようになります。たとえば、オンボードFPGAリソースは、FPGAファブリック内にArm Cortex-M1プロセッサコアを収容するには十分過ぎるほどです。そうすることで、Arduino MKR Vidor 4000ボードがデュアルプロセッサ組み込みシステムに変わります。

まとめ

FPGAは、マイクロコントローラやマイクロプロセッサと併用して、多くの処理機能について、より高いパフォーマンスを提供しますが、相当の学びが必要になります。Arduino MKR Vidor 4000ボードと付属のArduino IDEにより、FPGAを使用すると、より高度なアプリケーションを開発する方法を学習する障壁は大幅に低くなります。慣れないFPGAの水に足を浸そうと考えている設計者は、Arduino MKR Vidor 4000の池の水が熱すぎず冷たすぎないことに気づくでしょう。



著者について


image

Steve Leibson

Steve Leibson氏は、HPとCadnetixのシステム エンジニア、EDNとMicroprocessor Reportの編集長、Xilinxと Cadenceなどの技術ブロガーであり、「The Next Wave with Leonard Nimoy」の 2 つのエピソードで技術専門家を務めました。同氏は33年間にわたり、設計エンジニアがさらに優れた、より高速で、高信頼性のシステムを開発できるよう支援しています。

出版者について


DigiKeyの北米担当編集者



image

免責事項:このウェブサイト上のさまざまな著者および/またはフォーラム参加者によって表明された意見、信念、および見解は、必ずしもDigiKey Electronicsの意見、信念、および見解またはDigiKey Electronicsの公式ポリシーを反映するものではありません。



オリジナル・ソース(English)