FC2カウンター FPGAの部屋 2014年04月

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

FPGAの部屋

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

アナと雪の女王(映画)を見てきました

今日は、奥さんは谷川真理駅伝に行っているので、私と娘とでアナと雪の女王(映画)を見てきました。なかなか良かったです。いかにもディズニーという映画でした。意外な場面もあったし、楽しめました。主題歌は素晴らしいですね。。。
そうそう、前髪が風になびく様子がとても自然でした。
  1. 2014年04月29日 18:37 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

ZYBO Base System Design(Vivado 2014.1版)

ZYBO Base System Design(ISE14.7版)”の続き。

今回は、ZYBO Base System Design の Vivado 版をやってみることにした。本来は、Vivado 2013.4のプロジェクトなのだ、がVivado 2014.1に変換してやってみた。IPはアップグレードした。

最初に、すでにビットストリームの生成まで終了しているのだが、Vivado 2014.1のカスタムIPの構成を見てみよう。
ZYBO_BSD_18_140429.png

Video & Image Processing の下に、HMDI Transmitter があった。IP Settings を見た。
ZYBO_BSD_19_140429.png

axi_is2_adi_v1_0, AXI Display Controller, HDMI Transmitter の3つのカスタムIPがあるようだ。
ZYBO_BSD_19_140429.png

ビットストリームの生成まで終了したところを下の図に示す。
ZYBO_BSD_16_140429.png

結構、LUTを消費している。消費電力も1.749Wだそうだ。因みに、ソフトウェアを動作させてデモを行っている時は、Zynq7010を触ってみると、かなり熱い。パソコンのUSBポートからの電源供給ではなく、必ず、ACアダプタで電源供給する必要がある。
ZYBO_BSD_21_140429.png

ブロック・デザインを下に示す。この大きさだど、HDの画面に表示しても詳細が分からない。このぐらいの規模になると階層化したいね。。。
ZYBO_BSD_17_140429.png

ハードウェアをエクスポートして、SDKを立ちあげた。READMEに従って、アプリケーション・プロジェクトを作製した。FPGAにビットストリームをダウンロードして、ソフトウェアをRUNした。(Run Configurationを作製した)
ZYBO_BSD_20_140429.png

但し、”ZYBOの実験”さんに書いてあるように、main.cのAudoInitialize をコメントアウトしないとソフトウェアが動作しなかった。

後のデモの様子は、”ZYBO Base System Design(ISE14.7版)”と同様だ。

因みに、HD解像度のピクセルクロックは、ソフトウェアの表示によると、148.571 MHz だそうだ。
ZYBO_BSD_22_140429.png
  1. 2014年04月29日 04:51 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

ZYBO Base System Design(ISE14.7版)

undecidedlyさんの”ZYBOの実験”で ZYBO の ZYBO Base System Design が出ていることを知った。

私が見た時には、”ZYBOの実験”ブログに詳しいことは書かれていなかったので、早速、DigilentのZYBOサイトから ZYBO Base System Design をダウンロードして、とりあえずはISE14.7 でやってみることにした。

HDLコードを見るとBUFIO と BUFR で使われていた。そうかこれを使えばよかったのね。。。勘違いもあって、そう言えば、自分でも、OSERDESE2 をDDRモードで動作させていたのだった。。。そうなると、HDMIのピクセルクロック周波数は、ピクセルクロックの周波数の10倍でなくて、5倍だった。後で、過去のブログを修正しておきます。それじゃ何で?ということだが、やはりスキューがあってまずかったのかもしれない?後でタイミングを検証してみよう。私もBUFIOとBUFRの組み合わせにしようと思う。

さて、ISE14.7のXPSで ZYBO Base System Design をインプリメントしてみた。
ZYBO_BSD_1_140428.png

ZYBO_BSD_2_140428.png

ZYBO_BSD_3_140428.png

ZYBO_BSD_4_140428.png

VDMAが2つも入っていて、VDMA_0はVGA用で、VDMA_1はHDMI用のようだ。

ハードウェアをエクスポートしてSDKを立ちあげた。下の図はCのプロジェクトを作製して、Cソースをコピーしてコンパイル済みの状態だ。
ZYBO_BSD_5_140428.png

なお、Digilent社の ZYBO Base System Design を動作させるには、ACアダプタが必要だそうだ。USBからの電力では間に合わないほど、電力を食ってしまうようだ。私はアクセサリキットを購入していないので、秋月電子通商で、以下のACアダプタとDCプラグ変換プラグを購入して使用している。(2014/05/15:追記 ZYBOのDCプラグの内径は2.1mmで秋月電子通商のACアダプタのプラグがそのまま入ります。ブログの記事を修正します。)
スイッチングACアダプター5V3A 100V~240V GF18-US0530-T
DCプラグ変換プラグ 2.1mmメス⇔2.5mmオス

Program FPGAでZynq7010をコンフィグレーションしてから、Run Configuration を作製してRunした。

Tera Termを立ちあげていたので、メニューが出てきた。
ZYBO_BSD_6_140428.png

最初に 1 を入力して、Audio Demo を選択した。
ZYBO_BSD_7_140428.png

スピーカーを繋いでいないので、Quitした。

次に、2 を選択して、VGAのデモを選択した。
ZYBO_BSD_8_140428.png

これで 640 x 480 のVGA画面が表示されていた。
ZYBO_BSD_12_140428.jpg

1 を選択して、5の 1920x1080@60Hz を選択した。
ZYBO_BSD_9_140428.png

1920x1080のHD画面が表示された。カラーバーは左上に寄っている。
ZYBO_BSD_13_140428.jpg

メインメニューに戻って、3 を入力してHDMIデモを選択した。
ZYBO_BSD_10_140428.png

やはり、 640 x 480 のVGA画面が表示されていたが、HDMIの方が階調が多いので、ジャギーが無く綺麗だ。
ZYBO_BSD_14_140428.jpg

VGA同様に、1 を選択して、5の 1920x1080@60Hz を選択した。
ZYBO_BSD_11_140428.png

1920x1080のHD画面が表示された。カラーバーは同様に左上に寄っている。
ZYBO_BSD_15_140428.jpg
  1. 2014年04月28日 05:11 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする4(ChipScope Proでデバック)

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする3(単体シミュレーション)”の続き。

前回はシミュレーションを行ったが、シミュレーションでは、Vivado HLS 2013.4 で出力したラプラシアンフィルタIPと総違いは無かった。今回はChipScope Proで実際のAXIバスの波形を観察した。

最初にカメラ・データのメモリReadトランザクションから下に示す。これは、Readの最初のトランザクションだ。(図1)
Vivado_HLS_2014_1_16_140425.png

多少のReadレイテンシはあるが、バースト転送中は、Waitが全くなく転送できている。Readレイテンシは一定のようなので、次のアドレスを先に投入することは無さそうだ。AXIバスのアドレス・チャネルを先行して投入されているので、少々勿体無い気がする。2番めと3番目のReadレイテンシは隠蔽することが可能だと思う。

最初のアドレス・チャネルを拡大した。(図2)
Vivado_HLS_2014_1_17_140425.png

最初のアドレスは 0x19907000 だった。次のアドレスは、0x19907400, 0x19907800 だ。3つのアクセスは256バーストだった。

次に、ラプラシアンフィルタ処理後のメモリWriteトランザクションを下に示す。(図3)
Vivado_HLS_2014_1_18_140425.png

最初のアドレス・チャネルを拡大した。(図4)
Vivado_HLS_2014_1_19_140425.png 

スタートのアドレスは、0x19ADC000 だった。

こちらは、Writeアクセスなので、アドレス・チャネルはオーバーラップしていないようだ。BVALIDのアサートががAWVALID、WVALIDのアサートの後に来ているので、リスポンス・チャネルとアドレス・チャネル、データ・チャネルはオーバーラップされている。面白いのが、WREADYのアサートだ。一旦アサートされて、すぐにディアサートされ、少し時間が立ってからアサートされている。2番めのトランザクションの始まりの部分を拡大してみよう。(図5)
Vivado_HLS_2014_1_22_140425.png

WLASTがアサートされてデータ・チャネルが終了後に、リスポンス・チャネルの完了を待たずにアドレス・チャネルのトランザクションがスタートしている。データ・チャネルのWVALIDも次のクロックでアサートされて、その2クロック後にWREADYもアサートされるが、2クロック後にWREADYがディアサートされる。その後、BVALIDがアサートされて、前の Writeトランザクションが完了したあとで、WREADYが一旦ディアサートされてから、18クロック後にまたアサートされている。たぶんバッファが2つしか無くてので、DDR3 SDRAMコントローラが受け入れ可能になるのを待っていのだろうと思う。(推測です)

さて、現在やることは、シミュレーションの様にVivado HLS 2014.1で作ったラプラシアンフィルタのIPが動作しているのかを確かめることだ。違う性能の検証をやっていてもしょうがないので、現在のRead, Writeトランザクションの後のトランザクションの前の間隔を見ることにした。”Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする3(単体シミュレーション)”によると、約 146usec となっている。ChiScopeで見られる現在の限界は約1000クロック x 10 nsec = 10 usec なので、前のトランザクションは見えないが、10 usec 以上離れているかどうか?は見える。

シミュレーション波形を下に示す。
Vivado_HLS_2014_1_15_140424.png

