[最終更新] 2017年8月1日
ALTERAのお値打ちなFPGA、MAX10の実験キットを手に入れた。CQ出版の企画物で、教材と評価基板、取り付け部品込み込みで1万円台のものだ。まだわけもわからずLチカしたりADしたりするだけだが、なんとか使いこなして、Raspberry Piを補完したい。
Raspberry PiはADがつらい
Raspberry Piを使っていて困るのは、ADだ。もちろんRaspberry Piで使えるADC自体はたくさん売っている。モータの制御や環境系センサから、一発だけ(あるいはリアルタイム性が必要なく連続的に)データを取得する程度ならばそれで十分だろう。
しかし、本格的に計測しようとすると、もうすこしちゃんとしたADCが欲しい。ちゃんとしたというのは、基準信号と同期して、正確なタイミングで、高速かつ連続的にデータを取得できるようなものである(できればGPSのPPS信号とNMEAのデータを自動的に取り込んで、クロックの同期と位置・時刻情報をデータに付加してくれるようなのがあるといいんだが…)。
それくらいのADCになると、たいていはWindowsが必要であったり、PCIeが必要であったりする。Linux対応でかつ、USBという制限がつくと、なかなか見当たらない。
だいぶ探し回ったが、私が見つけられたものはACCES社のUSB-AIシリーズだけだ(「ACCES – 12 or 16-Bit, 16-Channel, Multifunction Analog Input/Output USB Modules Page」)。スペックにもよるが、端子台などオプション含めて10万円くらい。他になにかあるなら教えてほしい…。
この製品はLinuxにも対応しており、マニュアルを見るとRaspberry Piでのインストール方法がのっている。会社で購入して使ってみたところ、なんだか色々とエラーが出たが、アレコレいじっていたら、なんとかRaspberry Piでデータを連続的に取得することができた。外部信号をトリガにしてADを開始することもできるので(5Vなのが、3.3V系の多いRaspberry Pi周りだと面倒だが…)、一応計測には使えそうだ。ただ、完全な連続取得はできておらず、現状1分に1回程度、データを吐き出す際に停止している。回避できるのかどうかはよくわからない。まぁそれは本題ではない。
リアルタイム処理はFPGAで
とにかく、ADはRaspberry Piでは中々の鬼門という話である。ADに限らず、リアルタイム性を要求されるようなものは、LinuxをベースとするRaspberry Piだと中々苦労する。といって、マイコンでは荷が重い。
FPGAを使えればなぁと思っていたが、中々使う機会がなかった。そんな折、ALTERA社のMAX10を搭載した評価ボードと、その使い方をまとめた、我らがCQ出版のオールインワン・キットを手に入れた。
マルツパッケージ MAX10 FPGA入門基板 好評発売中です | マルツセレクト
まぁまぁのお値段だが、USB-Blaster互換の機能を持った基板もある。USB-Blasterだけで本来ならば4万円近くする(参考「PL-USB-BLASTER-RCN | Altera FPGA ケーブル | Altera 【通販RS】」。互換品はこの数分の1の値段で売っているが…)。USB互換機能の基板と、FPGAとその評価基板、さらに教科書付きならば、安いくらいではなかろうか。さらに、別売りでRaspberry Pi拡張基板もある。Raspberry Piとの連携が考えられているのは大きい。ALTERAの開発環境QuartusがMacに対応していないのはまぁ仕方ない。むしろLinux版があるのに驚いた。
ということで、最近ずっと勉強している。まだまだ、わけもわからずADして、その値を元にLEDをチカチカさせることしか出来ていない。せっかくなので画像を一つ。

上画像の上段がUSB-Blaseter互換基板で、下段がMAX10搭載の評価基板である。下段が青く光っているのはフルカラーLEDで、ADで取得した値によって色が変わるようになっている(サンプルどおりである)。モバイルバッテリーが電源代わり。
付属テキストは600ページの大著だが、1/3まで進んでも出来ることはLチカだけ。先は長い。
MAX10は1MSa/sという高速なサンプリングが可能であるし、SPIでRaspberry Piと通信できるようだから、GPSモジュールなどとも連携させることで、理想のADCが作れるのではないかと考えている。うまくいくかどうかはわからないが……。
うまくやれば開発まで漕ぎ着けられないだろうかと考え、シコシコ作業している。自分自身で、売れるようなものを作りたいものだが、道のりは長く険しい。うーむ、頑張ろう。
関連記事
Raspberry Pi の記事
- [2017年11月18日] Raspberry Piに固定IPアドレスを付与する時の設定
- [2017年10月3日] とにかくRaspberry Piにpython3 + numpy + matplotlibをインストールする(pyenv使用)
- [2017年9月12日] ADボードUSB-AI16-16EをRaspberry Piで使う
- [2017年9月7日] Raspberry Piで無線LANに接続する手順
- [2017年8月10日] MAX10基板とRaspberry PiでGPIO使ったデジタル入出力
- ---本記事---
- [2017年6月15日] Raspberry Piでも使いやすいGPSモジュールNEO6Mの基板で10-100kHzのPPS信号
- [2017年4月20日] PiVPNでエラーが出たのでインストールしなおした
- [2017年3月13日] Raspberry PiをOpenVPNサーバーにした…とても簡単で有難い
- [2016年12月7日] GPSでよくみるPPS信号とはなにか
- [2016年11月17日] とにかくRaspberry Piにpython2 + numpy + matplotlibをインストールする
FPGA の記事
- [2017年8月10日] MAX10基板とRaspberry PiでGPIO使ったデジタル入出力
- ---本記事---
- [2017年8月2日] MAX10 FPGA入門のためにアレコレ調べている
- [2017年7月26日] Pin Plannerでプルアップ抵抗のOn/Off列が見つからない時の対応
- [2017年7月26日] ALTERAのQsysでHDL生成したら Warning (20028): Parallel compilation is not licensed and has been disabled と警告された時の対応
- [2017年7月22日] USB-Blasterのドライバーが見つからない時の対応
スポンサーリンク