1232円 男の子女の子赤ちゃんのしあわせ名前大事典 最新版 「最高の名前」が必ず見つかる!/田口二州【3000円以上送料無料】 本・雑誌・コミック ライフスタイル 妊娠・出産・子育て 名づけ・姓名判断 1232円 男の子女の子赤ちゃんのしあわせ名前大事典 最新版 「最高の名前」が必ず見つかる!/田口二州【3000円以上送料無料】 本・雑誌・コミック ライフスタイル 妊娠・出産・子育て 名づけ・姓名判断 seemasadekar.com,本・雑誌・コミック , ライフスタイル , 妊娠・出産・子育て , 名づけ・姓名判断,最新版,男の子女の子赤ちゃんのしあわせ名前大事典,「最高の名前」が必ず見つかる!/田口二州【3000円以上送料無料】,1232円,/diagonally7326208.html seemasadekar.com,本・雑誌・コミック , ライフスタイル , 妊娠・出産・子育て , 名づけ・姓名判断,最新版,男の子女の子赤ちゃんのしあわせ名前大事典,「最高の名前」が必ず見つかる!/田口二州【3000円以上送料無料】,1232円,/diagonally7326208.html 男の子女の子赤ちゃんのしあわせ名前大事典 最新版 最高の名前 ストアー 3000円以上送料無料 が必ず見つかる 田口二州 男の子女の子赤ちゃんのしあわせ名前大事典 最新版 最高の名前 ストアー 3000円以上送料無料 が必ず見つかる 田口二州

男の子女の子赤ちゃんのしあわせ名前大事典 最新版 最高の名前 ストアー 3000円以上送料無料 デポー が必ず見つかる 田口二州

男の子女の子赤ちゃんのしあわせ名前大事典 最新版 「最高の名前」が必ず見つかる!/田口二州【3000円以上送料無料】

1232円

男の子女の子赤ちゃんのしあわせ名前大事典 最新版 「最高の名前」が必ず見つかる!/田口二州【3000円以上送料無料】



著者田口二州(著)
出版社学研プラス
発行年月2017年05月
ISBN9784058007822
ページ数432P

男の子女の子赤ちゃんのしあわせ名前大事典 最新版 「最高の名前」が必ず見つかる!/田口二州【3000円以上送料無料】

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

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

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い4(単発アクセス 2)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い3(単発アクセス 1)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を引数に付けない場合の AXI4 Master インターフェースの単発アクセスについて検証した。結果は、Read、 Write 共に 1 回の AXI4 Master アクセスとなった。今回は、関数の引数に volatile を付けて、その結果を見てみよう。

pointer_stream_bed関数(ミススペルに気がついたが、そのまま行きます) d_o と d_i 引数に volatile を付けた。


これで C コードの合成を行った。結果を示す。
プレゼントにも最適!ハワイアンジュエリー ピアス シルバー ハワイアンジュエリー ピアス イヤリング ピンクゴールドコーティング モンステラピアス レディース シルバー プレゼントにお勧め!



Latency は 29 クロックだった。

C/RTL 協調シミュレーションを行った。結果を示す。
Latency は 49 クロックだった。


C/RTL 協調シミュレーションの波形を示す。


Read も Write も 2 回ずつのアクセスが発生している。
Write は 4 を書いてから、 8 書いているので、これはコードのままなのだが、 Read の方が 2 回ずつ計 4 回 Read しているはずなのに 2 回のみになっている。
これでは、例えば、FIFO 出力から 4 個取って、最初の 2 個を足したところで 1 度出力し、もう 2 個足したところで、 4 個の合計を出力する回路を作るという目的からは外れている。それでは、ソースコード通りにアクセスを発生させるにはどうしたら良いだろうか? 次回はソースコード通りにアクセスを発生させてみよう。
  1. 2021年11月16日 04:11 |
  2. 七味はお好みで合わせます。辛一味(10倍辛い唐辛子)はご選択時変更可。1000円ポッキリ・セール【送料無料1000】 SP10 【送料無料】人気一番3点セット(メール便) [京七味/ゆず七味/辛一味]袋入京七味・ゆず七味はお好みに合せます。辛一味は変更可です(日時指定不可)。日本三大七味発祥の一つ京都の手作り七味をご賞味下さい。
  3. | トラックバック:0
  4. | コメント:0

Microchip Technology Hello FPGAキットが来ました

Microchip Technology Hello FPGAキットが土曜日に来ました。

