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記述と回路構造

等号と不等号

シフトレジスタとマルチプレクサ

直接形と転置形


[] [] []

最終更新 2023.07.19 zakii