50半ばでの手習い・・FPGAに挑戦! 2019.3.7

ちょうど8年くらい前に50前の手習いということでPICに挑戦したことがあります。
挑戦といっても、いまから思うとそれほどハードが高いわけではなく、もともと馴染みのあるC言語で
PICを動かそうというものだったので、できて当然というレベルであったわけです。
今回はかなりチャレンジングになるだろうな〜と、想像しています。さてさて、どのような成果に
なるでしょうか・・・。

なぜ挑戦するの?

FPGAをはじめたいと思ったきっかけは、やはり高速な処理をできるようにしたい!ということです。
たとえば今までロジックで組んでいたメモリーバッファーなどはFPGAをつかえば、メモリー素子と組みあわせて
数個の素子で実現できるでしょう。また、オリジナルなディジタルフィルターでのDACの実現もできるかもしれません。

そういえば直近ではこんな投稿もありました。


また、掲示板をFPGAで検索すると、使い込んでおられる方もいます。敷居は高くないという言葉を信じて・・・

 ここです→ http://elecworld.blog13.fc2.com/blog-category-6.html


 でも、わざわざFPGAを習わなくても、高速な処理はDSPやハイエンドPICを使えば、実現できるでしょう。
それに開発環境もC言語でできそうなので、FPGAよりは、取り組むハードルはずっと低いのかな〜っと。
 あえて、いままで触ったこともない初物に挑戦するかといえば、いまやっておかないとできないだろうな〜との
思いです。というのも、すでに50代半ばになっているわけですから、頭も相当に固くなってきていることが想像され
るからです。もうすでに遅しかもしれませんが・・・

以前にもトライしたが・・・

ちょっと前にCQ出版からでていたALTERA社のMAX10をつかった入門キットがあったので
マルツで購入してチャレンジしたことがあります。


こんな表紙のキットにチャレンジしました。


今となっとては残骸だけが残っています。いつか再チャレンジかな〜

でも、MAX10のキットはインストールの時点で躓いてしまって、うまく動かせずにいました。
うまく動かせずといういのは、サンプルプログラムを動かすことさえできず、PCからボードすら認識できない状態でした。
ソフト側に問題があるのか、それともハード側に問題があるのか、さっぱりわかりませんでした。
ということで、1週間程度悩みましたがあえなく撃沈してしまいました。放棄・・・・

今回は手堅く・・・

今回は、まずは確実に動かすぞということで、完成品での挑戦です。MAX10での失敗がトラウマになっていることもあります。
まずはLEDチカチカができるところまでは、なんとしてでもやりたいものです。
LEDチカチカができれば、そこから発展させていろいろとできそうです。
で、今回購入したのはADWIN社からでているキットをつかいました。


ADWINからでているキットで試してみることにしました。


ボードはとても小さいですが、色々なIOがついています。

じつはこのFPGAボードについては秋月からもでているのを知っていました。ボードだけならそちらの方が
1万円ほど安かったのですが、メーカから提供される開発環境を動かすにも色々と情報は必要だろうし、
まずは入門キットの導入です。


ADWINの入門キットのボードはおそらく秋月のものと同じでしょう。


それでも難渋・・・

入手した入門キットには解説のDVDも入っているのですが、FPGAの開発ソフト自体はDVDの中にはなく
メーカのダウンロードサイトから入手します。しかし、そのサイズが大きいこと・・・フルにインストールするには
14GB程度をダウンロードしなければなりません。機能を絞ったとしても5GB程度です。

WiFi環境でダウンロードするので、転送速度は速くて1MB/秒程度で、遅くなると100kB/秒まで落ちてしまいます。
そのためダウンロード自体にかかる時間は実質3時間以上かかりました。

 時間がかかるだけなら、夜中に実行するだけでいいのですが途中でダウンロードが失敗することが数回発生。
それもダウンロードの同じ時点で発生するので、特定のファイルをダウンロードするときに発生しているようです。
そのため、にっちもさっちもいかなるときがありました。今回も駄目か〜と、あきらめモードが漂いましたが、気分を変えて
違うPC(モバイルで使っているノート)を試したところ無事ダウンロードも完了して、無事インストールすることができました。
よかった、よかった!でも、まだソフトがインストールされただけです。これからが本番・・・・


まずは開発ソフトが立ち上がりました。

ようやくLEDチカチカができた!

まずはなにも考えずに、キットの解説書のとおり簡単なLED点灯ができるところまで実行することができました。
解説書の最初のプログラムはスイッチを押すとLEDが点灯し、離すと消灯するといった、とても簡単なものです。
でも、これを動かすのも色々な手順が必要です。

 ・ソースを書く
 ・回路生成を行う(コンパイルみたいなもの)
 ・I/Oを定義する(プログラムの中のIO定義と実際のFPGAチップとのピンを対応させる)
 ・FPGAに書き込むデータを構築する
 ・FPGAに書き込む

これだけの手順が必要なのですが、やっぱり英語だけの開発ツールをみても、一連の流れを理解することは
むすかしく、解説書のありがたみをかなり実感しました。

さて、とりあえず簡単なLED点灯ができることがわかると、欲がでてきます。
すこしプログラムをいじってLEDチカチカに挑戦です。
簡単に16ビットのカウンタ出力をLEDに出力させるプログラムを書いてみました。

それにしてもFPGAのプログラム(Verilogを使っています)って、一応C言語に似ていますが、
構造がまったく違います。


16ビットカウンターの出力でLEDを点灯させるVerilogソースです。


ようやくLEDチカチカができました。

ここまできて、念願のFPGAの動作までこぎつけました。解説書つきの入門キットなので、
誰でも動かせるものはありますが、それでも初物に対して何がしでも動くということができると嬉しいものです。

さて、これから応用をどんどん進めていきましょう。

最初のターゲットは!

(つづく)