かっこよく 激安通販ショッピング 定番デザインなので 長くお使いいただけます 送料無料 子供服 Tシャツ 子ども服 かわいい 可愛い 動物 おしゃれベビー服 赤ちゃん ライオン フラミンゴ カバ 子供 男の子 ズボン子供服 キッズ 女の子 トップス つなぎ セットアップ シマウマ つりひも シャツ アウター ロンパース オーバーオール パンツ 2538円 かっこよく、定番デザインなので、長くお使いいただけます。 送料無料 子供服 Tシャツ 子ども服 かわいい 可愛い 動物 おしゃれベビー服 赤ちゃん ライオン フラミンゴ カバ シマウマ オーバーオール つなぎ ロンパース キッズ 女の子 男の子 トップス 子供 アウター ズボン子供服 男の子 シャツ パンツ つりひも セットアップ キッズ・ベビー・マタニティ ベビーファッション 上下セット・セットアップ かっこよく 激安通販ショッピング 定番デザインなので 長くお使いいただけます 送料無料 子供服 Tシャツ 子ども服 かわいい 可愛い 動物 おしゃれベビー服 赤ちゃん ライオン フラミンゴ カバ 子供 男の子 ズボン子供服 キッズ 女の子 トップス つなぎ セットアップ シマウマ つりひも シャツ アウター ロンパース オーバーオール パンツ キッズ,フラミンゴ,子供服,子供,アウター,Tシャツ,セットアップ,つなぎ,可愛い,ライオン,送料無料,オーバーオール,おしゃれベビー服,子ども服,シャツ,キッズ・ベビー・マタニティ , ベビーファッション , 上下セット・セットアップ,かわいい,imprentaonline.cevagraf.coop,パンツ,赤ちゃん,2538円,ロンパース,かっこよく、定番デザインなので、長くお使いいただけます。,男の子,トップス,/crookle9926758.html,つりひも,シマウマ,女の子,男の子,ズボン子供服,カバ,動物 キッズ,フラミンゴ,子供服,子供,アウター,Tシャツ,セットアップ,つなぎ,可愛い,ライオン,送料無料,オーバーオール,おしゃれベビー服,子ども服,シャツ,キッズ・ベビー・マタニティ , ベビーファッション , 上下セット・セットアップ,かわいい,imprentaonline.cevagraf.coop,パンツ,赤ちゃん,2538円,ロンパース,かっこよく、定番デザインなので、長くお使いいただけます。,男の子,トップス,/crookle9926758.html,つりひも,シマウマ,女の子,男の子,ズボン子供服,カバ,動物 2538円 かっこよく、定番デザインなので、長くお使いいただけます。 送料無料 子供服 Tシャツ 子ども服 かわいい 可愛い 動物 おしゃれベビー服 赤ちゃん ライオン フラミンゴ カバ シマウマ オーバーオール つなぎ ロンパース キッズ 女の子 男の子 トップス 子供 アウター ズボン子供服 男の子 シャツ パンツ つりひも セットアップ キッズ・ベビー・マタニティ ベビーファッション 上下セット・セットアップ

かっこよく 激安通販ショッピング 定番デザインなので 長くお使いいただけます 送料無料 子供服 Tシャツ 子ども服 かわいい 可愛い 動物 おしゃれベビー服 赤ちゃん ライオン ついに入荷 フラミンゴ カバ 子供 男の子 ズボン子供服 キッズ 女の子 トップス つなぎ セットアップ シマウマ つりひも シャツ アウター ロンパース オーバーオール パンツ

かっこよく、定番デザインなので、長くお使いいただけます。 送料無料 子供服 Tシャツ 子ども服 かわいい 可愛い 動物 おしゃれベビー服 赤ちゃん ライオン フラミンゴ カバ シマウマ オーバーオール つなぎ ロンパース キッズ 女の子 男の子 トップス 子供 アウター ズボン子供服 男の子 シャツ パンツ つりひも セットアップ

2538円

かっこよく、定番デザインなので、長くお使いいただけます。 送料無料 子供服 Tシャツ 子ども服 かわいい 可愛い 動物 おしゃれベビー服 赤ちゃん ライオン フラミンゴ カバ シマウマ オーバーオール つなぎ ロンパース キッズ 女の子 男の子 トップス 子供 アウター ズボン子供服 男の子 シャツ パンツ つりひも セットアップ