Readトランザクションのシミュレーション波形から、スタート・アドレスの 0x19907000 から 0xC80(1ライン分のアドレス増分)X 3 ライン分過ぎれば定常状態なので、0x19909580 のアドレスの時にAWVALIDがアサートされた時の前が定常状態となる。そこをトリガしてみてみた。トリガポイントは1000クロック後にしてある。
Vivado_HLS_2014_1_20_140425.png

1000 クロック前に、トランザクションがないので、前のトランザクションと 10 usec 以上離れている。

Writeトランザクションのシミュレーション波形から、スタート・アドレス 0x19ADC000 から 0xC80(1ライン分のアドレス増分)X 2 ライン分過ぎれば定常状態なので、0x19ADD900 のアドレスの時にAWVALIDがアサートされた時の前が定常状態となる。そこをトリガしてみてみた。トリガポイントは1000クロック後にしてある。
Vivado_HLS_2014_1_21_140425.png

1000 クロック前に、トランザクションがないので、前のトランザクションと 10 usec 以上離れている。
  1. 2014年04月25日 05:27 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする3(単体シミュレーション)

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする2(実機でテスト)”の続き。

前回、Vivado HLS 2013.4 で作製したラプラシアンフィルタのIPの表示は、ソフトウェアで作製したラプラシアンフィルタと同一だったが、変換にかかる時間が遅かった。今回は、”Vivado HLS 2013.4でラプラシアン・フィルタ関数をaxi masterモジュールにする5(単体シミュレーション)”のプロジェクトで単体シミュレーションを行った。

下に単体シミュレーション結果を示す。
Vivado_HLS_2014_1_15_140424.png

1ラインずつReadして、ラプラシアンフィルタの結果をWriteする間隔は、約141usec となった。単純に 600ラインとすると、141usec x 600ライン = 84.6msec となった。

Vivado HLS 2013.4での結果は、 約 146usec で、600ラインとすると、146usec x 600ライン = 87.6msec だった。
Vivado_HLS_2013_4_22_140208.png

あまり変わらない結果となったが、それでは、前回の 100 msec が、984 msec くらいになってしまうのは、なぜだろう?
(2014/06/08:追記 ソフトウェアが間違っていて、一桁遅くなっていました。ラプラシアンフィルタの実行時間は正しくは、約98 ms でした。./lap_fil_hls_axim.elf の実行結果です)
  1. 2014年04月24日 04:22 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする2(実機でテスト)

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする1”の続き。

Vivado HLS 2013.4 で作製したラプラシアンフィルタのIPの場合の実機でのテストの記事は、”Vivado HLS 2013.4でラプラシアン・フィルタ関数をaxi masterモジュールにする6(実機でテスト)”を参照して欲しい。このブログ記事では、Vivado HLS 2013.4で生成したラプラシアンフィルタのIPを使用すると、ラプラシアンフィルタ通過後の画像が強調され、おかしくなることを書いた。

今回は、Vivado HLS 2014.1で生成したラプラシアンフィルタIPを使用して、同様にラプラシアンフィルタ通過後の画像を比べてみることにした。

Project Navigator の画像を下に示す。
Vivado_HLS_2014_1_8_140423.png

XPSの画像を下に示す。
Vivado_HLS_2014_1_9_140423.png

SDKの画像を下に示す。
Vivado_HLS_2014_1_10_140423.png

SDKで、Vivado HLS 2013.4  VIvado HLS 2014.1 で作製したラプラシアンフィルタのIPのソフトウェアを実行した結果の写真を下に示す。
Vivado_HLS_2014_1_11_140423.jpg

ソフトウェアでのラプラシアンフィルタ結果を下に示す。
Vivado_HLS_2014_1_12_140423.jpg

Vivado HLS 2013.4  Vivado HLS 2014.1 で作製したラプラシアンフィルタとソフトウェアでのラプラシアンフィルタの結果に違いは見られなくなった。これは使えると思う。

但し、gettimeofday()で計測した実行時間がとっても遅いのだ。下の図で、lap_fil_hls_axim.elf がVivado HLS 2013.4  Vivado HLS 2014.1 で作製したラプラシアンフィルタの実行ファイル、lap_filter_axim.elf がHDLで作製したラプラシアンフィルタの実行ファイル、laplacian_filter.elf がソフトウェアで実装してラプラシアンフィルタの実行ファイルを示す。
Vivado_HLS_2014_1_13_140423.png
(2014/06/08:追記 ソフトウェアが間違っていて、一桁遅くなっていました。ラプラシアンフィルタの実行時間は正しくは、約98 ms でした。./lap_fil_hls_axim.elf の実行結果です)

Vivado HLS 2014.1がソフトウェアよりも遅く、約1秒近くも実行に時間がかかっている。これはおかしい。因みにHDL実装の実行時間は設定時間は省いてあって、純粋にラプラシアンフィルタの実行時間となっている。ラプラシアンフィルタの実行を見ていても、Vivado HLS 2014.1とHDL実装とあまり描画の早さが変わらないのだ。

Vivado HLS 2014.1で、設定時間を省いて、純粋にラプラシアンフィルタの実行時間だけにしたところ、0.84788 sec になった。明らかにどこか余計な所で時間を食っている気がする?

どうも原因がわからないので、シミュレーションとChipScope Proでに波形の観測を行うことにする。
  1. 2014年04月23日 04:45 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする1

Vivado HLS 2013.4 で作ってあったラプラシアンフィルタのIPをVivado HLS 2014.1 に移行することにした。(Vivado HLS 2013.4の記事は、”Vivado HLS 2013.4でラプラシアン・フィルタ関数をaxi masterモジュールにする6(実機でテスト)”を参照のこと)

・Vivado HLS 2014.1 を立ちあげた。GUIが変わっている。Vivado 2014.1とデザインが統一されているようだ。
Vivado_HLS_2014_1_1_140419.png

・ラプラシアンフィルタの新規プロジェクトを作って、以前のラプラシアンフィルタのCソースを入れてみた。
Vivado_HLS_2014_1_2_140419.png

・C Simulation は成功した。
Vivado_HLS_2014_1_3_140419.png

・Run C Synthesis を行った。
Vivado_HLS_2014_1_4_140419.png

そのログを下に示す。DIFFを取るとVivado 2013.4でラプラシアンフィルタを合成した時のログとは結構違っているようだ。

================================================================
== Vivado HLS Report for 'lap_filter_axim'
================================================================
* Date: Sat Apr 19 05:31:00 2014

* Version: 2014.1 (build date: Fri Apr 04 13:20:25 PM 2014)
* Project: lap_filter_axim_2014_1
* Solution: solution1
* Product family: zynq zynq_fpv6
* Target device: xc7z020clg484-1


================================================================
== Performance Estimates
================================================================
+ Timing (ns):
* Summary:
+---------+-------+----------+------------+
| Clock | Target| Estimated| Uncertainty|
+---------+-------+----------+------------+
|default | 10.00| 8.75| 1.25|
+---------+-------+----------+------------+

+ Latency (clock cycles):
* Summary:
+---------+------------+---------+------------+---------+
| Latency | Interval | Pipeline|
| min | max | min | max | Type |
+---------+------------+---------+------------+---------+
| 1450201| 6930730201| 1450202| 6930730202| none |
+---------+------------+---------+------------+---------+

+ Detail:
* Instance:
N/A

* Loop:
+-------------------------------+---------+------------+-----------------+-----------+-----------+------+----------+
| | Latency | Iteration | Initiation Interval | Trip | |
| Loop Name | min | max | Latency | achieved | target | Count| Pipelined|
+-------------------------------+---------+------------+-----------------+-----------+-----------+------+----------+
|- Loop 1 | 1450200| 6930730200| 2417 ~ 11551217 | -| -| 600| no |
| + Loop 1.1 | 1600| 11550400| 2 ~ 14438 | -| -| 800| no |
| ++ Loop 1.1.1 | 14427| 14427| 4809| -| -| 3| no |
| +++ memcpy.line_buf.cam_fb | 806| 806| 8| 1| 1| 800| yes |
| +++ lap_filter_axim_label0 | 4000| 4000| 5| -| -| 800| no |
| ++ memcpy.line_buf.cam_fb | 806| 806| 8| 1| 1| 800| yes |
| ++ lap_filter_axim_label1 | 4800| 4800| 6| -| -| 800| no |
| + memcpy.lap_fb.lap_buf | 801| 801| 3| 1| 1| 800| yes |
+-------------------------------+---------+------------+-----------------+-----------+-----------+------+----------+



================================================================
== Utilization Estimates
================================================================
* Summary:
+-----------------+---------+-------+--------+-------+
| Name | BRAM_18K| DSP48E| FF | LUT |
+-----------------+---------+-------+--------+-------+
|Expression | -| 10| 0| 815|
|FIFO | -| -| -| -|
|Instance | -| 2| 330| 390|
|Memory | 10| -| 0| 0|
|Multiplexer | -| -| -| 305|
|Register | -| -| 940| 26|
+-----------------+---------+-------+--------+-------+
|Total | 10| 12| 1270| 1536|
+-----------------+---------+-------+--------+-------+
|Available | 280| 220| 106400| 53200|
+-----------------+---------+-------+--------+-------+
|Utilization (%) | 3| 5| 1| 2|
+-----------------+---------+-------+--------+-------+

