FPGA の勉強をしています

Learning FPGA as a new skill of ours.

最近、取引先様から FPGA 絡みのお問い合わせを頂くようになりました。私は HDL による論理設計の経験がないため、いままで辞退申し上げていたのですが、お客様より「いや、論理設計じゃなくてマイコンのソフトだからできますよね? ねっ??」と強いお誘いを頂戴したため、FPGA の勉強を始めた次第です。

FPGA というのは、安いものではチップ一つで数千円(もっと安いのがあるかも知れません)、高価なものですと 100万円単位(チップ一つですよ!)というものがあるそうです。FPGA 屋さんの会話で、「この FPGA 一つで軽自動車が買えるから」というのがあるそうです。また、開発ツールも高価そうで、いままでずっと近寄り難い雰囲気を感じていました。

お客様のプラットフォームは Xilinx 社の FPGA なので調べてみると、Digilent 社というところから 1万円弱の評価ボードが売られていることが分かりました。これです、じゃん。

 

商品のウェブサイトは、これです。

この会社(Digilent)の素晴らしいところは、ドキュメントやチュートリアル、サンプルプログラムが非常に充実していることです。チュートリアルを一通りこなすと、FPGA にソフトプロセッサコア MicroBlaze を載せ、LED チカチカから UART に文字を出力したりできるようになります。(私は FPGA 初心者ですが、ある程度ほかの情報を Google で検索はしたものの、独りでできました!)

さて。MicroBlaze というのは一種のマイコンです。FPGA の中に、固定で ARM が入っている種類もありますが、MicroBlaze というのは IP として(つまりセミオーダーのマイコン回路として)Xilinx 社から提供されており、

  • チップ上にマイコンがいくつ必要か? (論理素子の占有率から見ると、今回の評価ボードでも頑張れば複数コア載せられそうです)
  • RAM は FPGA 内部に持つか、外に SRAM を抱かせるか、あるいは DDR メモリにするか?
  • さらにキャッシュサイズはどうするか?
  • MMU(Memory Management Unit)は必要か?
  • 速度重視なのか低消費電力重視なのか?

ということを細かく指定し(つまりセミオーダーで)、ユーザーが決めることができるのです。なんて素晴らしい。どうせ大したマイコンじゃないのだろう、と思うととんでもなくて、ちゃんと 32ビットアーキテクチャであり、Linux カーネルを動かすこともできるそうです。(もちろん、その際は論理回路の規模が大きくなるのでしょう。)

また、ボード上には SPI フラッシュメモリが載っています。FPGA の回路(ビットストリーム)とマイコンソフトをボード上の SPI フラッシュに書き込むことができ、そうすると、電源を入れるだけでマイコンとソフトが動きますから、機動性(?)では Arduino マイコン等にも負けません。(ただし、マイコンに比べて消費電力は高そうです。私も、もっと勉強が必要ですが。)

これだけでは、(私もそうですが)マイコン屋さんは「ふーん、でも HDL で書くより C で書いたほうが楽だなぁ」と腰がひけてしまうのですが、今日は面白い実験をしました。なんと Xilinx FPGA には、Integrated Logic Analyer(ILA)というものがあり、中の論理回路の信号を「仮想ロジアナ」でモニタできてしまうのです。(ILA も論理合成して、自分の好きなところに組み込む必要があります。)

たとえば新しいメーカーの新しいマイコン機種に挑戦していて、DMA が動かねぇ、SPI の使い方がよく分からねぇ、ということはないでしょうか。まあ、SPI くらいならさておき、中のペリフェラルが期待通りに動かずに困ってしまうことは時々あるものです。

しかし FPGA では、自分の好きなところにロジアナを組み込めてしまうので、こんな具合に回路の動作を確認できるんです!

感激しませんか? (私は感激のあまり、これからは FPGA 設計で食べていこうかと真剣に考えたくらいです。)

これならば、あるレジスタを叩いたときに、回路のどこが動いているか、動いていないのかをチェックできるという訳ですね。(マイコンでは、中の回路を覗くことはできませんからね。)

なんとなくうまくいった気分になったので、これから安心して忘年会に行ってこようと思います!

今日はここまで。