FC2カウンター FPGAの部屋 Vivado

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

FPGAの部屋

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

Bash on Windows 10にVivado WebPACK 2017.2をインストールした2(日本語表示)

Bash on Windows 10にVivado WebPACK 2017.2をインストールした”の続き。

前回は、Xmingを起動してから、Bash on Windows 10 からVivado を起動したところ GUI 上でLinux バージョンのVivado を起動することができた。今回は、日本語を表示できるようにしてみた。

Xming の日本語表示についてはXfont をインストールしたり、いろいろとやってみたが、うまく行かなかった。ツィッターで聞いたところ、tethys さんが教えてくれた。ありがとうございました。

その方法は、「 [WSL]BashOnWindows(WSL)のGUIの日本語表示」の Windows10 に入ってる Windows フォントを使う方法だ。
下の2つのコマンドをBash on Windows 10 上で実行する。
sudo ln -s /mnt/c/Windows/Fonts /usr/share/fonts/WindowsFonts
sudo fc-cache -fv

Win10_Ubuntu_Vivado_14_170718.png

その後、vivado を立ち上げたところ、日本語が表示できるようになった。
Win10_Ubuntu_Vivado_15_170718.png

次に、X サーバーだが、Xming だとVivado を立ち上げてもWindow 10 のタスクバーに表示されるアイコンはXming のX のアイコンなのだが、VcXsrv というX サーバーを使用すると、Vivado のアイコンがタスクバーに表示されるようになった。(「WindowsでリモートのLinuxのGUIアプリを表示させる-Xサーバ VcXsrv」参照)
これも善し悪しで、Windows のアイコンと見分けがつかなくなるという欠点はあるのだが、VcXsrv を使うことにした。

次に日本語入力だが、結論から言うと、GUI 上での日本語入力は諦めて、Windows の方からSublime text 上で日本語入力することにした。
Bash on Windows 10 のroot は「【シェル芸人への道】Bash on Windowsを探検する」によると、

C:\Users\Masaaki\AppData\Local\lxss

にありました。
Win10_Ubuntu_Vivado_16_170719.png

Vivado のトップHDL のあるC:\Users\Masaaki\AppData\Local\lxss\home\marsee\HDL\project_1\project_1.srcs\sources_1\bd\base_zynq\hdl フォルダに行った。
Win10_Ubuntu_Vivado_17_170719.png

base_zynq_wrapper.vhd をWindow 10 上のSublime text で編集し、日本語を書きこんだ。
Win10_Ubuntu_Vivado_18_170719.png

Vivado 2017.2 上でbase_zynq_wrapper.vhd を開いてみると、Sublime text で編集した日本語が表示されている。
Win10_Ubuntu_Vivado_19_170719.png

日本語はWindow 10 上のSublime text で入力してもよいと思った。ただし、入力してもVivado には追加入力されたということを認識できないので、自分で論理合成結果をクリアする必要があるようだ。
  1. 2017年07月19日 05:06 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Bash on Windows 10にVivado WebPACK 2017.2をインストールした

Vengineerの戯言」ブログの「Bash on Windows 10でVivado 2017.2」でWindows 10のPowerShell で動作するUbuntu 16.04 上でVivado 2017.2 をインストールするという記事が載っていた。それを参照して、自分でもWindows 10 のUbuntu 16.04 にVivado WebPACK 2017.2 をインストールしてみた。

まずは、左下のウインドウアイコンを右クリックして、右クリックメニューからWindows PowerShell を起動した。
update, upgrade コマンドを入力する。
sudo apt-get update
sudo apt-get upgrade

Win10_Ubuntu_Vivado_1_170717.png

Xming は既にインストールしてあるので、Xming を立ち上げた。次に、x11-apps をインストールした。続けてJava をインストールした。
sudo apt-get install x11-apps
sudo apt-get install default_jre
sudo apt-get install default_jdk


カレント・ディレクトリにXilinx_Vivado_SDK_2017.2_0616_1_Lin64.bin を貼り付けて
sudo ./Xilinx_Vivado_SDK_2017.2_0616_1_Lin64.bin
を実行するとDISPLAY 変数をセットしないといわれてエラーだった。
export DISPLAY=:0.0
を実行して、もう一度、
sudo ./Xilinx_Vivado_SDK_2017.2_0616_1_Lin64.bin
を実行するとVivado のインストーラーが上がってきた。
Win10_Ubuntu_Vivado_3_170717.png

その後はLinuxでのインストールと同様に、インストール画面を表示されたので、WebPACKを選択して、インストールを開始した。
Win10_Ubuntu_Vivado_2_170717.png