+ Detail:
* Instance:
+---------------------------------------------+------------------------------------------+---------+-------+-----+-----+
| Instance | Module | BRAM_18K| DSP48E| FF | LUT |
+---------------------------------------------+------------------------------------------+---------+-------+-----+-----+
|lap_filter_axim_mul_8ns_7ns_15_3_U3 |lap_filter_axim_mul_8ns_7ns_15_3 | 0| 1| 0| 0|
|lap_filter_axim_mul_8ns_7ns_15_3_U4 |lap_filter_axim_mul_8ns_7ns_15_3 | 0| 1| 0| 0|
|lap_filter_axim_srem_11ns_11ns_11_14_seq_U0 |lap_filter_axim_srem_11ns_11ns_11_14_seq | 0| 0| 110| 130|
|lap_filter_axim_urem_10ns_10ns_10_13_seq_U1 |lap_filter_axim_urem_10ns_10ns_10_13_seq | 0| 0| 110| 130|
|lap_filter_axim_urem_10ns_10ns_10_13_seq_U2 |lap_filter_axim_urem_10ns_10ns_10_13_seq | 0| 0| 110| 130|
+---------------------------------------------+------------------------------------------+---------+-------+-----+-----+
|Total | | 0| 2| 330| 390|
+---------------------------------------------+------------------------------------------+---------+-------+-----+-----+

* Memory:
+------------+--------------------------+---------+------+-----+------+-------------+
| Memory | Module | BRAM_18K| Words| Bits| Banks| W*Bits*Banks|
+------------+--------------------------+---------+------+-----+------+-------------+
|lap_buf_U |lap_filter_axim_lap_buf | 2| 800| 24| 1| 19200|
|line_buf_U |lap_filter_axim_line_buf | 8| 2400| 32| 1| 76800|
+------------+--------------------------+---------+------+-----+------+-------------+
|Total | | 10| 3200| 56| 2| 96000|
+------------+--------------------------+---------+------+-----+------+-------------+

* FIFO:
N/A

* Expression:
+--------------------------+----------+-------+---+----+------------+------------+
| Variable Name | Operation| DSP48E| FF| LUT| Bitwidth P0| Bitwidth P1|
+--------------------------+----------+-------+---+----+------------+------------+
|p_addr12_fu_1034_p2 | * | 1| 0| 0| 10| 10|
|p_addr6_fu_758_p2 | * | 1| 0| 0| 11| 10|
|p_addr7_fu_1073_p2 | * | 1| 0| 0| 10| 10|
|p_addr_fu_738_p2 | * | 1| 0| 0| 10| 10|
|tmp_2_fu_605_p2 | * | 1| 0| 0| 10| 10|
|tmp_35_i1_fu_791_p2 | * | 1| 0| 0| 8| 8|
|tmp_35_i_fu_959_p2 | * | 1| 0| 0| 8| 8|
|tmp_36_i1_fu_781_p2 | * | 1| 0| 0| 8| 5|
|tmp_36_i_fu_949_p2 | * | 1| 0| 0| 8| 5|
|y_i38_op_cast_fu_1218_p2 | * | 1| 0| 1| 24| 17|
|a_1_fu_848_p2 | + | 0| 0| 2| 2| 1|
|b_2_fu_911_p2 | + | 0| 0| 10| 10| 1|
|b_fu_725_p2 | + | 0| 0| 10| 10| 1|
|grp_fu_560_p0 | + | 0| 0| 11| 11| 2|
|grp_fu_566_p0 | + | 0| 0| 10| 10| 1|
|indvar_next1_fu_1241_p2 | + | 0| 0| 10| 10| 1|
|indvar_next2_fu_694_p2 | + | 0| 0| 10| 10| 1|
|indvar_next_fu_879_p2 | + | 0| 0| 10| 10| 1|
|next_mul1_fu_532_p2 | + | 0| 0| 19| 19| 10|
|next_mul2_fu_830_p2 | + | 0| 0| 12| 12| 10|
|next_mul_fu_836_p2 | + | 0| 0| 12| 12| 10|
|p_addr10_fu_1051_p2 | + | 0| 0| 13| 13| 13|
|p_addr11_fu_1110_p2 | + | 0| 0| 12| 12| 12|
|p_addr13_fu_1061_p2 | + | 0| 0| 13| 13| 13|
|p_addr14_fu_1100_p2 | + | 0| 0| 12| 12| 12|
|p_addr2_fu_1129_p2 | + | 0| 0| 12| 12| 12|
|p_addr3_fu_1021_p2 | + | 0| 0| 13| 13| 13|
|p_addr4_fu_921_p2 | + | 0| 0| 12| 12| 12|
|p_addr5_fu_1124_p2 | + | 0| 0| 12| 12| 12|
|p_addr8_fu_1120_p2 | + | 0| 0| 13| 13| 13|
|p_addr9_fu_1007_p2 | + | 0| 0| 13| 13| 13|
|p_sum1_fu_590_p2 | + | 0| 0| 33| 33| 33|
|p_sum2_fu_858_p2 | + | 0| 0| 33| 33| 33|
|p_sum_fu_673_p2 | + | 0| 0| 33| 33| 33|
|sum3_i_fu_1163_p2 | + | 0| 0| 16| 32| 32|
|tmp3_fu_1087_p2 | + | 0| 0| 32| 32| 32|
|tmp4_fu_1147_p2 | + | 0| 0| 16| 32| 32|
|tmp5_fu_1142_p2 | + | 0| 0| 16| 32| 32|
|tmp_10_fu_710_p2 | + | 0| 0| 12| 12| 12|
|tmp_11_fu_998_p2 | + | 0| 0| 11| 11| 2|
|tmp_12_fu_895_p2 | + | 0| 0| 12| 12| 12|
|x_1_fu_617_p2 | + | 0| 0| 10| 10| 1|
|tmp_38_i_fu_1173_p2 | - | 0| 0| 32| 32| 32|
|tmp_39_i_fu_1179_p2 | - | 0| 0| 32| 32| 32|
|tmp_i2_fu_1167_p2 | - | 0| 0| 16| 32| 32|
|y_4_fu_1184_p2 | - | 0| 0| 32| 32| 32|
|phitmp_fu_1223_p3 | Select | 0| 0| 24| 1| 2|
|ap_sig_bdd_114 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_141 | and | 0| 0| 1| 1| 1|
|ap_sig_bdd_407 | and | 0| 0| 1| 1| 1|
|exitcond1_fu_873_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond2_fu_1235_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond3_fu_905_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond4_fu_842_p2 | icmp | 0| 0| 2| 2| 2|
|exitcond5_fu_611_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond6_fu_538_p2 | icmp | 0| 0| 11| 10| 10|
|exitcond7_fu_688_p2 | icmp | 0| 0| 11| 10| 9|
|exitcond_fu_719_p2 | icmp | 0| 0| 11| 10| 9|
|icmp_fu_1208_p2 | icmp | 0| 0| 30| 24| 1|
|isIter0_fu_889_p2 | icmp | 0| 0| 11| 10| 1|
|isIter1_fu_704_p2 | icmp | 0| 0| 11| 10| 1|
|isIter_fu_1247_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_26_fu_645_p2 | icmp | 0| 0| 11| 10| 9|
|tmp_27_fu_651_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_4_fu_663_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_6_fu_627_p2 | icmp | 0| 0| 11| 10| 10|
|tmp_8_fu_633_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_9_fu_581_p2 | icmp | 0| 0| 11| 10| 1|
|tmp_18_fu_639_p2 | or | 0| 0| 1| 1| 1|
|tmp_29_fu_657_p2 | or | 0| 0| 1| 1| 1|
+--------------------------+----------+-------+---+----+------------+------------+
|Total | | 10| 0| 815| 940| 739|
+--------------------------+----------+-------+---+----+------------+------------+

* Multiplexer:
+-----------------------------+----+-----------+-----+-----------+
| Name | LUT| Input Size| Bits| Total Bits|
+-----------------------------+----+-----------+-----+-----------+
|a_reg_375 | 2| 2| 2| 4|
|b1_reg_421 | 10| 2| 10| 20|
|b_1_reg_364 | 10| 2| 10| 20|
|cam_fb_address | 32| 3| 32| 96|
|indvar1_reg_450 | 10| 2| 10| 20|
|indvar9_reg_353 | 10| 2| 10| 20|
|indvar_reg_410 | 10| 2| 10| 20|
|lap_buf_address0 | 10| 3| 10| 30|
|lap_fil_val_1_phi_fu_436_p8 | 24| 2| 24| 48|
|lap_fil_val_1_reg_432 | 24| 2| 24| 48|
|line_buf_address0 | 24| 10| 12| 120|
|line_buf_address1 | 12| 6| 12| 72|
|line_buf_d0 | 32| 4| 32| 128|
|phi_mul1_reg_329 | 19| 2| 19| 38|
|phi_mul2_reg_398 | 12| 2| 12| 24|
|phi_mul_reg_386 | 12| 2| 12| 24|
|reg_491 | 32| 2| 32| 64|
|x_reg_341 | 10| 2| 10| 20|
|y_reg_317 | 10| 2| 10| 20|
+-----------------------------+----+-----------+-----+-----------+
|Total | 305| 54| 293| 836|
+-----------------------------+----+-----------+-----+-----------+

