ハードウェアエンジニアの備忘録

電子工学(半導体物性)→応用光学・半導体プロセス→アナログ回路→C/C++→C#/.NETと低レイヤーから順調に(?)キャリアを登ってきているハードウェアエンジニアの備忘録。ブログ開始時点でiOSやサーバーサイドはほぼ素人です。IoTがマイブーム。

FPGA入門 備忘録① ~準備編~

FPGA入門という本を買った。この記事はその本の内容の備忘録。

 

回路図で学べるFPGA入門 回路図は読める人のためのHDLガイド

回路図で学べるFPGA入門 回路図は読める人のためのHDLガイド

 

 1.FPGAとは

FPGA(Field Programmable Gate Array)は書き換え可能な集積回路

どのように書き換え可能かというと、予め必要と思われる回路を用意しておいて、必要なものをスイッチなどで切り替えて使用する。予め用意しておく回路は、AND、OR、NOTなどの基本ゲート。構成としては、

  • アンチヒューズ型
  • SRAM

などがある。

f:id:tosh419:20160625042648p:plain

アンチヒューズ型は図(a)のように配線したい部分の絶縁体を物理的に壊すことで任意の回路を実現する。物理的に結線されるため信号の遅延が少なく、高速な動作が可能。しかし1回しか書き込めない。

図(b)は切替スイッチをもちいて論理回路を切り替えることを考える方法。マルチプレクサがどの論理ゲートを選択するかはメモリに書き込む情報で決定される。

しかし、これだけでは切り替え機構を追加した分、アンチヒューズ型に比べ、回路規模が大きくなってしまう。

f:id:tosh419:20160625043155p:plain

そこで、実際のSRAMFPGAではより面積効率の高い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万円もする!

プラットフォーム ケーブル USB II(HW-USB-II-GH)

プラットフォーム ケーブル USB II(HW-USB-II-GH)

 

 次がDigilent社製の互換品で、こちら。Amazonでは3万円だが、探せば2万円程度のショップもある。

 最後が、特殊電子回路社製のJ-Writerを使うケース。この場合、上記二つより安価で、しかもAlteraのCycloneやLatticeのXP2などXilinx社以外にも対応している。ただ、XilinxのiMPACTからは使用できず、専用のソフトを使う必要がある。

開発統合ソフト

開発ソフトもFPGA開発には必要だ。Xilinxの場合、ISE(Integrated Software Environment)がそれにあたる。

そもそもFPGAのデザインフローは

  1. 回路設計
  2. ピンアサイン
  3. 論理合成
  4. インプリメンテーション
  5. ダウンロード

という流れで行う。論理合成はHDLからネットリストに変換する工程を指し、インプリメンテーションとはネットリストから実際に使用するFPGA向けのコンフィギュレーションデータまで変換する行程を指す。