Kitで、FPGAの第一歩を踏み出すためにLチカをした時のまとめです。Qiitaの3日目の記事です。これからFPGAを始める人の参考になれば嬉しいですが、ざっくりした解説、説明になっているので詳しいことはググってください。FPGAとはプログラム可能な電子回路を実装できるチップのことです。製品出荷後に回路の構成を変更することができ、チップを生産するよりも安価のため、最近では流通量がさほど多くない機器によく使われている。PT2やPT3などでも使われています。電子回路を自由に構成できるので、単純なORとかANDの論理回路を作ったり、パソコンで言うCPUを実装してLinuxとかAndroidなどを動かすこともできます。FPGAには色んな種類がありそれぞれ内部クロックの周波数が違かったリ、アナログデバイスを扱えたりと性能に差はありますが、基本的に同じです。Kit」を使ってみます。3ANというFPGAを搭載し、開発がしやすいよう様々なインターフェースやクロックを実装したボードの事です。評価ボードとも呼ばれます。実際にFPGAを製品に用いる場合には、FPGAと電源周りと最低限必要なインターフェースのみを実装します。Kitには以下の様なインタフェースが実装されています。KitにはLED、LCD、RS-232などが実装されていますが、これは単純にピンがFPGAに接続しているだけでRS-232でUART通信をする場合には専用の回路を書かなければなりません。Kitは今では扱っているお店がなさそうですが、同じインタフェースがあれば(作れば)どのFPGAでも動作するはずです。World!とも言えるLチカ(LEDを一定時間ごとに光らせる)を実装してみたいと思います。回路の流れ全体的な回路の流れは以下のようになります。電子回路では動作のキッカケとなる入力が必要なのですが、ここでは一定時間ごとにHIGHになるクロックを利用します。Kitにはあらかじめ50MHzの発振器が実装されています。50MHzのクロック信号の立ち上がりを基準に回路を動作させる。カウントレジスタの値を1増やす。カウントレジスタが50000000回(50M)になったらLEDレジスタの値を反転させる。回路をコードで書くXilinx社のFPGAの開発にはISEとかVivadoというIDEを使います。ISEでは論理合成をするために、UCFとHDLファイルが必要になります。UCFファイルは、FPGAに接続するピンとVerilogモジュールで使用するワイヤーを定義します。HDLファイルでは、ハードウェア回路の動作を記述します。今回はVerilogという言語を用いて開発します。他にもVHDLとかがあります。Verilogを書く際には、Verilogはハードウェア記述言語であるという点を踏まえて置かなければなりません。Verilogで書いたものはすべて回路になります。Verilogの文法があっていたとしても回路上無理な設計はできません。このことを踏まえてUCFとVerilogを書きます。UCFファイルでE12ピンに配置されているクロックをCLOCK_50Mとして扱うNET宣言をします。電子回路で値を保持するためには、メモリやフリップフロップ回路を用います。Verilogではregと書くとレジスタ変数を宣言することが出来ます。内部ではフリップフロップ回路が生成されます。バス幅を指定することによって指定されたbit分の幅をもったレジスタ変数を宣言することも出来ます。この回路では、50000000回のカウントを記録する必要がありますが、2の25乗は10進数で33554432、2の26乗は10進数で67108864、のため26bit幅のレジスタ変数を宣言する必要があります。代入に=と<=という演算子が使われていますが前者は同期代入で後者は非同期代入となります。RTL(レジスタ転送レベル)設計に落とすと以下の用な設計になります。アーキテクチャレベル(メーカーによって異なる)の設計は以下の用な設計になります。レジスタを多用したりすると回路数が多くなり、論理合成にも時間がかかるのですがこのような配置をコードを書くだけでやってくれるのはとても便利な時代になったものです。Kitに焼いてみた結果、以下のように動きます。1秒おきにチカチカしてるのが分かるかと思います。20aになりますので是非よろしくお願いします!ツイート筆者プロフィールみゆっきセキュリティ、ストリーミングなどに興味があるWeb兼なんでも屋さん。スーパークリエータとして認定されたり。LiveWedgeを開封してしばらく使ってみた2015/01/29プロ生を支える生放送配信機材たち。