2025.10.26 最終更新


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

ISE 14.7 でフォントROM/信号ラベルROMをFPGA内蔵メモリ (ブロック・メモリ) でIP-ROM化する


 雑誌記事(12月号 ... 第6回)では割愛したXilinx (現AMD)のFPGA開発ツール ISE 14.7 を使って,FPGA内蔵メモリ(ブロック・メモリ)をフォントROMや信号ラベルROM用IP化する方法について解説します.

 ブロック・メモリを用いたIP-ROM化にあたり,ROM初期化用coeファイル(フォント用データ・ファイルや信号ラベル用データ・ファイル)は用意済みとします(生成方法は雑誌記事を参照してください).

 

●ISEにおける作業フロー

 大まかなフローは次のとおりです.ただし,プロジェクト本体の作成(作業フォルダ設定,デバイス指定,ソースコード登録など)は終了しているとし,その後の手順になります.

 

  ①新しいソース・コードの追加作業開始

  ②ソース・タイプの選択(IP)

  ③IPの機能選択(Block Memory Generator)

  ④メモリ・タイプの選択(single port ROM)

  ⑤メモリのサイズ指定(語長,語数)

  ⑥メモリの初期化ファイルの指定(.coe)

  ⑦IP生成実行

 

 では,順番に実際のウィンドウを示しながら説明します(注1).

 

注1 ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー

 IP生成ツールである CORE Generator を単独で起動してIPライブラリを作成し,プロジェクトでインポートする方法もある.

 フォントROMは同じデバイスで使用する場合,こちらの方法が一手間省ける.

 ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー ー

 

⓪プロジェクト作成直後の様子

 ここでは,次の事項を前提条件として,ISEを使用したFPGA内蔵メモリをROMとしてIP化して使用する手順を説明します.

  ・プロジェクトの作成からコンフィグレーション用ファイルの生成までの一通りの操作は理解している

  ・ IP−ROMの初期化用データ(coeファイル)は用意済み(雑誌記事にて解説)

 

 <図ISE1>にプロジェクト作成直後のISE Project Navigatorの様子を示します.設計階層の部分(Hierarcy)でU3 font_ROM のアイコンが [?] マークになっています.これはこの時点で実体が無いことを示しています.これから作成するので当然です. 

<図ISE1>

 

①新しいソース・コードの追加作業開始

  メニューより(<図ISE2>)

   Project → New Source...を選択

   New Source Wizard ウィンドウを起動

<図ISE2>

 

②ソース・タイプの選択

  Select Source Type にて(<図ISE3>)

   IP(CORE Generator & Architecture Wizard) を選択

   File Name 欄にモジュール名(font_ROMまたはsig_lbl_ROM)を入力

   Location欄にフォルダ名を入力(デフォルトのままでよい)

    サブ・フォルダ ipcore_dir 追加になっている

   Add to  project チェック・ボックスをオン

   Next ボタンをクリック

<図ISE3>

 

③IPの機能選択

  Select IP にて(<図ISE4>)

   [-] Memories & Storage  Elements

     [-] RAMs & ROMs

       [-] Block Memory Generator を選択

   Next ボタンをクリック

   Summary にて設定を確認後 Finish ボタンをクリック(<図ISE5>)

    Block Memory Generator が起動する

<図ISE4>

<図ISE5>


④メモリ・タイプの選択(以降 Block Memory Generator にて)

  Page 1 設定項目なし(<図ISE6>)

  Page 2 Memory Type 欄で Single Port ROM を選択(<図ISE7>)

<図ISE6>

<図ISE7>


⑤メモリのサイズ指定

  Page 3 Memory Size 欄において(<図ISE8>)

   Read Width 欄にビット幅(8または64)を入力

   Read Depth 欄にワード数(1024または256)を入力

<図ISE8>

 

⑥メモリの初期化ファイルの指定

  Page 4 Memory Initialization エリアにて(<図ISE9>)

   Load Init File のチェック・ボックスをオン

   Coe File 欄にファイル名(Bwowseボタンで選択するとよい)を入力

   Fill Remaining Memory Locations のチェック・ボックスをオン

   Remaining Memory Locations(Hex) 欄に 0 を入力

  Page 4 Optional Output registers エリアはデフォルト(指定なし)のまま

<図ISE9>

 

 

⑦IP生成実行

  Page 5 設定項目はデフォルトのまま(Output Reset Option)(<図ISE10>)

  Page 6 設定項目はデフォルトのまま

   Informtionエリアを確認後 Generate ボタンをクリック(<図ISE11>)

    IP生成が始まる(終了まで少々時間がかかる)

<図ISE10>

<図ISE11>


   IPの生成が完了すると ISE Project Navigator ウィンドウに戻ります(<図ISE12>).ここで,Hierarcy中の U3 font_ROM のアイコンを見ると [電灯] に変化していことがわかります.また,作業フォルダ上にIPのフォルダ ipcore_dir が追加されています(<図ISE13>). 

<図ISE12>

<図ISE13>


 さらに ipcore_dir 下のフォルダを確認すると,IP名に拡張子 .veo が付いたファイルがあります(<図ISE14>).

<図ISE14>

 このファイル(font_ROM.veo)<リスト ISE1>には,Verilog用のインスタンシェーション・テンプレートが記載されています.これでIP側の信号名や信号並びを確認することができます.

 

<リスト ISE1>

font_ROM.veoファイルにおける

font_ROMモジュールの

インスタンシェーション記述

テンプレート

(抜粋)

//--------- Begin Cut here for INSTANTIATION Template ---// INST_TAG

font_ROM your_instance_name (

        .clka(clka), // input clka

        .addra(addra), // input [9 : 0] addra

        .douta(douta) // output [7 : 0] douta

);

// INST_TAG_END ------ End INSTANTIATION Template ---------



■関連情報

・特になし