インストール途中でエラーが出てしまった。今のインストール先は、/mnt/d/Xilinx ディレクトリだ。
Win10_Ubuntu_Vivado_4_170717.png

D: ドライブは十分に容量があるので、たぶん、行先のディレクトリが長すぎるのでは?と思う。
Win10_Ubuntu_Vivado_5_170717.png

今度はデフォルトのディレクトリパスの /opt/Xilinx にした。
Win10_Ubuntu_Vivado_6_170717.png

Win10_Ubuntu_Vivado_7_170717.png

インストール終了。成功した。
Win10_Ubuntu_Vivado_8_170717.png

Ubuntu16.04にVivado 2016.4をインストール”を参考に設定を行った。

gedit が無いのでインストールした。
sudo apt install gedit

gedit で .bashrc を編集する。
gedit .bashrc

.bashrc の下に以下の3行を追加した。
source /opt/Xilinx/Vivado/2017.2/settings64.sh
alias xsdk='env SWT_GTK3=0 xsdk'
alias vivado='env SWT_GTK3=0 vivado'

(2017/07/18:追記 export DISPLAY=:0.0 も追加しておいた方が良い)
Win10_Ubuntu_Vivado_9_170717.png

.bashrc の内容を反映。
source .bashrc

.Xilinx のオーナーを自分に変更する。
sudo chown -R marsee:marsee .Xilinx/

Vivado を起動した。
Vivado &
Win10_Ubuntu_Vivado_10_170717.png

Vivado が起動した。
Win10_Ubuntu_Vivado_11_170717.png

ZC702 のExample Project を生成してみた。
Win10_Ubuntu_Vivado_12_170717.png

論理合成、インプリメント、ビットストリームの生成も通った。
Win10_Ubuntu_Vivado_13_170718.png

ただし、日本語の表示と入力はまだできない。日本語を表示させるとトーフになってしまう。
  1. 2017年07月17日 08:00 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Ubuntu 16.04 にVivado Design Edition がインストールできない

Ubuntu 16.04 にVivado のDesign Edition がインストールできない。(現在のバージョンは、2017.2)

理由は、HostID が ”000000000000”になってしまうからだ。
HostID_all0_1_170709.png

原因は、Ubuntu 16 では、イーサネットの名前が enp0s3 とかになってしまって、eth0 が無くなってしまったからのようだ。
HostID_all0_2_170709.png

AR# 60510 ライセンス - Vivado License Manager (VLM) に使用するマシンの HostID が「000000000000」と表示される”を見つけてやってみたが、私のUbuntu 16.04 ではファイルが無いと言われてダメだった。

Vivado のライセンス・マネージャーがUbuntu 16.04 に対応してくれることを望む。
(2017/07/10:まっちゃんさんのアドバイスのおかげで eth0 にできました。ありがとうございました。詳しくはコメント欄をご覧ください。)

なお、WebPACKはライセンスが必要ないので、問題なくインストールすることができた。
Ubuntu16.04にVivado 2016.4をインストール”を参照。
  1. 2017年07月09日 08:48 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:3

SDKのベアメタル・アプリケーションで時間を計測する方法(Zynq)

SDKのベアメタル・アプリケーションで時間を計測する方法とPYNQボードでのテストについて書いておく。

なお、”ZYBOでのベアメタルの時刻取得方法について”を参照させて頂いた。ありがとうございます。

ZYBOでのベアメタルの時刻取得方法について”によると、XTime_GetTime() を使用するそうだ。そして、Zynq のCortex-A9 プロセッサのクロックの1/2 の周波数でタイマーが動作しているとのことだった。
PYNQボードの動作クロックを見てみたが、650 MHz だったので、325 MHz で動作しているということで間違いないようだ。

私もアプリケーションソフトの xttime_test を作成して、XTime_GetTime() についてテストしてみた。使用した基板はPYNQボードだ。
XTtime_test_1_170707.png

xttime_test.elf を起動すると、1.000246 ms と表示された。
XTtime_test_2_170707.png

usleep(1000) を行っているので、1 ms のはずだ。大体合っている。

次に、usleep(1000); をコメントアウトして、sleep(10); のコメントアウトを外した。
XTtime_test_3_170707.png

10000.000252 ms なので、10 秒だ。別にストップウォッチでも計ってみたが、合っている。大丈夫そうだ。
XTime_GetTime() は経過時間の計測に使えるということが分かった。

xttime_test.c を貼っておく。

/* * xttime_test.c * *  Created on: 2017/07/06 *      Author: Ono */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "xtime_l.h"