* Register:
+-----------------------------------------+----+----+-----+-----------+
| Name | FF | LUT| Bits| Const Bits|
+-----------------------------------------+----+----+-----+-----------+
|a_1_reg_1429 | 2| 0| 2| 0|
|a_reg_375 | 2| 0| 2| 0|
|ap_CS_fsm | 6| 0| 6| 0|
|ap_reg_ppiten_pp0_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it2 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it3 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it4 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it5 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it6 | 1| 0| 1| 0|
|ap_reg_ppiten_pp0_it7 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it2 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it3 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it4 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it5 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it6 | 1| 0| 1| 0|
|ap_reg_ppiten_pp1_it7 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it0 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it1 | 1| 0| 1| 0|
|ap_reg_ppiten_pp2_it2 | 1| 0| 1| 0|
|ap_reg_ppstg_exitcond2_reg_1618_pp2_it1 | 1| 0| 1| 0|
|ap_reg_ppstg_isIter_reg_1627_pp2_it1 | 1| 0| 1| 0|
|b1_reg_421 | 10| 0| 10| 0|
|b_1_reg_364 | 10| 0| 10| 0|
|b_2_reg_1461 | 10| 0| 10| 0|
|b_3_reg_1395 | 8| 0| 8| 0|
|b_4_reg_1471 | 8| 0| 8| 0|
|b_reg_1378 | 10| 0| 10| 0|
|cam_fb_addr_1_reg_1434 | 32| 0| 32| 0|
|cam_fb_addr_reg_1314 | 32| 0| 32| 0|
|exitcond1_reg_1440 | 1| 0| 1| 0|
|exitcond2_reg_1618 | 1| 0| 1| 0|
|exitcond4_reg_1425 | 1| 0| 1| 0|
|exitcond7_reg_1357 | 1| 0| 1| 0|
|fl_reg_1300 | 11| 0| 11| 0|
|icmp_reg_1603 | 1| 0| 1| 0|
|indvar1_reg_450 | 10| 0| 10| 0|
|indvar9_reg_353 | 10| 0| 10| 0|
|indvar_reg_410 | 10| 0| 10| 0|
|isIter0_reg_1449 | 1| 0| 1| 0|
|isIter1_reg_1366 | 1| 0| 1| 0|
|isIter_reg_1627 | 1| 0| 1| 0|
|lap_buf_load_reg_1636 | 24| 0| 24| 0|
|lap_fb_addr_reg_1352 | 32| 0| 32| 0|
|lap_fil_val_1_reg_432 | 24| 0| 24| 0|
|line_buf_addr_11_reg_1466 | 12| 0| 12| 0|
|line_buf_addr_reg_1383 | 12| 0| 12| 0|
|line_buf_load_5_reg_1544 | 32| 0| 32| 0|
|next_mul1_reg_1273 | 19| 0| 19| 0|
|next_mul2_reg_1415 | 12| 0| 12| 0|
|next_mul_reg_1420 | 12| 0| 12| 0|
|p_addr2_reg_1569 | 12| 0| 12| 0|
|p_addr5_reg_1564 | 12| 0| 12| 0|
|p_addr6_reg_1388 | 8| 0| 13| 5|
|p_addr8_reg_1559 | 13| 0| 13| 0|
|phi_mul1_reg_329 | 19| 0| 19| 0|
|phi_mul2_reg_398 | 12| 0| 12| 0|
|phi_mul_reg_386 | 12| 0| 12| 0|
|phitmp_reg_1613 | 24| 0| 24| 0|
|reg_482 | 32| 0| 32| 0|
|reg_487 | 8| 0| 8| 0|
|reg_491 | 32| 0| 32| 0|
|sl_reg_1305 | 10| 0| 10| 0|
|tl_reg_1293 | 10| 0| 10| 0|
|tmp3_reg_1539 | 32| 0| 32| 0|
|tmp4_reg_1584 | 32| 0| 32| 0|
|tmp_10_reg_1370 | 12| 0| 12| 0|
|tmp_12_reg_1453 | 12| 0| 12| 0|
|tmp_18_reg_1340 | 1| 0| 1| 0|
|tmp_22_trn_cast_reg_1491 | 13| 0| 13| 0|
|tmp_29_reg_1344 | 1| 0| 1| 0|
|tmp_2_reg_1320 | 7| 0| 12| 5|
|tmp_31_reg_1507 | 7| 0| 12| 5|
|tmp_32_reg_1513 | 8| 0| 13| 5|
|tmp_33_reg_1528 | 7| 0| 12| 5|
|tmp_34_reg_1534 | 8| 0| 13| 5|
|tmp_36_i1_reg_1405 | 14| 0| 14| 0|
|tmp_36_i_reg_1481 | 14| 0| 14| 0|
|tmp_36_reg_1599 | 1| 0| 1| 0|
|tmp_38_i_reg_1594 | 32| 0| 32| 0|
|tmp_39_reg_1608 | 24| 0| 24| 0|
|tmp_4_cast_reg_1262 | 32| 0| 33| 1|
|tmp_4_reg_1348 | 1| 0| 1| 0|
|tmp_5_cast_reg_1268 | 32| 0| 33| 1|
|tmp_9_reg_1310 | 1| 0| 1| 0|
|x_1_reg_1328 | 10| 0| 10| 0|
|x_cast_reg_1335 | 10| 0| 11| 1|
|x_reg_341 | 10| 0| 10| 0|
|y_1_reg_1282 | 10| 0| 10| 0|
|y_2_reg_1410 | 8| 0| 8| 0|
|y_3_reg_1486 | 8| 0| 8| 0|
|y_reg_317 | 10| 0| 10| 0|
|exitcond1_reg_1440 | 0| 1| 1| 0|
|exitcond7_reg_1357 | 0| 1| 1| 0|
|tmp_10_reg_1370 | 0| 12| 12| 0|
|tmp_12_reg_1453 | 0| 12| 12| 0|
+-----------------------------------------+----+----+-----+-----------+
|Total | 940| 26| 999| 33|
+-----------------------------------------+----+----+-----+-----------+



================================================================
== Interface
================================================================
* Summary:
+--------------------+-----+-----+------------+-----------------+--------------+
| RTL Ports | Dir | Bits| Protocol | Source Object | C Type |
+--------------------+-----+-----+------------+-----------------+--------------+
|ap_clk | in | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_rst | in | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_start | in | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_done | out | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_idle | out | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_ready | out | 1| ap_ctrl_hs | lap_filter_axim | return value |
|ap_return | out | 32| ap_ctrl_hs | lap_filter_axim | return value |
|cam_addr | in | 32| ap_none | cam_addr | scalar |
|lap_addr | in | 32| ap_none | lap_addr | scalar |
|cam_fb_req_din | out | 1| ap_bus | cam_fb | pointer |
|cam_fb_req_full_n | in | 1| ap_bus | cam_fb | pointer |
|cam_fb_req_write | out | 1| ap_bus | cam_fb | pointer |
|cam_fb_rsp_empty_n | in | 1| ap_bus | cam_fb | pointer |
|cam_fb_rsp_read | out | 1| ap_bus | cam_fb | pointer |
|cam_fb_address | out | 32| ap_bus | cam_fb | pointer |
|cam_fb_datain | in | 32| ap_bus | cam_fb | pointer |
|cam_fb_dataout | out | 32| ap_bus | cam_fb | pointer |
|cam_fb_size | out | 32| ap_bus | cam_fb | pointer |
|lap_fb_req_din | out | 1| ap_bus | lap_fb | pointer |
|lap_fb_req_full_n | in | 1| ap_bus | lap_fb | pointer |
|lap_fb_req_write | out | 1| ap_bus | lap_fb | pointer |
|lap_fb_rsp_empty_n | in | 1| ap_bus | lap_fb | pointer |
|lap_fb_rsp_read | out | 1| ap_bus | lap_fb | pointer |
|lap_fb_address | out | 32| ap_bus | lap_fb | pointer |
|lap_fb_datain | in | 32| ap_bus | lap_fb | pointer |
|lap_fb_dataout | out | 32| ap_bus | lap_fb | pointer |
|lap_fb_size | out | 32| ap_bus | lap_fb | pointer |
+--------------------+-----+-----+------------+-----------------+--------------+


・C/RTL Cosimulation を行った。これはエラーになってしまった。
Vivado_HLS_2014_1_5_140419.png

・Export RTL でXPSのPcoreとしてIP化を行った。
Vivado_HLS_2014_1_6_140419.png

・Vivado HLS 2013.4とVivado HLS 2014.1の生成されたIPを構成するVerilog HDLファイルの比較を行った。Vivado HLS 2014.1で生成されたVerilog HDLファイルのほうが減っている。
Vivado_HLS_2014_1_7_140419.png
  1. 2014年04月22日 04:56 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

Lubuntu14.04にVivado 2014.1 をインストールする

Lubuntu14.04 にVivado 2014.1 をインストールすることができた。かなり苦労したので、その過程を書いておく。
(注意)Lubuntu14.04 はVivado 2014.1のサポートOSに入っていないので、使用者が、ご自分の責任で使うことになります。

まずは、 すべての OS 用 Vivado 2014.1 のフル イメージ (SDK 付き) (TAR/GZIP - 7.26GB) MD5 SUM Value: 668a300b9368e3a68391805863ae99e6をダウンロードした。

解凍すると、Xilinx_Vivado_SDK_2014.1_0405_1ディレクトリができる。

・Xilinx_Vivado_SDK_2014.1_0405_1ディレクトリに入ると、xsetup があるので、”chmod a+x xsetup”で実行パーミッションを付加する。
Vivado2014_1_Linux_3_140419.png

・次に、Xilinx_Vivado_SDK_2014.1_0405_1/tps/lnx64/jre/bin ディレクトリのファイル全てに、実行パーミッションを付加する。
Vivado2014_1_Linux_4_140419.png

Xilinx User Community Forums : Xilinx Products : Design Tools : Installation and Licensing : 2014.1 installation on linux 64-bit を見ると、/binディレクトリのsh を削除してbash をsh に、シンボリック・リンクするやり方(”ln -s bash sh”)が書いてあった。私はsh を削除せずに she にリネームして、bash を sh にシンボリック・リンクした。