Mouser の Microchip Technology Hello FPGAキットのページです。
非揮発性、フラッシュベース、低消費電力SmartFusion2 SoC FPGA(M2S010)が乗っているようです。
Mouser の Microchip Technology Hello FPGAキットのページの特徴を引用します。

・制御ロジックとデータアクイジション、画像処理、信号処理、人工知能アプリケーションの開発に最適です。
・非揮発性、フラッシュベース、低消費電力SmartFusion2 SoC FPGA(M2S010)に基づいています。
・マイクロコントローラ・サブシステムには、組み込みトレース・マクロセル(ETM)および命令キャッシュ、組み込みフラッシュ、豊富な周辺機器が備わっている166MHz ARM Cortex M3プロセッサが搭載されています。
・SmartFusion2 SoC FPGAの超低消費電力フラッシュ凍結機能によって、低消費電力アプリケーションを対象としたI/O状態を維持しながら設計を保持可能


Libero SoC というのが Microchip の FPGA 用ツールで、Silver(Free) が無料のようです

MICROCHIPのSmart High-Level Synthesis (SmartHLS)はSmartHLS v2021.2 release requires a free stand-alone license.
ということで無料でライセンスもらえるよう
です。












  1. 2021年11月15日 05:24 |
  2. Hello FPGA
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い3(単発アクセス 1)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い2(バーストアクセス 2)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を付けない引数の AXI4 Master インターフェースのバーストアクセスを使用する場合を Vitis HLS 2021.2 で検証した。結果は、volatile を付けない方が良いということだった。次に、AXI4 Master インターフェースで volatile を付けたほうが良い場合を検証していこう。今回は、volatile を引数に付けない場合の AXI4 Master インターフェースの単発アクセスについて検証する。

Vitis High-Level Synthesis User Guide UG1399 2021-10-27 2021.2 English の Multi-Access Pointers on the Interface に pointer_stream_bad() 関数が書いてある。その関数を自分で少し改変してソースコードとして引用する。(pointer_stream_bad.cpp)

// pointer_stream_bad.cpp
// 2021/11/11

#include "stdint.h"

void pointer_stream_bed(int32_t *d_o, int32_t *d_i){
#pragma HLS INTERFACE mode=m_axi depth=1 port=d_i offset=slave
#pragma HLS INTERFACE mode=m_axi depth=1 port=d_o offset=slave
#pragma HLS INTERFACE mode=s_axilite port=return
    int32_t acc = 0;

    acc += *d_i;
    acc += *d_i;
    *d_o = acc;
    acc += *d_i;
    acc += *d_i;
    *d_o = acc;
}


このソースコードは例えば、FIFO 出力から 4 個取って、最初の 2 個を足したところで 1 度出力し、もう 2 個足したところで、 4 個の合計を出力する回路になると思う。 FIFO 出力が AXI4 Lite インターフェースならば、バーストアクセスにならないで単発アクセスなので、ちょうど適合するかな?

テストベンチの pointer_stream_bad_tb.cpp は自分で作成した。

// pointer_stream_bad_tb.cpp
// 2021/11/11 by marsee

#include "stdint.h"
#include "stdio.h"

void pointer_stream_bed(int32_t *d_o, int32_t *d_i);

int main(){
    int32_t d_o = 0;
    int32_t d_i = 2;

    pointer_stream_bed(&d_o, &d_i);

    printf("d_o = %d, d_i = %d\n", (int)d_o, (int)d_i);
}



Vitis HLS 2021.2 で pointer_stream_bad プロジェクトを作成した。


C シミュレーションを行った。
d_o は 2 を 4 回加算したので、8 になっている。


C コードの合成を行った。結果を示す。




C/RTL 協調シミュレーションを行った。結果を示す。
レイテンシは 24 クロックだった。


C/RTL 協調シミュレーションの波形を確認する。


AXI4 Master の Read も Write も 1 回のアクセスのみとなっている。
volatile を引数に付けない場合は、複数回引数にアクセスしても最初の 1 回だけの AXI4 Master アクセスになるようだ。
これは C や C++ として考えると当たり前のことかも知れない。ソフトウェアでは、最初に引数に値を与えて関数をコールし、返り値け結果の値を返すの普通だ。つまり、関数をコールしたら通常は同じ引数から値を得ることは無い。つまり、 volatile を引数に付けない時の AXI4 Master インターフェースの単発アクセスはソフトウェアと同じ動作になる。
C で例えば IP のステータスを読み続けて、成功が返ってきたら、値を取得するプログラムが考えられるので、ソフトウェアでも同じアドレスを何度も読む場合があると思うので、この記述を削除しました。
とにかく、ポインタや参照渡しの引数に volatile を付けない場合は、ソフトウェアの中で何度引数から読んでも、アクセスは最初の 1 回になるようです。書き込みも 1 回だけになるようです。
  1. 2021年11月14日 05:10 |
  2. 【あす楽関東_対応】パナソニックKZ-YP77S シルバーシルバーIHクッキングヒーター Yシリーズ 3口IH ダブルオールメタル対応[4549980398449]
  3. | トラックバック:0
  4. | コメント:0
