FPGA入門 備忘録① ~準備編~
FPGA入門という本を買った。この記事はその本の内容の備忘録。
回路図で学べるFPGA入門 回路図は読める人のためのHDLガイド
- 作者: すすたわり
- 出版社/メーカー: 秀和システム
- 発売日: 2016/03/25
- メディア: 単行本
- この商品を含むブログ (1件) を見る
1.FPGAとは
FPGA(Field Programmable Gate Array)は書き換え可能な集積回路。
どのように書き換え可能かというと、予め必要と思われる回路を用意しておいて、必要なものをスイッチなどで切り替えて使用する。予め用意しておく回路は、AND、OR、NOTなどの基本ゲート。構成としては、
- アンチヒューズ型
- SRAM型
などがある。
アンチヒューズ型は図(a)のように配線したい部分の絶縁体を物理的に壊すことで任意の回路を実現する。物理的に結線されるため信号の遅延が少なく、高速な動作が可能。しかし1回しか書き込めない。
図(b)は切替スイッチをもちいて論理回路を切り替えることを考える方法。マルチプレクサがどの論理ゲートを選択するかはメモリに書き込む情報で決定される。
しかし、これだけでは切り替え機構を追加した分、アンチヒューズ型に比べ、回路規模が大きくなってしまう。
そこで、実際のSRAM型FPGAではより面積効率の高いLUT(Look Up Table)を使った構成になっている。図(c)のようにRAMのアドレス入力をデータ入力端子として用いることで、必要な論理演算結果を得る。具体的に(c)のケースではAB端子によってAddressが指定され、OR演算に対応するDataが出力される。これによりこのSRAMはORゲートとして機能する。(d)は4入力NANDのケースだ。
FPGAではこのようなLUTの他にフリップフロップなどの基本セルなどからできている。各基本セルの間には、基本セル同士を接続するための配線とスイッチが並んでいる。
2.開発準備
FPGA開発には、
- 開発用PC
- 開発ソフト
- FPGAボード
- ダウンロードケーブル
が最低限必要になる。
開発ソフト
開発ソフトとしては各社以下のソフトを用意している。
社名 | 開発ソフト名 |
---|---|
Xilinx | ISE |
Altera | Quartus |
Lattice | Diamond |
FPGAボード
次に FPGAボードを用意しなければならない。
各社のFPGAチップの製品ファミリーラインナップは以下のようになっている。
社名 | 製品名 | 用途 |
---|---|---|
Xilinx | Spartan | 低コストFPGA |
↑ | Zynq | ARM Cortex内蔵のFPGA |
↑ | Artix | 低電力でコスト重視のアプリケーション向け |
↑ | Kintex | 低電力でコスト効果の高い信号処理アプリケーション向け |
Altera | Stratix | ハイエンドFPGA |
↑ | Arria | ミドルレンジFPGA |
↑ | Cyclone | 低コストFPGA |
↑ | Max | 電源を入れたら即起動のFPGA |
Lattice | ECP | 低コストファミリーFPGA |
↑ | iCE | モバイル用FPGA |
↑ | Mach | 高信頼性、低コストを備えるFPGA |
個人用途でFPGAを使う場合、あまり高価なものは買えない。ボードそのものの値段も高い上、高速なインターフェースに対応した各種測定器等を個人でそろえるには相当に困難だからだ。例えば、オシロスコープ一つでも高速なものでは1000万円以上する。差動プローブなども一つで軽自動車一台買える値段のものもざらだ。
Xilinxの場合、Spartanが載ったFPGAボードが個人用途の選択肢となる。
ダウンロードケーブル
次に以外に厄介なのがダウンロードケーブルだ。Xilinxの公式ケーブルが一番良い選択肢だが高い。Amazonでは4万円もする!
次がDigilent社製の互換品で、こちら。Amazonでは3万円だが、探せば2万円程度のショップもある。
最後が、特殊電子回路社製のJ-Writerを使うケース。この場合、上記二つより安価で、しかもAlteraのCycloneやLatticeのXP2などXilinx社以外にも対応している。ただ、XilinxのiMPACTからは使用できず、専用のソフトを使う必要がある。
開発統合ソフト
開発ソフトもFPGA開発には必要だ。Xilinxの場合、ISE(Integrated Software Environment)がそれにあたる。
そもそもFPGAのデザインフローは
- 回路設計
- ピンアサイン
- 論理合成
- インプリメンテーション
- ダウンロード
という流れで行う。論理合成はHDLからネットリストに変換する工程を指し、インプリメンテーションとはネットリストから実際に使用するFPGA向けのコンフィギュレーションデータまで変換する行程を指す。