用語解説【FPGA】


1. FPGAとは


【用語解説】FPGA(Field Programmable Gate Array)

 

読み方
エフピージーエー
英語
Field Programmable Gate Array の略称

 

直訳すると、「現場で プログラム可能な 論理回路の アレイ(配列)」となるそうですが・・・
あまりピンときませんよね?
 
ここでは専門的な説明ではなく、独自の説明を交えて一緒に考えていきたいと思います。
 
 
 

まず、FPGA(エフピージーエー)とは、このようなチップです
↓↓↓

Linkedin Altera公式ページ より引用>

 

基板の上に載っていて、“マイコンCPU)とは違うの!?” と思いませんか?

 
FPGAはマイコンとは違い、中に「論理回路」が沢山入っている “プログラム素子” 、なんですね。
 

 
 

最大の特徴は、 
書き換えることが可能な回路」というところです。 
 
情報が [FLUSH ROM] という記憶装置に入っており、 

  • 電源を入れる度にROMから情報(データ)を取得して、回路を作り出す
  •  
         

  • 電源を切ると回路が無くなる

という仕組みをイメージすれば分かりやすいかもしれません。
 
 
FPGAプログラム言語の一例(Verilog)

 
これだけでは、なかなかイメージが沸かないかと思います。
 
そこで!「気になった質問」を技術者さんに投げかけた回答を [Q&A方式]でまとめてみましたので参考にしてみてください。
 

 

◆◆  FPGA -Q&A-  ◆◆

 

 

Q1. 「どんな時に」使うもの?
A.「処理速度の速いもの」かつ「正確なもの」を作らないといけない時
 
 

FPGAは、いわば “プログラムをハードにできる素子” なので、ソフト側で判断処理するよりも「速い」です。
 
信号が来たらすぐに動作する、つまり【ハードウェア処理】なので速い、ということなんですね。
 
【FPGA】ソフトで動かすと時間がかかる、ハードで動かすと速い
 

次に「正確さ」です。
 
例えば、CPUのようにソフト側で処理する場合は、プログラムを都度実行するので処理時間が安定しないことがあります。
ですがFPGAでは、ハードでの実行処理時間が安定する為、正確なタイミングが必要な際に有効なのです。
 


Q2. 使うメリットは?
A.「後からでも変更(カスタマイズ)できる」&「処理が速い」
 

必要な回路を、その機器専用に組み込むことができます。しかも、後から変更したい場合も論理回路(プログラム)の変更が可能です。
 
 
他にもユーザーが目的に合わせて設計できる素子に、
ASIC(エーシックApplication Specific IC)という種類もあります。
 
ですが、ASIC
後から回路変更はできない
初期投資の費用が高く、大量製造に向いているもの
ということがあります。


 

Q3. CPUと何が違うの?
A.「CPUは、プログラムを処理することに特化した “ 汎用的なもの ”」
 
 
CPUは、汎用的なもの(何に使うか、決まっていない)なので、処理はソフト側で実行します。
 
一方、FPGAは “ハードでプログラム処理できる素子”。 そこが大きく違うところですね。
 
CPUFPGAそれぞれ良いところがあるので、実際には一緒に(同時に)使うことが多いです。例えば複雑な処理があったとすると、その処理はCPU(ソフト側)で実行させる、といった具合です。
 
CPUとFPGAの両方を搭載した基板


 


 
 

学生さんひらめき(男子)

FPGAって、PLD(Programmable Logic Device)という書き換えられるデバイスの一つ、でもあるんだよ。
 
20年くらい前から出始めたそうなんだけど、現在(2019年)では、安価になって論理回路も沢山入るようになって進化しているんだ。
 
リアルタイム性が必要で単純な機能”を、ここで作れば良いんだね!

 

電子機器によっては、CPUが無くてFPGAだけ入っているものもあるんだそうよ。

学生さんひらめき(女子)


 

学生さんひらめき(男子)

あとね、コンフィギュレーション情報(設定情報)が入ったFlash ROMは通常、外部のROMから取り込むけど、FPGAチップ内に入っている【不揮発FPGA】という種類もあるんだよね。

 

そうそう、外に置いていた「周辺デバイス」をFPGA内部に取り込む、ということね。
 
