FPGA設計を、順番に学ぶ
4つのトラックで、各レッスンは前のレッスンの上に積み上がります。すべてのレッスンに学習目標、図、実際にコンパイルできるHDL、そして演習があります。
すべてのレッスンは2027年1月31日まで無料で読めます。アカウント登録は不要です。
「FPGAとは何か」から、実機ボードで動く最初の合成済み設計まで。
FPGAとは何か
フィールドプログラマブルゲートアレイは、論理の配線を自分で決めるチップです。本レッスンではその意味、マイコン・ASIC・GPUとの違い、そしてFPGAが真価を発揮する場面を説明します
FPGAはどのようにプログラムされるか
ハードウェア記述からコンフィギュレーション済みチップまでの道のりを段階ごとに追い、AMD、Altera、Lattice、オープンソースフローで出会うツール名を紹介します
組み合わせ論理とルックアップテーブル
ブール関数と真理値表、ルックアップテーブルがそのどれをも小さなメモリに変える仕組み、キャリーチェーンとマルチプレクサを解説し、VerilogとVHDLの組み合わせ論理ブロックを示します
レジスタ、クロック、状態という考え方
フリップフロップ、クロックエッジ、セットアップとホールドを直感的に説明し、設計を予測可能に保つ同期設計の規則と、同期リセットとイネーブル付きのレジスタをVerilogとVHDLで示します
初めてのHDLモジュール
VerilogモジュールとVHDLエンティティの構造、ポート、wire・reg・signal、連続代入とクロック付き代入を解説し、LEDを点滅させる完全なカウンタを両言語で1行ずつ説明します
シミュレーションとテストベンチ
合成の前にシミュレーションを行う理由、VerilogやVHDLのテストベンチが設計を駆動する仕組み、そして出力される波形の読み方を解説します。
有限状態機械
MooreマシンとMealyマシン、状態のエンコード方法、2プロセス記述と1プロセス記述、そして初心者が最初のFSMで必ず引っかかるバグを解説します。
カウンタ、タイマーとデバウンス
分周クロックの代わりにクロックイネーブルを使う理由、ミリ秒tick生成器、エッジ検出付きのボタンデバウンサ、多重化した7セグメント表示器を、テストベンチ付きで解説します。
メモリ、ブロックRAMとFIFO
分散RAMとブロックRAMの違い、合成が正しいプリミティブを推論するようにRAMとROMを書く方法、リードビフォアライトとライトファースト、そしてfullとemptyフラグを備えた同期FIFOを解説します。
RTLからボードへ: フローの全体像
AMD、Altera、Lattice、Gowinの制約ファイル、ピン割り当てとI/O規格、タイミングレポートの読み方、そしてBasys 3とTang Nano 9KでのLチカの実例を解説します。
タイミング、制約、クロックドメイン、検証、バスインターフェース。
静的タイミング解析を正しく理解する
タイミング解析ツールが何を計算するのか、実際の数値で見るセットアップ・ホールドチェック、VivadoやQuartusのレポートの読み方、そして最初に何を直すべきかを解説します
ハードウェアに合った制約を書く
データシートと回路図からXDCとSDCのタイミング制約を導く方法を、設定ポート付きのソース同期ADCインターフェースを例に、実際の数値で解説します
クロックドメイン間の乗り換えで苦労しないために
別のクロックから入力されるフリップフロップがなぜ失敗しうるのか、そしてすべてのクロックドメイン間の乗り換えを安全にする少数の構造(シンクロナイザ、ハンドシェイク、グレイコードポインタのFIFO)と制約を解説します
SoC FPGA、高速I/O、DSPパイプライン、ハードウェアアクセラレーション。
このトラックのレッスンは執筆中です。まずは入門トラックからどうぞ。
アーキテクチャ研究、CADアルゴリズム、セキュリティ、オープンソースの最前線。
このトラックのレッスンは執筆中です。まずは入門トラックからどうぞ。