• TOP>
  • 記事一覧>
  • ASICとFPGAの違いを徹底解説!用途や性能の違いを知って使いこなそう!

ASICとFPGAの違いを徹底解説!用途や性能の違いを知って使いこなそう!

2021.10.19更新

ASICとFPGAは「電子機器やシステムに搭載するLSI(大規模集積回路)の名称」であり、ASICは特定用途、FPGAはユーザが自分で回路機能をプログラムできるものです。本記事では、そんなFPGAとASICの用途や共通点について解説をしてきます!

まず初めに押さえておくべきこと

ICとLSIについて

ICはIntegrated Circuitの略で、集積回路のこと。集積回路とは、抵抗やコンデンサ、ダイオードなどの電子部品を多数個、シリコンなどの半導体基板上に集積した電子回路のことです。そんなICの中でも、大規模な集積回路をLSI(Large Scale Integrated circuit)と言います。しかし現在では、これらの単語はほぼ同義語として使用されています。

このようなLSI技術の発展によって、従来はたくさんの電子部品を用いていた電子回路を1個の部品に集積して半導体基板上に実現できるようになりました。半導体素子の小型化、効率化、処理性能の向上などの技術レベルの向上によって、我々の家電製品は劇的に性能が向上しています。詳細は後述しますが、FPGAやASICは製造手法が異なるLSIの名称です。

LSIの機能面での分類

LSIを機能的に分類すると、情報を記憶するメモリや演算を行うマイコン、特定用途向けのASICなどがあります。ASICはApplication Specific Integrated Circuitの略称で、特定用途向けに様々な機能を組み合わせて構築したLSIのことです。

メモリ

メモリは、データやプログラムを記憶するLSIのことで、パソコンでCPUと一緒に用いられています。昨今はデジタルカメラで画像を記録したり、音楽を記録したりする用途が普及していますが、ここで使われるメモリーカードにもLSIの一つであるメモリが入っています。

メモリには、電源を切ると情報が消えるメモリ(揮発性メモリ)と電源を切っても情報が保持されているメモリ(不揮発性メモリ)があり、コンピュータのメインメモリは揮発性メモリの一種であるDRAMが使用されています。

マイコン

マイコンはコンピュータの中枢部分であるCPUおよび周辺制御装置などをチップで内臓したLSIです。データ演算・制御を行うという点でプロセッサと共通点がありますが、プロセッサよりも演算機能を絞り込んでいます。一方、CPUやメモリ、各種の制御、インターフェース回路がひとまとめになっているという違いがあります。プロセッサと比較して低消費電力。低価格であり、家電や産業機器の制御用として広く使われます。

CPUとは中央演算処理のことで、データ演算・処理などを行うコンピュータの中枢機能を担っています。扱うデータ幅の大きさによって8ビットから64ビット程度まで種類があり、一般的にビット数が大きいほどCPUが扱えるデータ量を大きくなります。そのため、汎用的なコンピュータであれば64ビットが主流になっています。

ASICとは

ASIC(エーシック)とは、専用電子機器やシステムに搭載するための応用分野を絞った特定用途機能LSIの総称です。ASICは、ユーザを特定するかどうかで2種類に分かれており、特定ユーザを対象にしているASICのことをUSIC(User Specific IC)、ユーザを特定しないASICのことをASSP(Application Specific Standard Product)と呼んでいます。

ASICには、フルカスタムASICとセミカスタムASICがあります。一般的に、論理デバイスの性能、集積度、設計の自由度はカスタムICに近づくほど有利になる反面、デバイスの開発費と受注から納品までの時間に関しては不利になるという違いがあるため、フルカスタムASICよりもセミカスタムASICの方が納期が速く、かつ低コストで実現することができます。

ASICの設計、製造方法による分類

ユーザを特定するかどうかで2種類に分類できるほかに、設計手法や製造方法からも分類することができます。ASICの中にはフルカスタムASICとセミカスタムASICがありますが、今はフルカスタムASICはあまり使用されていません。それはCPU性能の向上とハードウェア設計の標準化手法の確立などの技術発展がすすみ、汎用的なチップの組み合わせでも求める性能を実現できるようになったためです。