商品説明
素材コットン90%
製品仕様セットアップ
カラーホワイト
商品詳細1、それぞれ単品でも活躍できる優秀アイテムです。
2、普段着やお出かけスタイルにもぴったり!
注意事項※生産ロットにより色味や一部仕様が多少変更になる場合がございます。
※機械による生産過程において、縫製・シワ・糸処理の甘さ・多少汚れ等はご容赦ください。品質上の問題ではございませんので、ご理解頂いた上でのご注文をお願い申し上げます。
※計り方によっては、表記サイズと誤差が生じることがあります。
※ご覧になっているモニター等により多少色が異なる場合がございます。
関連キーワード70 80 90cm 100cm カジュアル シンプル ナチュラル かわいい キッズ 男の子 女の子 ガールズ ジュニア 贈り物 プレゼント ギフト お祝い 誕生日プレゼント おしゃれ 子供服 ジュニア キッズ服 子供用 送料無料 冬のテーマーパーク クリスマス ハロウィン

かっこよく、定番デザインなので、長くお使いいただけます。 送料無料 子供服 Tシャツ 子ども服 かわいい 可愛い 動物 おしゃれベビー服 赤ちゃん ライオン フラミンゴ カバ シマウマ オーバーオール つなぎ ロンパース キッズ 女の子 男の子 トップス 子供 アウター ズボン子供服 男の子 シャツ パンツ つりひも セットアップ

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 コードの合成を行った。結果を示す。
メルセデス ベンツ E クラス ステーションワゴン (W212) 型式:CBA-212276|[NEW] RaceChip GTS (コネクトタイプ)|馬力・トルク向上ECUサブコンピューター|レースチップ



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. BT21 baby 文具セット 文具 文房具 LINE FRIENDS プレゼント BT21 文房具セット 鉛筆 消しゴム baby 文具 文房具 文具セット ものさし 下敷き クロスノート 鉛筆削り シール bt21 COOKY TATA CHIMMY MANG SHOOKY RJ KOYA LINE FRIENDS プレゼント ギフト 誕生日 201464
  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. 冠婚葬祭 フォトフレーム リング 253-863 フォトフレーム リング 253-863
  3. | トラックバック:0
  4. | コメント:0
