Moiz's journal

プログラミングやFPGAなどの技術系の趣味に関するブログです

Ubuntuに古いQuartus IIを入れたらいろいろ大変だった

Ubuntu16.04(64ビット)にQuartus II 13.1 Web Editionを入れた際のメモ

久しぶりにFPGAボード(Terasis DE0)を動かそうと思ったのですが、最近デスクトップのメインOSをUbuntuに変えたところなので、ついでにQuartus II 13.1をインストールしたところいろいろ大変だったので、その個人的メモです。間違っている可能性もかなりありますので、もし参考にされる方がいらっしゃる場合はご自身の判断を元に自己責任でおねがいします。

www.terasic.com.tw

最新のQuartusが16.1だというのに、なぜいまさら13.1なのかというと、手元に2個もあるDE0*1がもったいなかったからで、DE0に入っているCyclone IIIをサポートする最新のバージョンが13.1だからです。UbuntuがQuartusのサポートOSリストに入っていないことはインストールしてしばらく経ってから気がついたのですが、いまさら戻るに戻れず、無理やり進めています。

これからインストールするのなら、サポートされているOSで、最新のQuartus IIを使ったほうが無難だと思います。

Quartus II 13.1 Web Edition のインストール

  • 次のようなシンボリックリンクを貼ると良いという人がいたので真似をしてみる。これでインストールスクリプトがとりあえず動く。
    ln -s /lib/x86_64-linux-gnu/libpng12.so.0 /usr/lib64/libpng12.so.0
    ln -s /lib/i386-linux-gnu/libpng12.so.0 /usr/lib/libpng12.so.0
  • インストール先としては/opt/quartusを勧めている人が多いが、今回は~/altera/13.1/quartusにインストール。今のところ問題なし
  • 自分のミスだが、途中rootで実行した処理のせいで~/.alteraにユーザーの書き込み権限がなくなってしまい、設定が反映されず苦労した(talkbackがオンにならない、など)
  • これだけやっても、ヘルプページなどが表示できない。ブラウザーとの連携がうまくいっていない模様

USB Blaster

  • こちらのページを参考にUSB Blasterの設定
    Altera USB-Blaster with Ubuntu 14.04 | fpga-dev.com
  • DE0の場合、ACアダプターが接続されていないと、一見して電源が入っているようでもUSB Blasterが動作しないようだ

NIOS2 EDS

  • NIOSII EDSにインストール場所を伝えるために以下のラインを.bashrcに追加。対象のディレクトリは適宜変更のこと。(1行目は後述のflash_programmerのため)
    export QUARTUS_ROOTDIR="$home/altera/13.1/quartus"
    export QUARTUS_ROOTDIR_OVERRIDE=$QUARTUS_ROOTDIR
    export QUARTUS_64BIT=1

Flash_programmer

  • NIOS II EDSからFlash_programmerでプログラム(ELF)とSOFをフラッシュに書き出すために、/bin/shを変更。これがないとflash_programmerがError code:1を吐き出して止まる。ただし、副作用の確認が必要
    Ubuntuのデフォルトでは/bin/shはdashへのシンボリックリンクだが、flash_programmerはbashを仮定しているため、このままでは動作しない)
  • sudo rm /bin/sh
    sudo ln -s /bin/bash /bin/sh

Qsys (Ubuntuは関係ないが、13.1で困った点)

  • flash_programmerでflashにsofとelfを書き込む場合、Qsysで以下の点について確認しておくこと
  • NIOS2のjtag_debug_module_reset出力がSerial Flash Controllerのreset入力に接続されていることを確認。こうしておかないと、EPCSのregisterが見つからずError code: 8でflash_programmerが終了する。

    Why does the Nios II Processor Flash controller not find the EPCS registers and fail when trying to program the flash?

  •  同様に、QsysでSerial Flash Controllerのcontrol portがNIOS2のインストラクションアドレスに加えて、データアドレスに接続されている事を確認。さもないと、registerが見つからないという上と同様のエラーがでる

  • Qsysで、PIOなどのexternal-connection (Conduit)などはexportする必要がある。exportコラムをダブルクリックで設定

その他(UbuntuもQuartusのバージョンも関係はないが、困った点)

  • ピンのアサインメントを変えるときはprojectのqsfファイルを直接変更してもダメ。変更したアサインメントファイルをインポートする(またはエディタで変更する)
  • コンパイル時に「Open Core Plusのファイルがあるからライセンスがないとコンパイルできない」というエラーが出た場合、Quartus II -> Assignment -> Setting -> EDA Tool Setting -> Simulation、で、"Tool name"を<none>に変更

まとめ

この記事では結果だけ書いたのでさくさくすすんでいるように見えますが、各項目解決するまで1−2時間悩んだり、検索したり、試行錯誤したりを繰り返しました。大変でしたが、これでどうにか、参考書として使っている「FPGAボードで学ぶ組込みシステム開発入門 Altera編」の第5章までUbuntu16.04-64bitとQuartus II 13.1の組み合わせで進むことができました。

まだModelsimを試していないのでこの後もどんなトラップが待ち受けているのかドキドキです。

*1:配達時のトラブルで一つ注文したはずのものがなぜか2つ手に入りました。ひとつは未使用