ASICのうち、セミカスタムASICが主に使用されています。セミカスタムASICの設計手法で4つに分かれており、ゲートアレイ、セルベースASIC、エンベデッドアレイの3方式を単独、もしくは組み合わせて作られています。

ゲートアレイ

セミカスタムASICの製造方法であるゲートアレイは、要求されているLSI仕様があらかじめつくりこんである半製品のウエーハに電子回路構築を実施するだけでLSIを作ることができる手法です。その工程に手軽さから、最も開発コスト・開発期間を押さえてセミカスタムASICを作成することができます。ただその手軽さと引き換えに、実現できるセミカスタムASICの仕様はある程度制限されてしまいます。

セミカスタムASICの製造手法であるゲートアレイでは、半導体メーカがチップに回路機能を作りこみます。一方で、FPGAと呼ばれる手法では異なる方法で作りこまれます。FPGAはカスタムASICと製造手法で共通点があるものの、その特徴が異なります。それは、ユーザ側で機能変更が可能である点です。

FPGAでは、製品を購入したユーザが現場で回路機能をプログラムすることができ、なおかつ回路変更などもすぐに対応することができます。ASICの場合は、セミカスタムASICやフルカスタムASICのよらず、あくまでその製造過程に焦点が当てられており、FPGAのようなアジャイルにも近い手法は使えません。このような対応の柔軟性から、FPGAは非常に優れたLSIとして利用が広がっています。

セルベースIC

セミカスタムASICの製造手法であるセルベースICは、最初からユーザの要求に合わてセミカスタムASICを作りこむため、要求されるセミカスタムASICの機能を完全に満たすことができます。要求に合わせてくみ上げる関係で開発期間や開発コストは他の方式よりも大きくなりますが、セミカスタムASICの製造手法の中で最もよく使われています。

また、セルベースICという名前の通り、セルを階層的に用いてLSIを設計していきます。ここでセルとは、機能のまとまりごとにまとめた小さな論理ブロックのことであり、標準的な論理ゲートを組み合わせたスタンダードセルを用いて構築していきます。

エンベデッドアレイ

セミカスタムASICの製造手法であるエンベデッドアレイは、ゲートアレイとセルベースICの両方と特徴を併せ持つ方式です。これにより、セルベースASICのハードマクロを搭載した高機能チップをゲートアレイ並みの開発期間で製造することができます。

まずユーザが要望するLSIの機能ブロック以外を短納期で可能なゲートアレイ方式で構築します。構築したシリコンウエ―ハで電子回路構築前まで作りこんでおき、そのあとゲートアレイ方式でそのあとの工程を実施していきます。これにより、セルベースICでの機能ブロックを搭載したセミカスタムASICを短納期、低開発費で搭載することができます。

FPGAとは

FPGAとは、デバイス内の論理ブロック複数組み合わせて要求仕様の論理回路を実現するプログラマブルロジックデバイス (PLD:Programable Logic Device)の一種で、従来のPLDとは異なり設計の自由度が高い設計手法で作られたものです。

FPGAは、未プログラム状態でまとめて量産できるため、半導体メーカから見ると量産できる標準デバイスとなります。さらに、ユーザにとっても開発費がいらなくなるため、ユーザの手元で簡便にカスタム化できるASICとみなすことができます。

FPGAとは、Field Programmable Gate Arrayの略で、再構成可能なハードウェアのことです。FPGAの中身は回路を構成するためにロジック、メモリや専用のハードウェアなどがあり、これらを組み合わせて専用の回路を作りこんでいきます。現在のFPGA業界は、Xlinx社とIntel社の二社のデバイスが市場の大半を占めています。

FPGAでデジタル回路を作りこむことになりますが、デジタル回路では主にデジタル信号処理を行うことができます。

FPGAの特徴

独自回路の設計が可能

FPGAは自由に回路を設計・構成できるため、何らかの目的専用の処理を行う独自回路を開発することができます、例えば、汎用的ではない通信方式や画像処理などを行う回路をFPGA上で実現することができます。多くのコンピュータではFPGAで作られる回路をハードウェアマクロとして実装しています。汎用回路では実装できないものをFPGAでは実現でき、かつユーザ側でプログラム可能である点が、FPGAの特徴です。

