- 第3章 FPGAの仕組み
章トップ(目次)
3-1 FPGAとは何か
3-2 論理回路の基本構成(LUT / FF)
3-3 配線資源とスイッチ構造
3-4 クロックと同期設計
3-5 FPGAの設計方法(HDL)
3-6 CPU・GPU・FPGAの違い
3-7 構成データと再構成
3-8 タイミング設計と制約(STA)
3-9 配置配線(Place & Route)
3-10 I/Oとピン制約
3-11 CPU・GPU・FPGAの本質的違い
▶ 第2章 GPUの仕組み
3-5 FPGAの設計方法(HDL)
FPGAは、
CPUのように「命令」を書いて動かす装置ではありません。
FPGAでは、
回路そのものを記述して設計を行います。
そのために用いられるのが
HDL(Hardware Description Language)です。
HDLとは何か
HDLとは、
ハードウェアの構造や動作を記述する言語です。
代表的なHDLには、
- Verilog HDL
- VHDL
があります。
どちらも、
「処理手順」ではなく
信号の関係を記述する点が特徴です。
ソフトウェア言語との違い
C言語やPythonでは、
処理は上から順に実行されます。
しかしHDLでは、
記述した内容が同時に動作します。
a = b & c; d = e | f;
これらは「順番に実行」されるのではなく、
並列に存在する回路
として解釈されます。
組み合わせ回路と順序回路の記述
HDLでは、
回路を大きく次の2種類に分けて記述します。
- 組み合わせ回路(Combinational Logic)
- 順序回路(Sequential Logic)
順序回路では、
クロックに同期してFFが更新されるため、
クロック設計と不可分です。
合成という考え方
HDLで書かれたコードは、
そのままFPGAで動くわけではありません。
まず、
論理合成(Synthesis)
によって、
- LUT
- FF
- 配線
に変換されます。
つまりHDLは、
回路図を生成するための設計図
と言えます。
設計者の役割
FPGA設計者は、
- どこでFFを入れるか
- どの信号を同期させるか
- どの処理を並列化するか
を明示的に決める必要があります。
これは、
ソフトウェア設計よりも
ハードウェアに近い思考
を要求されます。
CPUとの設計思想の違い
CPUでは、
性能向上は主に
クロック周波数や命令実行速度に依存します。
FPGAでは、
並列にどれだけ回路を配置できるか
が性能を決めます。
この違いが、
CPUとFPGAの本質的な差になります。