・Xilinx_Vivado_SDK_2014.1_0405_1ディレクトリに入って、”sudo ./xsetup”コマンドで、Vivadoのインストール画面を出すことができた。
Vivado2014_1_Linux_1_140419.png

・インストールはできたのだが、Lubuntuのメイン・メニューにVivadoの項目がなかった。

LXMenuEditor - lxmedを使用して、メイン・メニューにVivadoの項目を表示することにした。日本語の解説ページは、”LXMED で Lubuntu 11.04 のメニューを編集する”。(日本語のブログの解説にしたがってやれば良いが、install.sh は、”chmod a+x install.sh”で実行パーミッションを付加する必要があった)

・次に、LXMenuEditor はJREを使用するので、JREをインストールした。
Vivado2014_1_Linux_7_140421.png

・メイン・メニューから、Main Menu Editor を起動して、プログラムのカテゴリにVivado 2014.1 を追加した。(残念ながらカテゴリは追加できないようだ)
Vivado2014_1_Linux_8_140421.png

Vivado2014_1_Linux_9_140421.png

・これでメイン・メニューのプログラムのカテゴリにVivado 2014.1 を表示することができた。Vivado 2014.1 を選択すれば Vivado 2014.1 が起動する。

・Vivado 2014.1 で Example のビットストリームを生成したところを下に示す。
Vivado2014_1_Linux_10_140421.png

(注1)上手くいかない時は、Lubuntuを再起動してみてください。

(注2)Vivado のライセンスやレジストリ、インストール・ログなどは、rootのホーム・ディレクトリの下に、.Xilinx ディレクトリが出来ていて、その下にあります。
  1. 2014年04月21日 05:33 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

かすみがうらマラソンの5kmを走ってきました

2014年4月20日(日曜日)にかすみがうらマラソンを走ってきました。

J:COMブースにお世話になって、荷物を置かせて頂きました。阿見アスリートクラブの皆様、お世話になりました。ありがとうございました。
KasumigauraM_140422.jpg

奥さんは10マイルにでるので、9時20分スタートでした。私は、5kmなので、10時30分スタートです。9時50分ころからウォームアップランをして待ってました。10時にフルマラソンがスタートしました。やはりすごい人混みでした。

5kmの参加人数は1500人程度だそうですが、すごい人です。私はマスク着用であまり早くはしれないので、真ん中辺りに位置しました。
10時30分にスタートすると、やはり周りの人が凄いので、ゆっくりスタートです。最初の1kmのラップは、6分49秒でした。人混みを右に左にスペースを探しながら抜いていきます。次の1kmラップは、5分43秒でした。まあまあのラップになってきました。
その後は、5:36, 5:28, 5:16 でした。最後の300m位はマスクを取って、5分/kmくらいのペースにして、抜きまくりました。

私の5kmの結果は、5km男子50~59歳の部で、オフィシャルタイムで29分20秒、プライベートタイムで、28分44秒。総合順位で384位/924人中、種目別順位で70位/185人中でした。

奥さんの10マイルの結果は、10マイル女子50~59歳の部で、オフィシャルタイムで1時間30分42秒、プライベートタイムで、1時間29分50秒。総合順位で251位/1969人中、種目別順位で47位/372人中でした。
  1. 2014年04月20日 22:00 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Vivado 2014.1で Vivado_ZYBO_LED_test2をインプリメントした

Vivado 2014.1で、Github に上げてあるVivado 2013.4で作ったVivado_ZYBO_LED_test2プロジェクトをインプリメントしてみた。

・Vivado 2014.1を立ちあげた。
Vivado_2014_1_12_140418.png

GUIが新しくなっていた。Xilinx Tcl Store が新設されている。これは、”Vivado Design Suite ユーザー ガイド リリース ノート 、インストールおよびライセンス UG973 (v2014.1) 2014 年 4 月 2 日”によると、Tclスクリプトのオープンソースのリポジトリからダウンロード出来るようです。

・Vivado_ZYBO_LED_test2プロジェクトを読み込むと、ZYNQやAXI Interconnect IPが新しくなっていました。下の画面は、Upgrade Selected ボタンをクリックしてIPをアップグレードした後です。
Vivado_2014_1_1_140418.png

・ビットストリームの生成まで終了したところです。前のバージョンからIPをアップグレードしても、問題なくビットストリームの生成まで終了しました。
Vivado_2014_1_2_140418.png

・ブロック・デザインを開いてみました。AXI_INTERCONNECT の図が変わっています。Signalsタブが追加されていました。
Vivado_2014_1_3_140418.png

・Signalsタブの無いようです。PSのFCLK_CLK0 が見えました。
Vivado_2014_1_4_140418.png

・ハードウェアをエクスポートしてSDKを立ち上げると、スプラッシュ・スクリーンが変わっていました。
Vivado_2014_1_5_140418.png

・以前のVivado 2013.4のプロジェクトをVivado 2014.1に変換したプロジェクトでは、どうしてエラーが出てしまいました。Cleanしてもエラーが消えません。

・Vivado_ZYBO_LED_test2_141\Vivado_ZYBO_LED_test2.sdk\SDK\SDK_Export 以下のファイルをすべて消して、もう一度、ハードウェアをエクスポートしました。

・SDKが立ち上がって、hw_platform_0 を作ったところです。
Vivado_2014_1_6_140418.png

・led4_axi_lite_slave_bsp, led_axi_lite_slave プロジェクトを作製しました。コンパイルもOKでした。
Vivado_2014_1_7_140418.png

・SDKからProgram FPGAするとダイアログがかなり変わっていました。
Vivado_2014_1_8_140418.png

・Run Configuration のダイアログです。Runボタンをクリックします。
Vivado_2014_1_9_140418.png

・led4_axi_lite_slaveソフトウェアが走った状態です。
Vivado_2014_1_10_140418.png

・Tera Termに出ている表示です。LED Interval Resiger の設定とLED4 Enableも問題なく出来て、LEDの表示が出来ました。
Vivado_2014_1_11_140418.png

Vivado 2013.4で作ったプロジェクトをVivado 2014.1で開いても、SDK_Exportフォルダ以下のファイルを消去する必要はありましたが、それ以外は問題なく出来ました。
  1. 2014年04月19日 04:52 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

PocketDuino Alcohol sensor kitを購入しました

PocketDuino Alcohol sensor kitを indiegogo で購入しました。
EARLY BIRD Alcohol sensor kit で $45 でした。

AndroidのUSBに直差しできる国産アルディーノ『PocketDuino』でIoTがもっと身近になりそう”に書いてあるように、PocketDuino は Android に直接挿せるタイプの Arduino です。サイトの文を下に引用します。

codebenderというクラウド Arduino IDEサイトを使う事でAndroidのブラウザ上でスケッチ開発することが可能です。
開発したスケッチは専用の書き込みアプリを使ってAndroidからPocketDuinoへアップロードできるようになっています。
Androidのアプリを作るための環境も用意されていて、PocketDuinoと通信するためのライブラリがオープンソースで公開されているようですね。


Androidだけで完結しているのは面白いですね。アルコールセンサーも+$10で手に入るのは嬉しいです。いろいろとセンサーも付けてみたいです。AndroidにつながることでGUIはすべてAndroidにお任せに出来ますし、通信機能やGPS、加速度センサなどもAndroidのものを使えます。PocketDuinoは追加のセンサをつないだり、外部出力をつないだりなどの外部インターフェースに特化することで、いろいろなことが出来ると思います。
  1. 2014年04月18日 04:30 |
  2. マイコン関連
  3. | トラックバック:0
  4. | コメント:0

Vivado 2014.1 が出ました

今日、@Vengineerの戯言さんの”Vivado HLS 2014.1でOpenCLをサポート”の記事で知ったのですが、Vivado 2014.1 が出てました。GUIが変わったとの情報もあったので、楽しみですね。。。

(追記)
Vivado Design Suite ユーザー ガイド リリース ノート 、インストールおよびライセンス UG973 (v2014.1) 2014 年 4 月 2 日”の13ページの一部を引用します。

Microsoft Windows サポー ト
• Windows XP Professional (32 ビッ トおよび 64 ビッ ト)、 英語版/日本語版
• Windows 7 および 7 SP1 Professional (32 ビッ トおよび 64 ビッ ト)、 英語版/日本語版
Windows 8.1 Professional (64 ビッ ト)、 英語版/日本語版

待望のWindows 8.1 サポートです。
  1. 2014年04月17日 06:29 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

XilinxのFPGAツールを Linux環境に移行します

Vivadoのプロジェクトでは、パスの階層が深くなって、すぐに256文字のパス制限に引っかかってしまいます。(”ZYBO用LEDテストプロジェクトの試し方(Vivado 2013.4使用)”を参照ください)
そこで、XilinxのFPGAツールをすべてLinux環境に移行しようと思っています。

どのLinuxにするかですが、Lubuntuにしようと思っています。LubuntuにVivado 2013.4をインストールして、試していますが、今のところ問題が2つあります。

1つ目は、Windowsで作ったGithubに上げてある Vivado_ZYBO_LED_test2 を Lubuntu 環境の Vivado 2013.4 でやってみました。ビットストリームは生成できるのですが、ハードウェアをエクスポートしてSDKでソフトウェアをコンパイルする時にエラーになることです。
led4_axi_lite_slave_bsp に ps7_cortexa9_0 フォルダができて、その下に include, lib, licrc, code フォルダできるんですが、それが出来ていません。(下の図は、Lubuntu 環境の Vivado 2013.4のSDKです)
SDK_Lubuntu_1_140417.png