並列処理が可能

FPGAでは、処理を並列して行うことができます。CPUと比較すると、CPUがプログラムされた命令を逐次実行していく一方で、FPGAでは同時にいくつもの命令を並列で処理する回路を設計することができます。

CPUでは、ソフトウェアの実行をプログラムで記述されている順番にCPUコアに用意されている処理回路で実行していきます。FPGAでは、内臓されたロジックや、乗算器、メモリなどを組み合わせて専用の回路を構成し、処理の順番に沿ってそれぞれに専用回路を構成して動作させていくという違いがあります。

FPGA開発フロー

FPGA開発フローは大きく5段階あり、仕様設計、詳細設計、論理設計、インプリメンテーション、コンフィギュレーションの順で行われます。はじめに仕様設計の段階で、FPGAで作成するLSIで実現したい機能を明確にします。

次に詳細設計の段階で、アルゴリズムやアーキテクチャ、回路ブロックやその構成などを詳細検討していきます。その次の論理設計の段階では、実際にFPGAの中に組み込む論理回路や物理的な制約を設計していきます。

そのあと、インプリメンテーションによって設計した回路をFPGAの中に入れるために物理的な回路を生成していきます。最後に、コンフィギュレーションを行います。これは生成した回路をFPGAに書き込む段階であり、実際にFPGAの動作検証を行います。

開発に使用するハードウェア言語

FPGAの開発には一般的に、ハードウェア言語が用いられます。ハードウェア言語(HDL:Hardware Description Language)は、他のプログラミング言語と同様にエディタを使ってコードを記述していきます。

ハードウェア言語による開発では、RTLと呼ばれる抽象度でFPGAに実装する回路を記述していきます。RTLとは、「Resister Transfer Level」の略で、回路をある程度抽象化した概念のことです。

回路の動作をこのRTLというレベルで記述し、コンパイラがそのコードを解釈して論理回路を構築していくのです。ちなみに、RTLよりも具体的なレベルとして、ゲートレベルというのがありますが、これは論理ゲートをそのまま組み合わせたレベルであるため、比較的に抽象度は低くなります。

インプリメンテーション

インプリメンテーションでは、HDLなどで記述した回路情報をもとにFPGAの回路を生成していきます。インプリメンテーションの中で、回路記述から物理的な回路へ変換していくことになりますが、これを論理合成と言います。これはツールによって自動的に行われますが、FPGAの回路情報がシミュレーション上で正しく見えた場合でも、論理合成ツールで物理的な回路に変換できない場合があるため、この点は注意が必要です。

論理合成を経たあとは、FPGAの物理的な制約情報をもとにFPGA上に配置配線作業を行っていきます。配置配線とは、論理合成した回路を実際のFPGAのデバイス上でどのように配置して配線するかを決定することで、これもツールで自動的に行われます。

まとめ

ここまでFPGAASICについてその用途や違いについて解説をしてきました。FPGAASICLSIの名称で、共通点があるものの、その製造手法に違いがあります。結果として作られたLSIにも性能の違いがあります。さまざまな書き換えができる便利なデバイスであるFPGAは今後発展する可能性がある技術です。興味を持った方は調べてみて活用してみましょう。

電子工学・電気工学の専門知識が欲しいときは

電子回路の知識や組み方を勉強し、自分でものづくりができれば良いですが、知識や技術を身に着けるまでにはやはり時間がかかります。しかし、機電系のエンジニアは会社に属していることが多く、頼みづらいと思うこともあるのではないでしょうか。
電子工学や電気工学の専門的な技術・知識が欲しい!という方におすすめなのがFREE AIDです。

バナー

https://freelance-aid.com/

FREE AIDは、これまでになかったフリーランスの機電系エンジニアにむけた情報プラットフォームです。
仕事を探すフリーランスのエンジニアと、機電系のプロフェッショナル人材が欲しい企業などのマッチングを行っています。

  • TOP>
  • 記事一覧>
  • ASICとFPGAの違いを徹底解説!用途や性能の違いを知って使いこなそう!