navigationめがねをかけるんだProfilepostDE0メモ2013-01-08postDE0メモFPGAボードのDE0をちょこちょこ触ったメモ。Arrayの略で、プログラム可能な大規模集積回路です。IIIを搭載したボードで、USBで接続したPCからプログラムを書き込むことが出来ます。ピンがいっぱいDE0に載っているFPGAには、たくさんたくさんピンがあります。その数は、Arduinoの比ではありません。DE0は、FPGAが載っている”ボード”です。たくさんのピンが、それぞれどこかに繋がっていたり、繋がっていなかったりします。右側のLEDはJ1と言うピンが繋がっています。ここに”1ビットを出力”すると、LEDが光ります。右側のディップスイッチにはJ6と言うピンが繋がっています。このスイッチのON/OFFを読み取ることが出来ます。ピンがあるので、覚えられるか不安になりましたが、やってみると、そもそも覚える必要はないと解りました。DE0ではJ1ピンはLEDですが、他のボードでは別の所に繋がっているかもしれないからです。考えてみれば当然ですね。Planner”という行程があります。IIは、DE0に付属の開発環境です。DE0に付属しているのはバージョン9.0ですが、今は12.1と言う新しいバージョンが出ています。Editionを使っています。IIは、WindowsとLinuxに対応しています。OSには対応していません。7などのライセンスは、他のマシンにインストールして出払っているからです)。8上でも動作しました。12.1をいきなりインストールしてもJTAG関係のライブラリでエラーが発生してDE0にプログラムを書き込むことが出来ませんでした。9.0をインストールしてから、12.1をインストールすると、きちんと動作するようになりました。その後は、12.1からでも書き込みが出来ています。compile”実行(結構、時間がかかる)・”Programmer”ツールでDE0に書き込みと言う流れです。その他、シミュレータなどでいろいろ検証したりもあるようですが、僕はまだその段階にありません。HDLで、どういう動作をするのかをプログラムします。この言語、文法自体は高級言語に近いのですが、普通のコンピュータのプログラムとはかなり勝手が違います。これは電子回路の世界では常識かもしれませんが、FPGAを扱う上では、「クロックが全てであり、王様」です。スイッチなどの入力の変化を検知する以外に何らかの動作をさせたいのであれば、クロックの立ち上がりと立ち下がりにどんな動作をするのかを書いていきます。10msごとに実行しろとか言っても、FPGAは理解しません。そもそも、そんな命令は用意されていません。彼らはクロックを基準に動作します。基本のクロックをなんかいろいろして、10msのクロックみたいなものを作り出さなくてはなりません。(時計用のクロックを搭載して、それを基準に時間が解るものもあるようですが、少なくとも、DE0には搭載されていないようです)ただ、クロックが王様で、良いこともあります。クロックを基準に動作すると言うことは、複数の回路を同時に動かすことが出来ると言うことです。FPGAの中にそれぞれ独立した複数の処理モジュールを作って、クロックの号令一下、並列で動かすことも可能です。HDLは使い始めたばかりなので、まだよくわかっていません。間違うと、期待した動作にならず、また、全く関係ない部分のLEDが中途半端に光ったりして焦ります。コンパイルと書き込みを繰り返している様は、まるで生まれたての子馬のようです。結局、FPGAは何に使えるのか。僕にはまだわからない。言うのが正直なところです(遊び始めたばかりだし)。FPGA自体は別に新しい技術というわけではないと思います。僕が記憶してる中でも、やねうらおさんがFPGAについて触れていました。Androidが登場した直後ですね。新しい技術やプラットフォームの登場と言うよりも、チップの価格が下がったとか、DE0のような取り扱いの簡単なボードが登場してきたのが、注目を浴びるきっかけでしょうか。僕が始めた「動機も安いから・手に入りやすいから・USBで書き込みできるから」ですし。kazunori_279さんのエントリも興味深いです。文字通り「ネットワークがコンピューター」な金融HFTでのFPGAの使われ方NICのFPGAをカスタマイズして、本来の目的以外の処理をさせようという試みです。Trading)には不明ですが、情報がコンピュータに届く前、NICの段階で、アプリケーションレベルで何かしてしまうと言うのは新しい発想だと思います。このように実際に使われているのを見ると、少しイメージがわいてきますね。