HDLによるFPGA設計
[←] [↑] [→]
1. 論理合成向けのVerilogHDLの書き方
合成系と検証系
デジタル回路の基本形
組合せ回路のRTL記述
FlipFlopのRTL記述
Verilogの論理式の書き方
ムーアマシンのRTL記述
記述例 - シリアル受信回路
構造記述による階層化
動作記述と構造記述
補足 - VerilogとVHDL
補足 - シミュレーション言語としてのVerilog
補足 - RTL記述に使えるSystemVerilog構文
2. VerilogHDLコーディングのTips
記述スタイル
エッジ検出の書き方
内部信号は正論理にする
小さいモジュールを作らない
中間的なwire変数はなるべく作らない
defineでなくparameterを使う
parameterを乱用しない
シミュレーション用コードをRTL記述に埋め込まない
ビット演算・関係演算はビット幅をそろえる、算術演算はそろえなくていい
if( )の条件式は1ビットにする
ファイル名はモジュール名に一致させる
見た目を統一する - コードレイアウト
見た目を統一する - ネーミング
補足 - parameter値のビット幅の求め方
3. RTL記述に埋め込む合成制約
合成制約の書き方
case文の制御
信号の保持
レジスタの複製・削除
FSMのエンコーディング
補足 - directiveとattribute
4. FPGAアーキテクチャ向けのVerilog HDLの書き方
FPGAの専用ハードウェア
IOブロックへのレジスタパッキング
DDRレジスタのインスタンシエート
差動IOバッファのインスタンシエート
RAMのRTL記述
ROMのRTL記述
乗算器のRTL記述
LUT-RAMを使ったシフトレジスタのRTL記述
不使用IOピンの処置
FFのリセット
グローバルバッファのインスタンシエート
補足 - 符号付き変数
5. テストベンチの書き方
VerilogHDLが実行される順序
テストベンチの基本形
時間単位の指定
入力はクロックに同期させる
入力にタスクを使う
fork-joinブロック
ファイルの読み書き
補足 - z,xを含めた比較演算子とcase文
6. タイミング制約の書き方
SDCフォーマット
タイミング解析の基本概念
ネットリストのオブジェクト
クロックの定義
入出力タイミング制約
7. 回路構造を意識したRTL記述
RTL記述と回路構造
等号と不等号
シフトレジスタとマルチプレクサ
直接形と転置形
最終更新 2025.08.30 zakii