今日は、奥さんは
谷川真理駅伝 に行っているので、私と娘とで
アナと雪の女王(映画 )を見てきました。なかなか良かったです。いかにもディズニーという映画でした。意外な場面もあったし、楽しめました。主題歌は素晴らしいですね。。。
そうそう、前髪が風になびく様子がとても自然でした。
2014年04月29日 18:37 |
日記
| トラックバック:0
| コメント:0
”
ZYBO Base System Design(ISE14.7版) ”の続き。
今回は、ZYBO Base System Design の Vivado 版をやってみることにした。本来は、Vivado 2013.4のプロジェクトなのだ、がVivado 2014.1に変換してやってみた。IPはアップグレードした。
最初に、すでにビットストリームの生成まで終了しているのだが、Vivado 2014.1のカスタムIPの構成を見てみよう。
Video & Image Processing の下に、HMDI Transmitter があった。IP Settings を見た。
axi_is2_adi_v1_0, AXI Display Controller, HDMI Transmitter の3つのカスタムIPがあるようだ。
ビットストリームの生成まで終了したところを下の図に示す。
結構、LUTを消費している。消費電力も1.749Wだそうだ。因みに、ソフトウェアを動作させてデモを行っている時は、Zynq7010を触ってみると、かなり熱い。パソコンのUSBポートからの電源供給ではなく、必ず、ACアダプタで電源供給する必要がある。
ブロック・デザインを下に示す。この大きさだど、HDの画面に表示しても詳細が分からない。このぐらいの規模になると階層化したいね。。。
ハードウェアをエクスポートして、SDKを立ちあげた。READMEに従って、アプリケーション・プロジェクトを作製した。FPGAにビットストリームをダウンロードして、ソフトウェアをRUNした。(Run Configurationを作製した)
但し、”
ZYBOの実験 ”さんに書いてあるように、main.cのAudoInitialize をコメントアウトしないとソフトウェアが動作しなかった。
後のデモの様子は、”
ZYBO Base System Design(ISE14.7版) ”と同様だ。
因みに、HD解像度のピクセルクロックは、ソフトウェアの表示によると、148.571 MHz だそうだ。
2014年04月29日 04:51 |
ZYBO
| トラックバック:0
| コメント:0
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 をインプリメントしてみた。
VDMAが2つも入っていて、VDMA_0はVGA用で、VDMA_1はHDMI用のようだ。
ハードウェアをエクスポートしてSDKを立ちあげた。下の図はCのプロジェクトを作製して、Cソースをコピーしてコンパイル済みの状態だ。
なお、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を立ちあげていたので、メニューが出てきた。
最初に 1 を入力して、Audio Demo を選択した。
スピーカーを繋いでいないので、Quitした。
次に、2 を選択して、VGAのデモを選択した。
これで 640 x 480 のVGA画面が表示されていた。
1 を選択して、5の 1920x1080@60Hz を選択した。
1920x1080のHD画面が表示された。カラーバーは左上に寄っている。
メインメニューに戻って、3 を入力してHDMIデモを選択した。
やはり、 640 x 480 のVGA画面が表示されていたが、HDMIの方が階調が多いので、ジャギーが無く綺麗だ。
VGA同様に、1 を選択して、5の 1920x1080@60Hz を選択した。
1920x1080のHD画面が表示された。カラーバーは同様に左上に寄っている。
2014年04月28日 05:11 |
ZYBO
| トラックバック:0
| コメント:0
”
Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする3(単体シミュレーション) ”の続き。
前回はシミュレーションを行ったが、シミュレーションでは、Vivado HLS 2013.4 で出力したラプラシアンフィルタIPと総違いは無かった。今回はChipScope Proで実際のAXIバスの波形を観察した。
最初にカメラ・データのメモリReadトランザクションから下に示す。これは、Readの最初のトランザクションだ。(図1)
多少のReadレイテンシはあるが、バースト転送中は、Waitが全くなく転送できている。Readレイテンシは一定のようなので、次のアドレスを先に投入することは無さそうだ。AXIバスのアドレス・チャネルを先行して投入されているので、少々勿体無い気がする。2番めと3番目のReadレイテンシは隠蔽することが可能だと思う。
最初のアドレス・チャネルを拡大した。(図2)
最初のアドレスは 0x19907000 だった。次のアドレスは、0x19907400, 0x19907800 だ。3つのアクセスは256バーストだった。
次に、ラプラシアンフィルタ処理後のメモリWriteトランザクションを下に示す。(図3)
最初のアドレス・チャネルを拡大した。(図4)
スタートのアドレスは、0x19ADC000 だった。
こちらは、Writeアクセスなので、アドレス・チャネルはオーバーラップしていないようだ。BVALIDのアサートががAWVALID、WVALIDのアサートの後に来ているので、リスポンス・チャネルとアドレス・チャネル、データ・チャネルはオーバーラップされている。面白いのが、WREADYのアサートだ。一旦アサートされて、すぐにディアサートされ、少し時間が立ってからアサートされている。2番めのトランザクションの始まりの部分を拡大してみよう。(図5)
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 以上離れているかどうか?は見える。
シミュレーション波形を下に示す。
Readトランザクションのシミュレーション波形から、スタート・アドレスの 0x19907000 から 0xC80(1ライン分のアドレス増分)X 3 ライン分過ぎれば定常状態なので、0x19909580 のアドレスの時にAWVALIDがアサートされた時の前が定常状態となる。そこをトリガしてみてみた。トリガポイントは1000クロック後にしてある。
1000 クロック前に、トランザクションがないので、前のトランザクションと 10 usec 以上離れている。
Writeトランザクションのシミュレーション波形から、スタート・アドレス 0x19ADC000 から 0xC80(1ライン分のアドレス増分)X 2 ライン分過ぎれば定常状態なので、0x19ADD900 のアドレスの時にAWVALIDがアサートされた時の前が定常状態となる。そこをトリガしてみてみた。トリガポイントは1000クロック後にしてある。
1000 クロック前に、トランザクションがないので、前のトランザクションと 10 usec 以上離れている。
2014年04月25日 05:27 |
Vivado HLS
| トラックバック:0
| コメント:0
”
Vivado HLS 2014.1でラプラシアン・フィルタ関数をaxi masterモジュールにする2(実機でテスト) ”の続き。
前回、Vivado HLS 2013.4 で作製したラプラシアンフィルタのIPの表示は、ソフトウェアで作製したラプラシアンフィルタと同一だったが、変換にかかる時間が遅かった。今回は、”
Vivado HLS 2013.4でラプラシアン・フィルタ関数をaxi masterモジュールにする5(単体シミュレーション) ”のプロジェクトで単体シミュレーションを行った。
下に単体シミュレーション結果を示す。
1ラインずつReadして、ラプラシアンフィルタの結果をWriteする間隔は、約141usec となった。単純に 600ラインとすると、141usec x 600ライン = 84.6msec となった。
Vivado HLS 2013.4での結果は、 約 146usec で、600ラインとすると、146usec x 600ライン = 87.6msec だった。
あまり変わらない結果となったが、それでは、前回の 100 msec が、984 msec くらいになってしまうのは、なぜだろう? (2014/06/08:追記 ソフトウェアが間違っていて、一桁遅くなっていました。ラプラシアンフィルタの実行時間は正しくは、約98 ms でした。./lap_fil_hls_axim.elf の実行結果です)
2014年04月24日 04:22 |
Vivado HLS
| トラックバック:0
| コメント:0
”
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 の画像を下に示す。
XPSの画像を下に示す。
SDKの画像を下に示す。
SDKで、
Vivado HLS 2013.4 VIvado HLS 2014.1 で作製したラプラシアンフィルタのIPのソフトウェアを実行した結果の写真を下に示す。
ソフトウェアでのラプラシアンフィルタ結果を下に示す。
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 がソフトウェアで実装してラプラシアンフィルタの実行ファイルを示す。
(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でに波形の観測を行うことにする。
2014年04月23日 04:45 |
Vivado HLS
| トラックバック:0
| コメント:0
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とデザインが統一されているようだ。
・ラプラシアンフィルタの新規プロジェクトを作って、
以前のラプラシアンフィルタ のCソースを入れてみた。
・C Simulation は成功した。
・Run C Synthesis を行った。
そのログを下に示す。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 を行った。これはエラーになってしまった。
・Export RTL でXPSのPcoreとしてIP化を行った。
・Vivado HLS 2013.4とVivado HLS 2014.1の生成されたIPを構成するVerilog HDLファイルの比較を行った。Vivado HLS 2014.1で生成されたVerilog HDLファイルのほうが減っている。
2014年04月22日 04:56 |
Vivado HLS
| トラックバック:0
| コメント:0
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”で実行パーミッションを付加する。
・次に、Xilinx_Vivado_SDK_2014.1_0405_1/tps/lnx64/jre/bin ディレクトリのファイル全てに、実行パーミッションを付加する。
・
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のインストール画面を出すことができた。
・インストールはできたのだが、Lubuntuのメイン・メニューにVivadoの項目がなかった。
・
LXMenuEditor - lxmed を使用して、メイン・メニューにVivadoの項目を表示することにした。日本語の解説ページは、
”LXMED で Lubuntu 11.04 のメニューを編集する ”。(日本語のブログの解説にしたがってやれば良いが、install.sh は、”chmod a+x install.sh”で実行パーミッションを付加する必要があった)
・次に、LXMenuEditor はJREを使用するので、JREをインストールした。
・メイン・メニューから、Main Menu Editor を起動して、プログラムのカテゴリにVivado 2014.1 を追加した。(残念ながらカテゴリは追加できないようだ)
・これでメイン・メニューのプログラムのカテゴリにVivado 2014.1 を表示することができた。Vivado 2014.1 を選択すれば Vivado 2014.1 が起動する。
・Vivado 2014.1 で Example のビットストリームを生成したところを下に示す。
(注1)上手くいかない時は、Lubuntuを再起動してみてください。
(注2)Vivado のライセンスやレジストリ、インストール・ログなどは、rootのホーム・ディレクトリの下に、.Xilinx ディレクトリが出来ていて、その下にあります。
2014年04月21日 05:33 |
Linux
| トラックバック:0
| コメント:0
2014年4月20日(日曜日)に
かすみがうらマラソン を走ってきました。
J:COMブースにお世話になって、荷物を置かせて頂きました。阿見アスリートクラブの皆様、お世話になりました。ありがとうございました。
奥さんは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人中でした。
2014年04月20日 22:00 |
日記
| トラックバック:0
| コメント:0
Vivado 2014.1で、
Github に上げてあるVivado 2013.4で作ったVivado_ZYBO_LED_test2プロジェクト をインプリメントしてみた。
・Vivado 2014.1を立ちあげた。
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をアップグレードした後です。
・ビットストリームの生成まで終了したところです。前のバージョンからIPをアップグレードしても、問題なくビットストリームの生成まで終了しました。
・ブロック・デザインを開いてみました。AXI_INTERCONNECT の図が変わっています。Signalsタブが追加されていました。
・Signalsタブの無いようです。PSのFCLK_CLK0 が見えました。
・ハードウェアをエクスポートしてSDKを立ち上げると、スプラッシュ・スクリーンが変わっていました。
・以前のVivado 2013.4のプロジェクトをVivado 2014.1に変換したプロジェクトでは、どうしてエラーが出てしまいました。Cleanしてもエラーが消えません。
・Vivado_ZYBO_LED_test2_141\Vivado_ZYBO_LED_test2.sdk\SDK\SDK_Export 以下のファイルをすべて消して、もう一度、ハードウェアをエクスポートしました。
・SDKが立ち上がって、hw_platform_0 を作ったところです。
・led4_axi_lite_slave_bsp, led_axi_lite_slave プロジェクトを作製しました。コンパイルもOKでした。
・SDKからProgram FPGAするとダイアログがかなり変わっていました。
・Run Configuration のダイアログです。Runボタンをクリックします。
・led4_axi_lite_slaveソフトウェアが走った状態です。
・Tera Termに出ている表示です。LED Interval Resiger の設定とLED4 Enableも問題なく出来て、LEDの表示が出来ました。
Vivado 2013.4で作ったプロジェクトをVivado 2014.1で開いても、SDK_Exportフォルダ以下のファイルを消去する必要はありましたが、それ以外は問題なく出来ました。
2014年04月19日 04:52 |
Vivado
| トラックバック:0
| コメント:0
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は追加のセンサをつないだり、外部出力をつないだりなどの外部インターフェースに特化することで、いろいろなことが出来ると思います。
2014年04月18日 04:30 |
マイコン関連
| トラックバック:0
| コメント:0
今日、
@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 サポートです。
2014年04月17日 06:29 |
Vivado
| トラックバック:0
| コメント:0
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です)
下の図が Windows の Vivado 2013.4 の SDKです。
こちらは、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への対応も書いてあるので、こっちを見たほうが良いと思います。
2014年04月17日 05:46 |
Vivado
| トラックバック:0
| コメント:0
ZYBO 用の
LEDテスト・プロジェクトを作ってGithub にアップロード しておきました。その使い方と注意点を書いておくことにします。
まずは、
ZYBO用LEDテスト・プロジェクト(Vivado 2014.3)をGithub からダウンロード します。Clone してもよいのですが、ダウンロードするのはZipファイルとします。
・
Github の Vivado_ZYBO_LED_test2 ページ に行って、Download ZIP ボタンをクリックします。
・保存のダイアログが開くので、好きな場所にセーブします。Vivado_ZYBO_LED_test2-masterフォルダの下にVivado 2013.4 のプロジェクトがあります。
・次に、ZIPファイルを解凍する場所ですが、浅い階層に置いて下さい。私は、C:\Users\Masaaki\Documents\Vivado\Zynq\Vivado_ZYBO_LED_test2-master です。
・例えば、C:\Users\Masaaki\Documents\Vivado\Zynq\ZYBO\temp に解凍するとファイル名が長すぎるとのエラーが出てしまいます。
ともかく
極力浅い階層に解凍して下さい。 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 プロジェクトを開きます。
・左の Flow Navigator で、Program and Debug -> Generate Bitstream をクリックすると、論理合成、インプリメント、ビットストリームの生成まで行います。
・ビットストリームの生成まで終了したら、Design Hierarchy から、ブロック・デザインの Vivado_ZYBO_LED_test_i をダブルクリックして、ブロック・デザインを開きます。
注:ブロック・デザインが表示された状態で、ハードウェア・エクスポートをする必要があります。 ・Vivado_ZYBO_LED_testのブロック・デザインを開いたまま、Fileメニューから Export -> Export Hardware for SDK... を選択します。
・Export Hardware for SDKダイアログが開きます。Launch SDK にチェックを入れて、OKボタンをクリックします。
・Module Already Exported ダイアログが出ますが、Yes ボタンをクリックします。
・SDKが立ち上がります。F5を押して、led4_axi_lite_slave.c を再表示させてあります。
・ZYBOの電源をONします。
・SDKの Xilinx Tools メニューの Program FPGA を選択します。
・Program FPGA ダイアログが出ますが、まだ、Program ボタンはクリックできません。
・Bitstream の右の Browse... ボタンをクリックして、bitファイルを選択します。
・Vivado_ZYBO_LED_test2-master\Vivado_ZYBO_LED_test2.runs\impl_1 フォルダの Vivado_ZYBO_LED_test_wrapper.bit を選択します。
・ZYBOボードの緑色のDONE LEDが点灯します。電流は0.23A。
・これが、FPGAをプログラムした後のSDKの画面です。
・Tera Tremなどのターミナルソフトを立ちあげます。
・シリアルポートに設定します。
・設定メニューから端末を選択して、ローカルエコーにチェックを入れます。
・設定メニューからシリアルポートを選択して、ボー・レート:115200、データ8ビット、パリティ none、ストップ1ビット、フロー制御 none に設定します。
・Run メニューから Run Configuration...を選択します。
・led4_axi_lite_slave_Debug 表示されるので、Runボタンをクリックします。
これで、ソフトウェアが走ります。
・Tera Termにメニューが表示されます。
・ZYBOの電流値は0.30Aです。
・4 のキーを押して、LED Interval Resister を設定します。値は、50000000を設定すると、0.5秒毎にLEDの値がインクリメントされるので、これを設定します。(クロックは100MHzです)
・2 のキーを押すとLEDがカウントを始めます。
2014年04月16日 05:27 |
ZYBO
| トラックバック:0
| コメント:0
”
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 ディレクトリにコピー&ペーストした。
・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 に名前を変更した。
・既存の u-boot.elf と zynq_fsbl.elf をコピー&ペーストした。
・boot.bif を新規作成した。
・コマンド
bootgen -image boot.bif -o i BOOT.bin
を実行して、BOOT.bin を生成した。
・BOOT.bin が生成されている。
・SDカードに書き込んだ。
ZedBoardにSDカードを入れて、ブートしてみたが、Tera Termに何も表示されなかった。。。試し方はこれで良いのと思うのだが、どうだろうか?
2014年04月14日 18:49 |
Linux
| トラックバック:0
| コメント:0
Let's note Y2 に Lubuntu をインストールしたので、家の奥さんのパソコンだった Windows XP の
Dell Inspiron 1501 に Lubuntu をインストールしてみたが、これがだいぶ苦労した。
Lubuntu の32ビット版CDを入れてブートすると最初に言語を選ぶ画面が開く。
次にインストールの画面が開く。(私が写り込んでいるのはご愛嬌ということで。。。)Lubuntuをインストールを選んでリターンキーを押した。
すると、真っ白の画面かもしくは、それに色とりどりの細い横線が入った画面になってしまう。
これは困った。どうしても回避できない。XubuntuやMint Linux、Debian いろいろとやってみたが同様だった。皆同じ画像表示ソフト使っているようだった。
困ったので、ネットを検索するといろいろと情報はあったのがだが、中でもこれが参考になった。”
Thread: Dell Inspiron 1501 + Coloured Vertical Lines ”つまり、GRUBのオプションに nomodeset を加えれば良いということのようだ。
そこで、Lubuntu のインストール画面で、F6キーを押すとGRUBのオプションが設定できるので、nomodeset をリターンキーで選択して、ESCキーで元に戻り、これで Lubuntuをインストールすると変な画面にならずにインストールをすることができた。良かった。
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 の起動画面。
Firefox でFPGAの部屋を表示した画面とターミナル
Dell Inspiron 1501 への Lubuntu のインストールでは、相当苦労したが、インストールできて良かった。
次は、プリンタ、Canon MG7130を使えるようにしたい。
2014年04月13日 06:31 |
Linux
| トラックバック:0
| コメント:2
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になります。これで問題ありません。
2014年04月12日 13:40 |
パソコン関連
| トラックバック:0
| コメント:0
”
Yocto ProjectのZedBoard用Linuxをビルドしてみる2 ”の続き。
2014年4月11日の夕方、仕事から帰ってきたら、ZedBoard用Yocto Linuxのビルドが成功していました。やった~。嬉しいです。
苦節、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ディレクトリを下に示す。
日付は違っているが、下の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は既存のものを使用してみよう。
2014年04月12日 05:03 |
Linux
| トラックバック:0
| コメント:0
”
Yocto ProjectのZedBoard用Linuxをビルドしてみる1 ”の続き。
前回、Yoctoのビルドでエラーが出てしまった。このエラーをよく見ると、fprintf()で、プリント・フォーマットの%lxが、irel->r_addend に合っていないというエラーだった。
fprintf()の中なので、irel->r_addend は別に表示できなくても良いので、この部分を削除することにした。
poky/build/tmp/work/i686-linux/binutils-native/2.23.4-r4/binutils-2.23.2/bfd の elf32-microblaze.c を開いた。
1885行目と1970行目の irel->r_addend とその表示部分の %lx を削除した。
もう一度、
bitbake core-image-minimal
を実行した。327から再開された。
2014年4月11日午前5時で 725 of 1541 です。
2014年04月10日 20:36 |
Linux
| トラックバック:0
| コメント:0
Yoctoのビルドを続けていますが、
前回のエラー の原因を取り除いてビルドを続けていましたが、昨晩、Windows Update がかかって勝手に再起動されました。泣き~~~。
朝起きてきたら、Yocto のビルドを続けているはずのパソコンが起動画面になっていました。青くなって、起動してVirtualBoxを立ちあげ、bitbake を再度始動したら無事始まって一安心となったのも束の間で、すぐにエラーが発生しました。
もう一度最初から、Yoctoのビルドを初めます。たぶんまた同じ所でエラーが出ると思うし、3日がかりになると思います。本当にがっくりしました。
Windows Updateの設定は、ダウンロードするけどインストールしないに設定しなおしました。
Yocto Linux のZedBoard用ビルドを2014年4月10日5時ちょうどに再度開始しました。
2014年04月10日 05:13 |
日記
| トラックバック:0
| コメント:0
(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
・Yocto meta layerをダウンロード
git clone -b dora git://git.yoctoproject.org/poky.git
・Xilinx meta layer をダウンロード
git clone -b dora git://github.com/Xilinx/meta-xilinx
・meta-oe layerをダウンロード。
git clone -b dora git://github.com/openembedded/meta-oe
・poky ディレクトリに移動して、コマンドを実行。
cd poky source oe-init-build-env
・poky/build/conf ディレクトリの下に、local.conf ができているので、これを修正するために vim を起動する。
・local.conf に「MACHINE ??= "qumux86"」が書いてあるので、「MACHINE ??= "zedboard-zynq7"」に変更した。
・bblayes.conf を vim で編集する。
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 \ " ・poky/build ディレクトリに移動して、bitbake コマンドを発行して、ビルドをスタート。
bitbake core-image-minimal
ただいまビルド中。bitbake を開始してから8時間後くらい。(2014年4月9日4時50分)
朝、見たら、WARNINGが出てました。
夕方帰ってみたら、ERRORが出てました。がっくり。。。
エラーの原因をちょっとだけでも探ってみようと思います。
(追加)
hidemi_ishihara さんから教えて頂いたのだが、local.confのBB_NUMBER_THREADS、PARALLEL_MAKEの数字を変更するとパラレルビルドできるようだ。設定する数字はCPUコア数の倍ぐらいが調度よいとのことだ。Core2Duの2.5GHzでタスク3000ぐらいで(ビルド時間は)5、6時間ぐらいだそうだ。
2014年04月07日 05:24 |
Linux
| トラックバック:0
| コメント:0
今度、
Ascend HW-01E docomo (スマホ)を買いました。値段は、14,780円でした。
iPhoneの維持費が高すぎるので、
OCNモバイルone と
050 plus で維持費を抑えようということです。プランは1日50MBまで150Mbpsでその後は、200kbps、一月の料金は税別 900円(OCNモバイルone)です。050 plus はOCNモバイルone と同時申し込みなので、半額の税別 150円です。
電話番号を交換して頂いている方は、知らない 050電話番号から電話かかってきたら出て下さい。よろしくお願いします。
今までの携帯番号はガラケーで維持するか、やめちゃうか迷っています。
システムをアップデートした時に面白い表示が出ていました。
(追記)
ガラケーに変更すると2年縛りになるということで、SoftBankを解約してきました。携帯の電話番号が変わりますのでよろしくお願いします。電話番号は、往年の名マイコンの型番にしました。但し、この型番のマイコンは使ったことありません。
2014年04月05日 06:18 |
日記
| トラックバック:0
| コメント:0
”
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も出来ます。
なぜダメなのか?の理由が全くわかないので、残念ですが、ペンディングとすることにしました。
2014年04月04日 04:35 |
ZedBoard
| トラックバック:0
| コメント:0
SDKの Workspace Launcher が何らかの原因で表示されなくなった時の対処方法を備忘録として書いておく。
SDKの Workspace Launcher は、SDKのワークスペースを指定するダイアログだ。Workspace Launcher を下に示す。
Workspace Launcher が表示されるのは、SDKを立ちあげた時だ。ワークスペースを選択できないと、違ったプロジェクトのSDKを立ち上げる時に困ったことになるので、表示されて欲しい。だが、たまに表示されなくなるのだ。
そういう場合は、SDKの Window メニューから Preferences を選択する。
Preferences ダイアログでGeneral -> Startup_adn Shutdown を選択する。
Refresh workspace on startup のチェックボックスにチェックが入っていないと思うので、チェックを入れる。
これで、SDKの起動時に、Workspace Launcher が出てくると思う。
なお、このブログ記事のネタ元は、日立のページ、”
Eclipse の起動または終了時のダイアログ表示について ”です。
2014年04月01日 05:48 |
EDK
| トラックバック:0
| コメント:0