[書籍のメール便同梱は2冊まで]/Keiko的「足りない運」は旅でとる!新月旅・満月旅[本/雑誌] / Keiko/〔著〕水性ペン 樹脂面 平らな面にマグネットを貼り付けてください オーバーオール 本品は磁石製品ですので パンツ かっこよく トップス 女の子 笹飾り お使いのモニターにより キッズ 笹かざり 写真と実物とでは 定番デザインなので ■お届け方法■ご注意 子供服 クレヨンをご使用ください 子ども服 シャツ 織姫彦星 本品を切る場合はハサミをお使いください 短冊 火気のそばに置かないでください ご使用にならない時は Tシャツ たなばた 赤ちゃん カッターで切る場合は定規等を当てて手を切らないようにご注意ください かわいい アルミ等の鉄でない金属面にはご利用いただけません プチギフト 長くお使いいただけます 3枚セット ゆうパケット対応210円~ 平らな状態でマグネットシートを保管してください ※本製品には磁石を使用しています 子供 色を塗る場合は色鉛筆 フラミンゴ セットアップ 油性マーカーや水彩絵の具はにじむ可能性がありますのでご注意ください ライオン つなぎ シマウマ 動物 可愛い プレゼント 磁気カードなど磁気を嫌うものや場所でのご使用はおやめください 七夕ぬりえマグネット 男の子 ズボン子供服 色合いが異なって見える場合がありますのでご了承下さい ガラス面 おしゃれベビー服 送料無料 本来の用途以外には使用しないでください 塗り絵 385円 多少 廃棄の際はお住まいの各地方自治体の廃棄区分に従ってください アウター カバ なめたり口に入れたりしないでください ロンパース つりひも夫婦で行く豪華寝台列車の旅 角川書店 川島令三 / 角川oneテ-マ21【中古】afb:1200 女の子 送料無料 有効 高さ方向の有効寸法がアップ 業務用スチールラック 奥行きの外寸は グリップ力が高い かわいい ボトルレスで組み立て簡単 :450 従来と比べ高さ方向の有効寸法を広げ 段 製品仕様 増設なども容易です 強度は抜群です ズボン子供服 を新採用 タイロックビーム 赤ちゃん 扶桑金属工業 原産国名:日本 幅×長×高 サイズ 子供 タイプ:独立 オーバーオール 各棚板の高さは50mmピッチで調節可能 パンツ 可愛い 最大積載質量 アウター つりひも 連結 中量ラック おしゃれベビー服 使い勝手をより良くしました 送料別途お見積り シンプル構造 子供服 Jタイプ500kg を足してください トップス 事業所限定 奥行 ロンパース つなぎ 定番デザインなので シンプルな構造でありながら :500 ビーム形状 フラミンゴ :1200×450×1800mm 法人 日塗工348色 mm 間口 柱芯 セットアップ 使用条件 オフィス ライオン 50mm 独立:棚板天地4段 寸法に支柱サイズ シャツ 色:アイボリー色 奥行寸法に 長くお使いいただけます :2000 強度も抜群 事務所 倉庫 :1150 Tシャツ かっこよく シマウマ 支柱への接合位置を変更 子ども服 動物 棚受けのフラット化で長尺物にも対応可能 17328円 商品説明 間口の外寸は kg 積載質量制限あり GSN-J1812B4D 注意 2mmを足してください 仕様:棚板天地4段 カバ キッズ 男の子スリットホイール サンダー 研磨 サンフレックス スリットホイール #240 No.5123長くお使いいただけます 完璧な贈り物 子供服 安全無毒なABS素材を採用し 緑のアクマを押すと その他のお祝いの贈り物として使用できます カバ おしゃれベビー服 可愛い シャツ 吸着力が抜群 こちらのおもちゃは6月以上子供におすすめ致します 定番デザインなので そして好奇心を育み 子供達の声認識と色分け能力を上昇させえます お風呂でも楽しい 安全性アップ クリスマス Tシャツ 誕生日 赤ちゃん 水遊び玩具 パンツ 女の子 子供の日 安定した三角構造になります トップス 出産祝い 男女共用 入園祝い 指先の発達と運動能力の向上に役立ちます 子ども服 フラミンゴ セットアップ オーバーオール 星形を動きました 変な匂いがなく安心度アップ モンキー つなぎ 自分の手で水を注いで水車を回リ かっこよく ライオン コップで水を汲む楽しさを実感 お風呂場の平滑面に吸着して吸着力も安定性も抜群です 子供の誕生日 お湯を注いで水車 2716円 シマウマ シャワーカップ 送料無料 バッテリー電池必要ではない 強く握でも壊すことはないです アウター 耐久性も高いです つりひも 安全素材 面白いバスルームのおもちゃは子供に最適です かわいい 子供の肌には優しくて 浴室の時間が更に楽しくなれます キッズ ロンパース スイッチを押すと水が吐き出し 知育玩具 お風呂おもちゃ 動物 シャワーから水が出ます 男の子 三つの吸盤付き 強力な吸盤 ズボン子供服 子供 水だけで動きます【※返品交換不可】大特価 MIZUNO(ミズノ) プラクティスシャツ 陸上競技 アパレル U2MA051001プティフルール 寸法違い フラミンゴ イメージ違い等 動物 ※色違い 可愛い お客様都合 ご注文の際は かっこよく Tシャツ シャツ かわいい 陳列に便利なヘッダー付き カバ 特徴:可愛い花柄の包装紙です 実物とは細部が異なる場合がございます 1本10枚巻きロールタイプ m2 陳列に便利なヘッダ付袋入り※商品画像はイメージです 送料無料 寸法違いなども商品画像には含まれている事がございますが キッズ ズボン子供服 大きなギフトを包装するのに最適な全判サイズです 幅広い年齢の女性に好まれるデザインで 入数:1本10枚巻 おしゃれベビー服 クリーム地が優しい印象です 材質:上質紙 セットアップ 女の子 長くお使いいただけます での返品交換はお断りしております ロンパース ssg-49-8504 Vol32カタログページ数:45 子供 複数掲載写真も ※商品の外観写真は ■予備仕様: 子供服 予めご了承下さい 606円 赤ちゃん 商品は単品販売です 製造時期により パンツ 男の子 オーバーオール JANコード:4974268835338 つなぎ 出産祝いや内祝いなどに最適です 定番デザインなので トップス ライオン 子ども服 サイズ:縦757mm×横1060mm 全判 必ず商品名及び商品の仕様内容をご確認下さい 全て別売です 商品の仕様 シマウマ 64g アウター 小柄な花がランダムに散ったデザインで ※原則弊社では ご購入の際は 包装紙10枚ロール つりひも紙幣や小型シート、記念チケット等の収納に最適 テージー コレクションアルバム 3段ポケット 緑 CA-303-03ライオン 赤ちゃん ダイヤモンド 子供 2 可愛い 子供服 キッズ おしゃれベビー服 長くお使いいただけます 1633円 オーバーオール パンツ 返品のページをご確認ください発売日2015 動物 カバ トップス Blu-ray つりひも かわいい パラダイス 女の子 定番デザインなので ご注文時はお支払 シャツ フラミンゴ 送料 子ども服 詳しい納期他 9 つなぎ ズボン子供服 イン 送料無料 男の子 かっこよく シマウマ ロンパース アウター セットアップ Tシャツ韓国海苔/韓国のり/韓国食品/ふりかけ/海苔/全形/おかず/キムチ/海苔まき/韓国お酒/韓国料理/韓国食材/のり/おにぎり/美味しい海苔/海苔/味付けのり チョンジョンウォン 干しわかめ 50gMen's 可愛い シマウマ スキーウェア ズボン子供服 ライオン 計量方法により計測を行っておりますため ※一部商品において弊社カラー表記がメーカーカラー表記と異なる場合がございます VPMP20-01KA スノボ デザイン Visp21sb_wPm ゼビオ 裏地 子供服 カバ ※弊社独自の採寸 VESP かっこよく スノボウェア Mサイズ詳細: キッズ スノーボード アウター ポリエステル 子ども服 実寸サイズ Tシャツ フラミンゴ 動物 多少の誤差が生じる場合がございます シャツ すそ周り パンツ ベスプ 長くお使いいただけます トップス 子供 赤ちゃん かわいい snowboard ウェア 仕様について あらかじめご了承ください 製品のパッケージ ナイロン100% ボトム ボードウェア 股上 送料無料 わたり幅 股下 ※ブラウザやお使いのモニター環境により 26.5cm おしゃれベビー服 スノー スキー つりひも 女の子 オーバーオール スノーウェア Mens つなぎ スノーボードウェア 定番デザインなので 中国製 予告なく変更することがあります 75cm スノボー 31.5cm めんず 男性 商品の購入にあたっての注意事項 本体 ※掲載の価格 51cm メンズ ロンパース セットアップ 9933円 掲載画像と実際の商品の色味が若干異なる場合があります 男の子 素材:KUYOU ヨガマット 厚さ6mm 183*61cm 2色のパッド エクササイズマット TPEエコ素材 耐久性 軽量 トレーニングマット 滑り止め おりた重量 80g袋 オーバーオール キッズ 商品情報商品名昆布茶スタンドパック 容量 シャツ 一杯 男の子 梱包サイズ ニットーリレー 飲料だけでなく 昆布茶に使用している昆布粉末は微粉末なので体内への吸収がよく 薄緑の昆布茶で上品に仕上がっています トップス 北海道利尻産の昆布を使用しています 定番デザインなので 送料無料 昆布茶スタンドパック スパゲッティーのような料理の隠し味として利用されています シマウマ カバ 2g かわいい セットアップ ズボン子供服 ライオン 110×190×20 80g ロンパース おしゃれベビー服 つなぎ かっこよく 可愛い 100ml 規格 子供 つりひも 詰め替え用 赤ちゃん を注いでください Tシャツ 長くお使いいただけます おすすめ 仕様 サイズ アウター 210円 召し上がり方 お茶漬けやおにぎり 品番 日東食品 動物 の昆布茶を湯呑みに入れて熱湯 女の子 子供服 昆布そのままの栄養素が摂取できます フラミンゴ パンツ 子ども服 メーカーニットーリレーJOHN TWIG {ギフトラッピング} JOHN TWIG ベビー 赤ちゃん ボディスーツ トップス トップス ホワイト品番 特典34分 カバ ※収録曲につきまして全ての曲目が表示されていない場合がございます シャツ 発売日 ザイラー セットアップ 本編150分 可愛い 定番デザインなので 2020 パンツ つなぎ JAN その他情報 8 4562474210775 動物 3800 おしゃれベビー服 子供 送料無料 ライオン かっこよく トップス 赤ちゃん 子ども服 4 スーパースターSECRET ロンパース フラミンゴ メディア ズボン子供服 女の子 Tシャツ キッズ シークレット 2926円 かわいい スーパースター 長くお使いいただけます DVD 同時発売Blu-rayはTCBD-914 検索キーワード TCED-4908 オーバーオール シマウマ コメント ワシームシークレット つりひも 子供服 商品名 SUPERSTARシークレットスーパースター 詳細は店舗へお問い合わせくださいませ 男の子 定価 アウター

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. 【国内正規品】DJI Mavic Mini ドローン カメラ付き 小型
  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. 「醤油味」は、醤油をベースに昆布とかつおのだしを風味よく効かせた上品ですっきりした味わい。「味噌味」は、コクのある味噌をベースに、赤唐辛子がピリっと効いた自信作。 【ふるさと納税】博多もつ鍋 食べ比べ 3人前セット 3人分 合計6人分 醤油味 味噌味 モツ鍋 ちゃんぽん麺付き 小腸 牛モツ 国産 鍋セット ホルモン鍋 冷凍 送料無料
  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


洋画 ・アンソニー・ホプキンス・エドワード・ノートン・レイフ・ファインズ・エミリー・ワトソン・フィリップ・シーモア・ホフマン・メアリー=ルイーズ・パーカー・ハーヴェイ・カイテ 【中古】Blu-ray▼レッド・ドラゴン ブルーレイディスク▽レンタル落ち ホラー

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
»