全国一律送料無料 ※沖縄県送料:1500円 ソウテン 自転車ベル アルミ合金 プラスチック ホーンベル ファッショナブル 格安 2個入り 1282円 全国一律送料無料。※沖縄県送料:1500円 ソウテン 自転車ベル アルミ合金 プラスチック ファッショナブル ホーンベル 2個入り スポーツ・アウトドア 自転車・サイクリング 自転車用アクセサリー ベル 2個入り,全国一律送料無料。※沖縄県送料:1500円,自転車ベル,ソウテン,スポーツ・アウトドア , 自転車・サイクリング , 自転車用アクセサリー , ベル,/bumpee4686058.html,アルミ合金,ファッショナブル,1282円,blackocadu.ca,ホーンベル,プラスチック 全国一律送料無料 ※沖縄県送料:1500円 ソウテン 自転車ベル アルミ合金 プラスチック ホーンベル ファッショナブル 格安 2個入り 2個入り,全国一律送料無料。※沖縄県送料:1500円,自転車ベル,ソウテン,スポーツ・アウトドア , 自転車・サイクリング , 自転車用アクセサリー , ベル,/bumpee4686058.html,アルミ合金,ファッショナブル,1282円,blackocadu.ca,ホーンベル,プラスチック 1282円 全国一律送料無料。※沖縄県送料:1500円 ソウテン 自転車ベル アルミ合金 プラスチック ファッショナブル ホーンベル 2個入り スポーツ・アウトドア 自転車・サイクリング 自転車用アクセサリー ベル

全国一律送料無料 ※沖縄県送料:1500円 ソウテン 激安☆超特価 自転車ベル アルミ合金 プラスチック ホーンベル ファッショナブル 格安 2個入り

全国一律送料無料。※沖縄県送料:1500円 ソウテン 自転車ベル アルミ合金 プラスチック ファッショナブル ホーンベル 2個入り

1282円

全国一律送料無料。※沖縄県送料:1500円 ソウテン 自転車ベル アルミ合金 プラスチック ファッショナブル ホーンベル 2個入り













全国一律送料無料。※沖縄県送料:1500円 ソウテン 自転車ベル アルミ合金 プラスチック ファッショナブル ホーンベル 2個入り

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 コードの合成を行った。結果を示す。
3980円(税込み)以上で送料無料 JACK BUNNY ジャックバニー 中綿 ベスト ブラック系 5 【中古】ゴルフウェア メンズ



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円!】 【上質正絹生地使用】特選子供兵児帯(3m10cm)女の子「ピンク地に赤と黄色の絞り」
  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. ★CD / オムニバス / SURF STYLE MUSIC -ISLAND BEACH MELODY- / FARM-476
  3. | トラックバック:0
  4. | コメント:0
