個人情報保護方針 お支払いについて お問い合わせ

FPGAの回路設計と実績


FPGAと歩んで35年

FPGAが商用の半導体製品として最初に発表されたのは1985年11月だそうです。FPGAとは"Field Programmable Gate ArrayPLD"の略で、PLD(Programmable Logic Device)つまりプログラム可能な回路ということになります。PLDとの出会いは大学の研究室でした。当時はデバイス内のPROMのフューズを焼き切って回路のプログラムを行う1発勝負のデバイスでしたが、画期的なものができた。世の中が変わるだろうと思ったものです。
その後、メーカーに入社した私は当時ソフトウェアでは処理が間に合わないが、ゲートアレイ(専用IC)を作って採算が取れるほど数が出ない製品で、当時アルテラが始めて量産用として投入してて来たFPGAを採用して、国内有名メーカーのインクジェット素子の制御を行いました。当時のFPGAはASIC(特定用途向けIC)の試作や高価な交換機などに用いられ数万円していましたが、使用したデバイスは数千円というものでした。その後、シリコンバレーでスタンダードセル方式のICの設計にも携わり、より深くICの性質や設計上の注意点などを学ぶことになります。これがFPGAを設計するうえでも大変良い経験となっていることはいうまでもありません。FPGAというとVelilogやVHDLといった論理記述言語で書かれ、コンパイルすれば問題なく動くと思われがちですが、コンパイル後は回路になります。つまり回路に適した論理でないと意図していない回路や、無駄に回路規模のとても大きな回路、あるいは高速な動作が難しい遅い回路などができてしまいます。FPGAの書き換えることができるという利点を生かしつつ、回路であるということを忘れないことが設計の肝ではないかと考えています。

ソフトウェアか回路か

この業界にいていつも思うのは、ソフトウェアとハードウェアの技術者の対立です。ソフトウェア技術者はなんでもソフトウェアでやりたがります。ハードウェア技術者はハードウェアはハードウェアでやるのがベストだと主張しがちです。しかし、特に組み込み器機においては、どちらがベターかというのは状況によって異なることが多いです。たとえば頻繁に変更して使用するような用途でしたらソフトウェアのほうが変更も検証もやりやすいです。しかし、高速な処理が必要な場合には、ソフトウェアでやるほうが高くつくことも事実です。ソフトウェアはCPUでプログラムを用いて逐次的に処理します。つまりマルチコアのプロセッサを用いる場合を除けば、一度に1つのことしかできません。原理的に言えば、例えば加算をしている間は他の回路は止まっています。しかし、ハードウェアは基本的にすべての回路を同時に動かすように設計できます。流れ作業で行うことができる処理は、1つの処理をした後に次の回路に渡すということを繰り返すことにより、非常に多くの並列処理を行うことができます。これは非常に大きなメリットです。FPGAを用いて信号を処理するうえで、フィルタをかけたり、微分したり、特定の信号を検出したりする処理がこれに該当します。A/Dコンバータなどでデジタル化した大量の信号をそのままPCに転送して、PCの有り余るパワーで処理する方法もありますが、一方で回路のほうでデータを処理して、欲しい部分だけを取り出して保管したり、欲しい周波数成分だけを取り出してデータ量を大幅に圧縮したりもできます。データ量を減らせば長時間の測定も可能になり、容易に設置と取り出しができないような、地下深くや海の底といった場所での測定に向いたシステムも作れたりします。また、消費電力の面でも効率的な処理は有利になります。こういった特殊な用途においてますますFPGAは活躍していくと思っています。

FPGA設計の流れ