下の図が Windows の Vivado 2013.4 の SDKです。
SDK_Lubuntu_2_140417.png

こちらは、led4_axi_lite_slave_bsp に ps7_cortexa9_0 フォルダができて、その下に include, lib, licrc, code フォルダできているのが見えると思います。
Windowsのブロジェクトからの移行だとダメかもしれないので、新規プロジェクトで試してみたいと思います。

2つ目は、ダウンロード・ケーブルドライバがインストール時にエラーになることです。
これは、VirtualBox上のUbuntuへのISE14.4インストールの時に解決策を見つけていたようです。過去の自分に感謝します。(”LinuxでISEを使う1(VirtualBox上のUbuntuを使ってISE14.4をインストール)”参照)
元は、”Xilinx JTAG Linux”です。64ビットLinuxへの対応も書いてあるので、こっちを見たほうが良いと思います。
  1. 2014年04月17日 05:46 |
  2. Vivado
  3. | トラックバック:0
  4. | コメント:0

ZYBO用LEDテストプロジェクトの試し方(Vivado 2013.4使用)

ZYBO用のLEDテスト・プロジェクトを作ってGithub にアップロードしておきました。その使い方と注意点を書いておくことにします。

まずは、ZYBO用LEDテスト・プロジェクト(Vivado 2014.3)をGithub からダウンロードします。Clone してもよいのですが、ダウンロードするのはZipファイルとします。

Github の Vivado_ZYBO_LED_test2 ページに行って、Download ZIP ボタンをクリックします。
Vivado_ZYBO_LED_test_28_140415.png

・保存のダイアログが開くので、好きな場所にセーブします。Vivado_ZYBO_LED_test2-masterフォルダの下にVivado 2013.4 のプロジェクトがあります。

・次に、ZIPファイルを解凍する場所ですが、浅い階層に置いて下さい。私は、C:\Users\Masaaki\Documents\Vivado\Zynq\Vivado_ZYBO_LED_test2-master です。
Vivado_ZYBO_LED_test_29_140415.png

・例えば、C:\Users\Masaaki\Documents\Vivado\Zynq\ZYBO\temp に解凍するとファイル名が長すぎるとのエラーが出てしまいます。
Vivado_ZYBO_LED_test_40_140416.png

ともかく極力浅い階層に解凍して下さい。 Windowsではパス名が256文字の制限があるので、Vivadoを使うのは大変です。

例えば、このZYBO用LEDテスト・プロジェクトの Verilog HDLソースは何処にあるとか言うと、C:\Users\Masaaki\Documents\Vivado\Zynq\Vivado_ZYBO_LED_test2-master\Vivado_ZYBO_LED_test2.srcs\sources_1\bd\Vivado_ZYBO_LED_test\hdl にあります。あまり長いプロジェクト名を付けると、下の階層まで名前が長くなってしまいます。プロジェクト名の命名を考える必要がありますが、あまり短い名前でも符号表を別に作る必要が出てきます。よって、Vivado は Windows ではなく、Linuxで使おうと思っています。

・Vivado 2013.4 を立ちあげて、Vivado_ZYBO_LED_test2-masterの下の、Vivado_ZYBO_LED_test2 プロジェクトを開きます。
Vivado_ZYBO_LED_test_30_140415.png

・左の Flow Navigator で、Program and Debug -> Generate Bitstream をクリックすると、論理合成、インプリメント、ビットストリームの生成まで行います。

・ビットストリームの生成まで終了したら、Design Hierarchy から、ブロック・デザインの Vivado_ZYBO_LED_test_i をダブルクリックして、ブロック・デザインを開きます。

注:ブロック・デザインが表示された状態で、ハードウェア・エクスポートをする必要があります。

・Vivado_ZYBO_LED_testのブロック・デザインを開いたまま、Fileメニューから Export -> Export Hardware for SDK... を選択します。
Vivado_ZYBO_LED_test_31_140415.png

・Export Hardware for SDKダイアログが開きます。Launch SDK にチェックを入れて、OKボタンをクリックします。
Vivado_ZYBO_LED_test_32_140415.png

・Module Already Exported ダイアログが出ますが、Yes ボタンをクリックします。
Vivado_ZYBO_LED_test_33_140415.png

・SDKが立ち上がります。F5を押して、led4_axi_lite_slave.c を再表示させてあります。
Vivado_ZYBO_LED_test_34_140415.png

・ZYBOの電源をONします。

・SDKの Xilinx Tools メニューの Program FPGA を選択します。

・Program FPGA ダイアログが出ますが、まだ、Program ボタンはクリックできません。
Vivado_ZYBO_LED_test_35_140415.png

・Bitstream の右の Browse... ボタンをクリックして、bitファイルを選択します。

・Vivado_ZYBO_LED_test2-master\Vivado_ZYBO_LED_test2.runs\impl_1 フォルダの Vivado_ZYBO_LED_test_wrapper.bit を選択します。
Vivado_ZYBO_LED_test_36_140415.png

・ZYBOボードの緑色のDONE LEDが点灯します。電流は0.23A。
ZYBO_LED_test_32_140225.jpg

・これが、FPGAをプログラムした後のSDKの画面です。
Vivado_ZYBO_LED_test_37_140415.png

・Tera Tremなどのターミナルソフトを立ちあげます。

・シリアルポートに設定します。
ZYBO_LED_test_22_140225.png

・設定メニューから端末を選択して、ローカルエコーにチェックを入れます。
ZYBO_LED_test_23_140225.png

・設定メニューからシリアルポートを選択して、ボー・レート:115200、データ8ビット、パリティ none、ストップ1ビット、フロー制御 none に設定します。
ZYBO_LED_test_24_140225.png

・Run メニューから Run Configuration...を選択します。
Vivado_ZYBO_LED_test_38_140415.png

・led4_axi_lite_slave_Debug 表示されるので、Runボタンをクリックします。
Vivado_ZYBO_LED_test_39_140415.png

これで、ソフトウェアが走ります。

・Tera Termにメニューが表示されます。
ZYBO_LED_test_27_140225.png

・ZYBOの電流値は0.30Aです。
ZYBO_LED_test_33_140225.jpg

・4 のキーを押して、LED Interval Resister を設定します。値は、50000000を設定すると、0.5秒毎にLEDの値がインクリメントされるので、これを設定します。(クロックは100MHzです)
ZYBO_LED_test_28_140225.png

・2 のキーを押すとLEDがカウントを始めます。
ZYBO_LED_test_29_140225.png
  1. 2014年04月16日 05:27 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

Zynq用Yocto の情報(ひでみWiki Zynq)

Yoctoプロジェクトの情報をひでみさんがWikiひでみWiki Zynq)に書いてくれています。これを参考に、”Yocto ProjectのZedBoard用Linuxをビルドしてみる4(BOOT.binの作製)”をやってみようと思っています。
  1. 2014年04月15日 04:56 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

Yocto ProjectのZedBoard用Linuxをビルドしてみる4(BOOT.binの作製)

Yocto ProjectのZedBoard用Linuxをビルドしてみる3(ビルド成功)”の続き。

前回、ZedBoard用Yocto Linux のビルドが成功したので、”meta-xilinx - Layer containing Xilinx hardware support metadata”と”Xilinx Wiki - Prepare Boot Image”を元に BOOT.bin を作製しようと思う。

・~/linux_build_work/poky/build/tmp/deploy/images ディレクトリに Work ディレクトリを新規作成した。

・~/linux_build_work/poky/build/tmp/deploy/images/zedboard-zynq7 ディレクトリに cd した。

・zedboard-zynq7 ディレクトリの uImage--3.8-xilinx+gitf4ff79d44a966ebea6229213816d17eb472b303e-r1-zedboard-zynq7-20140410105834.bin を Work ディレクトリにコピー&ペーストした。

・zedboard-zynq7 ディレクトリの core-image-minimal-zedboard-zynq7-20140410105834.rootfs.ext2.gz.u-boot を Work ディレクトリにコピー&ペーストした。

・zedboard-zynq7 ディレクトリの uImage--3.8-xilinx+gitf4ff79d44a966ebea6229213816d17eb472b303e-r1-zedboard-zynq7-ram-20140410105834.dtb を Work ディレクトリにコピー&ペーストした。
ZedBoard_Yocto_Linux_31_140414.png

・uImage--3.8-xilinx+gitf4ff79d44a966ebea6229213816d17eb472b303e-r1-zedboard-zynq7-20140410105834.bin を uImage に名前を変更した。

・core-image-minimal-zedboard-zynq7-20140410105834.rootfs.ext2.gz.u-boot を uramdisk.image.gz に名前を変更した。

・uImage--3.8-xilinx+gitf4ff79d44a966ebea6229213816d17eb472b303e-r1-zedboard-zynq7-ram-20140410105834.dtb を devicetree.dtb に名前を変更した。
ZedBoard_Yocto_Linux_32_140414.png

・既存の u-boot.elf と zynq_fsbl.elf をコピー&ペーストした。
ZedBoard_Yocto_Linux_33_140414.png

・boot.bif を新規作成した。
ZedBoard_Yocto_Linux_34_140414.png

ZedBoard_Yocto_Linux_35_140414.png

・コマンド

bootgen -image boot.bif -o i BOOT.bin

