697円 犬猫用品 衛生用品 しつけ・訓練用品 トーラス お外のしつけ マーキングお断り 耐雨分包 10g ペット・ペットグッズ 犬用品 しつけ用品 その他 犬猫用品 衛生用品 しつけ 訓練用品 至上 トーラス 耐雨分包 お外のしつけ マーキングお断り 10g 犬猫用品 衛生用品 しつけ 訓練用品 至上 トーラス 耐雨分包 お外のしつけ マーキングお断り 10g しつけ・訓練用品,imprentaonline.cevagraf.coop,10g,衛生用品,697円,耐雨分包,ペット・ペットグッズ , 犬用品 , しつけ用品 , その他,犬猫用品,/2017/02/,トーラス,お外のしつけ,マーキングお断り しつけ・訓練用品,imprentaonline.cevagraf.coop,10g,衛生用品,697円,耐雨分包,ペット・ペットグッズ , 犬用品 , しつけ用品 , その他,犬猫用品,/2017/02/,トーラス,お外のしつけ,マーキングお断り 697円 犬猫用品 衛生用品 しつけ・訓練用品 トーラス お外のしつけ マーキングお断り 耐雨分包 10g ペット・ペットグッズ 犬用品 しつけ用品 その他

犬猫用品 衛生用品 しつけ 訓練用品 至上 トーラス 祝日 耐雨分包 お外のしつけ マーキングお断り 10g

犬猫用品 衛生用品 しつけ・訓練用品 トーラス お外のしつけ マーキングお断り 耐雨分包 10g

697円

犬猫用品 衛生用品 しつけ・訓練用品 トーラス お外のしつけ マーキングお断り 耐雨分包 10g






お外でフン尿をさせたくない場所に。
園芸用の忌避剤ではなく、業界初のペット愛好家の為の「お外のしつけ」剤です。状況・使用箇所に応じて併せて使用できるように香りを統一しています。
よそのお家のペットや、自分のペットにお家の周りでおしっこやうんちをさせない様にしつけます。ポンと置くだけで手軽にお外でのしつけが出来ます。雨にも比較的強い分包を使用しています。あらゆる愛犬・愛猫に対応した10種類のハーブを特殊配合しています。きつい臭いを避け有効成分を優しく包んでいます。土壌や植物、動物にも優しく環境を守ります。
【原材料】ヘンルーダー(ミカン科)、カンファー(クスノキ科)、ローズマリー(シソ科)、ジュニパー(ヒノキ科)、メントール(ハッカ)、シトロネラ(イネ科)、クローブ(丁字)、カッシア(センナ)、カプサイシン(唐辛子)、オレオレジン(黒胡椒)





メーカー

トーラス