お客様から提示される仕様の詳細度合い、難易度、使用するFPGAやツールによって内容は異なってきますが、おおむね下記の順番で設計を行います。一口に回路設計と言っても、RTL(回路記述言語)を使って回路を記載する作業は全体の1割にも満たないことが多く、ほとんどの時間は検証に当てられます。たったこれだけの設計にこんなに費用がかかるのかといわれることがありますが、実際に多くの手間がかかることを理解していただければと思います。

  1. 回路の詳細仕様策定

    お客様から頂く仕様はざっくりした機能仕様であることが多いです。実際の回路と1対1で対応した詳細な仕様を簡潔にまとめるとともに、回路作成に必要な周辺デバイスの資料などを集め、特にFPGAにかかわる部分を1つのドキュメントにまとめます。お客様に漏れがないことを確認いただきます。ここに書かれていないことは検収項目の対象外となります。

  2. FPGAピンアサインの確認

    初めて使う、FPGA、あるいはFPGAボードの場合にはまずFPGAのピンアサインを確認します。トップレイヤにピンとピン機能だけを記載した仮のFPGAデザインを作成し、論理合成が可能かどうかを確認します。デバイスによっては配置不可能なピンレイアウトがあります。特にお客様で基板を起こされる場合にはこの確認が重要で、基板のレイアウト承認を済ませる前に確認を済ませておく必要があります。ドキュメントで不可能という記載がなくてもピンアサインできない組み合わせが存在することがあります。評価ボード等ではこれらの作業がFPGAボードメーカーで実施済みで合成可能なサンプルプロジェクトが提供されることがあります。この場合、お客様仕様との矛盾点がないことのみを確認します。

  3. シミュレーション検証方法の策定

  4. FPGAの設計で一番難しいのは検証です。基板上に搭載されているFPGA以外のデバイスのシミュレーションモデルは入手できるのか、ユーザー回路が正しく動作しているかをどうやって検証するか、モード設定がある場合には何通りの組み合わせで確認すべきか等を検討します。シミュレーションの時間が多ければそれだけ納期も長くなります。

  5. シミュレーション環境の構築

    FPGAボードやお客さまが実際に実機で接続する器機をできるだけ含めた環境を模したシミュレーションのテストベンチを作成します。ダウンロードなどで入手可能な周辺デバイスのシミュレーションモデルはできるだけ組み込みます。ないものはビヘイビアモデルを作成します。外部デバイスのモードをI2CやSPIで変更しながら動作するような回路の場合には作成するシミュレーションモデルはかなり複雑になります。

  6. 回路設計

    シミュレーション環境が整ってようやく回路設計になります。

  7. シミュレーションによる検証

    シミュレーションによって作成した回路が正しく動作しているか1つづつ検証していきます。波形を見るだけでなく、回路の出力結果をログにとって後で一致するかどうか検証できるような仕組みも入れておき、結果を保存します。後で回路の最適化などを行った場合に回路の機能が変わっていないか検証するためです。

  8. 回路修正

    回路の動作に問題があれば修正し、再度シミュレーションを行います。不具合がなくなるまで作業は続きます。

  9. 論理合成

    QuatusやISE、viadoといった論理合成ツールでコンパイルを行います。論理シミュレーションが通っても回路にならない記述ミスもありえます。シミュレーションでは問題なくてもコンパイル時にエラーになる記述方法もあります。これらを修正していきます。とにかくエラーなくコンパイルが通るまで修正します。

  10. 制約条件の追加

    この時点ではピン位置とIO規格以外の制約を行っていません。出力ピンのドライブ電流や入力ピンのプルアップダウンの設定を行います。すべての入出力ピンにSetup/Holdの仮の(きつめの)タイミング制約を行います。
  11. タイミング確認

    制約を追加して再度コンパイルすることでタイミングエラーが確認できます。

  12. タイミング改善のための最適化と変更

    入出力ピンにタイミング制約を満たす必要十分な値に更新します。FPGA内部のタイミングエラーが発生したら回路の最適化等を行います。また、異なるクロック間の伝達はタイミングエラーの原因になります。RTLで適切に異なるクロック間の信号の受け渡しが行われていることを確認して、false_pathを設定します。

  13. シミュレーションによる再確認

    タイミング改善のためにRTL記述を変更した場合、オリジナルの回路とまったく同一の機能であること(また必要であればまったく同一のタイミングであること)を確認します。以前シミュレーションをしたものと論理的にまったく同じ結果であることを確認します。一般に古い世代のFPGAや超低消費電力のFPGAを用いる場合、回路の最高動作周波数は低いことが多いです。この場合、複雑な回路を分割して、並列または時分割で処理しパイプライン化することで回避できることがあります。オリジナルのコードを残し、オリジナルとタイミング改善版をdefine等で切り替えられるようにして後でシミュレーションで機能同一性を確認できるようにしておくことが肝心です。

  14. 実機による動作確認

    ユーザー様から機材をお借りできる場合には実機にて動作確認します。シミュレーションでは実時間で長時間の検証をおこなうことは大変困難です。マイクロ秒、ミリ秒のオーダーでのシミュレーションが現実的で、分単位、時間単位の検証は無理です。これらは実機で行う必要があります。逆に細かな設定の組み合わせをすべて網羅するのは実機テストでは大変です。実機をシミュレーションによる検証をうまく組み合わせることが肝心となってきます。