を実行して、BOOT.bin を生成した。
ZedBoard_Yocto_Linux_36_140414.png

・BOOT.bin が生成されている。
ZedBoard_Yocto_Linux_37_140414.png

・SDカードに書き込んだ。
ZedBoard_Yocto_Linux_38_140414.png

ZedBoardにSDカードを入れて、ブートしてみたが、Tera Termに何も表示されなかった。。。試し方はこれで良いのと思うのだが、どうだろうか?
  1. 2014年04月14日 18:49 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

Dell Inspiron 1501 に Lubuntu をインストールした

Let's note Y2 に Lubuntu をインストールしたので、家の奥さんのパソコンだった Windows XP の Dell Inspiron 1501 に Lubuntu をインストールしてみたが、これがだいぶ苦労した。
Inspiron1501_Lubuntu_install_7_140413.jpg

Lubuntu の32ビット版CDを入れてブートすると最初に言語を選ぶ画面が開く。
Inspiron1501_Lubuntu_install_1_140413.jpg

次にインストールの画面が開く。(私が写り込んでいるのはご愛嬌ということで。。。)Lubuntuをインストールを選んでリターンキーを押した。
Inspiron1501_Lubuntu_install_2_140413.jpg

すると、真っ白の画面かもしくは、それに色とりどりの細い横線が入った画面になってしまう。
Inspiron1501_Lubuntu_install_3_140413.jpg

これは困った。どうしても回避できない。XubuntuやMint Linux、Debian いろいろとやってみたが同様だった。皆同じ画像表示ソフト使っているようだった。
困ったので、ネットを検索するといろいろと情報はあったのがだが、中でもこれが参考になった。”Thread: Dell Inspiron 1501 + Coloured Vertical Lines”つまり、GRUBのオプションに nomodeset を加えれば良いということのようだ。
そこで、Lubuntu のインストール画面で、F6キーを押すとGRUBのオプションが設定できるので、nomodeset をリターンキーで選択して、ESCキーで元に戻り、これで Lubuntuをインストールすると変な画面にならずにインストールをすることができた。良かった。
Inspiron1501_Lubuntu_install_4_140413.jpg

nomodeset オプションは何をするものか?と思って検索してみると、”nomodesetとLinuxにおけるGPUドライバーの問題”が見つかった。

まず、nomodesetは何をしているのかというと、kernel mode settingを無効にする。mode settingとは、画面の解像度やビット数を変更するための規格である。

そうだ。

Lubutntuのインストールはできたが、有線LANだけで、無線LANに接続できない。これは有名な不具合らしくかなり情報があったが、”[SOLVED] Wireless Problems on a Dell Inspiron 1501”を見て、”Menu > Other > Synaptic Package Manager > install "firmware-b43-installer"”パッケージをインストールすることで無線LANを使うことができた。(b43 で検索した。一度、再起動して下さい)

Let's note Y2 同様に、Mozc - Google 日本語入力 派生パッケージもインストールして快適になった。

Lubuntu の起動画面。
Inspiron1501_Lubuntu_install_5_140413.jpg

Firefox でFPGAの部屋を表示した画面とターミナル
Inspiron1501_Lubuntu_install_6_140413.jpg

Dell Inspiron 1501 への Lubuntu のインストールでは、相当苦労したが、インストールできて良かった。
次は、プリンタ、Canon MG7130を使えるようにしたい。
  1. 2014年04月13日 06:31 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:2

Let's note Y2 のOS を Windows XP からLubuntu へ変更した

Let's note Y2(リンクはPDFです)という、Windows XPのSXGA+のノートPCがあって、とってもスピードが遅くなっていました。Windows XPが起動するまで10分位かかります。(大げさかも?)使えなかったのですが、Windows XPもUpdate が終わりということで、Lubuntuに変更しました。インストールもとっても簡単で、楽に移行出来ました。無線LANはそのまま認識して、アクセスポイントに接続出来ましたし、特に問題なかったです。Lubuntuのインストールは、”lubuntu を使おう - Lubuntu 日本語情報サイト”を見て行いました。

はじめての起動の時に、設定 - 言語サポートでインストールを選んでインストールしました。

Mozc - Google 日本語入力 派生パッケージをインストールしました。

LubuntuでのXeroxのプリンタ設定方法です。

・XeroxのApeosPortプリンタの設定方法は、ここからUbuntu32ビット版のプリンタ・ドライバをダウンロードしてインストールします。

・Lubuntuを再起動します。

このPDFファイルの10ページ目からを参照して、LPD/LPRプリンタとしてIPアドレスとキュー名を入れて設定します。ベンダ名でFXを選ぶのがキモです。

・プリンタの名前は、FX-Printer-Driver-for-Linuxになります。これで問題ありません。
lubuntu_Xerox_Printer_1_140412.png
  1. 2014年04月12日 13:40 |
  2. パソコン関連
  3. | トラックバック:0
  4. | コメント:0

Yocto ProjectのZedBoard用Linuxをビルドしてみる3(ビルド成功)

Yocto ProjectのZedBoard用Linuxをビルドしてみる2”の続き。

2014年4月11日の夕方、仕事から帰ってきたら、ZedBoard用Yocto Linuxのビルドが成功していました。やった~。嬉しいです。
ZedBoard_Yocto_Linux_29_140411.png

苦節、1週間(くらいかな?)いろいろとやり直したこともありましたが、ビルドが成功して本当に良かったです。

さて、ビルドした結果のファイルを見てみましょう。ファイルは、”Building Yocto for ZED Board”によると、poky/build/tmp/deploy/images/zedboard-zynq7ディレクトリにあるそうだ。また、SDカードをビルドするには、下の4つのファイルが必要となるそうだ。

u-boot.elf
core-image-minimal-zedboard-zynq7-20131129153026.rootfs.ext2.gz.u-boot
uImage
uImage-zedboard-zynq7-mmcblk0p2.dtb

poky/build/tmp/deploy/images/zedboard-zynq7ディレクトリを下に示す。
ZedBoard_Yocto_Linux_30_140411.png

日付は違っているが、下の3つはあるが、u-boot.elf は無い。ビルドする必要があるのか?それともビルドしてあるのか?既存の提供されているu-bootを使えばよいのか?

SDカードの生成の仕方は、”meta-xilinx - Layer containing Xilinx hardware support metadata”に書いてあるそうだ。
これを見ると、”Boot using a ramdisk”と”Boot using SD card partition”があるようだ。
”Boot using a ramdisk”を見ると、Kernelは uImage で、RootFSは、core-image-minimal-zedboard-zynq7-20140410105834.rootfs.ext2.gz.u-boot を uramdisk.image.gz に名前を変えて使用するとのことだ。また、DTBは、uImage-zedboard-zynq7-ram.dtb を devicetree.dtb に名前を変更する。

boot.bin の生成の仕方は、”Xilinx Wiki - Prepare Boot Image”に解説がある。
boot.bifを生成して、

bootgen -image boot.bif -o i boot.bin

を実行するそうだ。

SDカードイメージを作って、ZedBoradでブートしてみることにする。とりあえず、FSBLとU-BOOTは既存のものを使用してみよう。
  1. 2014年04月12日 05:03 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

Yocto ProjectのZedBoard用Linuxをビルドしてみる2

Yocto ProjectのZedBoard用Linuxをビルドしてみる1”の続き。

前回、Yoctoのビルドでエラーが出てしまった。このエラーをよく見ると、fprintf()で、プリント・フォーマットの%lxが、irel->r_addend に合っていないというエラーだった。

ZedBoard_Yocto_Linux_23_140409.png

fprintf()の中なので、irel->r_addend は別に表示できなくても良いので、この部分を削除することにした。
poky/build/tmp/work/i686-linux/binutils-native/2.23.4-r4/binutils-2.23.2/bfd の elf32-microblaze.c を開いた。
ZedBoard_Yocto_Linux_24_140409.png

1885行目と1970行目の irel->r_addend とその表示部分の %lx を削除した。
ZedBoard_Yocto_Linux_25_140409.png

もう一度、

bitbake core-image-minimal

を実行した。327から再開された。
ZedBoard_Yocto_Linux_27_140409.png

2014年4月11日午前5時で 725 of 1541 です。
ZedBoard_Yocto_Linux_28_140411.png
  1. 2014年04月10日 20:36 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

2014年4月10日の日記

Yoctoのビルドを続けていますが、前回のエラーの原因を取り除いてビルドを続けていましたが、昨晩、Windows Update がかかって勝手に再起動されました。泣き~~~。

朝起きてきたら、Yocto のビルドを続けているはずのパソコンが起動画面になっていました。青くなって、起動してVirtualBoxを立ちあげ、bitbake を再度始動したら無事始まって一安心となったのも束の間で、すぐにエラーが発生しました。

もう一度最初から、Yoctoのビルドを初めます。たぶんまた同じ所でエラーが出ると思うし、3日がかりになると思います。本当にがっくりしました。

Windows Updateの設定は、ダウンロードするけどインストールしないに設定しなおしました。

Yocto Linux のZedBoard用ビルドを2014年4月10日5時ちょうどに再度開始しました。
  1. 2014年04月10日 05:13 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

Yocto ProjectのZedBoard用Linuxをビルドしてみる1

(2014年4月8日にやり直しました)

Yocto Project の ZedBoard用Linuxをビルドしてみることにした。Yocto はヤクトと読むことになったそうだ。
参考にするのは、ZedBoard.org の Building Yocto for ZED Board。これに従ってやってみた。
ビルドの環境は、VirtualBox内にインストールしたUbuntu13.10で、ゲストOSに割り当てているCPUは1だ。元のマシンは古くてスピードは期待できない。(AMD Athlon 64x2 Dual Processor 5200+ 2.7GHz、8GBメモリ)