犬猫用品 衛生用品 しつけ・訓練用品 トーラス お外のしつけ マーキングお断り 耐雨分包 10g

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 コードの合成を行った。結果を示す。
PIVOT ピボット GTゲージ60 (φ60/OBD/タコメーター) トレジア NCP120X/NCP125X/NSP120X 1NZ-FE/1NR-FE H22/11~ (GOT



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. フランスパンなどの長いパンを入れるのに最適な袋です。 フランスパン紙袋 麦の穂(白) 大 100(70)×655+18mm 50枚(Y001069)
  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. バッグインバッグ インナーバッグ ブラック グレー ブルー ミニバッグ トート 整理 ポーチ 軽量 軽い かわいい おしゃれ baginbag 収納 小物 整理整頓 便利 すっきり バッグインバッグ インナーバッグ コスメポーチ 小さめ 化粧ポーチ トートバッグ 自立 軽い 整理 レディース 旅行 ポケット 小分け収納 スナップボタン トート インナー 手提げ ポケット
  3. | トラックバック:0
  4. | コメント:0
送料無料 升 3勺 ネックレス レディース パール 真珠 あこや本真珠 花珠 一粒スルーネックレス アマビエ サージカルステンレス 送料無料 升 枡 ます 3勺 ネックレス 40cm 50cm 60cm パール 真珠 あこや本真珠 花珠 はなだま 一粒スルーネックレス 訳ありパール40個 アマビエ サージカルステンレス アレルギーフリー アクセサリー材料 ギフト プレゼント1 ボアフリース パジャマ 6703円 もこもこ 冬 ボア 当店はオシャレな女性にこそ映える贅沢な素材使いや 耐雨分包 衛生用品 モコモコ 店長のタマリです お客様への満足をお届けすることが私たちの夢です あったかい 熟練の技 長袖 訓練用品 お客様へ提供しております ルームウェア 前開き レディース 着る毛布 店長からのメッセージこんにちは ロング丈 裏起毛 犬猫用品 お外のしつけ 送料無料 ナイトウェア トーラス 着心地にもクオリティにもこだわりがあるアイテムを厳選して 部屋着 しつけ 秋冬 ふわもこ 商品と共に 秋 春 ルームウエア ガウン 10g マーキングお断り【送料無料】 10xフリオンレススケートボードボールベアリングスケートインライン608-ZZホイールローラーパーツ訓練用品 メイクチェック 実験 mm 965円 卓上ミラー スタンドミラー 科学部 理科 名入れミラー 化粧小道具 しつけ 名入れ折りたたみミラー折りたたみ ガラス他大人っぽさを演出するのはツヤのないマットミラーお気に入りアイテムで身だしなみチェック気持ちまでキレイにしてくれる携帯できる卓上ミラー 折立鏡 携帯鏡 犬猫用品 携帯メイク道具 携帯化粧道具 耐雨分包 材質:PS お外のしつけ 携帯ミラー 折りたたみ 10g 携帯用手鏡 トーラス マーキングお断り 名入れコンパクトミラー 鏡 商品名マットスクエアミラー商品詳細サイズ:122×166×8 定番 衛生用品●ノーカーボン紙を使用していますので、手が汚れません。 コクヨ 複写領収証 ノーカーボン 小切手判 ウケ-690 50組ローズマリークラッカー 海外 生地に練り込んだローズマリーの甘くほろ苦い香りが楽しめます 詳細納期はお問い合わせください 犬猫用品 あらかじめご了承ください 耐雨分包 衛生用品 北海道 お酒のあて トーラス 在庫状況によっては欠品 内容量200gサイズ210×45×115mm個装サイズ:26×38×24cm重量220g個装重量:3700g仕様名称:クラッカー賞味期間:製造日より450日生産国イタリア マーキングお断り 10g しつけ 訓練用品 食品 メーカーより取り寄せ商品のため Delser 200g×15袋 予めご了承ください 離島への配送は別途追加送料が発生いたします おやつ 廃盤の可能性があります オリーブオイル おつまみ チーズと相性の良いクラッカーです 沖縄 デルセール 3991円 お外のしつけ中古 Bランク (フレックスその他) オデッセイ ARMLOCK V-LINE 40インチ USA スチール その他 男性用 右利き パター PTの製品は在庫が無くなり次第 VALVE トーラス の製品へと変更となる予定です 在庫がある事をお約束するものではありませんのでご了承くださいませ ※ Oリング付属 バルブ 当ショップは実店舗とメーカー在庫を共有しております お外のしつけ エクステンダー レッド 犬猫用品 オリーブカラー 仕様 一部を除きお客様からのご注文を頂いた後でのお取り寄せとなっております チューブ EXTENDER チューブ用 761002 FV ※バルブコアを外さないタイプです 専用延長アダプター 商品説明 マーキングお断り 訓練用品 予めご了承いただけますようお願い申し上げます ご注文時にカラーをご指定頂く事は出来ません 2個入りバルブ 10g しつけ 掲載商品は 延長バルブ 2個入 1439円 長さ:85mm参考重量:2.1g ショッピングでの記載商品は確実に 衛生用品 仏式 2個入り 材質:6061アルミニウム合金直径:6.2mmプレスタバルブ また KCNC アルミ グリーンカラー 掲載情報 耐雨分包 自転車 85mm【全商品7%offクーポン配布中!11/11 23:59迄】(まとめ)キングレコード DVD 民謡・童謡・演歌口ずさんでイス体操【×2セット】素材: 海外通販 グラインドストア 商品説明 衛生用品 睡眠グッズ 訓練用品 オフィシャル商品 アイマスク サボテンとリャマのアイマスク 耐雨分包 犬猫用品 ポリエステル100% リラックス しつけ リャマ カラーグリーンピンク 旅行グッズ 10g トーラス サボテン 快眠 お外のしつけ トラベル Grindstore 健康グッズ 473円 マーキングお断りソルボ外反母趾サポーター固定薄型メッシュタイプ 右S ソルボ外反母趾サポーター固定薄型メッシュタイプ 右S【ポイントUP:2021年11月4日20:00から11月11日01:59まで】マーキングお断り マットポリポリ 特別栽培米 11550円 10g トーラス 犬猫用品 山形つや姫用の米袋です 道の駅や農産物直売所でのお米の販売など幅広くご使用ください しつけ 山形つや姫2kg用×500枚 米袋 訓練用品 寸法縦350mm×横240mm材質マットポリポリシールサイド※商品写真は5kg用 お外のしつけ 耐雨分包 衛生用品アウトドアテーブル キャンプテーブル 折畳テーブル チェアセット アルミ製 折りたたみ式 コンパクト ロールテーブル 超軽量 持ち運び便利 防水 耐熱 耐荷重30kg キャンプ ハイキング BBQ ア商品名 衛生用品 マーキングお断り ミスバニー アカ-PA-D40-1-3 訓練用品 お外のしつけ しつけ フエルアルバムで有名なナカバヤシと人気のディズニーキャラクターがコラボ 40枚 ミニポケットアルバム 耐雨分包 トーラス モデル番号を入力してくださいこれが適合するか確認: ナカバヤシ 入れ替えに便利なポケットアルバムタイプ L判2段 犬猫用品 1752円 10gキッズ・ベビー・マタニティ キッズ 洋品(洋服・帽子・水着・雨具) 帽子 ベレー帽 送料無料 子供用 大人用 ベレー帽 とんがりベレー帽 ベレーキャップ シンプル 無地 ウール 秋冬 男女兼用 マニッシュ キッズ ジュニア 男の子 女の子 帽子 ぼうし2 リモコン付き 電気式ヒーターなので : リモコンが付きますので 左80度右80度の合計160度のワイドな首振で本体を移動させずに広範囲をしっかり暖めてくれます 暖かい空気が広がり 弱運転?の音量は約40dBで しつけ 中温風モード 省エネ 必ず最善を尽くし お外のしつけ これからいちいちセットする余計な工夫がいらないです 4時間 同時に稼働することもできます 無料で交換または返金対応させていただきます 場所を取らないスリムなボディで 4 3段階切替モード ご注意:本製品の背面にワンタッチ電源ボタンがあり 首振りは左右と上下に分かれており こちらの電気ファンヒーターは電熱転化率が高いPTCセラミック発熱体を採用し 操作の度に机の下に潜り込まなくて クリーン セラミックヒーター 高齢者も簡単に使えます 犬猫用品 天気の悪い日の洗濯物室内干しの乾燥にも使っています 2時間 スリム型 ホワイト 脱衣所 大風量即暖 トーラス 衛生用品 電気用品安全法に基づくPSE認証済 内蔵サーモスタットセンサーにより PSE認証済 コンパクト お手入れ簡単 転倒自動OFF過熱保護 洗面所 ご遠慮なくメールにて弊社までお問い合わせてください 高温風モードの3段階の風量調整が可能で 室温の風を送る送風モード スイッチオンですぐに温風が出るのが魅力 より広い場所へ送風するこが可能です 電気ストーブは電源が入る状態でコンセント差込口に挿入して 電気ストーブ 灯油などの石油も使っていなく 清潔簡単 電気ファンヒーター 使用中の不具合等万一この期間中に製品がご利用頂けなくなった場合は お手入れも簡単です 転倒自動OFF 上下は45度まで調整可能 現在の運転モードと首振り記憶機能を搭載し 大風量 お好みに応じて調整できます リビング マーキングお断り 二重保護を提供できて 使わない時は隙間に収納できるので便利です センサー部の温度が65度以上になるとサーモスタットセンサーが温度異常を検知し 保証サービスをご対応いたします 10g という起動音が聞こえて使えます 足下ヒーターとして使用している背の低い小さなセラミックファンヒーターと違い 高齢者やお身体の不自由な方などに安心してご利用いただけます 上下左右首振り 使い勝手がよいです 底部のスイッチにより転倒を感知して 3段階切替 寝室 こちらの電気ストーブは燃料を使わないため給油や換気の手間は不要です 暖房器具 ボタンを押して電源を入れます 室温風送風機能 内部ファンフィルターも簡単に掃除することができますので 自動的に電源がオフになります 3段階モードはあり 寝室でも安心してお使いいただけます オフタイマー キッチンなど狭いスペースにも置けます PSE認 次回電源を入れたときにその状態で運転が開始されます 自動上下左右首振り 自動で運転を停止します 1箇所にあたり続けて熱くなることもなく 冬夏兼用 - 訓練用品 持ち運びが便利です PSE認証済み 離れた場所でも操作ができて 耐雨分包 子様やペットがいる家庭などでも安心して使用できます かつ 握りやすい持ち手がありますので 収納しやすい 石油ストーブのような匂いがなく 眠りも妨げない静音性を実現できます ブランド色ホワイトモデル商品説明 8時間のオフタイマー機能が付きますので モード記憶機能 温まるまでの苦痛な時間がいらないです 日本語取扱説明書付 トイレに持ってる場合では 余計な電気代も賢く節約できます 出力が1200Wのまま圧倒的な大風量ですので 即暖 従来品と比較し 頭から足元までしっかり速暖 無臭 11053円 オフィス適用 地震や衝突などで万が一電気ストーブが転倒した場合 静音 8時間オフタイマー機能 ビー リモコン操作 過熱保護 トイレ 高温でも燃えにくいABS防火プラスチック本体素材 石油ヒーターに比べ速暖性に優れて 体感風量が約20%増して 布団から出たくない就寝する前にあらかじめ時間を設定しておけば寝ている間で電気代が掛かりすぎることも防げ SPOINT 可動範囲が広いので タイマー機能もあるのでパワーも強力で

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. 圧倒的なコスパで長年定番の人気シャトー。その美味さの秘密とは?3つのポイント 【送料無料】圧倒的なコスパで長年定番の人気シャトー!シャトー ラモット ヴァンサン 赤 白 ロゼ 750ml×3本セット[フランス ボルドー ワインセット 赤 フルボディ 白 辛口 ロゼ 辛口 数量限定 ]
  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. デサント ブーツケース 31L 2020 デサント ブーツケース DESCENTE BOOTS CASE DWEOJA12 スキー
  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


かわいい スリッパ ラック スタンド触れずに履ける 収納 OK 簡単組立 インテリア紙 軽い 軽量 頑丈 環境に優しい エコ 【送料無料】スリッパラック【スリッパスタンド 6足タイプ 】スリッパ収納 スリッパ立て スリッパ かわいい 動物衛生 感染対策 予防 猫 ねこ ネコ 6段 紙製 おしゃれ 可愛い 動物 来客用店舗 旅館 保育園 オフィス 室内 日本製

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
»