eFPGAとは?FPGAとの違いと回路を書き換える仕組み

更新日

eFPGA(組み込みFPGA)は、製造後に回路の働きを変えられる部分を、ASICやSoCの内部に組み込んだものです。たとえば通信チップにeFPGAを組み込み、設定を更新できるように設計しておけば、出荷後もパケットの分類ルールやデータ処理を変更できます。

チップ内の回路ブロックが配線でつながるイメージ

eFPGAと単体FPGAの違い

FPGAは、用途に合わせてデジタル回路を設定できる半導体です。単体FPGAは基板に載せる独立した部品で、eFPGAはその仕組みを別のチップの中で使うための設計ブロックです。ASICは特定の用途向けに設計した集積回路、SoCはCPUやメモリー制御など、システムに必要な機能を1つのチップにまとめたものです。

比較する点 単体FPGA eFPGA
どこにあるか 基板に載せる独立したチップ ASICやSoCの中に入る回路ブロック
回路の規模 必要な論理回路や入出力を備えた製品を選ぶ チップの設計段階で用途に合わせて規模を決める
ほかの回路との接続 端子や基板上の配線を使って別のチップと通信する チップ内のバスや信号線を使って接続する
向いている用途 基板の試作や、独立した処理部品を追加する設計 チップの一部に出荷後も変更できる処理を残す設計

回路の試作や開発ボードでの実験については、ITIGICの初心者向けFPGAガイド(英語)も参考になります。

eFPGAの基本構造と信号の流れ

基本形は、小さな論理ブロックを並べ、その間を設定可能な配線でつなぐ構造です。論理ブロックには、入力の組み合わせごとに出力を決めるLUT(ルックアップテーブル)や、途中の値を保持するレジスターがあります。用途に応じてメモリーや演算専用ブロックを備える製品もあります。

  • コネクションボックス(CB)は、論理ブロックの入出力と近くの配線を結びます。
  • スイッチボックス(SB)は、配線どうしをつなぎ、信号が次に通る経路を選びます。

たとえば論理ブロックAの出力をBに届けるとき、信号はA側のCBから配線へ出ます。途中でSBを通って必要な配線に移り、B側のCBからBに入ります。この経路と各LUTの働きを決める設定データがビットストリームです。構造の詳しい例はFPGA設計フレームワークPRGAの論文(英語、PDF)にあります。

出荷後に何を変えられる?

たとえばネットワーク機器で、受信データの特定の項目を検査する処理をeFPGAに持たせます。新しい形式に対応する場合は、その処理の回路を設計し直して、対象チップ用のビットストリームを作ります。製品が更新に対応していれば、検証済みの設定を読み込んで処理を切り替えられます。

通信の処理を変更するには、端子や電気信号を扱う物理回路(PHY)が必要な規格と速度に対応していることが条件です。組み込んだ論理ブロックの数、メモリー容量、配線、信号が届くまでの時間にも設計上の上限があります。設定の作成と検証の流れはAchronixのSpeedcore eFPGA技術資料(英語)で確認できます。

どんな製品に使われる?

通信機器では、規格や顧客の要件が変わりやすい処理に向いています。2021年には、ソシオネクストが5G基地局向けに開発するASICでEFLX 4Kを使うためのライセンス契約を、IP供給元のFlex Logixが発表しました。Flex Logixの発表(英語)

チップ内でデータを受け渡す設計では、外付けFPGAとの通信に使う基板上の配線や部品を減らせる場合があります。一方、書き換えに必要なスイッチや設定用メモリーには面積と電力がかかります。製品設計では、将来変わりそうな処理と、速度や電力を優先する処理を見極めて、書き換え可能な範囲を決めます。

よくある質問

eFPGAの「e」は何の略?

embedded(組み込み)の略です。eFPGA IPと呼ぶ場合のIPは、チップに組み込んで使える回路設計ブロックを指します。

スイッチボックスとコネクションボックスはどう違う?

スイッチボックスは配線と配線を、コネクションボックスは論理ブロックと配線をつなぎます。どちらもビットストリームの設定に従って信号の経路を作ります。

eFPGAとSoC FPGAは同じもの?

「eFPGA IP」は、独自のASICやSoCに組み込むための回路設計ブロックを指します。「SoC FPGA」は、CPUとFPGA領域を同じチップにまとめた製品によく使われます。MicrochipのSoC FPGA解説(英語)

出荷後に利用者が自由に書き換えられる?

更新できる範囲と方法は製品ごとに決まります。メーカーが公開する更新機能や開発ツールがあれば、その手順と対象チップ用のビットストリームを使います。