プログラマブルデバイスのうちFPGA(Field Programmable Gate Array)は、最近のディジタルデバイ スの中でももっとも激しく成長を遂げました。簡単に設計ができ、非常に大きなディジタル回路でも搭 載して動かすことができます。モノによっては安価で使いやすくまさに夢のデバイスといっていいです。
PLD(Programmable Logic Device)とは、ユーザが論理機能を決めることのできる ICのことです。メモリやCPU、ASIC、昔の74シリーズのような標準ディジタルICはそ の機能が決まっていて、これらはプログラマブルデバイスとは言いません。CPUはソ フトウェアで動作を変えられるので究極のプログラマブルデバイスだ、という人も居ま すが、一般的には専用目的ICに分類されます。PLDには小規模なAND-OR構造で できたSPLD(Simple PLD)とこれを拡張したCPLD(Complex PLD)、
LUT(LookUpTable)を用いた大規模なFPGA(Field Programmable Gate Array)に 分類されます。SPLDはPLAとかPAL(これは製品名)とも呼ばれますし、用語は統一 されておらず混乱しています。ただし、最近は大規模なものはほとんどFPGAになっ ていて、これだけ覚えておけば、まず問題なないかもしれません。
3
PLDの歴史は案外古く、70年代に用いられたバイナリジャンクショントランジスタを用いた ヒューズ型のSPLDに遡ります。この型のSPLDは、単純なAND-OR構造の結線を外部から ヒューズを切断することによってプログラムしました。小規模で再プログラムができなかったが、 高速で、当時のディジタルICの主流であったTTL (Transistor Transistor Logic) の74シリー ズで実現が困難な特殊な論理回路に用いられました。80年代になってCMOSを用いた再プ ログラム可能な素子が登場しました。Lattice社のGALシリーズがこの代表で、AND-OR構造 にフリップフロップを含んだ出力ブロックを接続することにより、やや複雑な組み合わせ回路、 順序回路が実現可能でした。このシリーズは再プログラミング可能であり、簡単なハードウェ ア記述言語からプログラミングを行う環境も整い、広く利用されるようになりました。 80年代の終わりに大規模なCPLD, FPGAが登場し、簡単なディジタルシステム全体がPLD 上に実装可能となり、PLDは急成長時代に突入しました。アンチヒューズ型、EEPROM型、 SRAM型等さまざまな特徴を持った方式が普及し、2004年現在に至るまで、集積度、速度は 凄まじい勢いで進歩し、価格は急速に低下した。1991年を1とすると、2000年までの9年間で 集積度は45倍、速度は12倍、価格は1/100となっている。さらに2004年には集積度は200倍、 速度は40倍、価格は1/500となっています。最近は、内部構造階層化が進むと共に、メモリ、 CPU, DSP, 演算器、高速インタフェースを内蔵し、基板に代わってPLD上にシステムを実装 するSoPD (System on Programmable Device)の考え方が登場するに至りました。また、低電 圧化、低消費電力化したデバイスも登場しています。この発展速度は集積度においてメモリ 素子を上回っており、もっとも急速に発展し続けるデバイスと言えます。
皆さんはブール代数を習ったときに、全ての論理式は加法標準形、すなわち、NOT-AND-ORの形で実現できることがわかったと思います。AND入力の選択(どの入力を 繋ぐか、NOTかそのままか)と、AND-ORの結合を切ったり繋いだりすれば、任意の 論理積項の組み合わせが作れ、任意の論理式を作ることができます。これがAND-ORを使ったプロダクトターム方式のSPLDの原理です。
5 この例ではA&BとCバー&Dバーの論理積を実現する結線を示します。このように
単純なメモリは、アドレスを入力、データを出力として考えると、真理値表の代わりに 使えるので、任意の組み合わせ回路を実現することができます。しかし、通常のメモリ は小さい面積で大きな容量を実現するのに特化した構造を持っているので、小規模 の入出力で高速性が要求される論理回路に使う場合不利が大きいです。このため、 実際には記憶要素にマルチプレクサのツリーを組み合わせて表を実現します。これ をLook Up Table (LUT)と呼びます。
7 LUTによる論理の実現の例を示します。同じ列のマルチプレクサには同じ制御入力 を繋ぎ、1ならば下から、0ならば上からの入力を出力に流します。ABCの順に011を 入れると、上から3番目のデータが取り出せることが分かります。(表と右の図でABC が逆順な点にご注意ください。)すなわちこの回路は表として働いています。マルチ プレクサは以前紹介した方法で簡単に作れるので、この方法は入力が6,7よりも小さ い場合には効率的です。
プロダクトターム方式は、AND出力から出てくる積項を複数のORゲートで共有するこ とができます。すなわち、場合によっては多入力、多出力回路が効率的に実現でき ます。しかし、ANDゲートの数、ORゲートの入力数にかなり余裕がないと、本当に任 意の論理式は実現できません。先にしめした例では、ANDゲートは4つしかないので 積項が4つを越えると実現できなくなってしまいます。プロダクトターム方式は結線の 交点上のスイッチで実現するので、EEPROM、フラッシュROMなどによる実現に適 しています。 一方で、LUTは真理値表なので本当に任意の論理式が実現できます。しかし、2の 入力数乗のオーダーで表のサイズが大きくなるので、入力数は通常4-6程度に限定 されます。途中結果の共有はできません。LUT方式は様々な方式で実現できますが、 最近はSRAM型が良く使われます。
9 組み合わせ回路の出力にD-F.F.を付け、さらにフィードバックを付けることで順序回路が実現できます。このため
には、F.F.の出力回路を選択可能にしてやる必要があります。図はLattice社のGALの出力回路の例です。出力 はF.F.を介したものと介さないものが選択可能で、3ステート出力になっています。また、組み合わせ回路にフィー ドバックすることもできるようになっています。このような構成のPLDをSimple PLD(SPLD)と呼びます。
大規模なディジタル回路は、複数の組み合わせ回路、順序回路から出来ています。 これに対応するため、先に示したSPLDを複数個、スイッチで接続します。さらに大規 模なシステムを作るためには2次元構造のスイッチを利用します。このようなチップを Complex PLD(CPLD)と呼びます。
11 FPGAは今までのAND-OR構成と違って4-6入力程度のLUT2セット程度を一つ の論理要素として使います。それぞれの出力にはD-FFを備えます。この論理要素 の周辺に配線を敷き詰め、交点にスイッチブロックを置きます。スイッチブロックは トランジスタのON/OFFで接続をON/OFFし、論理要素間の配線を自由に行えるよ うにします。また、論理要素と、配線の間にも同様のコネクションブロックを置き、論 理要素との入出力配線を制御します。また、チップの入出力PINとの間の配線も 行います。LUTの内容、スイッチブロックのトランジスタのON/OFFを設定すること により、様々な回路構成を実現することができます。この設定情報のことを構成情 報(Configuration Data)と呼び、これをどのように蓄えるかによりFPGAの性質が 決まります。このような構成を、配線の海の中に論理要素の島があるイメージから アイランドスタイルと呼ぶ場合があります。
SPLD, CPLD, FPGAは、基本論理ブロックの実現方式や配線方式によっての分類ですが、 PLDにとって重要なのは、プロダクトターム方式の配線構造、LUTの内部論理、スイッチの設 定などをいかに変えるかという柔軟性の導入方式であり、これによってPLDの特徴が決まりま す。 まず、70年代から伝統的に用いられているヒューズ型があります。ヒューズ型は大電流で金 属を溶解させることにより、配線を切断します。一方、80年代以降、ヒューズ型に代わって用 いられるようになったアンチヒューズ型は大電圧で絶縁体を破壊することで、配線間を接続し ます。両者共に金属で接続が行われるため、遅延が小さい利点がある一方、一度プログラム したら消去することができないワンタイム型です。高速動作用に小規模なものから大規模なも のまで広く用いられる。Actel社、QuickLogic社の製品が一般的です。 次にEEPROM同様に、特殊なゲートであるフローティングゲートをON/OFFのスイッチとし て用いるEEPROM方式があります。高圧によりゲート内に電子を注入することで、電源を 切ってもデータを保持することができます。書き換え可能であるが、半導体でスイッチが形成 されるため、アンチヒューズ型に比べて動作速度の点では不利です。AND-OR型の基本論 理ブロックに適しており、Lattice社の一連の製品、Altera社のCPLDが有名ですが、最近は フラッシュROMを用いる大規模なものが登場しています。 最近、発展がもっとも著しいのがSRAM型である。この方式は、通常のスタティックRAMを そのままLUTに用いると共にスイッチの接続情報を保持します。この接続情報により主として CMOSのトランスファゲートを用いて構成されたスイッチのON/OFFを制御します。このように、 特にSRAM型では、チップ上の論理構成を決定するのはメモリ内の構成情報データです。こ の方式は、CMOSの一般的なプロセスで作れるため、大規模なチップに適しています。しか し、電源を落とすと構成情報が消えてしまいます。すなわち、通電の度に構成情報データを チップ内に送り込む必要があります。逆に、動作中に構成情報データを入れ替えることにより、 機能を変更することが可能です。 その他、MRAM, FeRAMなど新しい記憶方式を用いるもの、DRAMを用いるものも試作さ れているが、本格的な利用には至っていない。
13 PLDをどのように構成するか、と、柔軟性をどのように実現するか、は互いに関連して
います。プロダクトターム構成は、EEPROM型に向いており、FPGAは、SRAMやア ンチヒューズ型に向いていますが、それ以外の型でも利用可能です。
古典的なPLDの概観を示します。Lattice社のGALは、EEPROM型のSPLDで80年 代より良く使われています。QuickLogic社のFPGAは、アンチヒューズ型です。
15 これはより大規模なXilinxのSRAM型とQuicklogic社のアンチヒューズ型です。
BGA(Ball Grid Array)と言って、チップの裏に半田ボールが並んでいるパッケージ で基板の表面にくっつけます。
17 FPGAの設計は、3年生の実験で学びます。設計は、Verilog-HDLやVHDLなどの ハードウェア記述言語で行うことが多いのですが、最近はCレベルでの設計も多く 使われるようになりました。これらの記述は論理合成、圧縮の手順を経て、対象の FPGAの種類に応じてゲートなどの割り当て(テクノロジマッピング)が行われ、配 置、配線の結果、構成情報が出力されます。これをFPGAに流し込めば、設計通 りの動作を行わせることができます。
Intel(Altera)社のQuartusなどがこの一例です。お試し版のWeb Packは無料でダ ウンロード可能で、かなり大きいチップまで設計ができます(実は実験ではこの無料 版を使っているが、大学では大きいチップが設計できるアカデミックライセンスもある)。 皆さんのPCにダウンロードして使うこともできます。
19 最近のFPGAは、ネットワークルータ、ハブなどに用いられる大規模、高速なハイエ ンドの製品と組み込み用の安価なローエンド製品に分化が進んでいます。両方共に、 メモリ、クロックコントローラ、乗算器、高速リンクをハードIPとして搭載する製品が増 えていて、システムをまるごとプログラマブルデバイスで実現するSoPD(System on Programmable Device)が利用されています。さらに低電圧、低電力に特化した製 品も登場し、一部のみを書き換える部分再構成機能が充実してきています。
この図はXilinx社のVirtexシリーズの基本構成です。論理要素の配列の間にRAM, 乗算器などのIPが配置されており、DCM(クロックのコントローラ)、クロックバッファ が周辺に配置されています。
21 これはIntel(昔のAltera)のStratixシリーズです。これも一定の間隔でRAMやDSP
ブロック(積和演算を行うハードウェアのことをこのように呼んでいます)が装備され ています。演算器は論理要素を使って作ることもできるのですが、専用のハード ウェアを使った方がはるかに速いです。
FPGAはその構造の単純さを利用して新しい半導体プロセスをいち早く取り入れて 来ました。テクノロジが一世代違うと集積度は1.5-2.5倍になっています。低コスト用の チップも、容量はハイエンドの1/3から1/5ですが、積極的に新しいテクノロジを取り 入れていることがわかります。
FPGAの発展はこれ以降も続いていますが、Low costの製品には最新のプロセスは 使わないようになっています。
最近のFPGAの基本論理要素は、古典的なものに比べてLUTの入力が増えていま す。このLUTは6入力のものを1つとしても5入力のものを2つとしても使えるようになっ ています。論理要素間を直結するCarry(桁上げ)も用意されています。出力周辺の 回路はマルチプレクサが入って柔軟性を増しています。
このスライス構造を二つでCLBと呼ぶ論理素子を構成します。スライス同士は直結線 がなく、それぞれが隣のCLBのスライスと直結線を持っているのが特徴です。
XilinxのライバルのAltera社の基本論理構造です。Altera社は最近Intelに買収され、 やや高性能製品に特化している傾向が見られます。Altera社のハイエンド製品 Stratixの基本構成要素は、Xilinx同様6入力のLUTを使いますが、このLUTはさらに 柔軟に様々な組み合わせを取ることができます。直結線、出力のマルチプレクサ構 成など、両社の基本構成要素は似てきています。
Intel(Altera)のFPGAの特徴は、階層型の強力なネットワークを持つ点です。これに より、Intel社のStratixは非常に複雑な論理回路を搭載しても250MHzを越える周波 数で動作します。
FPGAは実際の組み込み製品にも使われています。車には数十のFPGAが使 われており、スマフォや家電にもASIC間のつなぎのロジックとして使われています。 これらは低コストで必要最低限のIPを持ちます。
FPGAとASICを比較すると、ASICの方が高速、低消費電力です。それなのになぜ FPGAがASICの市場を取り込んで成長しているのでしょうか?それは最近のプロセ スが最初の1個を作るまでのコスト(Non-Recurrent Costと呼びます)が高騰している ためです。これは、複雑なマスクパターンをいくつも使って作るため、マスク代自体と 設計費用が膨大になってしまうためです。一度作ってしまうと機能の変えられない ASICは、NRCに見合うだけの製造個数があらかじめ見込めないと作ることができな くなっています。一方で、FPGAは構造自体が簡単なため、いち早く最新プロセスで 多くの同一製品を作り、NRCを回収することができます。しかし、本当に多数作る場 合は今でもASICの方が有利です。ある製品を開発する場合、それに向けたASICを 作るかどうか、FPGAでなんとかするのか、経営上の決断が重要に成ってきます。 29
ローコストFPGAは、ASIC、専用チップの市場を食いつぶしながら成長しました。し かし、最近は一世代前のプロセスを用いたASICが、大量生産分野で踏みとどまって います。しかし、最先端プロセスはローコストFPGAには高価になりすぎたため、もうこ れ以上新しいプロセスを使わなくなる可能性もあり、両者の棲み分け体制ができてい くでしょう。
FPGAは、標準ロジック要素だけでなく、様々なハードウェアをIP(Intellectual Property:知的資産)として持っています。IPの中でレイアウトまで決まっているものを ハードコアIP、ハードIPと呼びます。ハードIPの中にはほぼ標準装備となっているも のと、チップ特有のものがあります。PCIeのインタフェースやDRAMコントローラなど 大変便利です。最近はFPGAを科学技術計算に利用するために浮動小数演算器を 搭載するものも現れています。 31
ハードIPを持っているチップとして最近良く用いられるのが、Zynqです。Zynqは ARMとFPGAの混載したチップで、SoC型FPGAと呼ばれます。このタイプはホストを 必要とせず、独立して動作が可能です。Zynqは各種組み込みシステム、ロボット、ド ローンの制御などに使われます。同じタイプのFPGAはIntel(Altera)のAria10, Stratix10などに使われています。
33 FPGAには、先に紹介にしたハードコアのCPUを持たないものは、内部の構成要 素を組み合わせてソフトコアCPUを作ります。各社共に、FPGAに適した構成の CPUを用意しており、プログラム環境毎提供しています。かなり本格的なCPUもあ りますが、上位構成のものの多くは有料です。もちろん、オープンソースのCPUや 各自設計したCPUを使う場合も多く、この辺がFPGAの特徴です。
今日のポイントをインフォ丸が示します。FPGAは急激に発達しているデバイスです。 世の中の動きに注意しましょう。