int main(){
    XTime start_time, end_time;

    printf("Start\n");
    XTime_GetTime(&start_time);
    usleep(1000);
    //sleep(10);
    XTime_GetTime(&end_time);
    printf("end\n");

    printf("usleep_time = %lf ms\n", (double)((long long int)end_time-(long long int)start_time)/325000.0);
}

  1. 2017年07月07日 04:35 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

SDK における inbyte() の使用

Vivado のSDK でベアメタルのアプリケーションソフトを作っているときに、キー入力を使用するが、その際にfgetc() , scanf() などを使用してキー入力すると、リターンキーが押されるまで処理が戻ってこなかったりする。それだと都合が悪い場合は、fflush(stdin) を使用すると思う。

Xilinx のSDKでは inbyte() という、1バイトのキー入力ルーチンがある。ブロックされて、1文字入力するまで戻ってこないが、リターンキーを待ってはいないので、一文字入力すると関数コールから帰ってくる。(ベアメタルのみでLinuxでは使えません。Linuxでのノンブロッキングのキー入力については、「Linux の C 言語でノンブロッキングキー入力をする」を参照してください)

    while(1){
        print("********************** LED4 TEST Start ***********************\n\r");
        print("TeraTerm: Please Set Local Echo Mode.\n\r");
        print("Press '1' to show all registers\n\r");
        print("Press '2' to set LED4 Enable or Disable(Toggle, Command Register)\n\r");
        print("Press '3' to set LED Counter Load Register (4bits, Please input hexadecimal)\n\r");
        print("Press '4' to set LED Interval Register (32bits, Please input decimal)\n\r");
        print("Press '5' to exit\n\r");
        print("Selection : ");
        inbyte_in = inbyte();
        print(" \r\n");
        print(" \r\n");

        switch(inbyte_in) {
            case '1' : // Show all registers
                val = (int)Xil_In32((u32)XPAR_LED4IP_0_S_AXI_BASEADDR);
                printf("Command Register is %x\r\n", val);
                val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+4));
                printf("LED Counter Load Register is %x\r\n", val);
                val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+8));
                printf("LED Monitor Register is %x\r\n", val);
                val = (int)Xil_In32((u32)(XPAR_LED4IP_0_S_AXI_BASEADDR+0xc));
                printf("LED Interval Register is %d (decimal)\r\n", val);
                break;
            case '2' : // Set LED4 Enable or Disable(Toggle, Command Register)


メニューを表示して、inbyte() でキー入力を待つ。1文字の数字を押してすぐに、その処理ルーチンに飛ぶようになっている。数字を入力して、リターンキーを押さなくて済むので便利だ。
  1. 2017年07月04日 05:15 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Linux 版Vivado のアンインストール方法

Linux 版のVivado はUbuntu にインストールするとコマンドラインから起動しているので、アンインストール方法が GUI で指定できません。

そこで、検索したところ、「小ネタ: vivadoのアンインストール」が検索できました。
それによると、

[installPath]/.xinstall/Vivado_[バージョン番号]/ xsetup –Uninstall

だそうです。
インストールパスはデフォルトでは、/opt/Xilinx/ ですね。
この xsetup を Uninstall モードで実行したところ、正常にアンインストールができました。
  1. 2017年06月24日 04:36 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

Vivado やVivado HLS がVisual C++ 2015 再頒布可能パッケージのエラーで起動しないときの対処法

Vivado や Vivado HLS がVisual C++ 再頒布パッケージのエラーで起動しないときがある。
VC2005_redit_error_1_170611.png

Lenovo のノートパソコンがそうなってしまい、2回ほど再インストールしたが治らない。
Vivado/Xilinx SDK Error Incorrect Visual C++ Version”を見て、他のパージョンのVisual C++ 再頒布パッケージをアンインストールして、Visual C++ 2015 再頒布可能パッケージを再度インストールしてみたが治らない。

Vivado/Xilinx SDK Error Incorrect Visual C++ Versionの2ページ目のXIL_PA_NO_REDIST_CHECK 環境変数を1 にセットするのをやってみることにした。

まずは、コントロールパネルを出す。私のノートパソコンは、Windows10の1703なので、Cortana にコントロールパネルを聞いて、コントロールパネルを開き、システムをクリックする。

システムが開くので、システムの詳細設定をクリックする。
VC2005_redit_error_2_170611.png

システムのプロパティの環境設定タブが開く。環境変数ボタンをクリックする。
VC2005_redit_error_3_170611.png

新規ボタンをクリックして、変数名に XIL_PA_NO_REDIST_CHECK を、変数値に 1 を入れて、XIL_PA_NO_REDIST_CHECK システム環境変数を作成した。
VC2005_redit_error_4_170611.png

そのあとで、Vivado や Vivado HLS を起動すると、問題なく立ち上がった。
  1. 2017年06月11日 14:44 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0
»