●2025.10.26 最終更新
FPGA内部信号モニタ表示IPにはVGA用クロックとして25.175MHz(この付近の周波数でもほぼ問題ない)を必要とします.雑誌記事(12月号 ... 第6回)では割愛しましたが,ここでは Altera (ちょっと前までは intel ) のFPGA開発ツール Quartus Prime Lite Edition を使って,FPGAに搭載されている「クロック専用IP」を利用してこの周波数のクロック信号を生成する方法を解説します.
●Quartus Prime Lite Edition でクロック生成IPを作る
実装テストに使用した Altera社の FPGA デバイスは,MAX10ファミリの 10M08SAE144C8G です.このデバイスには,周波数を合成できる機能を持った多機能PLLが2個,搭載されています.このIPコアの名称は,ALTPLLとなっています.
また,ALTPLLの入力クロックの最低周波数は5MHz,最高周波数は472.5MHzとなっています.MAX10デバイスへ供給しているクロックの周波数がこの範囲である必要があります.
この ALTPLL IP は,Quartus Prime Lite Edition 上で MegaWizard を起動して生成します.基本的な流れは,IP-ROMの生成と同じ手順となります.
では,プロジェクトの生成終了後の作業手順を実際のウィンドウを示しながら説明します.なお以降,Quartus Prime Lite Edition を単に Quartus と表記します.
①IPの追加作業開始(<図QP_CG1>)
プロジェクト・ナビゲータの右側にある IP Catalog ペインにて ALTPLL を選択する
Installed IP → Library → Basic Functions →
Clocks; PLLs and Resets → PLL → ALTPLL
<図QP_CG1>
②IPの名前の設定(<図QP_CG2>)
ALTPLLの名称を入力(ここでは clock_VGA とする)
ファイル・タイプとして Verilog を指定
<図QP_CG2>
③入力クロックの周波数の設定(<図QP_CG3>)
General 欄の What is the frequency of the inclk0 input に入力クロックの周波数を
設定(ここでは48MHzとする)
<図QP_CG3>
④オプションの設定(<図QP_CG4>)
デフォルトで非同期リセット入力とPLLロック出力が設定されている
使用しないので外す
<図QP_CG4>
⑤周波数拡散等の設定(<図QP_CG5>)
変更なし
<図QP_CG5>
⑥クロック切換え機能の設定(<図QP_CG6>)
変更なし
<図QP_CG6>
⑦動的再構成の設定(<図QP_CG7>)
変更なし
<図QP_CG7>
⑧出力クロック(c0)の設定(<図QP_CG8>)
Requested Settings 欄に 25.175MHz を設定する
Actual Settings 欄が実際の設定値となる値 25.173333 となる
<図QP_CG8>
⑨他の出力クロック(c1〜c4)の設定(<図QP_CG9>)
残りのクロック出力c1〜c4は使用しない
<図QP_CG9>
⑩EDAの設定(<図QP_CG10>)
シミュレーションする場合は設定(今回はしない)
<図QP_CG10>
⑪最終確認(<図QP_CG11>)
設定を確認
出力ファイルの選択として,デフォルト意外に Instantiation template file を選択
このファイルでIP側の信号名や信号並びを確認すること可能
以上で設定が終了となるので,[Finish] ボタンをクリック
<図QP_CG11>
設定を完了すると Quartus Prime の統合環境ウィンドウ(<図QP_CG12>)に戻ります.左上部ペインの Projewct Navigator(Files)欄に ALTPLL IP として生成した clock_VGA.v ファイルが追加になっています.
<図QP_CG12>
また,作業フォルダ下にVerilog用のインスタンシェーション用テンプレート・ファイルclock_VGA_inst.v (⑪で追加したもの)が生成されています<リスト QP1>.これでIP側の信号名や信号並びを確認することができます.
<リスト QP1>
clock_VGA_inst.v ファイルclock_VGAモジュールの
インスタンシェーション用
テンプレート・ファイル
clock_VGA clock_VGA_inst (
.inclk0 ( inclk0_sig ),
.c0 ( c0_sig )
);
できあがったVGAクロック生成モジュールは,上位モジュールにてインスタンシェーションします(<リスト QP2>).
<リスト QP2>
VGA用クロック生成モジュールの
インスタンシェーション記述例
clock_VGA CG (
xtal_12MHz, // .inclk0 ( inclk0_sig ),
VGA_clock // .c0 ( c0_sig )
);
■関連情報
・特になし