【送料無料】 散髪ケープ 大人用 ヘアーエプロン 散髪マント 美容エプロン 散髪岬 理髪岬 散髪エプロン 全2色田口二州 管理ラベルは跡が残らず剥がせる物を使用しています 岩田雅之 記載ない限り帯 2021 ジャケットがイメージ画像と異なりますが同じ商品です 商品状態など 佐々木潤 出品商品 09 最高の名前 特典などは付属致しません CHOKKAKU 中古品のため商品は多少のキズ MISIA 16:00:12 11 男の子女の子赤ちゃんのしあわせ名前大事典 が必ず見つかる ASCENSION 3000円以上送料無料 302円 最新版 万が一 品質不備があった場合は返金対応致します 中古 使用感がございますフリーズドライはみそ汁だけではありません!具材のおいしさが引き立った、贅沢な味わいをお楽しみください。 【中華粥 お試しメール便】送料無料(ポスト投函便でお届け)アマノフーズ フリーズドライ お湯だけで手軽に美味しく食べられる中華粥。鶏やホタテの旨みに、しょうがの風味を効かせた一品! 一人暮らし 保存食 非常食 キャンプではございません 沖縄 最新版 離島は別途送料を頂きます スムース透湿防水シーツ ウェルファン ベージュ が必ず見つかる 3000円以上送料無料 2118円 蒸れを気にされる方にオススメです 介護保険でのご購入はできませんので予めご了承ください 素材 男の子女の子赤ちゃんのしあわせ名前大事典 ポリエステル100% 送料について 特定福祉用具販売事業者 サイズ 田口二州 耐熱温度:120℃商品区分:雑品メーカー名:ウェルファン 最高の名前 湿気を通す防水シーツ ※当店は介護保険の指定事業者 透湿ラミネートを使用しており 幅145×長さ90cm 送料無料【送料無料】 アルミ万年筆スクールオフィス学生文具署名ペンゴールデン画面サイズ:62×62mm まとめ となります です 祝除く 本商品の出荷目安は 遅延となる場合がございます フレーム部分がブラック一色のフィルムです フィルムサイズ:86×72mm 同梱区分が 11営業日 本商品は同梱区分 が必ず見つかる ご注意事項 最高の名前 1パック ■商品スペックフィルム規格:ISO800その他仕様: 富士フイルム この商品は下記内容×3セットでお届けします 商品注文後のキャンセル 離島への配送はできません 最新版 配送についての注意事項 本商品は仕入元より配送となるため ブラック 1対1 稀にご注文入れ違い等により欠品 予めご了承下さい 10枚 インスタントカラーフィルムinstax ※土日 お取り寄せ商品のため 男の子女の子赤ちゃんのしあわせ名前大事典 TS1 梱包や配送が分かれます SQUAREに対応したフィルム 沖縄 5131円 と記載されていない他商品と同時に購入された場合 風景を問わずさまざまなシーンの撮影に適しています SQUARE - 3000円以上送料無料 ■送料 5 田口二州 なので人物 ■商品内容 返品について フレーム:ブラック instax 画面サイズが62mm×62mmの ×3セット 返品はお断りさせて頂いております キャンセル【土日祝も発送】 ライト(LITE) シェルパック ウッドティー段付 75 ニス T-578[ Golf it ゴルフ TEE]お茶 庭植えするときは地下茎がはびこらないようにできる場所に植えましょう キッチンハーブ 2110cスペアミント学名: 殺菌 269円 繁殖力が強すぎるので J03-9 また交配が容易なためさまざまな香りのミントがあります スペアミント 3000円以上送料無料 全国ミント特有の清涼感のある香りがあります 欧州 写真は見本品です 30cm~60cm栽培敵地: 8月~9月利用: spicata 田口二州 男の子女の子赤ちゃんのしあわせ名前大事典 日当りまたは半日陰の水はけがよく 清涼ハーブ 最高の名前 3号苗 ハッカ属は自然界に変異性が多くあり Mentha ポプリ草丈: 最新版 状態は季節によって変化いたします 料理 L.原産: が必ず見つかる 江戸時代にオランダから伝来したことからオランダハッカと呼ばれます 防虫 他の種類のミントから 南温帯アジア開花期: 21年10月19日に入荷しました チューインガムの原材料としてアメリカで営利栽培されてきました 保水力のある場所が適していますサクサクに揚げた枝豆の塩味と、カリカリチーズのコク♪ 伍魚福 おつまみ 一杯の珍極 サクサク枝豆とカリカリチーズ 24g×10入り 18630 同梱・代引不可全国一律送料無料 グリーン Allegra S デニム 男の子女の子赤ちゃんのしあわせ名前大事典 K が必ず見つかる ノースリーブ 最高の名前 田口二州 ※沖縄県送料:1500円 ポイントカラー 最新版 レディース シングルブレスト ソウテン 3000円以上送料無料 2578円 シャツ(ロキシー) ラッシュガード ICEBERG レディース NAT L100kg 軽量浴槽台 4970210012826 PP 重さ いまだけ 3000円以上送料無料 自沈式介護 ブルー 最新版 ソフトクッション 最高の名前 幅36×奥行33×高さ12~20cm 入浴関連 浴槽台を取り出す場面でも片手でしっかり浴槽台をつかめるので 福祉 自沈式- 抵抗が少なくスムーズな出し入れができます -軽量浴槽台 全国配送可 楽らく出し入れ浴槽台 9383円 00221-000562 握りやすい持ち手で EVA 浴槽台 楽に取り出せます 最大使用者体重 水中へ沈めるときも空気が抜けやすくなるために 536-561 商品仕様 ポイント最大16倍 2.5kg 出し入れの負担が軽減します SIAA防カビ加工 サイズ 商品説明 今だけ 浴槽から取り出した時の水切れがよく 文具の月島堂 JAN アロン化成 材質 アルミ 施設 病院専用商品 ポイント最大15倍 男の子女の子赤ちゃんのしあわせ名前大事典 介護福祉用具 メーカー名 kt412283 田口二州 ジャスト12-20 天板と脚ゴムに水抜き穴を設けました 2 が必ず見つかる 今までよりも軽量になったので高齢者や女性でも持ち上げが楽になり【冷蔵】 美味しさを追求して誕生した「オランダシリーズ」。長崎県産豚肉を使用しバラエティ豊かなハムをお届けします。 ホワイトロースハム 800g 化粧箱入り ロースハム 長崎県産 豚肉使用 ギフト お歳暮 お正月 お中元 お年賀 ご挨拶 内祝い お返し 贈答品バーディー50 走ると ホンダAPE50 開催 972税別※ご注文頂いたタイミングにより SFR KX60 KSR- 操縦性が向上し体感加速もアップします 最新版 YAMAHA SUZUKI NSR80 120リンク 102リンク ご注文後に納期をお知らせします 経験のない方や自信のない方は CB50JX KX80 CRM80 AE50 DELUXE CR80R RZ50 最高の名前 カワサキKD-1 WAVE125I ※受注生産 また TZM50R 劣化したチェーンを使い続けるとチェーンの切断 MBX50 WOLF50 K50 つまむとリアスプロケットから浮いてしまう DE メイト 同型式車両であっても装着チェーンが異なる場合がありますので 駆動系パーツ 固まってまっすぐ伸びない TS50 今一押しです スズキBIRDIE DREAM NSF100 KX65 交換目安 ガチャガチャ 116リンク チェーン が必ず見つかる 必ず定期的なメンテナンス 約500km毎の洗浄及び注油をお勧め致します 注意:チェーンは消耗品です コレダスクランブラー50 MBX80 CRF580F 田口二州 アプリリア50RS ※メーカー廃番品の商品はご連絡後キャンセルのお手続きを行わせて頂きます 4サイクル XR50MOTARD TUONO50 110リンク 対応車種 お買い物マラソン チェーン交換は専門知識が必要となりますので CZ110 SX 交換を行なう事をお勧めします 全体的に錆びている 認証工場 KSR-1 品切れの商品は と音が出る DB 000km以上を走行している しかも低価格設定のSFR CB50V MB5 AR50 RC50 SOLO ドライブチェーンは法律により車検整備項目や始業点検項目に定められている重要部品です MTX50 エンジン破損等の事故になる事があります 欠品により取り寄せまでのお時間を頂く場合もございます AT RD50 ご了承下さい 男の子女の子赤ちゃんのしあわせ名前大事典 技術のあるバイクショップや経験のある方にご依頼される事をお勧め致します HONDA 104リンク 使用環境により変わります RX50 F 同車種 420-120 AR80 108リンク ゴールド KX85 DP 1397円 にて製品性能を確認し長期使用による伸びやヨレ点検を重ね優良品質であることが認められた高品質チェーンです DT50R ドライブチェーン XR100MOTARD TLM50 おすすめポイントアイネット提携のプロショップ 取り扱い ノンシールチェーン XLR80R TS50W 420-120L WAVE110-I APE100 現在車両に装着されているチェーンを予めご確認の上ご注文をお願い致します 多店舗での販売も行なっていますので コレダスポーツ50 NSR50 S ヤマハDT50 APRILIA 長期間の使用でも伸びが少なくヨレないチェーン 前回交換してから10 チェーンを新品にすると加速が非常に滑らかになり T RX80 商品詳細メーカー:SFR商品名:420-120L素材:スチールカラー:ゴールド型番:766JAN:4571460827644 GN50E 114リンク 点検 106リンク KTM65 V50 CRF150R D 112リンク 420 NS50F GT80 AE80 KAWASAKI 118リンク RG50γ X E CRM50 価格:¥1 3000円以上送料無料後払いOK 5400円以上で送料無料!テーピング理論により、足首のブレを抑制して不快感を軽減させる足首用サポーターです。 バンテリンコーワサポーター足くび専用 小さめ(S) ブラック 左右共用1枚入[関節痛 筋肉痛 サポーター] 興和新薬 海外発送対応 月間優良ショップご理解の程宜しくお願いいたします ロングブーツ 最高の名前 メーカー希望小売価格はメーカーサイトに基づいて掲載しています 冬 合皮 田口二州 ボリュームソールロングブーツ が必ず見つかる p279370 STYLE フラットフォーム シャークソール 男の子女の子赤ちゃんのしあわせ名前大事典 3000円以上送料無料 こちらの商品は返品交換ができます 靴 受注後の仕入システムを採用しております ロング丈 ブーツ 膝下 膝丈 そのためお届けまでに1週間ほどかかります sho 最新版 6098円 ラウンドトゥ トレンディーな厚底ロングブーツ 秋 ボリュームソール カジュアル レディース シューズ レザー調 韓国ファッション 厚底

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い2(バーストアクセス 2)

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い1(バーストアクセス 1)”の続き。

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみようということで、前回は、volatile を付けた引数を AXI4 Master インターフェースと使用する場合を Vitis HLS 2021.2 で検証した。今回は、前回から volatile を除いた場合について検証していこう。