電源ON/OFFの際のデータ転送でかかっていた消費電力を削減できたり、プリント基板サイズ小型化などのメリットがあるんだそうよ。

学生さんひらめき(女子)


 
 
 
 


2. 日本システムデザイン(株)×FPGA

ひと昔前には、「CPLD」も良く使っていました

CPLD(シーピーエルディー:Complex Programmable Logic Device)も同じプログラム素子で、少し前には良く利用していました。
ですがFPGAの方が設計の自由度が高いため、最近はFPGAを使うことがほとんどなのだそう。
 
ちなみに「CPLDの場合は、PIN配置が自由に決められないため基板の設計を後から行う必要があるけれど、FPGAの場合は、先に基板の設計をしても柔軟にプログラムを組める」、という点が使いやすいとのことでした。
 

中規模のPLD。PLDの小規模なものとしては、「SPLD(Simple PLD)」がある。

 
 

“正確なタイミングで” AD変換するために

「1. FPGAとは」の章で挙げた「速く・正確なもの」の例として、内径の傷を調べる【レーザ検査での【AD変換】が挙げられます。
 

  • 高速でレーザをプローブで回転させているため、ソフト側でやっていたら間に合わない
  • 返ってきた光の強さを正確なタイミングでAD変換しなければいけない

 
 というような場合に、FPGAは適しているのです。
 

プローブとは、測定の時に使う探針のこと。

 
【例:円筒形ワークの内径検査】正確なタイミングでのAD変換が必要
 

 
 

沢山のICが、今ではワンチップで。

こちらは、だいぶ昔の(ナント手配線!)画像処理ボード

昔の画像処理ボードのフィルム写真
 
 
このボードにはICが沢山並んでいますよね。技術が進化した現在では、これらのほとんどの機能が1つのFPGAで可能だろう、とのことです。
 
昔の画像処理ボード、今ならワンチップで実現できるかも
 

 
 

かつてGALライターも作っていました

初期のプログラマブルデバイス(PLD)として挙げられる、GALGate Array Logic)ライターを、かつて日本システムデザイン(株)でも開発したことがありました。
 


 
 
 
 

初めて使ったのは2006年くらいで「すごく便利!」と感じたそうよ。
 
麥田社長の話ではね、
FPGAは『ハード設計の時に楽だなぁ』という実感があるんだって。
 
ハード設計で「デバッグ」って一番大変なんだそうよ。
ソフトと違ってね。デバッグして、もし間違っていた場合つなぎ直すことになってしまうから。

学生さんひらめき(女子)


学生さんひらめき(男子)

それが、FPGAの場合だと
例えば仕様のある部分がキッチリと固まっていない場合でも。ある程度決まっていれば大まかに回路設計をすることができる、そして回路を構成するためのプログラムを後から作ることが出来る、そうだよ。
 
他にも、「仕様変更になってしまった」という場面でも、柔軟に修正対応ができるというメリットもあるよね。

 

FPGAが無い昔は、回路(ハード)が固定だったから、もし間違っていたり変更があったりした場合は、基板自体を作り直さないといけなかったんだそうよ。
 
昔は基板自体も高価だったとのこと、作り直すのは大きな負担になるわね!

学生さんひらめき(女子)


学生さんひらめき(男子)

本当にそうだね。
 
FPGAで設計の工数を減らすことができる、つまり、開発費用の削減にもつながるんだって。

 
 

FPGAを使った、ハードウェア設計の一例[左:パターン設計 右:回路図]

 
 

Written in 2019.07

 
 
 

FPGAを使った)組み込みシステムに関する、ご要望やご質問などがございましたらお気軽にお聞かせください。
お問い合わせはこちら 

 
 
 
 

FPGAと関係のある【マイコン】の解説もぜひご覧ください
↓ ↓ ↓ 
マイコンの用語解説へ >

 
 
 
 

< 参考文献 >
「FPGAプログラミング大全」著者:小林 優 2016年12月15日 / 秀和システム

「FPGAの原理と構成」著者:天野 英晴 2016年4月25日第1版第1刷発行 / 株式会社オーム社

「改訂版 FPGAボードで学ぶ論理回路設計」著者:山際 伸一 2009年4月15日初版発行 / CQ出版株式会社

 

 
 
 
 

用語解説一覧へ >