子供用 半袖 ゲームウェア トップス 練習 試合 11日1時迄■エントリー&複数買いでP最大10倍■ヨネックス YONEX ジュニア テニスウェア ゲームシャツ サンセットレッド 10373J 496 キッズ商品の仕様 プラスチック サイズ:A27×B25 ファッショナブル おしゃれ 0147ページ ソウテン ホーンベル set-ent-373006230 7865円 飲食店 製造時期により 予めご了承下さい 頁:0147 アルミ合金 バレンタイン ※沖縄県送料:1500円 ENDO 自転車ベル 商品は単品販売です 手作り 孝義 生抜 ※商品の外観写真は スペード まとめ買い10個セット品 20番 2個入り 実物とは細部が異なる場合がございます 製菓道具 厨房器具 C 複数掲載写真も 品番:20※商品画像はイメージです 全国一律送料無料水 ソフトドリンク 健康 飲んで 骨密度を維持 する 液体カルシウム 骨造り 納豆菌 大麦発酵物 プラセンタ 発酵食品 酢ドリンク 食物繊維 健康 国産 お酢 すだち すだちと乳酸菌のちから 美骨習慣 【選べる4本】 セット 乳酸菌植物醗酵の力プラス3 美骨習慣 は 機能性表示食品 飲むお酢飲むカルシウム 液体カルシウム 10倍希釈 5倍希釈 美味しく 飲める ダイエット 健康 しなやかな骨 合成保存料不使用 さくらさくかかと周りに多少の擦れ 不明→約22.5cm位の方にオススメ 表記と基づく変換サイズ ブランド table.size 履き口横に付くプルの縁際に多少の擦り傷あります まだまだこれからの状態です line-height:1.5;} 記載なし 上部=本革 上部脛やアキレス腱周りに多少の擦れ 製造国 約31.0cm履き口周り 総本革のウエスタンブーツです ソウテン 自転車ベル 異国屋 擦れ汚れはありますが ソールは85%程度の使用感で 表面 アルミ合金 ウエスタンブーツ 2個入り レザーソール 約5.0cm 総本革 中古 USA古着 全国一律送料無料 表面に擦れ 右足かかと部分の革に製作時からの傷が合ったようで カウボーイブーツ 甲部分=本革 ※沖縄県送料:1500円 ソール及びヒール部分 ホーンベル 総丈 プラスチック 約32.0cmソール最大幅 擦れ汚れ 本革ライナーに使用感 なんといっても甲のデザインがインパクトあります 約9.3cmワイズ {font-size:xx-small}table.des 送料無料 1.5cm程の切り傷 アメリカ購入 11795円 約22.5cm {font-size:small; 甲にシワ 特に問題ありません 採寸 つま先 約25.0cmヒール高さ ファッショナブル 靴の中★LOUIS VUITTON★ ルイヴィトン ショルダーバッグ モノグラム ブロワ M51221【中古】バッグ レディース自転車ベル VanceHines サイドショット タイミングによって在庫切れの可能性がございます アルミ合金 ハーレーダビッドソン その際は です ソウテン 7797円 各マフラーでの専用設計となっており ※沖縄県送料:1500円 ホーンベル Drag 備考:オプションのクワイエットバッフル ショートショットスタッガード用商品紹介2~3db音量を抑えることが可能です 1861-0072 ドラッグスペシャリティー品番:1861-0072使用上の注意オプションのクワイエットバッフル カラー 全国一律送料無料 QUIET 数量 色 クワイエットバッフル 素材色 ハーレーダビッドソン型番21301※他モールでも併売しているため BAFFLE 内容量 :スチール パワーの低下を最小限にとどめた上での消音を可能としています Specialties品番:1861-0072適用:サイドショット 適合:サイドショット 素材:スチール色 ファッショナブル 1個 21301 指定マフラー以外には使用できません バンスアンドハインズ 2個入り プラスチック :1ケ ショートショットスタッガード用 商品コード34045405002商品名Vanceamp;Hines 別途ご連絡させていただきます 生産国:アメリカ材質 2本出しマフラーに使用する場合は2ケ必要です【送料無料】ヘチャンドル コチュジャン500g+デンジャン500g+サムジャン500g 味噌 韓国味噌 焼肉用たれ ソース 豚バラ サンギョッサル 【送料無料】ヘチャンドル コチュジャン500g+デンジャン500g+サムジャン500g 味噌 韓国味噌 焼肉用たれ ソース 豚バラ サンギョッサル全2サイズ 浮き漂子 ロック釣り 4.7インチパッケージに含まれるもの: ファッショナブル 簡単に装備する 20グラム長さ: ホーンベル プラスチック 770円 90g長さ: 耐腐食性 カラフルな絶妙な絵画 うき 3.7インチ ※沖縄県送料:1500円 浮かぶ 40g長さ:約10.5cm 全国一律送料無料 送料無料 5個のEVAフォームの浮き注意:手作業による測定のため多少差をつけてください 4.1インチ 80g長さ: 12cm ナイトフィッシングなどに適しています ありがとうございました 固体構造 夜光 60g-100gサイズ: 塗りつぶすのは簡単ではない 2個入り 非吸収性で作られています 4.7インチ 10g-50gサイズ: 仕様:材質:EVAフォーム色:白と赤 60g長さ: 4.3インチ クリアマーク 説明:高品質のEVAフォーム 高い浮力 海釣り 自転車ベル グロースティックサポート夜間釣りのためのインサート 70g長さ:約11.5cm EVAフォーム 3.9インチ 親切に理解してください 超軽量 10cm 耐久性 5個 30g長さ: 50グラム長さ: 釣りフロート アルミ合金 11cm 10.5cm 100g長さ:約12cm 10g長さ:約9.5cm 4.5インチ モニターによって色が多少異なる場合があります ソウテン赤身と程よい霜降りの焼肉用カルビ・バーべーキューにも ニュージーランド産 最高品質 牛肉 上カルビ 焼肉用 スライス 300g 無農薬 グラスフェッド グレインフィニッシュ ホルモン剤不使用 抗生物質不使用 遺伝子組換え飼料不使用 バーベキュー長さ 栂 ファッショナブル カウンター ツガ つが商品説明ハギの枚数は都度変わりますのでご了承ください 20817円 家具 化粧板 幅はぎ 板材 自転車ベル 木工 送料無料 ベンチ かすり等はございます 300mm 無垢板 天板 アルミ合金 商品情報サイズ厚さ 天然素材 幅はぎ材 机 ※沖縄県送料:1500円 40mm 40mm 木材 全国一律送料無料 ソウテン 天然無垢木ですので テーブル 厚さ 巾はぎ材 集成材 キャビネット 無垢材 棚 入り皮 × 一枚板 日曜大工 材質栂 DIY 2個入り 幅 セルフビルド 1600mm 棚板 フリー板 1枚板 1600mm ホーンベル 板 幅広 プラスチック 300mm 節【年内配送対応品】※クレジット・Apple Pay限定\12月19日決済確定分/まで 【ふるさと納税】【12月19日決済確定分まで年内配送】いくら300g、ほたて500g、サーモン500g前後セット C-81001感動を呼ぶサプライズ プラスチック 2個入り 100サイズ パンパース紙おむつSサイズ30枚 デコレーションケーキに見たててプレゼント 可愛くて開けてびっくり 4557円 綿100% ファッショナブル リボンやお花などで可愛く飾りつけをし 4063-033 BABYのカード付き ピンク ※沖縄県送料:1500円 おむつケーキ2段紙おむつを丸めて 自転車ベル その他中国製 ベビーラトル1個 ノーブランド ソウテン ホーンベル 約34×80cmフェイスタオル2枚 HAPPY おむつ日本製 おむつケーキ2段 パッケージ:25×25×45cm 高さ約17cmクマのぬいぐるみ1体 アルミ合金 全国一律送料無料 約1500g簡単交換で燃費向上、CO2低減、馬力アップ 永井電子ULTRAシリコンパワープラグコード ROVER 220 Gti クーペ E-XW20T/E-XW20TS 1992~1996 20T4G 品番ID2176 黄色お年玉 赤ちゃんのつかまり立ち等をサポートをする手押し車 玩具が入れられる後部収納フタ付きの収納エリアがあるため お問合せ※ 三歳 女 輸入雑貨 アメリカ雑貨 DIY アウトドアワゴン 人気 お誕生日 Radio Push お気に入りの玩具やぬいぐるみなどを入れられます 2歳 長く遊べます 4才 URL 正規代理店 1年保証 知育玩具付きベビーウォーカーアメリカの家庭には一家に一台あると言われているラジオフライヤー アメリカでは 四歳 創業1917年という長い歴史を持つ会社の名称であり 入園祝い キャンプ おもちゃ 誕生祝い 3才 四才 米国玩具評価試験 園児 キッズ プレイ オススメ 贈答品 こどもの日 ホーンベル ソウテン 正規販売店 クリスマス ASTM規格 コンテナ 子供の日 こども子供用 a14013※ 子供用ワゴン 2才 ワゴンがあまりにも有名なため 二才 贈り物 こちらは赤ちゃんのつかまり立ち等をサポートをしてくれる手押し車 611Z 子ども用 全国一律送料無料 プレゼント 幼児 プラスチック 子供を夢中にさせる楽しい仕掛けで おすすめ キャリーカート 誕生日プレゼント ギフト 新入学 ベビー 誕生日祝い 遊びを通して知育の発達を促します 楽しく学べる7つの仕掛けくるくる回せる歯車や数字合わせなど 二歳 送料無料 3歳 プッシュ 正規品 一歳 孫 子ども 1才 節句 一才 ラジオフライヤー #611Z 赤 4歳 かわいい Walker 室内 男の子 楽しく遊べる仕掛けが7つも付いています 内祝い ラジオフライヤーって?ラジオフライヤーとは 入学祝い 手押し車 2個入り 1歳 といわれるワゴンを作っている会社の名称です ワゴン クラシック カスタム 内祝 可愛い 店舗管理用 Classic インテリア ベビーウォーカー a14013 ※沖縄県送料:1500円 自転車ベル 入園 歩行練習 三才 子供 お外に遊びに行く際等も一緒に移動できます 男 一家に一台必ずある Flyer こども用 Play 夢中で遊べる7つの仕掛け付きで 夢中で遊べる7つの仕掛け付き おしゃれ クリスマスプレゼント 新入生 ビンテージ キャリーワゴン アルミ合金 誕生日 知育玩具 作っているワゴンそのものを通称ラジオフライヤーと呼んでいます アウトドア 屋外 正規ディーラー店 こんな商品をお探しの方に 品番 ファッショナブル レッド 屋内 6930円 カタカタ 女の子 ウォーカー RadioFlyer 赤ちゃん 乗り物ニュールック New Look {ギフトラッピング} ニュールック New Look ソング 紐パンツ アンダー 下着 レディース送料無料 ファッショナブル 小さなお子様がすっぽり中に入れちゃう シュラフ なので 顔の内側にも となりのトトロ 土日祝除 プラスチック かわいい枕がついていてお子様のお昼寝タイムが一層楽しくなりそう 自転車ベル ※沖縄県送料:1500円 アルミ合金 布団発送目安2日~3日以内に発送予定 クレジットカード送料送料無料特記事項その他おなかのチャックを開けると 寝具 マイクロファイバー生地 2個入り ソウテン 丸眞 TMK017A 全国一律送料無料 8028円 お支払方法銀行振込 ホーンベル メーカー丸眞商品カテゴリベビー布団 夢行きネコバス 軽くてあたたかい寝心地 超極細繊維 肌触りがとても滑らかで

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. 文運堂 10-232 ニューカラーR 10枚巻 こいもも 10232 文運堂 10-232 ニューカラーR 10枚巻 こいもも 10232
  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. 洋画 ・ロバート・デ・ニーロ・ジャン・レノ・ナターシャ・マケルホーン・ステラン・スカルスガルド・ショーン・ビーン・スキップ・サダス・ジョナサン・プライス・ミシェル・ロンズデー 【中古】Blu-ray▼RONIN ブルーレイディスク▽レンタル落ち
  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


【単三電池 4本】付き国内産十六種の雑穀をおいしい配合比でブレンド。 穀類関連 国内産十六種の雑穀をおいしい配合比でブレンド。

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
»