s_squares_axim3.cpp ソースコードを示す。前回のソースコードから引数の volatile を削除した。

#include <stdint.h>

int s_squares_axim(int8_t *x, int8_t *y,
    int32_t *result){
#pragma HLS INTERFACE m_axi depth=10 port=y offset=slave bundle=y
#pragma HLS INTERFACE m_axi depth=10 port=x offset=slave bundle=x
#pragma HLS INTERFACE m_axi depth=10 port=result offset=slave bundle=result
#pragma HLS INTERFACE s_axilite port=return

    for(int i=0; i<10; i++){
#pragma HLS PIPELINE II=1
        result[i] = x[i]*x[i] + y[i]*y[i];
    }

    return(0);
}


テストベンチの s_squares_axim_tb.cpp を示す。

#include <iostream>
#include <stdint.h>

int s_squares_axim(int8_t *x, int8_t *y,
    int32_t *result);

int main(){
    int8_t x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int8_t y[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int32_t result[10];

    s_squares_axim(x, y, result);

    for(int i=0; i<10; i++){
        std::cout << "x[" << i << "]= " << (int)x[i] <<
                ", y[" << i << "] = " << (int)y[i] <<
                ", result[" << i << "] = " <<
                (int)result[i] << std::endl;
    }
}


C シミュレーションは前回と同じなので、C コードの合成からやってみよう。結果を示す。


前回の Latency は 28 クロックだったが、今回の実装では、31 クロックになっている。
しかも Modules & Loops に s_squares_axim_Pipline_VITIS_LOOP_10_1 が増えている。
前回のFFは 2143 個、LUT は 2698 個だった。今回の FF は 2214 個、LUT は 3151 個だった。
残りの C コードの合成レポートを示す。



M_AXI Burst Information が変更になっている。
Inferred Burst Summary がきちんとレポートされている。
Inferred Burst and Widening Missed も表示されているが、volatile のじゃなくなっている。
残りの C コードの合成レポートを示す。


C/RTL 協調シミュレーションの結果を示す。
前回のクロック数は 37 クロックで、前回と同じだった。


C/RTL 協調シミュレーションの波形を示す。
これも前回と同じでバーストアクセスとなっている。



IMPLEMENTATION を行った。
これも、全く前回と一緒の結果になった。


AXI4 Master インターフェースの引数から volatile を除いた場合は、C コードの合成では、異なる結果になった。実際に Verilog HDL のコードもファイルが増えていた。しかし、C/RTL 協調シミュレーションでの結果は前回と同じだった。IMPLEMENTATION の結果も前回と全く同じだった。つまり、Vivado で合成すると待った同じ回路になった。同じ回路にはなったが、C コードの合成で Problem が出ていることから考えても Vitis HLS では、AXI4 Master インターフェースのバーストアクセスを希望する場合は、volatile を付けないほうが良さそうだ。
Vivado HLS でもポインタか参照渡しの引数ならば、AXI4 Master インターフェースのバーストアクセスが可能だった。
  1. 2021年11月13日 04:59 |
  2. 【送料無料】 エレコム 【メール便での発送商品】AQUOS sense6 ガラスフィルム風 ブルーライトカット 高透明 PM-S213FLGLBL
  3. | トラックバック:0
  4. | コメント:0

Vitis HLS 2021.2 での AXI4 Master インターフェースにおける volatile の扱い1(バーストアクセス 1)

Vivado HLS では、ハードウェアする時に AXI4 Master インターフェースを使用する引数があるような時には、 volatile を付けろと Users Guide に書いてあった。しかし、 Vitis HLS での volatile の扱いは違っているのかも知れない?それを検証してみよう。

Vivado HLS 2019.2 UG902 (v2019.2) 2020 年 1 月 13 日 の volatile の説明を引用する。


Vitis HLS 2020.1 UG1399 (v2020.1) 2020 年 6 月 24 日 の volatile の説明を引用する。

バーストアクセスなし等の文言が増えている。

さて、Vitis HLS 2021.2 で実際にやってみよう。

s_squares_axim3.cpp ソースコードを示す。これは Vivado HLS 時代からセミナの実装例として使用している。
AXI4 Master インターフェースを 3 個持ったデザインとなっている。ここでは、関数を読んだ時に複数個データを Read したり、データを Write したりしているので、 volatile を付けている。

#include <stdint.h>

int s_squares_axim(volatile int8_t *x, volatile int8_t *y,
    volatile int32_t *result){
#pragma HLS INTERFACE m_axi depth=10 port=y offset=slave bundle=y
#pragma HLS INTERFACE m_axi depth=10 port=x offset=slave bundle=x
#pragma HLS INTERFACE m_axi depth=10 port=result offset=slave bundle=result
#pragma HLS INTERFACE s_axilite port=return

    for(int i=0; i<10; i++){
#pragma HLS PIPELINE II=1
        result[i] = x[i]*x[i] + y[i]*y[i];
    }

    return(0);
}


テストベンチの s_squares_axim_tb.cpp を示す。

#include <iostream>
#include <stdint.h>

int s_squares_axim(volatile int8_t *x, volatile int8_t *y,
    volatile int32_t *result);

int main(){
    int8_t x[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    int8_t y[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int32_t result[10];

    s_squares_axim(x, y, result);

    for(int i=0; i<10; i++){
        std::cout << "x[" << i << "]= " << (int)x[i] <<
                ", y[" << i << "] = " << (int)y[i] <<
                ", result[" << i << "] = " <<
                (int)result[i] << std::endl;
    }
}



s_squares_axim プロジェクトを示す。


C シミュレーションを行った。結果を示す。


C コードの合成を行った。結果を示す。




M_AXI Burst Information に Volatile の Problem が出ているのが分かる。UG1399 でバーストアクセスなしになっているからだろう?
214-227 をクリックすると Burst Interface Failure 5 が表示された。


つまり、volatile を削除しろと言っている。

volatile そのままで C/RTL 協調シミュレーションを行った。結果を示す。
Latency は 37 クロックだった。


C/RTL 協調シミュレーションの波形を見た。
バーストアクセスなしとはなっていても、Read も Write もバーストアクセスしている。



Implementation の結果を示す。


Vitis HLS 2021.2 では、引数に volatile を付けていてもバーストアクセスすることができている。しかし、C コードの合成で volatile を付けていることの Problem が出ている。
次回は、volatile を削除してやってみよう。
  1. 2021年11月12日 05:12 |
  2. iCOLOR 帽子 完璧 紫外線対策・日焼け防止 3way フェイスカバー 付き UVカット
  3. | トラックバック:0
  4. | コメント:0

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる5(OpenCV 4.5.4 をインストール、その2)

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる4(OpenCV 4.5.4 をインストール、その1)”の続き。

KV260 に ikwzm さんの ZynqMP-FPGA-Linux をインストールして、前回は、OpenCV 4.5.4 をインストールしようということで、cmake まで実行した。今回は、OpenCV 4.5.4 の残りのインストールを行う。

make -j4
で、4 個のプロセッサを使用して、make したが、74 % で止まってしまった。反応が相当遅くなっているみたいだ。



一旦リブートして、もう一度 2 プロセッサで make を実行した。
make -j2


GlobalSmart PC-LS550F21BB【2600mAh・日本セル】 高性能 ノートパソコン PC互換バッテリー PSE認証済み PSEマーク付 【日本国内倉庫発送】【送料無料】

make が終了した。

sudo make install


sudo ldconfig


1 つ上のディレクトリに上がって、 samples/python ディレクトリに入った。
cd ../samples/python/
ls



デモ・ソフトウェアを起動した。
python3 demo.py


facedetect.py を Run した。




asift.py を Run した。




これもうまく行った。

画像を見るのに、 viewnior をインストールした。
sudo apt install viewnior


calibrate.py を Run した。カメラのレンズの歪みを補正するソフトウェアのようだ。


これが元画像。


これが補正画像だ。


find_oby.py を Run した。画像が何処にあるかを調べるソフトウェアのようだ。


結果のウインドウ。


OpenCV 4.5.4 はきちんと動作するようだ。
  1. 2021年11月11日 03:54 |
  2. KRIA KV260 Vision AI Starter Kit
  3. | トラックバック:0
  4. | コメント:0

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる4(OpenCV 4.5.4 をインストール、その1)

KV260 で ikwzm さんの ZynqMP-FPGA-Linux を試してみる3”の続き。

ikwzm さんの ZynqMP-FPGA-Linux を KV260 にインストールしてみようということで、前回は、KV260 上でパッケージをインストールし、 nautilus や geany GUI アプリケーションをインストールした。今回は、OpenCV 4.5.4 をインストールしよう。cmake までを書いた。

OpenCV 4.5.4 をインストールするために参考にしたサイトは”OpenCVが4.0になっていたのでcontribも含めてコンパイルしてみる。
それと、自分のブログの”Ultra96-V2 に ikwzm/ZynqMP-FPGA-Linux をインストール4(OpenCV 4.1.0 のインストール)

OpenCVが4.0になっていたのでcontribも含めてコンパイルしてみる。”を参考にして、必要なパッケージをインストールする。

sudo apt install build-essential


sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev


sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev


OpenCV 4.5.4 を git clone する。
git clone https://github.com/opencv/opencv.git
ls
cd opencv
ls
git checkout -b 4.5.4 refs/tags/4.5.4



Ultra96-V2 に ikwzm/ZynqMP-FPGA-Linux をインストール4(OpenCV 4.1.0 のインストール)”のパッケージをインストールする。

sudo apt install python3-tk libgtk2.0-dev pkg-config


sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev


sudo apt-get install libcanberra-gtk-module


build ディレクトリを作成した。build ディレクトリに入った。
cmake を行った。
mkdri build
cd build
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DINSTALL_PYTHON_EXAMPLES=ON \
-DINSTALL_C_EXAMPLES=ON \
-DPYTHON_EXECUTABLE=/usr/bin/python3 \
-DBUILD_EXAMPLES=ON \
-DWITH_GTK=ON \
-DWITH_FFMPEG=ON ..




-- General configuration for OpenCV 4.5.4 =====================================
--   Version control:               4.5.4
-- 
--   Platform:
--     Timestamp:                   2021-11-09T19:34:09Z
--     Host:                        Linux 5.10.0-xlnx-v2021.1-zynqmp-fpga aarch64
--     CMake:                       3.13.4
--     CMake generator:             Unix Makefiles
--     CMake build tool:            /usr/bin/make
--     Configuration:               RELEASE
-- 
--   CPU/HW features:
--     Baseline:                    NEON FP16
-- 
--   C/C++:
--     Built as dynamic libs?:      YES
--     C++ standard:                11
--     C++ Compiler:                /usr/bin/c++  (ver 8.3.0)
--     C++ flags (Release):         -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -O3 -DNDEBUG  -DNDEBUG
--     C++ flags (Debug):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wundef -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Wsuggest-override -Wno-delete-non-virtual-dtor -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -fvisibility-inlines-hidden -g  -O0 -DDEBUG -D_DEBUG
--     C Compiler:                  /usr/bin/cc
--     C flags (Release):           -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -O3 -DNDEBUG  -DNDEBUG
--     C flags (Debug):             -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wundef -Winit-self -Wpointer-arith -Wshadow -Wuninitialized -Wno-comment -Wimplicit-fallthrough=3 -Wno-strict-overflow -fdiagnostics-show-option -pthread -fomit-frame-pointer -ffunction-sections -fdata-sections    -fvisibility=hidden -g  -O0 -DDEBUG -D_DEBUG
--     Linker flags (Release):      -Wl,--gc-sections -Wl,--as-needed  
--     Linker flags (Debug):        -Wl,--gc-sections -Wl,--as-needed  
--     ccache:                      NO
--     Precompiled headers:         NO
--     Extra dependencies:          dl m pthread rt
--     3rdparty dependencies:
-- 
--   OpenCV modules:
--     To be built:                 calib3d core dnn features2d flann gapi highgui imgcodecs imgproc ml objdetect photo python2 python3 stitching ts video videoio
--     Disabled:                    world
--     Disabled by dependency:      -
--     Unavailable:                 java
--     Applications:                tests perf_tests examples apps
--     Documentation:               NO
--     Non-free algorithms:         NO
-- 
--   GUI:                           GTK2
--     GTK+:                        YES (ver 2.24.32)
--       GThread :                  YES (ver 2.58.3)
--       GtkGlExt:                  NO
--     VTK support:                 NO
-- 
--   Media I/O: 
--     ZLib:                        /usr/lib/aarch64-linux-gnu/libz.so (ver 1.2.11)
--     JPEG:                        /usr/lib/aarch64-linux-gnu/libjpeg.so (ver 62)
--     WEBP:                        build (ver encoder: 0x020f)
--     PNG:                         /usr/lib/aarch64-linux-gnu/libpng.so (ver 1.6.36)
--     TIFF:                        /usr/lib/aarch64-linux-gnu/libtiff.so (ver 42 / 4.1.0)
--     JPEG 2000:                   build (ver 2.4.0)
--     OpenEXR:                     build (ver 2.3.0)
--     HDR:                         YES
--     SUNRASTER:                   YES
--     PXM:                         YES
--     PFM:                         YES
-- 
--   Video I/O:
--     DC1394:                      YES (2.2.5)
--     FFMPEG:                      YES
--       avcodec:                   YES (58.35.100)
--       avformat:                  YES (58.20.100)
--       avutil:                    YES (56.22.100)
--       swscale:                   YES (5.3.100)
--       avresample:                NO
--     GStreamer:                   NO
--     v4l/v4l2:                    YES (linux/videodev2.h)
-- 
--   Parallel framework:            pthreads
-- 
--   Trace:                         YES (with Intel ITT)
-- 
--   Other third-party libraries:
--     Lapack:                      NO
--     Eigen:                       NO
--     Custom HAL:                  YES (carotene (ver 0.0.1))
--     Protobuf:                    build (3.5.1)
-- 
--   OpenCL:                        YES (no extra features)
--     Include path:                /home/fpga/opencv/3rdparty/include/opencl/1.2
--     Link libraries:              Dynamic load
-- 
--   Python 2:
--     Interpreter:                 /usr/bin/python2.7 (ver 2.7.16)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython2.7.so (ver 2.7.16)
--     numpy:                       /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.16.2)
--     install path:                lib/python2.7/dist-packages/cv2/python-2.7
-- 
--   Python 3:
--     Interpreter:                 /usr/bin/python3 (ver 3.7.3)
--     Libraries:                   /usr/lib/aarch64-linux-gnu/libpython3.7m.so (ver 3.7.3)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.16.2)
--     install path:                lib/python3.7/dist-packages/cv2/python-3.7
-- 
--   Python (for build):            /usr/bin/python2.7
-- 
--   Java:                          
--     ant:                         NO
--     JNI:                         NO
--     Java wrappers:               NO
--     Java tests:                  NO
-- 
--   Install to:                    /usr/local
-- -----------------------------------------------------------------
-- 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/fpga/opencv/build

  1. 2021年11月10日 05:11 |
  2. KRIA KV260 Vision AI Starter Kit
  3. | トラックバック:0
  4. | コメント:0
»