2025.10.26 最終更新


トラ技連載 (2025年7月号〜) 「FPGA内部信号モニタ表示IP」連動

Quartus Prime Lite Edition でFPGA内蔵メモリ (M9K) を使ってフォントROM/信号ラベルROMをIP-ROM化する


 雑誌記事(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] ボタンをクリックして終了

 

<図QP1>

<図QP2>

<図QP3>


〜〜〜 小さい図はクリックで拡大表示して確認してください 〜〜〜

 

 さて本題に戻りますが,フォント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>)

<図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 )

);



■関連情報

・特になし