FC2カウンター FPGAの部屋 QuartusⅡでSignalTapⅡを試してみるまでの準備4(MWPIMでキャラクタ・ジェネレータROMを生成)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

QuartusⅡでSignalTapⅡを試してみるまでの準備4(MWPIMでキャラクタ・ジェネレータROMを生成)

しかし、なふたふさんのJTAG本を申し込むのを忘れたのはショックだった。申し込み15分前にアラームを鳴らして、申し込みFAXも用意していたのだが、用事があってその後忘れてしまった。お金を払っても買いたい本だった。。。

QuartusⅡでSignalTapⅡを試してみるまでの準備3(キャラジェネROMデータをMIFに変換)”の続き。
前回でMIFファイルが出来たと思ったので、MegaWizard Plug-In Managerで1-PROTのROMを生成して、ROMパターンファイルとして、この前のMIFファイルを指定する。
MegaWizard Plug-In Managerで生成するROMの名前は、char_gen_patternとした。下の図はchar_gen_patternに、char_gen_pattern.MIFを関連づけているところ。相変わらずQuartusⅡの説明は手抜き。
Quartus2_signaltap2_6_090714.png

これでchar_gen_rom.v にchar_gen_patternをインスタンシエーションしたので、これでQuartusⅡのプロジェクトは完成。早速、コンパイルしてみることにした。
コンパイル・アイコンをクリックしてコンパイル。しかし、エラー発生。。。
エラーはMIFファイルのフォーマットがおかしいとのことだった。
Quartus2_signaltap2_7_090714.png

MIFファイルを見てみると、失敗。。。0000 : 00の後に;が付いていない!!!
正しくは 0000 : 00; のはず。。。"Memory Initialization File (.mif) Definition"参照。
Rubyのプログラムにバグがあった。修正したプログラムを下に示す。(ただ単に\n の前に;を入れただけ)

# XilinxのBRAMプリミティブのint値をMIFファイルに変換する

require 'scanf'

def usage
  STDERR.print "usage : #$0 [input BRAM Verilog file name] [output MIF file name] \n"
  exit 1
end

if ARGV.size < 2
  usage
else
    file = File.open(ARGV[0], 'r') # BRAM VerilogファイルをReadモードでオープン
    filew = File.open(ARGV[1], 'w') # MIFファイルをWriteモードでオープン
    
    # ヘッダ
    filew.print ("DEPTH = 2048;\n")
    filew.print ("WIDTH = 8;\n")
    filew.print ("ADDRESS_RADIX = HEX;\n")
    filew.print ("DATA_RADIX = HEX;\n")
    filew.print ("CONTENT\n")
    filew.print ("BEGIN\n")
    filew.print ("\n")
    
    address = 0;
    while line = file.gets # 1line読み込み
        i=31;
        while i>=0
            line_port = line
            filew.printf ("%0.4X : ", address)
            filew.print (line_port.slice!(i*2,2))
            filew.print (";\n")
            i -= 1
            address += 1
        end
    end
    filew.print("\n")
    filew.print("END;\n")
    
    file.close
    filew.close
end


これで、MIFファイルを作り直して、もう一度コンパイル。
そしたら、コンパイルが成功した!!!良かった。
Quartus2_signaltap2_8_090714.png

  1. 2009年07月14日 06:03 |
  2. QuartusⅡ
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1173-b86061a0
この記事にトラックバックする(FC2ブログユーザー)