●2025.10.26 最終更新
雑誌記事(12月号 ... 第6回)では割愛した Altera のFPGA開発ツール Quartus Prime Lite Edition を使って,FPGA内蔵メモリ(M9K)をフォントROMや信号ラベルROM用IP化する方法について解説します.
M9Kメモリを用いたIP-ROM化にあたり,ROM初期化用mifファイル(フォント用データ・ファイルや信号ラベル用データ・ファイル)は用意済みとします.
mifファイルの形式や生成方法は当サイトの「FPGA内部信号モニタ表示回路用IP関連サポート・ツール」ページからダウンロードできる圧縮ファイルに収録してありますので,そちらを参照してください(解凍用パスワードはトランジスタ技術2025年11月号に記載).
●Quartus Prime Lite Edition における作業フロー
本稿の執筆にあたり, Altera社製 FPGA の実装テスト用デバイスとして MAX 10 ファミリの 10M08SAE144C8G を使用しました.このデバイスの内蔵メモリ(エンベデッド・メモリ.通称M9K)をIP-ROMとして使用する場合,開発ツールにおいてデバイス固有の設定項目があります.それを先に説明しておきます.
ここでは,M9KメモリをフォントROMや信号ラベルROMとして利用するための方法を説明していますが,いずれもROMとして使用するため初期化(コンフィギュレーション時に設定)が必須です.
MAX 10 において,M9Kメモリの初期値設定やROMとして使用する場合,コンフィギュレーション・モードとして「Single Compressed Image with Memory Initialization」に設定する必要があります.この設定をせずに論理合成するとエラーが発生します.
このモードに設定する方法は以下のとおりです(プロジェクトの設定終了後に実行).
・メニューの Assignments 下の Device... を選択 (<図QP1>)
・Device 設定ウィンドウにて [Device and pin Options] ボタンをクリック (<図QP2>)
・Device and pin Options 設定ウィンドウにて (<図QP3>)
左側の Category ペインの Configuration を選択後
右側の Configuration ペインの Configuration mode の入力選択で
Single Compressed Image with Memory Initialization (256Kbits UFM) を選択
[OK] ボタンをクリックして終了
〜〜〜 小さい図はクリックで拡大表示して確認してください 〜〜〜
さて本題に戻りますが,フォントROMや信号ラベルROMのIP-ROM化の大まかなフローは次のとおりです(プロジェクト作成後の手順).
① IPの追加作業開始
② IPの名前の設定
③ IPの基本事項の設定
④ 出力レジスタの設定
⑤ メモリ初期化の設定
⑥ EDAツール関係の設定
⑦ 最終確認
では,順番に実際のウィンドウを示しながら説明します. なお以降,Quartus Prime Lite Edition を単に Quartus と表記します.
⓪プロジェクト作成直後の様子
<図QP4>にプロジェクト作成直後の Quartus の統合環境ウィンドウを示します.このウィンドウの右上部エリアの Entity Instance ペインに回路の階層構造が表示されますが,論理合成作業前なので,最上位モジュールのみの表示になっています.
右側上部のエリアに IP Catalog ペインがあります.ここからIP-ROMの生成作業をスタートします.
<図QP4>
①IPの追加作業開始(<図QP5>)
IP Catalog ペインにある ROM: 1-PORT を選択する
Library → Basic Functions → On Chip Memory → ROM: 1-PORT
<図QP5>
②IPの名前の設定(<図QP6>)
IP-ROMの名称(font_ROM または sig_lbl_ROM)を設定
ファイル・タイプとして Verilog を指定
<図QP6>
③IPの基本事項の設定(<図QP7>)
IP-ROMのビット幅とワード数の設定
メモリ・ブロック・タイプとして M9K を選択
クロックとして Sinle Clock を選択上の設定へ
<図QP7>
④出力レジスタの設定(<図QP8>)
デフォルトでデータの出力(q)にレジスタが挿入される構造になっているので
これを外す(左側にある回路図上,出力部にあったレジスタが消える)
<図QP8>
⑤メモリ初期化の設定(<図QP9>)
メモリの初期化を選択
初期化ファイルを設定する
Browse... ボタンをクリックするとファイル選択ウィンドウが現れるが,
デフォルトの拡張子が .HEX になっているため,.mif ファイルが表示されない
拡張子蘭を .MIF に変更し,予め用意した .mif ファイルを選択する(<図QP10>)
<図QP9>
⑥EDAツール関係の設定(<図QP11>)
必要に応じて変更する
<図QP11>
⑦最終確認(<図QP12>)
設定を確認
出力ファイルの選択として,デフォルト意外に Instantiation template file を選択
このファイルでIP側の信号名や信号並びを確認すること可能
以上で設定が終了となるので,[Finish] ボタンをクリック
<図QP12>
設定を完了すると Quartus Prime のプロジェクト・ナビゲータ統合環境ウィンドウに戻りますので,Compile Design をダブル・クリックして論理合成・配置配線を実行します.その結果の様子が<図QP13>です.
<図QP13>
<図QP13>において次の事項の確認ができます.
Entity Instance ペインにて階層構造を展開すると font_ROM U3 が確認できる
Flow Summary ペインにて Total memory bits が8192ビットであることが確認できる
(フォントROMを例に論理合成したので,8ビットx1024語で8192ビットとなる)
また,作業フォルダ下にVerilog用のインスタンシェーション用テンプレート・ファイルfont_ROM_inst.v <リスト QP1>が生成されています.このファイルでIP側の信号名や信号並びを確認することができます.
<リスト QP1>
font_ROM_inst.v ファイルfont_ROMモジュールの
インスタンシェーション用
テンプレート・ファイル
font_ROM font_ROM_inst (
.address ( address_sig ),
.clock ( clock_sig ),
.q ( q_sig )
);
■関連情報
・特になし