・Yocto ディストリビューションをビルドするために、必要なパッケージ?をインストールしてローカルマシンをコンフィグ。(意訳)

sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath

ZedBoard_Yocto_Linux_1_140406.png

ZedBoard_Yocto_Linux_2_140406.png

・Yocto meta layerをダウンロード

git clone -b dora git://git.yoctoproject.org/poky.git

ZedBoard_Yocto_Linux_3_140406.png

ZedBoard_Yocto_Linux_4_140406.png

・Xilinx meta layer をダウンロード

git clone -b dora git://github.com/Xilinx/meta-xilinx

ZedBoard_Yocto_Linux_5_140406.png

ZedBoard_Yocto_Linux_6_140406.png

・meta-oe layerをダウンロード。

git clone -b dora git://github.com/openembedded/meta-oe

ZedBoard_Yocto_Linux_7_140406.png

ZedBoard_Yocto_Linux_9_140406.png

・poky ディレクトリに移動して、コマンドを実行。

cd poky
source oe-init-build-env

ZedBoard_Yocto_Linux_10_140406.png

ZedBoard_Yocto_Linux_11_140407.png

・poky/build/conf ディレクトリの下に、local.conf ができているので、これを修正するために vim を起動する。
ZedBoard_Yocto_Linux_12_140407.png

・local.conf に「MACHINE ??= "qumux86"」が書いてあるので、「MACHINE ??= "zedboard-zynq7"」に変更した。
ZedBoard_Yocto_Linux_13_140407.png

ZedBoard_Yocto_Linux_14_140407.png

・bblayes.conf を vim で編集する。
ZedBoard_Yocto_Linux_16_140407.png

BBLAYERSを以下のように変更する。

BBLAYERS ?= " \
/home/masaaki/linux_build_work/poky/meta \
/home/masaaki/linux_build_work/poky/meta-yocto \
/home/masaaki/linux_build_work/poky/meta-yocto-bsp \
/home/masaaki/linux_build_work/meta-xilinx \
/home/masaaki/linux_build_work/poky/meta-hob \
/home/masaaki/linux_build_work/meta-oe/meta-oe \
"

ZedBoard_Yocto_Linux_17_140407.png

・poky/build ディレクトリに移動して、bitbake コマンドを発行して、ビルドをスタート。

bitbake core-image-minimal

ZedBoard_Yocto_Linux_18_140407.png

ZedBoard_Yocto_Linux_19_140407.png

ただいまビルド中。bitbake を開始してから8時間後くらい。(2014年4月9日4時50分)
ZedBoard_Yocto_Linux_20_140409.png

朝、見たら、WARNINGが出てました。
ZedBoard_Yocto_Linux_21_140409.png

夕方帰ってみたら、ERRORが出てました。がっくり。。。
ZedBoard_Yocto_Linux_22_140409.png

エラーの原因をちょっとだけでも探ってみようと思います。


(追加)
hidemi_ishihara さんから教えて頂いたのだが、local.confのBB_NUMBER_THREADS、PARALLEL_MAKEの数字を変更するとパラレルビルドできるようだ。設定する数字はCPUコア数の倍ぐらいが調度よいとのことだ。Core2Duの2.5GHzでタスク3000ぐらいで(ビルド時間は)5、6時間ぐらいだそうだ。
  1. 2014年04月07日 05:24 |
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

Ascend HW-01E docomoを購入しました

今度、Ascend HW-01E docomo(スマホ)を買いました。値段は、14,780円でした。

iPhoneの維持費が高すぎるので、OCNモバイルone050 plus で維持費を抑えようということです。プランは1日50MBまで150Mbpsでその後は、200kbps、一月の料金は税別 900円(OCNモバイルone)です。050 plus はOCNモバイルone と同時申し込みなので、半額の税別 150円です。
電話番号を交換して頂いている方は、知らない 050電話番号から電話かかってきたら出て下さい。よろしくお願いします。
今までの携帯番号はガラケーで維持するか、やめちゃうか迷っています。
HW_01E_1_140405.jpg

システムをアップデートした時に面白い表示が出ていました。
HW_01E_2_140405.jpg

(追記)
ガラケーに変更すると2年縛りになるということで、SoftBankを解約してきました。携帯の電話番号が変わりますのでよろしくお願いします。電話番号は、往年の名マイコンの型番にしました。但し、この型番のマイコンは使ったことありません。
  1. 2014年04月05日 06:18 |
  2. 日記
  3. | トラックバック:0
  4. | コメント:0

AXI VDMAを使ったカメラ画像回路の作製4(SDKがRun出来ない原因不明)

AXI VDMAを使ったカメラ画像回路の作製3(カメラ・インターフェースAXI_Stream IPを更新)”の続き。

SDKでFPGA をコンフィグして、デバックしようとしたら、デバック画面で main()関数の先頭行に行かずに止まってしまう現象が直りません。

いろいろとChipScope をかけるパターンを変えてやってみたりしました。AXI4 Master MM2S のみにChipScopeをかけるとか、やってみましたが、やはり、ChipScopeを入れると、SDKでデバックしようとするとデバック画面で main()関数の先頭行に行かずに止まってしまいます。困りました。

ISE14.7が全てそうかというと違って、例えば、”ZynqのAXI_ACPポートとAXI_HPポートの性能の違い2(AXI_HPポート)”では、ChipScopeが入ったXPSプロジェクトを使っています。これは、SDKで問題なくデバック出来ます。Runも出来ます。
なぜダメなのか?の理由が全くわかないので、残念ですが、ペンディングとすることにしました。
  1. 2014年04月04日 04:35 |
  2. ZedBoard
  3. | トラックバック:0
  4. | コメント:0

備忘録、やりたいこと(2014年4月3日)

現在は、ChipScope Pro を入れた時に、SDKのデバック、というかRUN も出来ないという状況を打破するために、いろいろとパラメータ変えてやっています。ISE14.7です。設定を変えてインプリメントしまくるので時間がかかります。

今日は、自分の備忘録とやりたいことを書いておきます。

Cortex™-A9 Technical Reference Manualを読まなくっちゃ。
ソフトウェアエンジニアの素人電子工作 Raspberry Piで自動監視システム Archive
Xcell Daily Blog 読んでいると面白い。なかなか暇ないけど。。。
Xcell Journal 日本語版 86 号 40ページ ザイリンクス デザイン用のカスタム XBD ファイルの作成。カスタム XBD ファイルを作ってみたい。
GNU Radio の Building the Linux Kernel, U-Boot, & Root Filesystem with OpenEmbedded。 OpenEmbeddedは LinaroのYocto版だよね。buildしてみたい。
ZYBO Quick-Start Tutorial。XPSプロジェクトでのウィザードを使ったカスタムIPの作り方が書いてあります。
スタンフォード大学の機械学習を勉強したいですね。日本語字幕付きです。
科学英語を考える。読んでみたい。
・忘れちゃいけない Xilinx Wiki。XilinxのLinuxやMicroBlazeの情報源
・いつの間にか増えているZedBoardのチュートリアル。ZedBoard HDMI Display Controller Tutorial をやってみたい。

Alteraも見てみたいものが結構たくさんある。

OpenCL による並列コンピューティング:入門編 (Japanese Version: Introduction to Parallel Computing with OpenCL) (OJOPNCL100)
アルテラ FPGA 向け OpenCL プログラム記述方法 (Japanese Version: Writing OpenCL Programs for Altera FPGAs) (OJOPNCL200)
アルテラ FPGA 向け OpenCL実行方法 (Japanese Version: Running OpenCL on Altera FPGAs) (OJOPNCL300)

ARMベースSoC向けハードウェア・デザイン・フロー (Japanese Version: Hardware Design Flow for an ARM-based SoC) (OJSOC1000)
ARM ベース SoC 向けソフトウェア・デザイン・フロー (Japanese Ver of Software Design Flow for ARM-based SoC) (OJSOC2000)

手の内を晒してしまうみたいだが、うまく出来たとか、感想を教えて下さい。
  1. 2014年04月03日 05:10 |
  2. その他のFPGAの話題
  3. | トラックバック:0
  4. | コメント:0

SDKの Workspace Launcher が表示されなくなった時の対処方法

SDKの Workspace Launcher が何らかの原因で表示されなくなった時の対処方法を備忘録として書いておく。
SDKの Workspace Launcher は、SDKのワークスペースを指定するダイアログだ。Workspace Launcher を下に示す。
Workspace_Launcher_1_140401.png

Workspace Launcher が表示されるのは、SDKを立ちあげた時だ。ワークスペースを選択できないと、違ったプロジェクトのSDKを立ち上げる時に困ったことになるので、表示されて欲しい。だが、たまに表示されなくなるのだ。

そういう場合は、SDKの Window メニューから Preferences を選択する。
Workspace_Launcher_2_140401.png

Preferences ダイアログでGeneral -> Startup_adn Shutdown を選択する。

Refresh workspace on startup のチェックボックスにチェックが入っていないと思うので、チェックを入れる。
Workspace_Launcher_3_140401.png

これで、SDKの起動時に、Workspace Launcher が出てくると思う。

なお、このブログ記事のネタ元は、日立のページ、”Eclipse の起動または終了時のダイアログ表示について”です。
  1. 2014年04月01日 05:48 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0