グルーヴデザインサービスではお客様からの受注したすべての設計データを納品しておりますが、シミュレーション環境は納品対象外となっています。シミュレーション環境は同一のシミュレータ、同一バージョンをお持ちでないと正しく動作しないこともありますが、回路をどう検証するかが最も重要なノウハウだと考えております。お客様から破棄を求められない限り、シミュレーション環境を含む設計データは保管させていただいておりますので、のちに問題にでて解析が必要な際にはご協力させていただきますのでご了承下しさい。なお、保守、移管を目的とした回路の詳細なドキュメント整備やお客様担当者へのレクチャー等の教育的な業務は基本的にお断りしております。保守、微修正などはリーズナブルな価格で承っておりますので、継続的なお取引きをお願い申し上げます。

設計事例

GroveDesignServiceのお客様は各種製造装置、検査装置、地震計、海洋、宇宙など他分野にわたります。企業様、大学様、産学共同などの機構様にも納入しています。基本的にお客様の情報や具体的な用途、製品名などを公開することはできませんが、ここではお客様や製品が特定できない範囲で紹介したいと思います

・データー収集・測定
プライムシステムズ社のFPGAボードで最も多いのがADコンバータによるデータ収集装置です。多くの場合、信号を発して帰ってきた信号を観測します。信号の観測は取り込みのタイミングを調整したり、多数あるチャネルを選択したり、切り替えたりしながら測定するものものあります。接続されるセンサーは多岐にわたります。こちらでは何が接続されるのかもわからない(非公開)ものも多数あります。センサーがわからなくても信号がどのようなものであるかがわかれば設計はできます。32chのような多チャンネルのものや、チャネル数は少ないが1Gspsのような高速なものもあります。

・PCとの通信方法
プライムシステムズ社のFPGAボードでPCとの通信方法で最も多いのがUSBです。これはUSBでの通信が容易にできるようにした製品だからです。WindowsPCから比較的簡単にアプリケーションが作成できるAPIが用意されています。詳細はプライムシステムズ社のサイトを参照ください。
プライムシステムズ以外のFPGAボードでもPCと通信したい場合には、FTDI社のFT232シリーズを用いる方法があります。FT232というとUSBシリアル変換というイメージがありますが、FT232Hなどの同期パラレルモードを有したものは、8bitの同期転送を行うことができます。これを用いることで実測値で40MBytes/sという非同期シリアル通信より高速の通信を行うことができます。

お客様の装置の中には特定のPCと1対1で通信するのではなく、ネットワーク上に測定装置を置き、複数のPCやインターネット回線、あるいは専用回線を介して外部からアクセスしたい場合もあります。この場合にはイーサネットがインターフェイスになります。FPGA上のNiosCPUとイーサーネットMACを置き、ソフトウェアでTCP/IPを実現した例もあります。これからはRaspberryPi等を利用するのも良い方法かと思います。
また、高速に通信したい場合にはPCIexpressが用いられます。PCI Express 2.0で1レーンあたりで双方向1GB/s(1方向500MB/s)と高速で、x4ですと4GB/sとUSB3.0よりも高速となっています。PCIexpressはPCの拡張スロットに装着されます。WindowsまたはLinuxのドライバが必要になります。FPGAメーカーから提供されるサンプルドライバを用いることもあれば、新たにドライバを作成することもあります。たいていの場合、FPGAと通信するCUI(コマンドインターフェイス)またはGUI(グラフィカルインターフェイス)のサンプルプロジェクトまで納品することが多いです。お客様のほうでこれをベースにカスタマイズするか、手に負えない場合にはこちらでも引き受けます。
 

・画像処理
画像、つまりはカメラ等で撮影された信号を処理して、変化を取り出したりフィルタをかけたりします。カメラなので2次元のデータであることが特徴です。一部を取り出して表示したりすることもあります。古くはNTSCの信号だったり、今ではHDMIの信号だったりします。画素が多かったりフレームレートが早いと高速な処理が必要になります。

・メジャーではないFPGAメーカーにも対応
FPGAは圧倒的にAMD(旧ザイリンクス)とIntel(旧アルテラ)の2社が圧倒的なシェアを持っています。しかし用途によってはLattice、Actel等の別なデバイスが合う場合もあります。過去にマイクロセミ(Actel)の超低消費電力FPGAを扱いました。大手ザイリンクス、アルテラは専用のツールを用意していますが、そうでないメーカーもあります。マイクロセミではSynopsys社の論理合成ツールSynplify Proを使用していました。Synopsys社は米国シリコンバレーでは最も有名なEDA(半導体設計ソフトウェア)のメーカーの一つです。これらのツールも問題なく使用することができます。